Install Ansible automation portal in air-gapped OpenShift Container Platform environments
You can install Ansible automation portal in a disconnected OpenShift Container Platform environment.
Prerequisites for disconnected installation Copy linkLink copied!
Review the mandatory subscriptions, permissions, and platform access required before starting the disconnected installation of the Ansible automation portal.
Fulfilling these prerequisites helps ensure a successful deployment.
- You have a valid subscription to Red Hat Ansible Automation Platform.
- You have access to an instance of Red Hat Ansible Automation Platform with the appropriate permissions to create an OAuth application.
- You have access to a Red Hat OpenShift Container Platform instance with the appropriate permissions within your project to create an application.
- You have installed
oc, the OpenShift command-line interface (CLI) tool, on your local machine. - You have installed Helm 3.10 or newer.
- You have installed
skopeoandpodmanfor mirroring container images and plug-in artifacts. - You have internet access to pull images and charts from public repositories, including
registry.redhat.io. - A Red Hat pull secret that allows you to pull images from
registry.redhat.io. - You have a method to provide the Ansible plug-ins in the disconnected environment:
- For OCI delivery: A method to mirror the OCI artifacts image referenced by
imageTagInfo. - For HTTP plug-in registry: The ability to host the plug-in tarball files.
- For OCI delivery: A method to mirror the OCI artifacts image referenced by
- You have registry credentials for the registry endpoint used by the dynamic plug-in installer.
The image versions and compatibility requirements vary between Helm chart releases. Before you begin, consult the Ansible Automation Portal Lifecycle page for version mappings between the Helm chart, Red Hat Developer Hub, and PostgreSQL.
Prepare for air-gapped installation Copy linkLink copied!
Before you can install Ansible automation portal in a disconnected OpenShift Container Platform environment, you must complete some processes on a connected bastion host.
Mirror container images Copy linkLink copied!
Use skopeo copy to mirror the required container images from the Red Hat registry to your disconnected registry for installing the Ansible automation portal in an isolated environment.
Before you begin Copy linkLink copied!
skopeois installed.- You have authenticated to
registry.redhat.io:$ skopeo login registry.redhat.io - You have authenticated to your disconnected registry:
$ skopeo login <disconnected_registry_url>
About this task Copy linkLink copied!
skopeo copy preserves SHA256 digests, so the Helm chart's default digest-based image references work without additional tag overrides.
If you mirror registry.redhat.io content to a different registry host (or to a registry prefix such as quay.io/<org>), you can set redhat-developer-hub.global.imageRegistry so the Helm chart pulls all of its images from that mirrored location. imageRegistry is a single override that controls the registry for the base application image, PostgreSQL image, OCI plug-in artifacts, and Ansible Dev Tools sidecar.
The dynamic plug-in init container does not use cluster-level image mirror configuration (for example, ImageDigestMirrorSet or ImageTagMirrorSet). You must set imageRegistry even if your cluster redirects registry.redhat.io pulls.
| Image | Source registry | Purpose |
|---|---|---|
rhdh/rhdh-hub-rhel9:<rhdh_version> |
registry.redhat.io |
Red Hat Developer Hub application and install-dynamic-plugins init container |
rhel9/postgresql-<version>:<tag> |
registry.redhat.io |
Built-in PostgreSQL database (skip if using an external database) |
ansible-automation-platform-25/ansible-dev-tools-rhel8:latest or ansible-automation-platform-26/ansible-dev-tools-rhel9:latest |
registry.redhat.io |
Ansible Dev Tools sidecar (base image varies by Ansible Automation Platform version) |
ansible-automation-platform/automation-portal:<plugin-version> |
registry.redhat.io |
Ansible plug-in OCI artifacts (OCI delivery only) |
rhdh/rhdh-plugin-catalog-index-rhel9:<rhdh_version> |
registry.redhat.io |
Plug-in catalog index (rebuilt by mirror-plugins.sh) |
Replace version placeholders with the versions bundled with your Helm chart. See the Ansible Automation Portal Lifecycle page for version mappings.
Procedure Copy linkLink copied!
Results Copy linkLink copied!
Verify that each image is accessible in your disconnected registry. For example:
$ skopeo inspect docker://<disconnected_registry_url>/rhdh/rhdh-hub-rhel9:<rhdh_version>
A successful response returns the image manifest metadata. An error indicates the image was not mirrored correctly.
Download the helm chart package Copy linkLink copied!
Download the Helm chart package and modify the internal image references to point to your disconnected registry. This prepares the installation package for the air-gapped environment.
Procedure Copy linkLink copied!
Transfer assets to the disconnected environment Copy linkLink copied!
Transfer the modified Helm chart package from the connected bastion host to a machine inside your disconnected network. This action stages the installation assets for deployment within the isolated OpenShift environment.
Procedure Copy linkLink copied!
- Copy the modified Helm chart
.tgzfile or files (for example,redhat-rhaap-portal-1.0.1.tgz) from your connected bastion host to a machine or jump box within your disconnected OpenShift network. - If you use the HTTP plug-in registry method, transfer the plug-in tarball files to the disconnected environment.
Install the Helm chart in the disconnected OpenShift environment Copy linkLink copied!
You can install the modified Helm chart using the helm install command in your disconnected OpenShift environment. This deploys the Ansible automation portal using the locally available assets.
After preparing the disconnected environment with mirrored images and transferred assets, install the Helm chart to deploy the Ansible automation portal.
Access the disconnected OpenShift environment Copy linkLink copied!
Ensure your disconnected OpenShift cluster is configured to trust the private registry containing the mirrored container images. This step is crucial for successful image pulling during installation.
Before you begin Copy linkLink copied!
- You have the necessary kubeconfig and permissions for setting up image pull secrets or insecure registries.
Procedure Copy linkLink copied!
Configure plug-in delivery for disconnected environments Copy linkLink copied!
Create the registry authentication secret so the dynamic plug-in init container can pull OCI artifacts from your disconnected registry.
Before you begin Copy linkLink copied!
- You have mirrored the required container images and plug-in artifacts to your disconnected registry.
- You have credentials for your disconnected registry.
Procedure Copy linkLink copied!
Results Copy linkLink copied!
Verify that the secret exists in the project:
$ oc get secret <release-name>-dynamic-plugins-registry-auth -n <project_name>
Install the Helm chart Copy linkLink copied!
Install the Ansible automation portal by using the helm install command, referencing the local Helm chart file and required configuration values.
Procedure Copy linkLink copied!
Configure CA certificates for private registries Copy linkLink copied!
If your private registry uses a certificate signed by an internal or self-signed CA, mount the CA certificate into the install-dynamic-plugins init container so that skopeo trusts the registry.
Procedure Copy linkLink copied!
Results Copy linkLink copied!
After the deployment restarts, check the install-dynamic-plugins init container logs for certificate errors:
$ oc logs <pod-name> -c install-dynamic-plugins -n <namespace> | grep -i "x509\|certificate"
If the CA certificate is mounted correctly, there are no x509: certificate signed by unknown authority errors.
Verify the disconnected installation Copy linkLink copied!
Verify the successful installation of the Helm chart in the disconnected environment. Check the Helm release status, monitor the pods, and verify that the application routes are accessible.
Procedure Copy linkLink copied!
Troubleshooting disconnected installations Copy linkLink copied!
Use this reference to troubleshoot common issues that occur during disconnected Ansible automation portal installations.
| Symptom | Cause | Solution |
|---|---|---|
authentication required or unauthorized in install-dynamic-plugins init container logs |
Auth secret missing or malformed. The init container uses skopeo and does not use cluster pull secrets. |
Create <release-name>-dynamic-plugins-registry-auth secret. Use base64 -w0 to avoid multiline values that corrupt auth.json. |
Duplicate path in OCI URL (for example, .../ansible-automation-platform/ansible-automation-platform/...) |
imageRegistry includes a repository path instead of the registry host only. |
Set imageRegistry to the registry host only. If your mirror uses a different repository structure, use ociPluginImage to set the full image path. |
x509: certificate signed by unknown authority in init container logs |
Private registry uses a self-signed or internal CA certificate. | Mount the CA certificate into the init container. See Configure CA certificates for private registries. |