Add Additional Packages

To download and deploy additional software packages and container images using Omnia local repositories, update the required Omnia input files and execute the playbooks.

Configure Additional Container Images from User Registry to Local Repository

Omnia supports configuring additional container images from specified user registries to Omnia Local Repository, so that these images are available and can be pulled by cluster nodes as per requirement. User registries may be hosted either on OIM or on an external server, and both HTTP and HTTPS registries are supported.

To view the steps to set up an HTTP user registry, see Set Up an HTTP User Registry.

To view the steps to prepare an HTTPS user registry, see Set Up an HTTPS User Registry.

After the registry is ready, mention the inputs in local_repo_config.yml, see Input Parameters for Local Repositories.

Proceed to provide the remaining inputs.

Update software_config.json

Parameters for Software Configuration

Parameter

Mandatory/Optional

Details

cluster_os_type

Mandatory

  • Type: string

  • Specify the operating system running on the OIM and the one to be provisioned on the compute nodes.

  • Accepted value: rhel

cluster_os_version

Mandatory

  • Type: string

  • The OS Version that will be provisioned on compute nodes.

  • Accepted value: 10.0.

repo_config

Mandatory

  • Type: string

  • Omnia sets up a local Pulp repository on the OIM and downloads all the necessary packages or images for the cluster into this repository. The behavior of the Pulp container varies depending on the value of the repo_config parameter.

  • In case of always, packages are downloaded and cached on OIM during local_repo.yml execution; compute nodes get the packages from OIM. Caching these packages allows them to be reused in future operations without needing to download them again.

  • In case of partial, packages are not pre-downloaded or cached. OIM downloads from upstream URLs when needed.

  • Accepted value: always, partial

  • Default value: always

Note

The following packages will always be downloaded from the local Pulp repository, regardless of the value of repo_config:

  • ISOs

  • pip modules

  • manifests

  • tarballs

  • container images

softwares

Mandatory

  • Type: JSON list

  • A JSON list of required software with the software version (optional) and architecture type aarch64, x86_64 or both. This field is mandatory.

  • The following software should be listed with a version in the list: OpenLDAP, NFS, Slurm, service_k8s, utils, ucx, openmpi.

  • A minimum of one software should be provided in the list for local_repo.yml to execute correctly.

  • The software_config.json will have the basic softwares present in it. To install additional software stacks, update the additional_packages.json available at /opt/omnia/input/project_default/ and add the following entry to the JSON list: {"name": "additional_packages", "arch": ["x86_64, "aarch64"]}.

  • To install debug pakages on the cluster nodes, add the following entry to the JSON list: {"name": "admin_debug_packages", "arch": ["x86_64, "aarch64"]}.

  • For the list of all applicable softwares based on your <cluster_os_type>, see the templates at examples/template_<os>_software_config.json. For example, /omnia/examples/rhel_software_config.json

Note

The accepted names for software are taken from /opt/omnia/input/project_default/config/<architecture>/<cluster_os_type>/<cluster_os_version>.

slurm_custom

Mandatory

Specify the functional roles of the Slurm nodes, login and login compiler on which basic software packages must be deployed.

service_k8s

Mandatory

Specify the functional roles of the Service Kubernetes Cluster nodes on which basic software packages must be deployed.

additional_packages

Optional

Specify the functional roles of the cluster nodes on which additional software packages must be deployed.

  1. Open /opt/omnia/input/project_default/software_config.json.

  2. Under softwares, add the additional_packages entry. Ensure the architecture list matches your cluster:

    {"name": "additional_packages", "arch": ["x86_64","aarch64"]}
    
  3. Save the file.

The following is a sample software_config.json snippet with additional_packages enabled:

{
"cluster_os_type": "rhel",
"cluster_os_version": "10.0",
"repo_config": "always",
"softwares": [
    {"name": "default_packages", "arch": ["x86_64","aarch64"]},
    {"name": "additional_packages", "arch": ["x86_64","aarch64"]}
],
"additional_packages": [
    {"name": "slurm_control_node"},
    {"name": "slurm_node"},
    {"name": "login_node"},
    {"name": "login_compiler_node"},
    {"name": "service_kube_control_plane_first"},
    {"name": "service_kube_control_plane"},
    {"name": "service_kube_node"}
]
}

Update additional_packages.json

Additional software packages

Parameter

Details

Supported Package Type

additional_packages

  • Type: string

  • Provide the name of the additional software packages to be available on all cluster nodes.

  • rpm: requires repo_name

  • image: requires tag or digest

service_kube_control_plane

  • Type: string

  • Provide the name of the additional software packages to be available on all Kubernetes control plane nodes.

  • rpm: requires repo_name

  • image: requires tag or digest

service_kube_control_plane_first

  • Type: string

  • Provide the name of the additional software packages to be available on Kubernetes first control plane node.

  • rpm: requires repo_name

  • image: requires tag or digest

service_kube_node

  • Type: string

  • Provide the name of the additional software packages to be available on all kube nodes.

  • rpm: requires repo_name

  • image: requires tag or digest

slurm_control_node

  • Type: string

  • Provide the name of the additional software packages to be available on all Slurm control nodes.

  • rpm: requires repo_name

  • image: requires tag or digest

slurm_node

  • Type: string

  • Provide the name of the additional software packages to be be available on all Slurm nodes.

  • rpm: requires repo_name

  • image: requires tag or digest

login_node

  • Type: string

  • Provide the name of the additional software packages to be available on all login nodes.

  • rpm: requires repo_name

  • image: requires tag or digest

login_compiler_node

  • Type: string

  • Provide the name of the additional software packages to be available on login compiler node.

  • rpm: requires repo_name

  • image: requires tag or digest

Note

All container images specified in additional_packages.json under any given subgroup are configured in Omnia local repository and can be pulled on all cluster nodes (Slurm, K8s etc).

  1. Update the additional_packages.json file available at /opt/omnia/input/project_default/ with the required packages/images.

  2. Ensure you provide the correct package type (rpm or image) and the repository name/tag/digest, based on your requirement.

The following is a sample additional_packages.json file:

{
"additional_packages": {
    "cluster": [
    { "package": "fuse-overlayfs", "type": "rpm", "repo_name": "x86_64_appstream" },
    { "package": "python3-PyMySQL", "type": "rpm", "repo_name": "x86_64_appstream" },
    { "package": "sssd", "type": "rpm", "repo_name": "x86_64_baseos" },
    { "package": "oddjob-mkhomedir", "type": "rpm", "repo_name": "x86_64_appstream" },
    { "package": "quay.io/strimzi/kafka-bridge", "type": "image", "tag": "0.33.1" },
    { "package": "registry.k8s.io/pause", "type": "image", "digest": "sha256:7031c1b283388c2c47cc389c74e7a6a1f91e3c23f7f9c2d9e25f7c8b1a2d3e4f" }
    { "package": "172.16.0.254:7000/ubuntu/squid", "type": "image", "tag": "latest" }
    ]
}
}

Download packages/images to the Pulp container

After updating the input files, execute the local_repo.yml playbook from inside the omnia_core container to download packages and container images to the Pulp container:

ssh omnia_core
cd /omnia/local_repo
ansible-playbook local_repo.yml

For more information about executing the playbook, see Execute the Local Repo Playbook.

If you have any feedback about Omnia documentation, please reach out at omnia.readme@dell.com.