Local Repository and Pulp Issues¶
Issues related to the local_repo.yml playbook, Pulp container operations, and repository synchronization.
local_repo.yml Download Failures¶
Symptom
The local_repo.yml playbook fails during package download, displaying errors such as "TASK [parse_and_download : Display Failed Packages]" or indicating that specific software packages could not be downloaded.
Cause
- Incorrect URLs in software JSON configuration files.
- Docker pull limit reached or invalid Docker credentials.
- Insufficient disk space on Pulp NFS storage.
- Unreachable software repositories.
Resolution
- Verify and correct URLs in the software JSON configuration files.
- Provide valid Docker credentials in
input/omnia_config_credentials.yml. - Ensure adequate disk space is available on Pulp NFS storage.
- Re-run the
local_repo.ymlplaybook.
Log analysis for download failures:
-
Overall download status:
Example/opt/omnia/log/local_repo/<cluster_os>/<cluster_os_version>/<arch>/software.csvExample:
/opt/omnia/log/local_repo/rhel/10.0/x86_64/software.csv -
Per-software task results:
Example/opt/omnia/log/local_repo/rhel/10.0/x86_64/<sw>_task_results.logExample for OpenLDAP:
/opt/omnia/log/local_repo/rhel/10.0/x86_64/openldap_task_results.log -
Package-level status:
Example/opt/omnia/log/local_repo/<cluster_os>/<cluster_os_version>/<arch>/<sw>/status.csvExample:
/opt/omnia/log/local_repo/rhel/10.0/x86_64/openldap/status.csv -
Detailed failure information. View the reason a job was unsuccessful in the
package_status_<pid>.logfile referenced in the<sw>_task_results.log:Example/opt/omnia/log/local_repo/rhel/10.0/x86_64/<sw>/logs/package_status_<pid>.logExample:
/opt/omnia/log/local_repo/rhel/10.0/x86_64/openldap/logs/package_status_858667.log
Note
If local_repo.yml completes without any package download failures, a Successful message is displayed.
Playbook Fails When Re-Run Multiple Times¶
Symptom
The local_repo.yml playbook fails when re-run multiple times in quick succession.
Cause
Pulp container resource saturation.
Resolution
Allow the system to idle approximately 1 hour before re-running.
Pulp Reset Password Failed¶
Symptom
Pulp reset password operation fails during prepare_oim.yml execution.
Cause
- NFS Storage Export Configuration (PowerScale): Missing or incorrect settings for
nfsv4-no-names,nfsv4-no-domain,nfsv4-no-domain-uids, andnfsv4-allow-numeric-ids. - Inconsistent UID and GID mappings between NFS server and client.
- Missing
no_root_squashoption in NFS export configuration. - NFS server connectivity issues or firewall blocking ports 2049, 111, and 20048.
Resolution
Verify the NFS export configurations and settings mentioned above, then re-run the prepare_oim.yml playbook.
For PowerScale-specific configuration details, see the PowerScale configuration on Deploy PowerScale CSI page.
EPEL Repository Unavailable or Unstable¶
Symptom
local_repo.yml fails during Pulp repository sync of EPEL metadata or during individual EPEL package download/validation, with timeout, connection, sync failure, or repository errors. The failure can occur at two stages:
- Pulp sync stage: The EPEL URL reachability check fails or the Pulp remote sync to
x86_64_rhel_10.0_epel(oraarch64_rhel_10.0_epel) times out. - RPM download/validation stage: Individual EPEL-dependent packages (
gedit,fping,clustershell,nss-pam-ldapd,apptainer) fail duringdnf downloadordnf infovalidation.
Cause
The EPEL repository is unavailable, unreachable through the configured proxy or firewall, or contains stale metadata. Additional causes include:
- Pulp container is not running (verify with
podman ps | grep pulp). - Pulp sync timeout for large EPEL repository (syncs can take 10–20 minutes, especially with
pulp_concurrency: 1on NFS storage). - EPEL GPG key URL (
https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-10) is unreachable.
Resolution
-
Verify connectivity to the EPEL repository and GPG key:
Run on: OIM hostcurl -I --connect-timeout 10 https://dl.fedoraproject.org/pub/epel/10/Everything/x86_64/ curl -I --connect-timeout 10 https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-10 -
Verify the Pulp container is running and the EPEL repository sync status:
Run on: OIM hostpodman ps | grep pulp pulp rpm repository show --name x86_64_rhel_10.0_epel pulp rpm remote show --name x86_64_rhel_10.0_epel -
Identify the failed EPEL package in the Omnia logs:
Run on: OIM hostgrep -i "epel" /opt/omnia/log/core/playbooks/local_repo.log grep -RiE "epel|failed|timeout|error" /opt/omnia/log/local_repo/rhel/10.0/x86_64/default_packages/logs/ grep -RiE "epel|failed|timeout|error" /opt/omnia/log/local_repo/rhel/10.0/x86_64/admin_debug_packages/logs/ grep -RiE "epel|failed|timeout|error" /opt/omnia/log/local_repo/rhel/10.0/x86_64/openldap/logs/ grep -RiE "epel|failed|timeout|error" /opt/omnia/log/local_repo/rhel/10.0/x86_64/slurm_custom/logs/ cat /opt/omnia/log/local_repo/standard.log -
Apply the appropriate recovery:
- If EPEL is temporarily unavailable, retry after service recovery by rerunning
local_repo.yml. -
To force re-sync of only the EPEL repository without resyncing all repos:
Run on: omnia_core containeransible-playbook local_repo.yml -e "resync_repos=['x86_64_rhel_10.0_epel']" -
If the EPEL repository is corrupted in Pulp, clean it up and rerun:
Run on: omnia_core containeransible-playbook local_repo/pulp_cleanup.yml -e "cleanup_repos=x86_64_rhel_10.0_epel,aarch64_rhel_10.0_epel"
- If EPEL is temporarily unavailable, retry after service recovery by rerunning
-
Rerun
local_repo.ymland verify that all required packages download successfully.
Note
For repeatable or air-gapped deployments, host the required EPEL packages locally instead of relying on the external EPEL service during deployment. Set repo_config: "always" in software_config.json and caching: "False" in omnia_repo_url_rhel_<arch> to ensure Omnia syncs the full EPEL content into the local Pulp repository and downloads all RPMs for offline use.
Intermittent Local Repository Sync Failure Due to Non-Persistent Iptables Rules¶
Symptom
Local repository synchronization fails intermittently, particularly after an OIM restart or firewall reload. The OIM may have internet access while the repository container cannot reach external repositories.
Cause
Required outbound traffic from the Podman container network is blocked by the OIM firewall. Temporary firewall rules may also be lost after a restart or firewall reload.
Warning
Do not set the INPUT, FORWARD, or OUTPUT policies to ACCEPT:
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
These commands effectively bypass the OIM firewall policy and may expose the system to unauthorized traffic.
Resolution
-
Identify the repository container and Podman network:
Run on: OIM hostpodman ps -a podman network ls podman network inspect <network_name> -
Verify connectivity from the affected container:
Run on: OIM hostpodman exec <container_name> getent hosts <repository_fqdn> podman exec <container_name> curl -Iv --connect-timeout 10 https://<repository_fqdn>/ -
Review the active forwarding rules:
Run on: OIM hostiptables -L FORWARD -n -v --line-numbers -
Add narrowly scoped rules. Replace the placeholders with values from your environment:
Run on: OIM host# Allow established return traffic iptables -I FORWARD 1 \ -d <container_subnet> \ -m conntrack --ctstate ESTABLISHED,RELATED \ -j ACCEPT # Allow container DNS queries iptables -I FORWARD 1 \ -s <container_subnet> -d <dns_server_ip> \ -p udp --dport 53 \ -m conntrack --ctstate NEW,ESTABLISHED \ -j ACCEPT # Allow HTTPS only to the approved repository or proxy iptables -I FORWARD 1 \ -s <container_subnet> -d <repository_or_proxy_cidr> \ -p tcp --dport 443 \ -m conntrack --ctstate NEW,ESTABLISHED \ -j ACCEPTAdd TCP port 80 only if the repository explicitly requires HTTP.
Warning
Do not set the INPUT, FORWARD, or OUTPUT policies to ACCEPT:
Do NOT run these commandsiptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPTThese commands effectively bypass the OIM firewall policy and may expose the system to unauthorized traffic.
-
Retest repository access:
Run on: OIM hostpodman exec <container_name> curl -Iv --connect-timeout 10 https://<repository_fqdn>/ -
Make the scoped rules persistent using the firewall manager configured on the OIM, such as firewalld or nftables.
Note
For repositories using CDNs or frequently changing IP addresses, route container traffic through an approved outbound proxy and restrict access to the proxy IP and port. Do not create broad internet-access rules.
Validation
Verify the following to confirm the resolution:
- Repository synchronization completes successfully without errors
- The scoped firewall rules persist after an OIM restart or firewall reload
- Default firewall policies remain unchanged (not set to blanket ACCEPT)
- No unnecessary inbound or forwarded access has been enabled
Connectivity Issues¶
Symptom
local_repo.yml fails with connectivity errors. Failures can occur at multiple stages:
- Validation stage: URL reachability checks fail with
<url> is either unreachable, invalid or has incorrect SSL certificatesorUnreachable registries detected: <host>. - Pulp sync stage: Repository sync to the local Pulp server fails or times out.
- Download stage: Package downloads fail with
Download interrupted,Max retries exceeded, download failed, orUnable to reach Docker Hub (network DNS/timeout/SSL issue). - Final status reports:
Local repo setup failed — some packages didn't download, and dependent scripts/playbooks may also fail. Refer to the localrepo logs for more details. Rerun local_repo.yml.
Cause
The OIM was unable to reach a required online resource. Specific causes include:
- External repository URLs are unreachable due to network outage, DNS failure, or firewall rules.
local_repo.ymlplaybook fails fast on the first unreachable URL before testing all URLs and reporting all failures. - User-defined registries or repository URLs in
local_repo_config.ymlare unreachable. - SSL/TLS certificate issues — mismatched, expired, or missing certificates for user repositories or registries.
- Docker Hub rate limiting (HTTP 429), invalid credentials (HTTP 401), or server errors (HTTP 5xx).
- Pulp container is not running or Pulp endpoint is unresponsive.
Resolution
-
Verify connectivity to the upstream repository URLs configured in
local_repo_config.yml. -
Verify that the Pulp container is running and Pulp endpoint is accessible:
Run on: OIM hostpodman ps | grep pulp curl -k https://<pulp_server_ip>:<pulp_port>/pulp/api/v3/status/ -
If user registries are configured, verify connectivity on the OIM.
-
Check the logs for specific error messages:
Run on: OIM hostgrep -i "unreachable" /opt/omnia/log/core/playbooks/local_repo.log grep -RiE "unreachable|timeout|connection|failed|SSL" /opt/omnia/log/local_repo/standard.log grep -RiE "Download interrupted|Max retries exceeded|HTTP error" /opt/omnia/log/local_repo/rhel/10.0/x86_64/*/logs/ -
Apply the appropriate recovery:
- If the Pulp container is not running, run
prepare_oim.ymlfirst. - If external URLs are unreachable, verify DNS resolution and firewall rules on OIM.
- If SSL certificate errors occur for user repos, verify that certificate files exist under the expected path and are valid.
- If Docker Hub rate limiting occurs, wait and retry, or configure Docker Hub credentials in
omnia_config_credentials.yml.
- If the Pulp container is not running, run
-
Rerun
local_repo.ymlafter resolving the connectivity issues. Previously downloaded packages are not re-downloaded.
Software Installation Fails With Checksum Error¶
Symptom
Software installation fails with a checksum error.
Cause
A local repository for the software has not been configured by the local_repo.yml playbook.
Resolution
- Re-run the
local_repo.ymlplaybook with proper inputs to download the software package to the Pulp repository. - Once the local repository has been configured successfully, re-run the failed installation script.
Pulp Certificate Trust Failure on Compute Nodes¶
Symptom
dnf installfails with SSL certificate errors on provisioned compute nodes.- Package installation during cloud-init
runcmdphase fails. - Container image pulls from the Pulp mirror fail on nodes.
Example errors on the compute node:
SSL certificate problem: unable to get local issuer certificate
Peer's certificate issuer is not recognized
Error: Failed to download metadata for repo 'pulp_mirror'
Cause
The Pulp webserver certificate (pulp_webserver.crt) was not copied or trusted on the node. All cloud-init templates include a runcmd step that copies the certificate from the NFS-mounted /cert directory:
cp /cert/pulp_webserver.crt /etc/pki/ca-trust/source/anchors && update-ca-trust
This step can fail if the NFS mount for /cert was not established before the certificate copy step executes.
Resolution
-
Verify the certificate and NFS mount status:
Run on: compute node# Check if the certificate is present and trusted ls -la /etc/pki/ca-trust/source/anchors/pulp_webserver.crt ls -la /cert/pulp_webserver.crt # Verify the NFS mount for /cert mount | grep /cert # Test SSL connectivity to Pulp openssl s_client -connect <admin_nic_ip>:2225 -showcerts </dev/null 2>&1 | grep -i verify # Test package manager connectivity dnf repolist -
Mount the certificate NFS share and copy the certificate manually:
Run on: compute nodemount | grep /cert || mount -t nfs <admin_nic_ip>:<share_path>/cert /cert cp /cert/pulp_webserver.crt /etc/pki/ca-trust/source/anchors/ update-ca-trust -
Verify package manager connectivity:
Run on: compute nodednf repolist dnf makecache -
If the issue recurs on re-provisioned nodes, verify the NFS export for the
/certdirectory is accessible from the node network.
Container Image Pull Fails From Pulp Mirror¶
Symptom
- Container images (SIF format) fail to download on Slurm/HPC nodes.
/var/log/apptainer_pull.logshows pull failures.- Expected container images are missing under
/hpc_tools/container_images.
Example errors in /var/log/container_image_download.log or /var/log/apptainer_pull.log:
[ERROR] Failed to pull container image from Pulp mirror (exit code: 1).
[INFO] Image may not be available in Pulp or download was interrupted.
Error: error pulling image: unable to pull <image>: Error initializing source
TIMEOUT: Container image pull timed out after 1800 seconds
Cause
- Container image was not synced to Pulp during
local_repo.ymlexecution. - Pulp mirror endpoint is unreachable from the node (firewall, network issues).
- Pulp certificate not trusted on the node (see Pulp certificate trust failure above).
- Image tag mismatch between
container_image.listand what is available in Pulp.
Resolution
-
Check download logs and image status:
Run on: compute node# Check download log tail -50 /var/log/container_image_download.log tail -50 /var/log/apptainer_pull.log # Check if Pulp mirror is reachable from the node curl -sk https://<admin_nic_ip>:2225/v2/_catalog # Check what images are expected cat /hpc_tools/scripts/container_image.list # Check downloaded images ls -lh /hpc_tools/container_images/ -
Verify the container image exists in Pulp. From the OIM:
Run on: OIM hostpodman exec -it omnia_core pulp container repository list -
If the image is missing in Pulp, ensure it is listed in
software_config.jsonand re-runlocal_repo.yml. -
If the image exists in Pulp but the pull fails, verify certificate trust (see Pulp certificate trust failure) and re-run the download script:
Run on: compute node/hpc_tools/scripts/download_container_image.sh
Info
- Create Local Repos -- Local repository setup guide.
- Log Management -- Where to find logs for deeper diagnosis.
- Pulp Cleanup -- Pulp cleanup procedures.