Creating an Air-gapped Repository

Create and publish the selected Data Fabric repositories, verify serving readiness, and make the local mirror available to cluster nodes.

Prerequisites

  • You must be connected to the Internet to create an air-gapped repository.
  • The local mirror host must reach the selected HPE Data Fabric upstream package repository and required downloader source.
    NOTE
    Image-registry access is needed only when the image must be pulled; use an already loaded image with --local.
  • Required disk space must be available on the local mirror host on which you are to install the air-gapped repository. See Disk Capacity and Preflight to plan storage.
  • See Installing with the Air-Gapped Data Fabric Repository for information about the need for an air-gapped repository.

About this task

You can create an air-gapped repository with the airgap-repository create command.

Command Syntax

./airgap-repository create \
  [--core-versions VER [VER...] --core-os OS [OS...]] \
  [--mep-versions VER [VER...] --mep-os OS [OS...]] \
  [--installer-os OS [OS...]] \
  REPOSITORY_SOURCE [OPTIONS]

Select at least one of the following groups. Although each group is independently optional, an empty selection is rejected:

Component Selection
Core --core-versions VER [VER...] --core-os OS [OS...]
DEP --mep-versions VER [VER...] --mep-os OS [OS...]
Installer --installer-os OS [OS...]
In the command syntax, REPOSITORY_SOURCE is placeholder. Replace REPOSITORY_SOURCE with either of the options:
  • --repo-config-file FILE
  • --repo-url URL
  • --repo-url-file FILE
  • --repo-url-stdin

Command Help

./airgap-repository create --help
./airgap-repository create -h

Command Parameters

Table 1. airgap-repository stop command parameters
Parameter Required? Description
--runtime auto|docker|podman No The runtime selection. Default: auto. Use docker or podman explicitly when required.
--container-name NAME No The managed container name. Default: mapr-airgap-repository.
--dry-run No Use the option to preview the operation without stopping the repository container.
-h, --help No Use the option to view command help.

By default, create pulls the configured image. If the release supplies an image archive, load it first, replacing the sample archive filename:

Copy
docker image load --input airgap-repository-image.tar
NOTE
NOTE
Add --local to use an existing local image. Loading an image does not download Data Fabric packages; synchronization requires access to the upstream Data Fabric package repository that is accessible over the Internet.

The create operation requires you to enter the following parameters:

  • at least one core version

  • at least one core OS

  • at least one DEP version

  • at least one DEP OS

  • at least one installer OS

  • exactly one repository source

For example:

./airgap-repository create \   
    --local 
    --core-versions 8.1.0
    --core-os ubuntu22 suse15.5
    --mep-versions 10.1.1 
    --mep-os ubuntu suse \   
    --installer-os ubuntu suse 
    --repo-config-file /root/airgap-repository.conf
    --data-dir /var/lib/mapr-airgap-repository
    --port 8080
    --advertise-host
       mirror.example.test

Select at least one component and exactly one repository source:

  • Core: both --core-versions and --core-os.
  • DEP: both --mep-versions and --mep-os.
  • Installer: --installer-os only, when selected.

For installation workflows that require public signing keys, include an installer branch during initial preparation. Its archive supplies pub/; this is not mandatory for every air-gapped publication.

Procedure

  1. Run the ./airgap-repository create command.
    Table 2. Parameters for airgap-repository create command
    Parameter Required Description
    Parameter Required Values and use
    --core-versions VER [VER...] When Core is selected One or more versions in X.Y.Z form, for example 8.1.0. Must be paired with --core-os.
    --core-os OS [OS...] When Core is selected The operating system for Core: redhat, rhel9, ubuntu, ubuntu22, ubuntu24, suse, suse15.5. Must be paired with --core-versions. ubuntu24 has no additional Core-version option.
    --mep-versions VER [VER...] When DEP is selected One or more DEP versions in X.Y.Z form. For example 10.1.0. Must be paired with --mep-os.
    --mep-os OS [OS...] When DEP is selected The DEP operation system : redhat, ubuntu, suse. Must be paired with --mep-versions. There are no separate version-specific OS builds to select for DEP.
    --installer-os OS [OS...] Only when Installer is selected Operating system: redhat, ubuntu, suse. No installer-version option is required. The selected upstream determines its installer archive version.
    --repo-config-file FILE Exactly one source The absolute path to the repository credentials file. containing repository_url, username, and password. Use mode 0600; do not use a symlink.
    --repo-url URL Exactly one source The official HPE Data Fabric repository URL
    --repo-url-file FILE Exactly one source The absolute path to the file that contains the official HPE Data Fabric repository URL Use mode 0600, not a symlink.
    --repo-url-stdin Exactly one source Accept input from the user on the command prompt. Mutually exclusive with the other three repository-source options.
    --data-dir PATH No Absolute path to the persistent directory that hosts the downloaded air-gapped repository packages. Default: /var/lib/mapr-airgap-repository. During update, provide the previously selected directory path.
    --runtime auto|docker|podman No The container runtime to choose. Default: auto; select docker or podman explicitly when required.
    --container-name NAME No The custom name of the air-gapped repository container. Default: mapr-airgap-repository. During update, use the same name for the air-gapped repository container
    --advertise-host HOST Recommended Client-reachable hostname or IP printed in the repository URL.
    --image IMAGE No The air-gapped repository runtime image name. Without --local or --build, create pulls it.
    --port PORT No The host HTTP port. Default 8080. The port must be available.
    --mapr-setup-file PATH No Absolute path to the custom mapr-setup.sh script. Mutually exclusive with --mapr-setup-url.
    --mapr-setup-url URL No Credential-free HTTP(S) URL for the the custom mapr-setup.sh script. Mutually exclusive with --mapr-setup-file.
    --mapr-setup-sha256 SHA256 No SHA256 of the mapr-setup.sh that is downloaded from the official HPE Data Fabric repository.
    --network-config-file FILE No The absolute path to the network config file that contains HTTP/HTTPS/NO_PROXY information.
    --http-proxy URL--https-proxy URL No HTTP proxy URL to use.
    --no-proxy LIST No NO_PROXY string. For example mirror.example.test,localhost,127.0.0.1.
    --ca-cert FILE No Custom CA certificate file path.
    --dry-run No Use the option to preview the operation without creating the repository container.
    --local No Use an existing local image without pulling it. This does not make package synchronization offline.
    -h, --help No Display help for this command; do not perform the command.
  2. View status and verify readiness by running the following command on the local mirror host:
    ./airgap-repository status \
      --runtime docker \
      --advertise-host mirror.example.test

    Representative output is as follows.

    INFO: Using container runtime: docker
    Container name: mapr-airgap-repository
    Runtime: docker
    Container state: running
    Health state: healthy
    Image: docker.io/maprtech/airgap-repository:latest
    Host port: 8080
    Advertised URL: http://mirror.example.test:8080
    Data directory: /var/lib/mapr-airgap-repository
    Active generation: repositories/<generation-id>
    Stored generations: <count>
    Repository disk usage: <size>
    Available disk space: <free-space>
    Repository status: ready
    Active publication: repositories/<generation-id>
    Core repositories:
      v8.1.0
    MEP repositories:
      MEP-10.1.1
    Cached downloaders: <count>
    Disk usage: <size>

    Confirm Container state: running, Health state: healthy, and Repository status: ready. Check the Core and DEP(MEP) version lists and inspect disk usage and available space.

  3. View the URL for the air-gapped repository.
    ./airgap-repository print-url \
      --runtime docker \
      --advertise-host mirror.example.test
    INFO: Using container runtime: docker
    Air-gap repository URL: http://mirror.example.test:8080
    NOTE
    The --advertise-host parameter changes the hostname printed for clients. It does not configure DNS or change the container's port mapping.