Automating FC-NVMe GAD Pair Provisioning on Hitachi Vantara VSP One Block Storage with Red Hat Ansible
Introduction
As enterprises modernize their infrastructure, the need for seamless, automated, and high-performance storage solutions becomes critical. This blog explores how combining Red Hat Ansible with Hitachi Vantara VSP One Block Storage simplifies the deployment of NVMe over Fibre Channel (FC-NVMe) Global-Active Device (GAD) pair, bringing agility, reliability, and operational efficiency to mission-critical environments.
Why Use Ansible to Automate FC-NVMe GAD Configuration?
FC-NVMe GAD enables active-active, synchronous mirroring of volumes between two storage systems, ensuring seamless failover and continuous host access.
Manually configuring FC-NVMe GAD environments can be complex, time-intensive, and error-prone, especially in large-scale enterprise setups involving multiple hosts, storage arrays, and fabric paths.
Ansible addresses these challenges by offering an agentless, open-source automation framework that uses simple, human-readable YAML playbooks. It brings significant value to storage automation by ensuring:
- Consistency across configurations
- Repeatability of deployment processes
- Speed and efficiency in managing intricate setups like FC-NVMe GAD
With Ansible, organizations can streamline operations, reduce manual effort, and minimize the risk of misconfiguration.
Infrastructure Architecture Overview
The diagram below shows the test environment used to run the validation where Ansible Control Node is connected via a direct connection to the Hitachi VSP One series storage system:
Resources used in this environment
- Primary storage: Hitachi VSP One B26 (SVOS 10.3.1- A3-03-21-40/00) used for primary site storage system.
- Secondary storage: Hitachi VSP One B24 (SVOS 10.3.1- A3-03-21-40/00) used for secondary site storage system.
- External storage system: Hitachi VSP E700(SVOS 9.6.0 - 88-08-14-60/00) used for External site storage system.
- FC Switches: 2 Brocade 8510(fw: v8.2.3e, fw: v7.3.1d) & 1 Brocade G630 switch(fw: 9.1.1d) used for FC host connectivity, remote connections, and external storage connectivity between storage systems.
- Ethernet switch: Cisco nexus switch to provide Management network connectivity between resources.
- Ansible Control Node: RHEL 8.10 with Red Hat Ansible Core version 2.16.3 & Python version 3.12.1 is used as the Ansible control node for storage provisioning.
- Test Server: ESXi 8.0 U3 is used as a test server.
Installation package of Hitachi Vantara Storage Modules for Red Hat Ansible
To install the latest version of the Hitachi storage modules from GitHub and use it, run the following command on the Ansible control node using the Ansible Galaxy CLI:
ansible-galaxy collection install hitachivantara.vspone_block
You can also install a specific version with the following command:
ansible-galaxy collection install hitachivantara.vspone_block:==3.x.x
After installation, the sample playbooks for Hitachi Vantara VSP storages will be available in the following path:
/root/.ansible/collections/ansible_collections/hitachivantara/vspone_block/playbooks/vsp_direct
User can modify or create new playbooks according to their need.
The installation package for Hitachi Vantara VSP One Block Storage Modules Ansible integration is also available through alternative sources. For detailed instructions and download options, please refer to the latest VSP One Block Storage Modules Ansible User Guide. The URL is listed in the References section at the end of this blog.
End-to-End FC-NVMe GAD Pair Configuration: Playbooks Overview
After completing the installation, the Ansible Playbooks were customized to align with the environment’s specific requirements. These modified playbooks were then executed to automate the configuration of FC-NVMe GAD pairs, ensuring consistent, efficient, and error-free deployment of active-active volume replication across the connected storage systems.
The configuration was completed by executing the following tasks, with playbooks mentioned below:
- Get DP Pool:
Collect facts about existing DP pools on both primary and secondary storage systems using 'get_storage_pool.yml'.
- Get Parity Group:
Retrieve parity group information to check health and capacity before DP pool creation with 'get_parity_group.yml'.
- DP Pool Creation:
Provision DP Pools on both storage systems for virtual volume creation using 'create_dp_pool.yml'.
- Get LDEV Status:
Check existing LDEV IDs and availability using 'get_ldev.yml'.
- Virtual Volume Creation:
Create virtual volumes (P-Vol) from the DP pool with 'create_virtual_vol.yml'.
- Get Storage Port Info:
Gather storage port details via port ID using 'get_port_info_byid.yml'.
- Change Port Properties:
Modify port mode and security from SCSI to NVMe using 'storage_port_change.yml'.
- Add HBA WWN to Port:
Add the host’s HBA WWN to the storage port default host group using 'add_wwn_storageport.yml'.
- Get NVM Subsystem:
Retrieve available NVM subsystems and check for free IDs with 'get_all_subsystem.yml'.
- Create NVM Subsystem:
Create a new NVM subsystem using a free ID with 'create_nvmsubsystem.yml'.
Note: Omit the namespace for the secondary storage, as it’s auto-assigned during GAD pair creation with NVMe namespace.
- Create Resource Group & Reserve Subsystem ID:
Create a resource group on secondary storage using the primary’s serial number and model as virtual identifiers and reserve the NVM Subsystem ID using 'create_rg_add_nvmsubsystem.yml'.
- Create Remote Connection:
Establish bidirectional remote connections between primary and secondary storage systems. The playbook used was 'create_remote_connection.yml'.
Note: Before running any remote-storage related playbook task, register the remote storage first using the 'remote_storage_registration.yml' playbook (available in the Hitachi Storage Modules for Red Hat® Ansible® public repository; see References).
- Create host group on the external storage:
Create a host group on the external storage port, mapping the LDEV (as external volume) and the WWNs of primary and secondary storage ports.
Playbook used: 'create_hostgroup_with_ldev_wwn.yml'.
- Create External Volumes & Add Quorum Disk:
Create virtual external volumes using external storage capacity for quorum disks on both systems.
Playbooks used: 'create_external_vol.yml' and 'add_quorum_disk.yml'.
Note: The external path must be manually created in advance to provision external volumes using the playbook, as the module for external path creation is currently out of scope.
- Create GAD Pair:
Create a GAD pair on the volumes with a namespace defined for NVMe-oF.
Playbook used: 'create_gad_nvme_pair.yml'
The complete set of playbooks for this setup is available at the following URL:
hitachi-vantara/hv-playbooks-vspone-block
How to Run and Troubleshoot Ansible Playbooks
Before executing any playbook tasks, the user must manually input the storage credential variables into the ansible_vault_storage_var.yml file located at the following path:
/root/.ansible/collections/ansible_collections/hitachivantara/vspone_block/playbooks/ansible_vault_vars
Execute a playbook task using this command syntax:
ansible-playbook <name of the yml file>
To get detailed output, run the playbook with verbose mode using the following syntax:
ansible-playbook <name of the yml file> -vvv
To troubleshoot issues, refer to the log file located at:
$HOME/logs/hitachivantara/ansible/vspone_block/hv_vspone_block_modules.log
Conclusion
Integrating Red Hat Ansible automation with Hitachi Vantara VSP One Block storage with volumes connected to a host via NVMe-oF streamlines Global-Active Device (GAD) Pair provisioning. This combination delivers a resilient, high-performance infrastructure built for mission-critical workloads.
As infrastructure demands evolve toward greater speed, resilience, and operational efficiency, adopting Ansible-driven automation for FC-NVMe GAD pair provisioning positions enterprises to build scalable, reliable, and modern data environments.
References
The following URLs provide additional information and resources:
Public repository for Hitachi Storage Modules for Red Hat® Ansible®
Hitachi Vantara Documentation Portal
Ansible playbooks - Ansible Community Documentation
Ansible Galaxy