Step 2: Create groups and assign functional roles to the nodes ================================================================ In Omnia, nodes are organized based on their assigned **groups** and **functional groups**. By combining both groups and functional groups, Omnia offers a powerful and flexible approach to manage large-scale node infrastructures, ensuring both logical organization and physical optimization of resources. * A **group** is based on the physical characteristics of the nodes. It refers to nodes that are located in the same place or have similar hardware. For example, nodes in the same rack or SU (Scalable Unit) might be grouped together, with specific functional groups like **Service Kube Node** or **Slurm Control Node**. Groups help with physical organization and management of nodes. * A **functional group** defines what a node does in the system. It is a way to categorize nodes based on their functionality. Functional groups help group nodes that perform similar tasks, making it easier to manage and assign resources. For example, a node could belong to a functional group such as: - **Service Kube Node** - **Login Node** - **Login Compiler Node** - **Slurm Control Node** - **Slurm Node** Both **functional groups** and **groups** must be configured in the ``functional_groups_config.yml`` input file. This file defines how nodes are organized in Omnia, including their functional roles and group assignments. Create Groups ---------------- Nodes that are located in the same place or similar hardware can be grouped together. To do so, update the ``functional_groups_config.yml`` input file in the ``/opt/omnia/input/project_default`` directory which includes all necessary attributes for the nodes, based on their role within the cluster. Each group will have following attributes as indicated in the table below: .. csv-table:: Group attributes :file: ../../Tables/group_attributes.csv :header-rows: 1 :keepspace: Create Functional groups ------------------ Nodes with similar functional roles or functionalities can be grouped together. The following table lists the functional groups available in Omnia. .. note:: * At least one functional group is mandatory, and you must not change the name of functional groups. * Each **group name** must be unique across all functional groups in the ``functional_groups_config.yml`` file. * The functional groups are case-sensitive in nature. * Omnia supports HA functionality for the ``service_cluster``. For more information, `click here `_. * To set up a service cluster, the ``service_kube_node`` must be present in the ``/opt/omnia/input/project_default/functional_groups_config.yml``. .. csv-table:: Types of Functional Groups :file: ../../Tables/omnia_roles.csv :header-rows: 1 :keepspace: Recommended Software by functional groups ------------------------------------------ The following table lists the functional groups along with the recommended software to be deployed on each group. .. caution:: Ensure that the ``software_config.json`` file contains all required inputs for the software to be deployed on each functional group. For more information, see `Input parameters for Local Repositories `_. +----------------------------------+--------------------------------------------------------------------------------------+ | Functional Group Name | Recommended Software | +==================================+======================================================================================+ | service_kube_node_x86_64 | service_k8s.json, nfs.json, | +----------------------------------+--------------------------------------------------------------------------------------+ | slurm_control_node_x86_64 | slurm_custom.json, nfs.json, openldap.json | +----------------------------------+--------------------------------------------------------------------------------------+ | slurm_node_x86_64 | slurm_custom.json, nfs.json, openldap.json | +----------------------------------+--------------------------------------------------------------------------------------+ | slurm_node_aarch64 | slurm_custom.json, nfs.json, openldap.json | +----------------------------------+--------------------------------------------------------------------------------------+ | login_node_x86_64 | slurm_custom.json, nfs.json, openldap.json | +----------------------------------+--------------------------------------------------------------------------------------+ | login_node_aarch64 | slurm_custom.json, nfs.json, openldap.json | +----------------------------------+--------------------------------------------------------------------------------------+ | login_compiler_node_x86_64 | slurm_custom.json, nfs.json, openldap.json, ucx.json, openmpi.json | +----------------------------------+--------------------------------------------------------------------------------------+ | login_compiler_node_aarch64 | slurm_custom.json, nfs.json, openldap.json, ucx.json, openmpi.json | +----------------------------------+--------------------------------------------------------------------------------------+ Sample ------- Here's a sample (using mapping file) for your reference: :: groups: grp0: location_id: SU-1.RACK-1 parent: "" grp1: location_id: SU-1.RACK-1 parent: "" functional_groups: - name: "slurm_control_node_x86_64" cluster_name: "slurm_cluster" group: - grp0