Skip to content

software_config.json Reference

File path: /opt/omnia/input/project_default/software_config.json

This file defines which software packages are installed on each functional group of nodes. It is a JSON array where each element maps a functional group to a list of software packages.

Schema

software_config.json is a JSON array of objects. Each object represents one functional group and specifies the software packages to install on nodes belonging to that group.

File: /opt/omnia/input/project_default/software_config.json
[
  {
    "functional_group_name": "<group_name>",
    "software": [
      {
        "name": "<package_name>",
        "version": "<version>"
      }
    ]
  }
]

Field reference

Parameter

Details

cluster_os_type

string / required

Specify the operating system running on the OIM and the one to be provisioned on the compute nodes. Accepted value: rhel.

cluster_os_version

string / required

The OS version that will be provisioned on compute nodes. Accepted value: 10.0.

repo_config

string / required

Controls how Omnia sets up and manages the local Pulp repository. In case of 'always', packages are downloaded and cached on OIM during local_repo.yml execution. In case of 'partial', packages are not pre-downloaded; OIM downloads from upstream URLs when needed. Accepted values: always, partial. Default: always.

softwares

list / elements=dict / required

Array of software packages to be configured.

name

string / required

Name of the software package to be configured./p>

version

string

Specific version of the software package. If omitted, the default version is used.

arch

list / elements=string / required

List of architectures for which this software package is applicable. Accepted values: x86_64, aarch64.

slurm_custom

list / elements=dict

List of Slurm custom role names. Defines the roles used in Slurm cluster deployment.

name

string / required

Role name. Accepted values: slurm_control_node, slurm_node, login_node, login_compiler_node.

service_k8s

list / elements=dict

List of service Kubernetes role names. Defines the roles used in service K8s cluster deployment.

name

string / required

Role name. Accepted values: service_kube_control_plane_first, service_kube_control_plane, service_kube_node.

additional_packages

list / elements=dict

List of roles that receive additional packages. Combines both Slurm and K8s roles plus the base OS role.

name

string / required

Role name. Accepted values: service_kube_control_plane_first, service_kube_control_plane, service_kube_node, slurm_control_node, slurm_node, login_node, login_compiler_node, os.

Usage example

See Software Config Json for complete annotated examples covering Slurm-only, Slurm + K8s, and K8s-only scenarios.

File: /opt/omnia/input/project_default/software_config.json
{
    "cluster_os_type": "rhel",
    "cluster_os_version": "10.0",
    "repo_config": "partial",
    "softwares": [
        {"name": "default_packages", "arch": ["x86_64","aarch64"]},
        {"name": "admin_debug_packages", "arch": ["x86_64","aarch64"]},
        {"name": "openldap", "arch": ["x86_64","aarch64"]},
        {"name": "service_k8s","version": "1.35.1", "arch": ["x86_64"]},
        {"name": "slurm_custom", "arch": ["x86_64","aarch64"]},
        {"name": "csi_driver_powerscale", "version":"v2.17.0", "arch": ["x86_64"]},
        {"name": "ldms", "arch": ["x86_64","aarch64"]},
        {"name": "additional_packages", "arch": ["x86_64","aarch64"]}
    ],
    "slurm_custom": [
        {"name": "slurm_control_node"},
        {"name": "slurm_node"},
        {"name": "login_node"},
        {"name": "login_compiler_node"}
    ],
    "service_k8s": [
        {"name": "service_kube_control_plane_first"},
        {"name": "service_kube_control_plane"},
        {"name": "service_kube_node"}
    ],
    "additional_packages":[
        {"name": "service_kube_control_plane_first"},
        {"name": "service_kube_control_plane"},
        {"name": "service_kube_node"},
        {"name": "slurm_control_node"},
        {"name": "slurm_node"},
        {"name": "login_node"},
        {"name": "login_compiler_node"},
        {"name": "os"}
    ]
}

Note

  • The functional_group_name must exactly match the value in the FUNCTIONAL_GROUP_NAME column of the PXE mapping CSV.

Info