# ibm/ibm-spectrum-scale-install-infra architecture

> Architecture diagram of the GitHub repository ibm/ibm-spectrum-scale-install-infra, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ibm/ibm-spectrum-scale-install-infra
- Repository: https://github.com/ibm/ibm-spectrum-scale-install-infra

## Overview

This repository is an Ansible role collection for deploying and managing IBM Storage Scale clusters. Operators use an Ansible playbook and inventory to prepare nodes, install or upgrade Scale, configure cluster and filesystem resources, and verify the result; optional roles add management, call-home, and CES services. The tree and README establish these capabilities and role boundaries, but no playbook wiring is present, so the graph does not assert a fixed execution sequence between roles. Sampled module code also shows a separate cluster/node/filesystem management interface backed by Scale command utilities.

Main entry points: [`plugins/module_utils/ibm_spectrumscale_utils.py`](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/module_utils/ibm_spectrumscale_utils.py) (Command utilities), [`plugins/modules/ibm_spectrumscale_node.py`](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/modules/ibm_spectrumscale_node.py) (Node module), [`plugins/module_utils/ibm_spectrumscale_filesystem_utils.py`](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/module_utils/ibm_spectrumscale_filesystem_utils.py) (Filesystem utilities), [`roles/core_install/tasks/main.yml`](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/core_install/tasks/main.yml) (Install Scale)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_core["Core lifecycle"]
  node_prepare["Prepare nodes<br/>[main.yml]"]
  node_install["Install Scale<br/>[main.yml]"]
  node_configure["Configure cluster<br/>[main.yml]"]
  node_upgrade["Upgrade Scale<br/>[main.yml]"]
  node_verify["Verify cluster<br/>[main.yml]"]
  node_firewall["Firewall setup"]
end

subgraph group_services["Cluster services"]
  node_gui["Management GUI"]
  node_perfmon["Performance monitoring"]
  node_callhome["Call Home<br/>[main.yml]"]
  node_grafana["Grafana bridge"]
end

subgraph group_protocols["CES protocols"]
  node_smb["SMB service"]
  node_nfs["NFS service"]
  node_object["Object service"]
  node_s3["S3 service"]
  node_remote["Remote mount"]
end

subgraph group_modules["Ansible modules"]
  node_cluster_module["Cluster module"]
  node_node_module["Node module"]
  node_fs_module["Filesystem module"]
  node_cluster_utils["Cluster utilities"]
  node_fs_utils["Filesystem utilities"]
  node_nsd_utils["NSD utilities"]
  node_disk_utils["Disk utilities"]
  node_command_utils["Command utilities"]
end

node_operator(("Operator"))
node_ansible["Ansible playbook"]
node_scale["IBM Storage Scale"]

node_operator -->|"runs playbook"| node_ansible
node_ansible -->|"invokes role"| node_prepare
node_ansible -->|"invokes role"| node_install
node_ansible -->|"invokes role"| node_configure
node_ansible -->|"invokes role"| node_upgrade
node_ansible -->|"invokes role"| node_verify
node_ansible -->|"invokes role"| node_firewall
node_ansible -->|"invokes role"| node_gui
node_ansible -->|"invokes role"| node_perfmon
node_ansible -->|"invokes role"| node_callhome
node_ansible -.->|"invokes role"| node_grafana
node_ansible -->|"invokes role"| node_smb
node_ansible -->|"invokes role"| node_nfs
node_ansible -->|"invokes role"| node_object
node_ansible -->|"invokes role"| node_s3
node_ansible -->|"invokes role"| node_remote
node_install -->|"installs packages"| node_scale
node_configure -->|"configures cluster"| node_scale
node_upgrade -->|"upgrades software"| node_scale
node_verify -->|"checks cluster"| node_scale
node_gui -->|"installs GUI"| node_scale
node_perfmon -->|"configures monitoring"| node_scale
node_callhome -->|"configures call home"| node_scale
node_smb -->|"configures SMB"| node_scale
node_nfs -->|"configures NFS"| node_scale
node_object -->|"configures Object"| node_scale
node_s3 -->|"configures S3"| node_scale
node_remote -->|"configures mounts"| node_scale
node_operator -->|"requests operation"| node_cluster_module
node_operator -->|"requests operation"| node_node_module
node_operator -->|"requests operation"| node_fs_module
node_cluster_module -->|"calls"| node_cluster_utils
node_node_module -->|"uses"| node_disk_utils
node_node_module -->|"uses"| node_fs_utils
node_node_module -->|"uses"| node_nsd_utils
node_cluster_utils -->|"runs commands"| node_command_utils
node_fs_utils -->|"runs commands"| node_command_utils
node_disk_utils -->|"runs commands"| node_command_utils
node_nsd_utils -->|"runs commands"| node_command_utils
node_command_utils -->|"executes commands"| node_scale
node_fs_module -->|"calls"| node_fs_utils

click node_prepare "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/core_prepare/tasks/main.yml"
click node_install "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/core_install/tasks/main.yml"
click node_configure "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/core_configure/tasks/main.yml"
click node_upgrade "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/core_upgrade/tasks/main.yml"
click node_verify "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/core_verify/tasks/main.yml"
click node_firewall "https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/scale_firewall_config/tasks"
click node_gui "https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/gui_install/tasks"
click node_perfmon "https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/perfmon_configure/tasks"
click node_callhome "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/callhome_configure/tasks/main.yml"
click node_grafana "https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/grafana_bridge_configure/tasks"
click node_smb "https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/smb_configure/tasks"
click node_nfs "https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/nfs_configure/tasks"
click node_object "https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/obj_configure/tasks"
click node_s3 "https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/s3_configure/tasks"
click node_remote "https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/remotemount_configure/tasks"
click node_cluster_module "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/modules/ibm_spectrumscale_cluster.py"
click node_node_module "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/modules/ibm_spectrumscale_node.py"
click node_fs_module "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/modules/ibm_spectrumscale_filesystem.py"
click node_cluster_utils "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/module_utils/ibm_spectrumscale_cluster_utils.py"
click node_fs_utils "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/module_utils/ibm_spectrumscale_filesystem_utils.py"
click node_nsd_utils "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/module_utils/ibm_spectrumscale_nsd_utils.py"
click node_disk_utils "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/module_utils/ibm_spectrumscale_disk_utils.py"
click node_command_utils "https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/module_utils/ibm_spectrumscale_utils.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_prepare,node_install,node_configure,node_upgrade,node_verify,node_firewall toneBlue
class node_gui,node_perfmon,node_callhome,node_grafana,node_scale toneAmber
class node_smb,node_nfs,node_object,node_s3,node_remote toneMint
class node_cluster_module,node_node_module,node_fs_module,node_cluster_utils,node_fs_utils,node_nsd_utils,node_disk_utils,node_command_utils toneRose
class node_operator,node_ansible toneIndigo
```

## Components

### Core lifecycle

- [Prepare nodes](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/core_prepare/tasks/main.yml): `roles/core_prepare/tasks/main.yml`
- [Install Scale](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/core_install/tasks/main.yml): `roles/core_install/tasks/main.yml`
- [Configure cluster](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/core_configure/tasks/main.yml): `roles/core_configure/tasks/main.yml`
- [Upgrade Scale](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/core_upgrade/tasks/main.yml): `roles/core_upgrade/tasks/main.yml`
- [Verify cluster](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/core_verify/tasks/main.yml): `roles/core_verify/tasks/main.yml`
- [Firewall setup](https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/scale_firewall_config/tasks): `roles/scale_firewall_config/tasks`

### Cluster services

- [Management GUI](https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/gui_install/tasks): `roles/gui_install/tasks`
- [Performance monitoring](https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/perfmon_configure/tasks): `roles/perfmon_configure/tasks`
- [Call Home](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/roles/callhome_configure/tasks/main.yml): `roles/callhome_configure/tasks/main.yml`
- [Grafana bridge](https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/grafana_bridge_configure/tasks): `roles/grafana_bridge_configure/tasks`

### CES protocols

- [SMB service](https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/smb_configure/tasks): `roles/smb_configure/tasks`
- [NFS service](https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/nfs_configure/tasks): `roles/nfs_configure/tasks`
- [Object service](https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/obj_configure/tasks): `roles/obj_configure/tasks`
- [S3 service](https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/s3_configure/tasks): `roles/s3_configure/tasks`
- [Remote mount](https://github.com/ibm/ibm-spectrum-scale-install-infra/tree/main/roles/remotemount_configure/tasks): `roles/remotemount_configure/tasks`

### Ansible modules

- [Cluster module](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/modules/ibm_spectrumscale_cluster.py): `plugins/modules/ibm_spectrumscale_cluster.py`
- [Node module](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/modules/ibm_spectrumscale_node.py): `plugins/modules/ibm_spectrumscale_node.py`
- [Filesystem module](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/modules/ibm_spectrumscale_filesystem.py): `plugins/modules/ibm_spectrumscale_filesystem.py`
- [Cluster utilities](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/module_utils/ibm_spectrumscale_cluster_utils.py): `plugins/module_utils/ibm_spectrumscale_cluster_utils.py`
- [Filesystem utilities](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/module_utils/ibm_spectrumscale_filesystem_utils.py): `plugins/module_utils/ibm_spectrumscale_filesystem_utils.py`
- [NSD utilities](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/module_utils/ibm_spectrumscale_nsd_utils.py): `plugins/module_utils/ibm_spectrumscale_nsd_utils.py`
- [Disk utilities](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/module_utils/ibm_spectrumscale_disk_utils.py): `plugins/module_utils/ibm_spectrumscale_disk_utils.py`
- [Command utilities](https://github.com/ibm/ibm-spectrum-scale-install-infra/blob/main/plugins/module_utils/ibm_spectrumscale_utils.py): `plugins/module_utils/ibm_spectrumscale_utils.py`

### Other components

- **Operator**
- **Ansible playbook**
- **IBM Storage Scale**

## Connections

- Operator → Ansible playbook: runs playbook
- Ansible playbook → Prepare nodes: invokes role
- Ansible playbook → Install Scale: invokes role
- Ansible playbook → Configure cluster: invokes role
- Ansible playbook → Upgrade Scale: invokes role
- Ansible playbook → Verify cluster: invokes role
- Ansible playbook → Firewall setup: invokes role
- Ansible playbook → Management GUI: invokes role
- Ansible playbook → Performance monitoring: invokes role
- Ansible playbook → Call Home: invokes role
- Ansible playbook → Grafana bridge: invokes role
- Ansible playbook → SMB service: invokes role
- Ansible playbook → NFS service: invokes role
- Ansible playbook → Object service: invokes role
- Ansible playbook → S3 service: invokes role
- Ansible playbook → Remote mount: invokes role
- Install Scale → IBM Storage Scale: installs packages
- Configure cluster → IBM Storage Scale: configures cluster
- Upgrade Scale → IBM Storage Scale: upgrades software
- Verify cluster → IBM Storage Scale: checks cluster
- Management GUI → IBM Storage Scale: installs GUI
- Performance monitoring → IBM Storage Scale: configures monitoring
- Call Home → IBM Storage Scale: configures call home
- SMB service → IBM Storage Scale: configures SMB
- NFS service → IBM Storage Scale: configures NFS
- Object service → IBM Storage Scale: configures Object
- S3 service → IBM Storage Scale: configures S3
- Remote mount → IBM Storage Scale: configures mounts
- Operator → Cluster module: requests operation
- Operator → Node module: requests operation
- Operator → Filesystem module: requests operation
- Cluster module → Cluster utilities: calls
- Node module → Disk utilities: uses
- Node module → Filesystem utilities: uses
- Node module → NSD utilities: uses
- Cluster utilities → Command utilities: runs commands
- Filesystem utilities → Command utilities: runs commands
- Disk utilities → Command utilities: runs commands
- NSD utilities → Command utilities: runs commands
- Command utilities → IBM Storage Scale: executes commands
- Filesystem module → Filesystem utilities: calls
