|
1 | | -**SAP HANA Storage Deplyment through Ansible Pipeline** |
| 1 | +# Hitachi Storage Provisioning Pipelines for SAP HANA |
| 2 | + |
| 3 | +**Author:** Hitachi Vantara SAP Engineering Team |
| 4 | +**Date:** November 2025 |
| 5 | +**Tested on:** Hitachi Virtual Storage Platform One Block Storage Modules for Red Hat Ansible 4.4.2 |
2 | 6 |
|
3 | | -Hitachi Vantara developed a comprehensive pipeline encapsulated in **main.yml**, to automate the initial creation of SAP HANA scale-up volumes on the VSP Block storage system. These two pipelines have been created and thoroughly tested for all creation tasks: |
| 7 | +## Overview |
| 8 | +This repository contains automated Ansible pipelines for provisioning and managing Hitachi VSP storage for SAP HANA environments. The pipelines cover both **Scale-Out** and **Scale-Up** deployment models across different VSP storage families (VSP E/F/G Series and VSP One). |
4 | 9 |
|
5 | | -**sap-hana-tdi-su-single-pool**: Designed for the latest VSPs |
| 10 | +## Available Pipelines |
6 | 11 |
|
7 | | -**sap-hana-tdi-su-two-pool**s: Designed for older VSPs |
| 12 | +### 1. SAP HANA Scale-Out (VSP E/F/G Series) |
| 13 | +**Directory:** `sap-hana-scale-out-vsp-efg` |
| 14 | +**Version:** v1.0 |
| 15 | +**Description:** Automated storage provisioning for SAP HANA Scale-Out servers using a **Two HDP Storage Pool** method (Data & Log separation). |
8 | 16 |
|
9 | | -Above pipeline efficiently orchestrates the following tasks: |
| 17 | +**Workflow:** |
| 18 | +1. `0_storagesystem_validate.yml`: Validates VSP system support. |
| 19 | +2. `1_load_nodes.yml`: Loads SAP HANA node details from `nodes_info.csv`. |
| 20 | +3. `2_storage_port_create.yml`: Configures VSP storage ports. |
| 21 | +4. `3_hostgroup_add-wwn_create.yml`: Creates hostgroups and registers WWNs. |
| 22 | +5. `4_paritygroup_get_pg_id.yml`: Checks existing Parity Groups and determines IDs. |
| 23 | +6. `5_paritygroup_create.yml`: Creates Parity Groups for storage pools. |
| 24 | +7. `6_storagepool_create.yml`: Creates two distinct storage pools (Data and Log). |
| 25 | +8. `7_vvol_creation_mapping.yml`: Creates required VVols and maps them to hostgroups. |
10 | 26 |
|
11 | | -**Configure Storage Port**: Sets up the necessary storage ports on the Hitachi VSP system using 1_storage_port_create.yml |
| 27 | +--- |
12 | 28 |
|
13 | | -**Configure Hostgroups:** Establishes host groups and adds WWNs of hosts using 2_hostgroup_create.yml |
| 29 | +### 2. SAP HANA Scale-Out (VSP One) |
| 30 | +**Directory:** `sap-hana-scale-out-vsp-one` |
| 31 | +**Version:** v1.0 |
| 32 | +**Description:** Automated storage provisioning for SAP HANA Scale-Out servers using a **Single DDP Storage Pool** method on VSP One Block Storage. |
14 | 33 |
|
15 | | -**Parity Group Creation:** Creates parity groups with the required RAID type for data redundancy with 4_paritygroup_create.yml, after retrieving the parity group ids with 3_paritygroup_get_pg_id.yml |
| 34 | +**Workflow:** |
| 35 | +1. `0_storagesystem_validate.yml`: Validates VSP One system support. |
| 36 | +2. `1_disk_drives_fact.yml`: Checks for required free disk drives. |
| 37 | +3. `2_ddp_pool_create.yml`: Creates a Dynamic Provisioning (DDP) Pool. |
| 38 | +4. `3_load_nodes.yml`: Loads SAP HANA node details from `nodes_info.csv`. |
| 39 | +5. `4_vsp_one_storage_port_create.yml`: Configures storage ports. |
| 40 | +6. `5_vsp_one_server_profile_create_so.yml`: Creates server profiles, adds WWNs, and connects ports. |
| 41 | +7. `6_vsp_one_volume_creation_mapping.yml`: Creates volumes in the DDP pool and attaches them to server profiles. |
16 | 42 |
|
17 | | -**Single or Two Storage Pool with Pool volumes Creation**: Create a storage pool with approx. 4 or 8 Pool Volumes (PVOLs) with 5_storagepool_create.yml |
| 43 | +--- |
18 | 44 |
|
19 | | -**VVOLs Creation and Mapping**: Provisions for Virtual Volumes (VVOLs) are made for operating system and SAP HANA components, including shared, log, and data volumes, utilizing the 6_vvol_creation_in_pool.yml configuration file. These volumes are then mapped to the host groups that contain the host WWNs. The creation process adheres to Hitachi Vantara's best practices for SAP HANA, ensuring optimal performance and reliability. |
| 45 | +### 3. SAP HANA Scale-Up (VSP E/F/G Series - Single Pool) |
| 46 | +**Directory:** `sap-hana-scale-up-vsp-efg-single-pool` |
| 47 | +**Version:** v1.1 |
| 48 | +**Description:** Automated storage provisioning for a SAP HANA Scale-Up server using a **Single HDP Storage Pool**. |
20 | 49 |
|
21 | | -**Variables:** To manage variables effectively, we have utilized two below variables: |
| 50 | +**Workflow:** |
| 51 | +1. `0_storagesystem_validate.yml`: Validates VSP system support. |
| 52 | +2. `1_storage_port_create.yml`: Configures storage ports. |
| 53 | +3. `2_hostgroup_create.yml`: Creates hostgroups and registers WWNs. |
| 54 | +4. `3_paritygroup_get_pg_id.yml`: Determines Parity Group IDs. |
| 55 | +5. `4_paritygroup_create.yml`: Creates Parity Group with required RAID type. |
| 56 | +6. `5_storagepool_create.yml`: Creates a single HDP storage pool. |
| 57 | +7. `6_vvol_creation_in_pool.yml`: Creates Virtual Volumes and maps LUNs to the hostgroup. |
22 | 58 |
|
23 | | -vsp_direct_variables_create.yml: A file containing global variables for the storage provisioning process, there would be a separate file for modification and deletion. |
| 59 | +--- |
24 | 60 |
|
25 | | -ansible_vault_storage_var.yml: An Ansible Vault file to securely store sensitive VSP credentials and connection information. |
| 61 | +### 4. SAP HANA Scale-Up (VSP E/F/G Series - Two Pools) |
| 62 | +**Directory:** `sap-hana-scale-up-vsp-efg-two-pools` |
| 63 | +**Version:** v1.1 |
| 64 | +**Description:** Automated storage provisioning for a SAP HANA Scale-Up server using **Two HDP Storage Pools** (Data & Log separation). |
26 | 65 |
|
27 | | -**Run the ansible playbook command to use pipeline:** |
| 66 | +**Workflow:** |
| 67 | +1. `0_storagesystem_validate.yml`: Validates VSP system support. |
| 68 | +2. `1_storage_port_create.yml`: Configures storage ports. |
| 69 | +3. `2_hostgroup_create.yml`: Creates hostgroups and registers WWNs. |
| 70 | +4. `3_paritygroup_get_pg_id.yml`: Determines Parity Group IDs. |
| 71 | +5. `4_paritygroup_create.yml`: Creates Parity Groups with required RAID type. |
| 72 | +6. `5_storagepool_create.yml`: Creates two separate HDP storage pools. |
| 73 | +7. `6_vvol_creation_in_pool.yml`: Creates Virtual Volumes in respective pools and maps LUNs. |
28 | 74 |
|
29 | | -ansible-playbook main.yml -e "vsp_storage=e1090" -J |
| 75 | +--- |
30 | 76 |
|
31 | | - -e EXTRA_VARS or --extra-vars EXTRA_VARS set additional variables for the Storage which will be use |
| 77 | +## Configuration Files |
32 | 78 |
|
33 | | - -J or --ask-vault-password or--ask-vault-pass ask for vault password |
| 79 | +Each pipeline directory contains specific configuration files that must be updated before execution: |
34 | 80 |
|
| 81 | +* **`vsp_direct_global_variables.yml`**: |
| 82 | + * Contains global variables specific to the selected pipeline (e.g., Pool Names, RAID levels, LDEV sizing). |
| 83 | + * *Note: Each pipeline has its own version of this file.* |
| 84 | + |
| 85 | +* **`nodes_info.csv`** (Scale-Out Pipelines only): |
| 86 | + * A CSV file containing details for the SAP HANA nodes. |
| 87 | + * **Format:** `Hostname,Storage_Port_1,Storage_Port_2,WWPN_1,WWPN_2` |
| 88 | + |
| 89 | +## Prerequisites |
| 90 | +* Red Hat Ansible Core - 2.16, 2.17, 2.18 |
| 91 | +* Python - 3.9 or higher |
| 92 | +* Hitachi Virtual Storage Platform One Block Storage Modules for Red Hat Ansible 4.3 or later |
| 93 | +* Network connectivity to Hitachi VSP Storage |
| 94 | +* Valid credentials configured in `ansible_vault_storage_var.yml` |
| 95 | + |
| 96 | + |
| 97 | +## Usage |
| 98 | +Run the ansible playbook command to use pipeline: |
| 99 | + |
| 100 | +**`ansible-playbook -J main.yml`** |
| 101 | + |
| 102 | +-J or --ask-vault-password or --ask-vault-pass ask for vault password, use this only if vault file is encrypted. |
35 | 103 |
|
36 | 104 | ################################################################################################### |
37 | 105 |
|
38 | | -**DISCLAIMER: ** |
39 | | -_All materials provided in this repository, including but not limited to Ansible Playbooks and Terraform Configurations, are made available as a courtesy. These materials are intended solely as examples, which may be utilized in whole or in part. Neither the contributors nor the users of this platform assert or are granted any ownership rights over the content shared herein. It is the sole responsibility of the user to evaluate the appropriateness and applicability of the materials for their specific use case. |
40 | | - |
| 106 | +**DISCLAIMER: ** _All materials provided in this repository, including but not limited to Ansible Playbooks and Terraform Configurations, are made available as a courtesy. These materials are intended solely as examples, which may be utilized in whole or in part. Neither the contributors nor the users of this platform assert or are granted any ownership rights over the content shared herein. It is the sole responsibility of the user to evaluate the appropriateness and applicability of the materials for their specific use case. |
| 107 | + |
41 | 108 | Use of the material is at the sole risk of the user and the material is provided “AS IS,” without warranty, guarantees, or support of any kind, including, but not limited to, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement. Unless specified in an applicable license, access to this material grants you no right or license, express or implied, statutorily or otherwise, under any patent, trade secret, copyright, or any other intellectual property right of Hitachi Vantara LLC (“HITACHI”). HITACHI reserves the right to change any material in this document, and any information and products on which this material is based, at any time, without notice. HITACHI shall have no responsibility or liability to any person or entity with respect to any damages, losses, or costs arising from the materials contained herein._ |
0 commit comments