Add Additional Packages
This section explains how to download and deploy additional software packages and container images on the cluster nodes using Omnia local repositories.
Prerequisites
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 Service Kubernetes 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 set up 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.
Steps
To add additional packages, follow these steps:
Open
/opt/omnia/input/project_default/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_configparameter.In case of
always, packages are downloaded and cached on OIM duringlocal_repo.ymlexecution; 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,partialDefault 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_64or 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.ymlto execute correctly.The
software_config.jsonwill have the basic softwares present in it. To install additional software stacks, update theadditional_packages.jsonavailable at/opt/omnia/input/project_default/config/<architecture>/rhel/10.0/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 atexamples/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.
Under
softwares, add theadditional_packagesentry.Note
Ensure the architecture list matches your cluster:
{"name": "additional_packages", "arch": ["x86_64","aarch64"]}
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"},
{"name": "service_kube_node"},
{"name": "os"}
]
}
Save the
software_config.jsonfile.Update the
additional_packages.jsonfile available at/opt/omnia/input/project_default/config/<architecture>/rhel/10.0/with the required packages/images.
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 Service Kubernetes Cluster nodes.
Parameter |
Details |
Supported Package Type |
|---|---|---|
additional_packages |
|
|
service_kube_control_plane |
|
|
service_kube_node |
|
|
slurm_control_node |
|
|
slurm_node |
|
|
login_node |
|
|
login_compiler_node |
|
|
os |
|
|
The following is a sample additional_packages.json file:
{
"additional_packages": {
"cluster": [
{ "package": "fuse-overlayfs", "type": "rpm", "repo_name": "appstream" },
{ "package": "python3-PyMySQL", "type": "rpm", "repo_name": "appstream" },
{ "package": "sssd", "type": "rpm", "repo_name": "x86_64_baseos" },
{ "package": "oddjob-mkhomedir", "type": "rpm", "repo_name": "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" }
]
},
"os": {
"cluster": [
{ "package": "podman", "type": "rpm", "repo_name": "appstream" },
{ "package": "curl", "type": "rpm", "repo_name": "x86_64_baseos" },
{ "package": "wget", "type": "rpm", "repo_name": "appstream" },
{ "package": "podman", "type": "rpm", "repo_name": "appstream" },
{ "package": "curl", "type": "rpm", "repo_name": "arm64_baseos" },
{ "package": "wget", "type": "rpm", "repo_name": "appstream" }
]
}
}
Ensure you provide the correct package type (
rpmorimage) and the repository name/tag/digest, based on your requirement.Save the
additional_packages.jsonfile.
Guidelines for Configuring Additional Packages for Specific Architectures
Note
The additional_packages feature has architecture-specific functional group support. Users must configure both software_config.json and the architecture-specific additional_packages.json files according to the supported groups for their target architecture.
Supported Functional Groups by Architecture:
x86_64:
slurm_control_node,slurm_node,login_node,login_compiler_node,service_kube_control_plane,service_kube_control_plane_first,service_kube_node,osaarch64:
slurm_node,login_node,login_compiler_node,os
Configuration Steps:
Edit ``software_config.json``: Define the
additional_packagesentry with the desired functional groups and specify the appropriate architecture(s) in thearchfield.Edit architecture-specific JSON files: Update the corresponding architecture-specific JSON files located at:
/opt/omnia/input/<project_name>/config/x86_64/rhel/<version>/additional_packages.json/opt/omnia/input/<project_name>/config/aarch64/rhel/<version>/additional_packages.json
Ensure these files contain only the functional groups that are supported for that architecture.
Kubernetes-related functional groups (
service_kube_*) andslurm_control_nodeare only supported on x86_64 architecture.The architecture-specific
additional_packages.jsonfiles must include anadditional_packagesparent key and contain only supported functional groups for that architecture.Declare only supported functional groups for each architecture in both
software_config.jsonand the architecture-specific JSON files.Validation logs warnings (not errors) for unsupported groups and continues execution.
Review validation logs at
/opt/omnia/log/core/playbooks/validation_omnia_<project_name>.logfor configuration warnings.
If you have any feedback about Omnia documentation, please reach out at omnia.readme@dell.com.