Preparing the Local Mirror Host
Prepare the local mirror host, select the product repositories, and configure access to the upstream package repository before creating the air-gapped Data Fabric repository.
The air-gapped Data Fabric repository is available as a container.
- Use a Linux host with Docker or Podman installed, running, and accessible to the operator.
- Choose a hostname or IP address reachable from cluster nodes to advertise the host.
- Install either
ssorlsofso the air-gapped repository bootstrap script can check whether the selected host port is available. - Download the airgap-repository CLI from the HPE official repository. Pull
the supported image from the maprtech docker registry, and pass it with
--image IMAGE; use--localif the image is already available locally. -
Ensure that the host running airgap repo container has sufficient disk space, considering the active publication, inactive publications, archive cache, sufficient head room for in progress repository updates or synchronization. See Disk Capacity and Preflight for details.
- Allow access to the official HPE Data Fabric repository when you are creating or updating the air-gapped repository with credentials, when authentication is required.
- Choose an unused host HTTP port and allow cluster nodes to reach the port. The default port is 8080.
Choose persistent data directory
Choose a persistent dedicated writable data directory to use as -data-dir parameter,
this is where we store the dowloaded package archives persistently. The path must be
absolute and canonical, without . or .. components or any symlink traversal. Do not
use a top-level system directory such as /, /var,
or /var/lib.
Choose a data directory based on the following considerations:1. 2. .3. 4.
- Choose a path that does not exist yet or an empty directory while creating the air-gapped repository.
- Do not choose directories that contain nested mounts
- For update, specify the same data directory that you have used during the air-gapped repository creation.
- The
airgap-repositorybootstrap script creates a managed repository marker. Data Fabric validates the repository marker when re-using the data directory during the update operation.
Choose Core version, DEP version, and Operating System repositories
X.Y.Z form.| Component | Required selection | When required |
|---|---|---|
| Core | --core-versions VER
[VER...]--core-os OS
[OS...] |
Supply both only when Core is selected. |
| DEP / ecosystem pack | --mep-versions VER [VER...]--mep-os
OS [OS...] |
Supply both only when DEP is selected. |
| Installer | --installer-os OS [OS...] |
Supply only when Installer is selected. No version argument. |
Select at least one component. Use the exact values in Supported Operating Systems.
For Core ubuntu22 or ubuntu24, DEP and Installer
still use the family selector ubuntu.
airgap-repository update command, to bring in newly
selected OS packages to persistent data directory, after initial airgap
repository is setup. See Updating the Air-gapped Repository
for details on the airgap-repository update command.Choose release-compatible versions and the published build values in Supported Operating Systems. An OS selection for Core does not automatically select DEP or Installer, and their selector names do not have to be identical.
Provide a compatible package downloader
By default, the airgap-repository CLI uses
mapr-setup.sh to download the repository archives to the local
airgap repository. This mapping is done automatically in the background. However,
you can choose to specify a custom mapr-setup.sh by using the
options --mapr-setup-file or -mapr-setup-url . For
the custom mapr-setup.sh, you must use the same path or URL for
repository updates.
Configure repository authentication
- Create a new mode-0600 file and edit it. These preparation commands
initialize a new file; do not use them to overwrite a configuration you need
to
retain.
install -m 600 /dev/null /root/airgap-repository.conf vi /root/airgap-repository.conf - Add each of the following keys exactly once, replacing the example
values:
repository_url=https://package.example/releases username=USERNAME password=PASSWORD - Pass
--repo-config-file /root/airgap-repository.conftocreateandupdate. Use raw username and password values. Do not append/installer/ubuntu/mapr-setup.sh.NOTEDo not pass a credential-bearing URL directly through--repo-url. Keep configuration files readable only by the operator and outside the persistent data directory. Restrict host access while synchronization runs because the retrievedmapr-setup.shcan expose parsed credentials in child-process arguments. Protecting the input file does not remove that downstream exposure risk.For an unauthenticated repository, use
--repo-url URLwith a credential-free repository root. Protected legacy URL inputs remain available through--repo-url-file FILEand--repo-url-stdin. Provide exactly one repository source.These credentials authenticate upstream downloads. They do not configure authentication for clients of the mirror's HTTP endpoint.
Configure a proxy or private CA
You can specify the network proxy config HTTP_PROXY/HTTPS_PROXY/NO_PROXY (strictly
upper case) in a file and pass it in the option -network-config-file FILE. You can
specify the same info inline using --http-proxy,
--https-proxy, or --no-proxy options.
Use the --ca-cert FILE with a readable, nonempty CA certificate file
when upstream TLS requires a private CA. Pass the proxy and CA options for the
airgap-repository create and update operations.
Operating guidelines
- Always reuse the same data directory (specified with the
--data-dirparameter) for cumulative updates. - Do not manually edit the active repository symlink or files in the active publication.
- Do not manually delete publication or staging directories while synchronization is running.
- The synchronization helper and serving container share the same persistent host
mount. Do not use the
docker cpcommand to move repository content between them. - Keep repository credentials and proxy configuration outside the persistent repository directory.
- Only one publication is active at a time. Plan for candidate and retained inactive publications; do not assume automatic cleanup or a supported rollback procedure.
- Use remove to delete the serving container. Use
purge-data --yesonly for permanent deletion of persistent repository content and caches. - Serving-only lifecycle commands are offline operations. Keep the serving container running for update.