Cloud Volumes Automation via Terraform
This solution documents the automated deployments of Cloud Volumes on AWS (CVO Single Node, CVO HA and FSX ONTAP) and Azure (CVO Single Node, CVO HA and ANF) using Terraform modules. The code can be found at https://github.com/NetApp/na_cloud_volumes_automation
Pre-requisites
-
Terraform >= 0.13
-
Cloud Manager Account
-
Cloud Provider Account – AWS, Azure
-
Host machine (any OS supported by Terraform)
Provider documentation
The documentation of Terraform provider for Cloud Manager is available at: https://registry.terraform.io/providers/NetApp/netapp-cloudmanager/latest/docs
Controlling the provider version
Note that you can also control the provider version. This is controlled by a required_providers block in your Terraform configuration.
The syntax is as follows:
terraform {
required_providers {
netapp-cloudmanager = {
source = "NetApp/netapp-cloudmanager"
version = ">= 23.0.0"
}
}
}
Read more on provider version control.
Running Specific Modules
AWS
This section contains various Terraform configuration files to deploy/configure single node NetApp CVO (Cloud Volumes ONTAP) on AWS (Amazon Web Services).
Terraform Documentation: https://registry.terraform.io/providers/NetApp/netapp-cloudmanager/latest/docs
In order to run the template:
-
Clone the repository.
git clone https://github.com/NetApp/na_cloud_volumes_automation.git
-
Navigate to the desired folder
cd na_cloud_volumes_automation/
-
Configure AWS credentials from the CLI.
aws configure
-
AWS Access Key ID [None]: accesskey
-
AWS Secret Access Key [None]: secretkey
-
Default region name [None]: us-west-2
-
Default output format [None]: json
-
-
Update the variable values in
vars/aws_cvo_single_node_deployment.tfvar
You can choose to deploy the connector by setting the variable "aws_connector_deploy_bool" value to true/false. -
Initialize the Terraform repository to install all the pre-requisites and prepare for deployment.
terraform init
-
Verify the terraform files using terraform validate command.
terraform validate
-
Make a dry run of the configuration to get a preview of all the changes expected by the deployment.
terraform plan -target="module.aws_sn" -var-file="vars/aws_cvo_single_node_deployment.tfvars"
-
Run the deployment
terraform apply -target="module.aws_sn" -var-file="vars/aws_cvo_single_node_deployment.tfvars"
To delete the deployment
terraform destroy
Connector
Terraform variables for NetApp AWS connector instance for CVO deployment.
Name | Type | Description |
---|---|---|
aws_connector_deploy_bool |
Bool |
(Required) Check for Connector deployment. |
aws_connector_name |
String |
(Required) The name of the Cloud Manager Connector. |
aws_connector_region |
String |
(Required) The region where the Cloud Manager Connector will be created. |
aws_connector_key_name |
String |
(Required) The name of the key pair to use for the Connector instance. |
aws_connector_company |
String |
(Required) The name of the company of the user. |
aws_connector_instance_type |
String |
(Required) The type of instance (for example, t3.xlarge). At least 4 CPU and 16 GB of memory are required. |
aws_connector_subnet_id |
String |
(Required) The ID of the subnet for the instance. |
aws_connector_security_group_id |
String |
(Required) The ID of the security group for the instance, multiple security groups can be provided separated by ','. |
aws_connector_iam_instance_profile_name |
String |
(Required) The name of the instance profile for the Connector. |
aws_connector_account_id |
String |
(Optional) The NetApp account ID that the Connector will be associated with. If not provided, Cloud Manager uses the first account. If no account exists, Cloud Manager creates a new account. You can find the account ID in the account tab of Cloud Manager at https://cloudmanager.netapp.com. |
aws_connector_public_ip_bool |
Bool |
(Optional) Indicates whether to associate a public IP address to the instance. If not provided, the association will be done based on the subnet's configuration. |
Single Node Instance
Terraform variables for single NetApp CVO instance.
Name | Type | Description |
---|---|---|
cvo_name |
String |
(Required) The name of the Cloud Volumes ONTAP working environment. |
cvo_region |
String |
(Required) The region where the working environment will be created. |
cvo_subnet_id |
String |
(Required) The subnet id where the working environment will be created. |
cvo_vpc_id |
String |
(Optional) The VPC ID where the working environment will be created. If this argument isn't provided, the VPC will be calculated by using the provided subnet ID. |
cvo_svm_password |
String |
(Required) The admin password for Cloud Volumes ONTAP. |
cvo_writing_speed_state |
String |
(Optional) The write speed setting for Cloud Volumes ONTAP: ['NORMAL','HIGH']. The default is 'NORMAL'. |
This section contains various Terraform configuration files to deploy/configure NetApp CVO (Cloud Volumes ONTAP) in high availability pair on AWS (Amazon Web Services).
Terraform Documentation: https://registry.terraform.io/providers/NetApp/netapp-cloudmanager/latest/docs
In order to run the template:
-
Clone the repository.
git clone https://github.com/NetApp/na_cloud_volumes_automation.git
-
Navigate to the desired folder
cd na_cloud_volumes_automation/
-
Configure AWS credentials from the CLI.
aws configure
-
AWS Access Key ID [None]: accesskey
-
AWS Secret Access Key [None]: secretkey
-
Default region name [None]: us-west-2
-
Default output format [None]: json
-
-
Update the variable values in
vars/aws_cvo_ha_deployment.tfvars
.You can choose to deploy the connector by setting the variable "aws_connector_deploy_bool" value to true/false. -
Initialize the Terraform repository to install all the pre-requisites and prepare for deployment.
terraform init
-
Verify the terraform files using terraform validate command.
terraform validate
-
Make a dry run of the configuration to get a preview of all the changes expected by the deployment.
terraform plan -target="module.aws_ha" -var-file="vars/aws_cvo_ha_deployment.tfvars"
-
Run the deployment
terraform apply -target="module.aws_ha" -var-file="vars/aws_cvo_ha_deployment.tfvars"
To delete the deployment
terraform destroy
Connector
Terraform variables for NetApp AWS connector instance for CVO deployment.
Name | Type | Description |
---|---|---|
aws_connector_deploy_bool |
Bool |
(Required) Check for Connector deployment. |
aws_connector_name |
String |
(Required) The name of the Cloud Manager Connector. |
aws_connector_region |
String |
(Required) The region where the Cloud Manager Connector will be created. |
aws_connector_key_name |
String |
(Required) The name of the key pair to use for the Connector instance. |
aws_connector_company |
String |
(Required) The name of the company of the user. |
aws_connector_instance_type |
String |
(Required) The type of instance (for example, t3.xlarge). At least 4 CPU and 16 GB of memory are required. |
aws_connector_subnet_id |
String |
(Required) The ID of the subnet for the instance. |
aws_connector_security_group_id |
String |
(Required) The ID of the security group for the instance, multiple security groups can be provided separated by ','. |
aws_connector_iam_instance_profile_name |
String |
(Required) The name of the instance profile for the Connector. |
aws_connector_account_id |
String |
(Optional) The NetApp account ID that the Connector will be associated with. If not provided, Cloud Manager uses the first account. If no account exists, Cloud Manager creates a new account. You can find the account ID in the account tab of Cloud Manager at https://cloudmanager.netapp.com. |
aws_connector_public_ip_bool |
Bool |
(Optional) Indicates whether to associate a public IP address to the instance. If not provided, the association will be done based on the subnet's configuration. |
HA Pair
Terraform variables for NetApp CVO instances in HA Pair.
Name | Type | Description |
---|---|---|
cvo_is_ha |
Bool |
(Optional) Indicate whether the working environment is an HA pair or not [true, false]. The default is false. |
cvo_name |
String |
(Required) The name of the Cloud Volumes ONTAP working environment. |
cvo_region |
String |
(Required) The region where the working environment will be created. |
cvo_node1_subnet_id |
String |
(Required) The subnet id where the first node will be created. |
cvo_node2_subnet_id |
String |
(Required) The subnet id where the second node will be created. |
cvo_vpc_id |
String |
(Optional) The VPC ID where the working environment will be created. If this argument isn't provided, the VPC will be calculated by using the provided subnet ID. |
cvo_svm_password |
String |
(Required) The admin password for Cloud Volumes ONTAP. |
cvo_failover_mode |
String |
(Optional) For HA, the failover mode for the HA pair: ['PrivateIP', 'FloatingIP']. 'PrivateIP' is for a single availability zone and 'FloatingIP' is for multiple availability zones. |
cvo_mediator_subnet_id |
String |
(Optional) For HA, the subnet ID of the mediator. |
cvo_mediator_key_pair_name |
String |
(Optional) For HA, the key pair name for the mediator instance. |
cvo_cluster_floating_ip |
String |
(Optional) For HA FloatingIP, the cluster management floating IP address. |
cvo_data_floating_ip |
String |
(Optional) For HA FloatingIP, the data floating IP address. |
cvo_data_floating_ip2 |
String |
(Optional) For HA FloatingIP, the data floating IP address. |
cvo_svm_floating_ip |
String |
(Optional) For HA FloatingIP, the SVM management floating IP address. |
cvo_route_table_ids |
List |
(Optional) For HA FloatingIP, the list of route table IDs that will be updated with the floating IPs. |
This section contains various Terraform configuration files to deploy/configure NetApp ONTAP FSx on AWS (Amazon Web Services).
Terraform Documentation: https://registry.terraform.io/providers/NetApp/netapp-cloudmanager/latest/docs
In order to run the template:
-
Clone the repository.
git clone https://github.com/NetApp/na_cloud_volumes_automation.git
-
Navigate to the desired folder
cd na_cloud_volumes_automation/
-
Configure AWS credentials from the CLI.
aws configure
-
AWS Access Key ID [None]: accesskey
-
AWS Secret Access Key [None]: secretkey
-
Default region name [None]: us-west-2
-
Default output format [None]:
-
-
Update the variable values in
vars/aws_fsx_deployment.tfvars
You can choose to deploy the connector by setting the variable "aws_connector_deploy_bool" value to true/false. -
Initialize the Terraform repository to install all the pre-requisites and prepare for deployment.
terraform init
-
Verify the terraform files using terraform validate command.
terraform validate
-
Make a dry run of the configuration to get a preview of all the changes expected by the deployment.
terraform plan -target="module.aws_fsx" -var-file="vars/aws_fsx_deployment.tfvars"
-
Run the deployment
terraform apply -target="module.aws_fsx" -var-file="vars/aws_fsx_deployment.tfvars"
To delete the deployment
terraform destroy
Connector
Terraform variables for NetApp AWS connector instance.
Name | Type | Description |
---|---|---|
aws_connector_deploy_bool |
Bool |
(Required) Check for Connector deployment. |
aws_connector_name |
String |
(Required) The name of the Cloud Manager Connector. |
aws_connector_region |
String |
(Required) The region where the Cloud Manager Connector will be created. |
aws_connector_key_name |
String |
(Required) The name of the key pair to use for the Connector instance. |
aws_connector_company |
String |
(Required) The name of the company of the user. |
aws_connector_instance_type |
String |
(Required) The type of instance (for example, t3.xlarge). At least 4 CPU and 16 GB of memory are required. |
aws_connector_subnet_id |
String |
(Required) The ID of the subnet for the instance. |
aws_connector_security_group_id |
String |
(Required) The ID of the security group for the instance, multiple security groups can be provided separated by ','. |
aws_connector_iam_instance_profile_name |
String |
(Required) The name of the instance profile for the Connector. |
aws_connector_account_id |
String |
(Optional) The NetApp account ID that the Connector will be associated with. If not provided, Cloud Manager uses the first account. If no account exists, Cloud Manager creates a new account. You can find the account ID in the account tab of Cloud Manager at https://cloudmanager.netapp.com. |
aws_connector_public_ip_bool |
Bool |
(Optional) Indicates whether to associate a public IP address to the instance. If not provided, the association will be done based on the subnet's configuration. |
FSx Instance
Terraform variables for NetApp ONTAP FSx instance.
Name | Type | Description |
---|---|---|
fsx_name |
String |
(Required) The name of the Cloud Volumes ONTAP working environment. |
fsx_region |
String |
(Required) The region where the working environment will be created. |
fsx_primary_subnet_id |
String |
(Required) The primary subnet id where the working environment will be created. |
fsx_secondary_subnet_id |
String |
(Required) The secondary subnet id where the working environment will be created. |
fsx_account_id |
String |
(Required) The NetApp account ID that the FSx instance will be associated with. If not provided, Cloud Manager uses the first account. If no account exists, Cloud Manager creates a new account. You can find the account ID in the account tab of Cloud Manager at https://cloudmanager.netapp.com. |
fsx_workspace_id |
String |
(Required) The ID of the Cloud Manager workspace of working environment. |
fsx_admin_password |
String |
(Required) The admin password for Cloud Volumes ONTAP. |
fsx_throughput_capacity |
String |
(Optional) capacity of the throughput. |
fsx_storage_capacity_size |
String |
(Optional) EBS volume size for the first data aggregate. For GB, the unit can be: [100 or 500]. For TB, the unit can be: [1,2,4,8,16]. The default is '1' |
fsx_storage_capacity_size_unit |
String |
(Optional) ['GB' or 'TB']. The default is 'TB'. |
fsx_cloudmanager_aws_credential_name |
String |
(Required) The name of the AWS Credentials account name. |
Azure
This section contains various Terraform configuration files to deploy/configure ANF (Azure Netapp Files) Volume on Azure.
Terraform Documentation: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs
In order to run the template:
-
Clone the repository.
git clone https://github.com/NetApp/na_cloud_volumes_automation.git
-
Navigate to the desired folder
cd na_cloud_volumes_automation
-
Login to your Azure CLI (Azure CLI must be installed).
az login
-
Update the variable values in
vars/azure_anf.tfvars
.You can choose to deploy the ANF volume using an existing vnet and subnet by setting the variable "vnet_creation_bool" and "subnet_creation_bool" value to false and supplying the "subnet_id_for_anf_vol". You can also set those values to true and create a new vnet and subnet in which case, the subnet ID will automatically be taken from the newly created subnet. -
Initialize the Terraform repository to install all the pre-requisites and prepare for deployment.
terraform init
-
Verify the terraform files using terraform validate command.
terraform validate
-
Make a dry run of the configuration to get a preview of all the changes expected by the deployment.
terraform plan -target="module.anf" -var-file="vars/azure_anf.tfvars"
-
Run the deployment
terraform apply -target="module.anf" -var-file="vars/azure_anf.tfvars"
To delete the deployment
terraform destroy
Single Node Instance
Terraform variables for single NetApp ANF Volume.
Name | Type | Description |
---|---|---|
az_location |
String |
(Required) Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created. |
az_prefix |
String |
(Required) The name of the resource group where the NetApp Volume should be created. Changing this forces a new resource to be created. |
az_vnet_address_space |
String |
(Required) The address space to be used by the newly created vnet for ANF volume deployment. |
az_subnet_address_prefix |
String |
(Required) The subnet address prefix to be used by the newly created vnet for ANF volume deployment. |
az_volume_path |
String |
(Required) A unique file path for the volume. Used when creating mount targets. Changing this forces a new resource to be created. |
az_capacity_pool_size |
Integer |
(Required) Capacity Pool Size mentioned in TB. |
az_vnet_creation_bool |
Boolean |
(Required) Set this boolean to |
az_subnet_creation_bool |
Boolean |
(Required) Set this boolean to |
az_subnet_id_for_anf_vol |
String |
(Required) Mention the subnet id in case you decide to use an existing subnet by setting |
az_netapp_pool_service_level |
String |
(Required) The target performance of the file system. Valid values include |
az_netapp_vol_service_level |
String |
(Required) The target performance of the file system. Valid values include |
az_netapp_vol_protocol |
String |
(Optional) The target volume protocol expressed as a list. Supported single value include |
az_netapp_vol_security_style |
String |
(Optional) Volume security style, accepted values are |
az_netapp_vol_storage_quota |
String |
(Required) The maximum Storage Quota allowed for a file system in Gigabytes. |
As per the recommendation, this script uses the prevent_destroy lifecycle argument to mitigate the possibility of accidental data loss in the configuration file. For more information on the prevent_destroy lifecycle argument please see the terraform documentation: https://developer.hashicorp.com/terraform/tutorials/state/resource-lifecycle#prevent-resource-deletion.
|
This section contains various Terraform configuration files to deploy/configure ANF (Azure Netapp Files) Volume with Data Protection on Azure.
Terraform Documentation: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs
In order to run the template:
-
Clone the repository.
git clone https://github.com/NetApp/na_cloud_volumes_automation.git
-
Navigate to the desired folder
cd na_cloud_volumes_automation
-
Login to your Azure CLI (Azure CLI must be installed).
az login
-
Update the variable values in
vars/azure_anf_data_protection.tfvars
.You can choose to deploy the ANF volume using an existing vnet and subnet by setting the variable "vnet_creation_bool" and "subnet_creation_bool" value to false and supplying the "subnet_id_for_anf_vol". You can also set those values to true and create a new vnet and subnet in which case, the subnet ID will automatically be taken from the newly created subnet. -
Initialize the Terraform repository to install all the pre-requisites and prepare for deployment.
terraform init
-
Verify the terraform files using terraform validate command.
terraform validate
-
Make a dry run of the configuration to get a preview of all the changes expected by the deployment.
terraform plan -target="module.anf_data_protection" -var-file="vars/azure_anf_data_protection.tfvars"
-
Run the deployment
terraform apply -target="module.anf_data_protection" -var-file="vars/azure_anf_data_protection.tfvars
To delete the deployment
terraform destroy
ANF Data Protection
Terraform variables for single ANF Volume with data protection enabled.
Name | Type | Description |
---|---|---|
az_location |
String |
(Required) Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created. |
az_alt_location |
String |
(Required) The Azure location where the secondary volume will be created |
az_prefix |
String |
(Required) The name of the resource group where the NetApp Volume should be created. Changing this forces a new resource to be created. |
az_vnet_primary_address_space |
String |
(Required) The address space to be used by the newly created vnet for ANF primary volume deployment. |
az_vnet_secondary_address_space |
String |
(Required) The address space to be used by the newly created vnet for ANF secondary volume deployment. |
az_subnet_primary_address_prefix |
String |
(Required) The subnet address prefix to be used by the newly created vnet for ANF primary volume deployment. |
az_subnet_secondary_address_prefix |
String |
(Required) The subnet address prefix to be used by the newly created vnet for ANF secondary volume deployment. |
az_volume_path_primary |
String |
(Required) A unique file path for the primary volume. Used when creating mount targets. Changing this forces a new resource to be created. |
az_volume_path_secondary |
String |
(Required) A unique file path for the secondary volume. Used when creating mount targets. Changing this forces a new resource to be created. |
az_capacity_pool_size_primary |
Integer |
(Required) Capacity Pool Size mentioned in TB. |
az_capacity_pool_size_secondary |
Integer |
(Required) Capacity Pool Size mentioned in TB. |
az_vnet_primary_creation_bool |
Boolean |
(Required) Set this boolean to |
az_vnet_secondary_creation_bool |
Boolean |
(Required) Set this boolean to |
az_subnet_primary_creation_bool |
Boolean |
(Required) Set this boolean to |
az_subnet_secondary_creation_bool |
Boolean |
(Required) Set this boolean to |
az_primary_subnet_id_for_anf_vol |
String |
(Required) Mention the subnet id in case you decide to use an existing subnet by setting |
az_secondary_subnet_id_for_anf_vol |
String |
(Required) Mention the subnet id in case you decide to use an existing subnet by setting |
az_netapp_pool_service_level_primary |
String |
(Required) The target performance of the file system. Valid values include |
az_netapp_pool_service_level_secondary |
String |
(Required) The target performance of the file system. Valid values include |
az_netapp_vol_service_level_primary |
String |
(Required) The target performance of the file system. Valid values include |
az_netapp_vol_service_level_secondary |
String |
(Required) The target performance of the file system. Valid values include |
az_netapp_vol_protocol_primary |
String |
(Optional) The target volume protocol expressed as a list. Supported single value include |
az_netapp_vol_protocol_secondary |
String |
(Optional) The target volume protocol expressed as a list. Supported single value include |
az_netapp_vol_storage_quota_primary |
String |
(Required) The maximum Storage Quota allowed for a file system in Gigabytes. |
az_netapp_vol_storage_quota_secondary |
String |
(Required) The maximum Storage Quota allowed for a file system in Gigabytes. |
az_dp_replication_frequency |
String |
(Required) Replication frequency, supported values are |
As per the recommendation, this script uses the prevent_destroy lifecycle argument to mitigate the possibility of accidental data loss in the configuration file. For more information on the prevent_destroy lifecycle argument please see the terraform documentation: https://developer.hashicorp.com/terraform/tutorials/state/resource-lifecycle#prevent-resource-deletion.
|
This section contains various Terraform configuration files to deploy/configure ANF (Azure Netapp Files) Volume with dual protocol enabled on Azure.
Terraform Documentation: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs
In order to run the template:
-
Clone the repository.
git clone https://github.com/NetApp/na_cloud_volumes_automation.git
-
Navigate to the desired folder
cd na_cloud_volumes_automation
-
Login to your Azure CLI (Azure CLI must be installed).
az login
-
Update the variable values in
vars/azure_anf_dual_protocol.tfvars
.You can choose to deploy the ANF volume using an existing vnet and subnet by setting the variable "vnet_creation_bool" and "subnet_creation_bool" value to false and supplying the "subnet_id_for_anf_vol". You can also set those values to true and create a new vnet and subnet in which case, the subnet ID will automatically be taken from the newly created subnet. -
Initialize the Terraform repository to install all the pre-requisites and prepare for deployment.
terraform init
-
Verify the terraform files using terraform validate command.
terraform validate
-
Make a dry run of the configuration to get a preview of all the changes expected by the deployment.
terraform plan -target="module.anf_dual_protocol" -var-file="vars/azure_anf_dual_protocol.tfvars"
-
Run the deployment
terraform apply -target="module.anf_dual_protocol" -var-file="vars/azure_anf_dual_protocol.tfvars"
To delete the deployment
terraform destroy
Single Node Instance
Terraform variables for single ANF Volume with dual protocol enabled.
Name | Type | Description |
---|---|---|
az_location |
String |
(Required) Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created. |
az_prefix |
String |
(Required) The name of the resource group where the NetApp Volume should be created. Changing this forces a new resource to be created. |
az_vnet_address_space |
String |
(Required) The address space to be used by the newly created vnet for ANF volume deployment. |
az_subnet_address_prefix |
String |
(Required) The subnet address prefix to be used by the newly created vnet for ANF volume deployment. |
az_volume_path |
String |
(Required) A unique file path for the volume. Used when creating mount targets. Changing this forces a new resource to be created. |
az_capacity_pool_size |
Integer |
(Required) Capacity Pool Size mentioned in TB. |
az_vnet_creation_bool |
Boolean |
(Required) Set this boolean to |
az_subnet_creation_bool |
Boolean |
(Required) Set this boolean to |
az_subnet_id_for_anf_vol |
String |
(Required) Mention the subnet id in case you decide to use an existing subnet by setting |
az_netapp_pool_service_level |
String |
(Required) The target performance of the file system. Valid values include |
az_netapp_vol_service_level |
String |
(Required) The target performance of the file system. Valid values include |
az_netapp_vol_protocol1 |
String |
(Required) The target volume protocol expressed as a list. Supported single value include |
az_netapp_vol_protocol2 |
String |
(Required) The target volume protocol expressed as a list. Supported single value include |
az_netapp_vol_storage_quota |
String |
(Required) The maximum Storage Quota allowed for a file system in Gigabytes. |
az_smb_server_username |
String |
(Required) Username to create ActiveDirectory object. |
az_smb_server_password |
String |
(Required) User Password to create ActiveDirectory object. |
az_smb_server_name |
String |
(Required) Server Name to create ActiveDirectory object. |
az_smb_dns_servers |
String |
(Required) DNS Server IP to create ActiveDirectory object. |
As per the recommendation, this script uses the prevent_destroy lifecycle argument to mitigate the possibility of accidental data loss in the configuration file. For more information on the prevent_destroy lifecycle argument please see the terraform documentation: https://developer.hashicorp.com/terraform/tutorials/state/resource-lifecycle#prevent-resource-deletion.
|
This section contains various Terraform configuration files to deploy/configure ANF (Azure Netapp Files) Volume from Snapshot on Azure.
Terraform Documentation: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs
In order to run the template:
-
Clone the repository.
git clone https://github.com/NetApp/na_cloud_volumes_automation.git
-
Navigate to the desired folder
cd na_cloud_volumes_automation
-
Login to your Azure CLI (Azure CLI must be installed).
az login
-
Update the variable values in
vars/azure_anf_volume_from_snapshot.tfvars
.
You can choose to deploy the ANF volume using an existing vnet and subnet by setting the variable "vnet_creation_bool" and "subnet_creation_bool" value to false and supplying the "subnet_id_for_anf_vol". You can also set those values to true and create a new vnet and subnet in which case, the subnet ID will automatically be taken from the newly created subnet. |
-
Initialize the Terraform repository to install all the pre-requisites and prepare for deployment.
terraform init
-
Verify the terraform files using terraform validate command.
terraform validate
-
Make a dry run of the configuration to get a preview of all the changes expected by the deployment.
terraform plan -target="module.anf_volume_from_snapshot" -var-file="vars/azure_anf_volume_from_snapshot.tfvars"
-
Run the deployment
terraform apply -target="module.anf_volume_from_snapshot" -var-file="vars/azure_anf_volume_from_snapshot.tfvars"
To delete the deployment
terraform destroy
Single Node Instance
Terraform variables for single ANF Volume using snapshot.
Name | Type | Description |
---|---|---|
az_location |
String |
(Required) Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created. |
az_prefix |
String |
(Required) The name of the resource group where the NetApp Volume should be created. Changing this forces a new resource to be created. |
az_vnet_address_space |
String |
(Required) The address space to be used by the newly created vnet for ANF volume deployment. |
az_subnet_address_prefix |
String |
(Required) The subnet address prefix to be used by the newly created vnet for ANF volume deployment. |
az_volume_path |
String |
(Required) A unique file path for the volume. Used when creating mount targets. Changing this forces a new resource to be created. |
az_capacity_pool_size |
Integer |
(Required) Capacity Pool Size mentioned in TB. |
az_vnet_creation_bool |
Boolean |
(Required) Set this boolean to |
az_subnet_creation_bool |
Boolean |
(Required) Set this boolean to |
az_subnet_id_for_anf_vol |
String |
(Required) Mention the subnet id in case you decide to use an existing subnet by setting |
az_netapp_pool_service_level |
String |
(Required) The target performance of the file system. Valid values include |
az_netapp_vol_service_level |
String |
(Required) The target performance of the file system. Valid values include |
az_netapp_vol_protocol |
String |
(Optional) The target volume protocol expressed as a list. Supported single value include |
az_netapp_vol_storage_quota |
String |
(Required) The maximum Storage Quota allowed for a file system in Gigabytes. |
az_snapshot_id |
String |
(Required) Snapshot ID using which new ANF volume will be created. |
As per the recommendation, this script uses the prevent_destroy lifecycle argument to mitigate the possibility of accidental data loss in the configuration file. For more information on the prevent_destroy lifecycle argument please see the terraform documentation: https://developer.hashicorp.com/terraform/tutorials/state/resource-lifecycle#prevent-resource-deletion.
|
This section contains various Terraform configuration files to deploy/configure Single Node CVO (Cloud Volumes ONTAP) on Azure.
Terraform Documentation: https://registry.terraform.io/providers/NetApp/netapp-cloudmanager/latest/docs
In order to run the template:
-
Clone the repository.
git clone https://github.com/NetApp/na_cloud_volumes_automation.git
-
Navigate to the desired folder
cd na_cloud_volumes_automation
-
Login to your Azure CLI (Azure CLI must be installed).
az login
-
Update the variables in
vars\azure_cvo_single_node_deployment.tfvars
. -
Initialize the Terraform repository to install all the pre-requisites and prepare for deployment.
terraform init
-
Verify the terraform files using terraform validate command.
terraform validate
-
Make a dry run of the configuration to get a preview of all the changes expected by the deployment.
terraform plan -target="module.az_cvo_single_node_deployment" -var-file="vars\azure_cvo_single_node_deployment.tfvars"
-
Run the deployment
terraform apply -target="module.az_cvo_single_node_deployment" -var-file="vars\azure_cvo_single_node_deployment.tfvars"
To delete the deployment
terraform destroy
Single Node Instance
Terraform variables for single node Cloud Volumes ONTAP (CVO).
Name | Type | Description |
---|---|---|
refresh_token |
String |
(Required) The refresh token of NetApp cloud manager. This can be generated from netapp Cloud Central. |
az_connector_name |
String |
(Required) The name of the Cloud Manager Connector. |
az_connector_location |
String |
(Required) The location where the Cloud Manager Connector will be created. |
az_connector_subscription_id |
String |
(Required) The ID of the Azure subscription. |
az_connector_company |
String |
(Required) The name of the company of the user. |
az_connector_resource_group |
Integer |
(Required) The resource group in Azure where the resources will be created. |
az_connector_subnet_id |
String |
(Required) The name of the subnet for the virtual machine. |
az_connector_vnet_id |
String |
(Required) The name of the virtual network. |
az_connector_network_security_group_name |
String |
(Required) The name of the security group for the instance. |
az_connector_associate_public_ip_address |
String |
(Required) Indicates whether to associate the public IP address to the virtual machine. |
az_connector_account_id |
String |
(Required) The NetApp account ID that the Connector will be associated with. If not provided, Cloud Manager uses the first account. If no account exists, Cloud Manager creates a new account. You can find the account ID in the account tab of Cloud Manager at https://cloudmanager.netapp.com. |
az_connector_admin_password |
String |
(Required) The password for the Connector. |
az_connector_admin_username |
String |
(Required) The user name for the Connector. |
az_cvo_name |
String |
(Required) The name of the Cloud Volumes ONTAP working environment. |
az_cvo_location |
String |
(Required) The location where the working environment will be created. |
az_cvo_subnet_id |
String |
(Required) The name of the subnet for the Cloud Volumes ONTAP system. |
az_cvo_vnet_id |
String |
(Required) The name of the virtual network. |
az_cvo_vnet_resource_group |
String |
(Required) The resource group in Azure associated to the virtual network. |
az_cvo_data_encryption_type |
String |
(Required) The type of encryption to use for the working environment: [ |
az_cvo_storage_type |
String |
(Required) The type of storage for the first data aggregate: [ |
az_cvo_svm_password |
String |
(Required) The admin password for Cloud Volumes ONTAP. |
az_cvo_workspace_id |
String |
(Required) The ID of the Cloud Manager workspace where you want to deploy Cloud Volumes ONTAP. If not provided, Cloud Manager uses the first workspace. You can find the ID from the Workspace tab on https://cloudmanager.netapp.com. |
az_cvo_capacity_tier |
String |
(Required) Whether to enable data tiering for the first data aggregate: [ |
az_cvo_writing_speed_state |
String |
(Required) The write speed setting for Cloud Volumes ONTAP: [ |
az_cvo_ontap_version |
String |
(Required) The required ONTAP version. Ignored if 'use_latest_version' is set to true. The default is to use the latest version. |
az_cvo_instance_type |
String |
(Required) The type of instance to use, which depends on the license type you chose: Explore:[ |
az_cvo_license_type |
String |
(Required) The type of license to be use. For single node: [ |
az_cvo_nss_account |
String |
(Required) he NetApp Support Site account ID to use with this Cloud Volumes ONTAP system. If the license type is BYOL and an NSS account isn't provided, Cloud Manager tries to use the first existing NSS account. |
az_tenant_id |
String |
(Required) Tenant ID of the application/service principal registered in Azure. |
az_application_id |
String |
(Required) Application ID of the application/service principal registered in Azure. |
az_application_key |
String |
(Required) The Application Key of the application/service principal registered in Azure. |
This section contains various Terraform configuration files to deploy/configure CVO (Cloud Volumes ONTAP) HA (High Availability) on Azure.
Terraform Documentation: https://registry.terraform.io/providers/NetApp/netapp-cloudmanager/latest/docs
In order to run the template:
-
Clone the repository.
git clone https://github.com/NetApp/na_cloud_volumes_automation.git
-
Navigate to the desired folder
cd na_cloud_volumes_automation
-
Login to your Azure CLI (Azure CLI must be installed).
az login
-
Update the variables in
vars\azure_cvo_ha_deployment.tfvars
. -
Initialize the Terraform repository to install all the pre-requisites and prepare for deployment.
terraform init
-
Verify the terraform files using terraform validate command.
terraform validate
-
Make a dry run of the configuration to get a preview of all the changes expected by the deployment.
terraform plan -target="module.az_cvo_ha_deployment" -var-file="vars\azure_cvo_ha_deployment.tfvars"
-
Run the deployment
terraform apply -target="module.az_cvo_ha_deployment" -var-file="vars\azure_cvo_ha_deployment.tfvars"
To delete the deployment
terraform destroy
HA Pair Instance
Terraform variables for HA pair Cloud Volumes ONTAP (CVO).
Name | Type | Description |
---|---|---|
refresh_token |
String |
(Required) The refresh token of NetApp cloud manager. This can be generated from netapp Cloud Central. |
az_connector_name |
String |
(Required) The name of the Cloud Manager Connector. |
az_connector_location |
String |
(Required) The location where the Cloud Manager Connector will be created. |
az_connector_subscription_id |
String |
(Required) The ID of the Azure subscription. |
az_connector_company |
String |
(Required) The name of the company of the user. |
az_connector_resource_group |
Integer |
(Required) The resource group in Azure where the resources will be created. |
az_connector_subnet_id |
String |
(Required) The name of the subnet for the virtual machine. |
az_connector_vnet_id |
String |
(Required) The name of the virtual network. |
az_connector_network_security_group_name |
String |
(Required) The name of the security group for the instance. |
az_connector_associate_public_ip_address |
String |
(Required) Indicates whether to associate the public IP address to the virtual machine. |
az_connector_account_id |
String |
(Required) The NetApp account ID that the Connector will be associated with. If not provided, Cloud Manager uses the first account. If no account exists, Cloud Manager creates a new account. You can find the account ID in the account tab of Cloud Manager at https://cloudmanager.netapp.com. |
az_connector_admin_password |
String |
(Required) The password for the Connector. |
az_connector_admin_username |
String |
(Required) The user name for the Connector. |
az_cvo_name |
String |
(Required) The name of the Cloud Volumes ONTAP working environment. |
az_cvo_location |
String |
(Required) The location where the working environment will be created. |
az_cvo_subnet_id |
String |
(Required) The name of the subnet for the Cloud Volumes ONTAP system. |
az_cvo_vnet_id |
String |
(Required) The name of the virtual network. |
az_cvo_vnet_resource_group |
String |
(Required) The resource group in Azure associated to the virtual network. |
az_cvo_data_encryption_type |
String |
(Required) The type of encryption to use for the working environment: [ |
az_cvo_storage_type |
String |
(Required) The type of storage for the first data aggregate: [ |
az_cvo_svm_password |
String |
(Required) The admin password for Cloud Volumes ONTAP. |
az_cvo_workspace_id |
String |
(Required) The ID of the Cloud Manager workspace where you want to deploy Cloud Volumes ONTAP. If not provided, Cloud Manager uses the first workspace. You can find the ID from the Workspace tab on https://cloudmanager.netapp.com. |
az_cvo_capacity_tier |
String |
(Required) Whether to enable data tiering for the first data aggregate: [ |
az_cvo_writing_speed_state |
String |
(Required) The write speed setting for Cloud Volumes ONTAP: [ |
az_cvo_ontap_version |
String |
(Required) The required ONTAP version. Ignored if 'use_latest_version' is set to true. The default is to use the latest version. |
az_cvo_instance_type |
String |
(Required) The type of instance to use, which depends on the license type you chose: Explore:[ |
az_cvo_license_type |
String |
(Required) The type of license to be use. For single node: [ |
az_cvo_nss_account |
String |
(Required) he NetApp Support Site account ID to use with this Cloud Volumes ONTAP system. If the license type is BYOL and an NSS account isn't provided, Cloud Manager tries to use the first existing NSS account. |
az_tenant_id |
String |
(Required) Tenant ID of the application/service principal registered in Azure. |
az_application_id |
String |
(Required) Application ID of the application/service principal registered in Azure. |
az_application_key |
String |
(Required) The Application Key of the application/service principal registered in Azure. |
GCP
This section contains various Terraform configuration files to deploy/configure single node NetApp CVO (Cloud Volumes ONTAP) on GCP (Google Cloud Platform).
Terraform Documentation: https://registry.terraform.io/providers/NetApp/netapp-cloudmanager/latest/docs
In order to run the template:
-
Clone the repository.
git clone https://github.com/NetApp/na_cloud_volumes_automation.git
-
Navigate to the desired folder
cd na_cloud_volumes_automation/
-
Save the GCP authentication key JSON file in the directory.
-
Update the variable values in
vars/gcp_cvo_single_node_deployment.tfvar
You can choose to deploy the connector by setting the variable "gcp_connector_deploy_bool" value to true/false. -
Initialize the Terraform repository to install all the pre-requisites and prepare for deployment.
terraform init
-
Verify the terraform files using terraform validate command.
terraform validate
-
Make a dry run of the configuration to get a preview of all the changes expected by the deployment.
terraform plan -target="module.gco_single_node" -var-file="vars/gcp_cvo_single_node_deployment.tfvars"
-
Run the deployment
terraform apply -target="module.gcp_single_node" -var-file="vars/gcp_cvo_single_node_deployment.tfvars"
To delete the deployment
terraform destroy
Connector
Terraform variables for NetApp GCP connector instance for CVO deployment.
Name | Type | Description |
---|---|---|
gcp_connector_deploy_bool |
Bool |
(Required) Check for Connector deployment. |
gcp_connector_name |
String |
(Required) The name of the Cloud Manager Connector. |
gcp_connector_project_id |
String |
(Required) The GCP project_id where the connector will be created. |
gcp_connector_zone |
String |
(Required) The GCP zone where the Connector will be created. |
gcp_connector_company |
String |
(Required) The name of the company of the user. |
gcp_connector_service_account_email |
String |
(Required) The email of the service_account for the connector instance. This service account is used to allow the Connector to create Cloud Volume ONTAP. |
gcp_connector_service_account_path |
String |
(Required) The local path of the service_account JSON file for GCP authorization purposes. This service account is used to create the Connector in GCP. |
gcp_connector_account_id |
String |
(Optional) The NetApp account ID that the Connector will be associated with. If not provided, Cloud Manager uses the first account. If no account exists, Cloud Manager creates a new account. You can find the account ID in the account tab of Cloud Manager at https://cloudmanager.netapp.com. |
Single Node Instance
Terraform variables for single NetApp CVO instance on GCP.
Name | Type | Description |
---|---|---|
gcp_cvo_name |
String |
(Required) The name of the Cloud Volumes ONTAP working environment. |
gcp_cvo_project_id |
String |
(Required) The ID of the GCP project. |
gcp_cvo_zone |
String |
(Required) The zone of the region where the working environment will be created. |
gcp_cvo_gcp_service_account |
String |
(Required) The gcp_service_account email in order to enable tiering of cold data to Google Cloud Storage. |
gcp_cvo_svm_password |
String |
(Required) The admin password for Cloud Volumes ONTAP. |
gcp_cvo_workspace_id |
String |
(Optional) The ID of the Cloud Manager workspace where you want to deploy Cloud Volumes ONTAP. If not provided, Cloud Manager uses the first workspace. You can find the ID from the Workspace tab on https://cloudmanager.netapp.com. |
gcp_cvo_license_type |
String |
(Optional) The type of license to use. For single node: ['capacity-paygo', 'gcp-cot-explore-paygo', 'gcp-cot-standard-paygo', 'gcp-cot-premium-paygo', 'gcp-cot-premium-byol'], For HA: ['ha-capacity-paygo', 'gcp-ha-cot-explore-paygo', 'gcp-ha-cot-standard-paygo', 'gcp-ha-cot-premium-paygo', 'gcp-ha-cot-premium-byol']. The default is 'capacity-paygo' for single node, and 'ha-capacity-paygo' for HA. |
gcp_cvo_capacity_package_name |
String |
(Optional) The capacity package name: ['Essential', 'Professional', 'Freemium']. Default is 'Essential'. |
This section contains various Terraform configuration files to deploy/configure NetApp CVO (Cloud Volumes ONTAP) in high availability pair on GCP (Google Cloud Platform).
Terraform Documentation: https://registry.terraform.io/providers/NetApp/netapp-cloudmanager/latest/docs
In order to run the template:
-
Clone the repository.
git clone https://github.com/NetApp/na_cloud_volumes_automation.git
-
Navigate to the desired folder
cd na_cloud_volumes_automation/
-
Save the GCP authentication key JSON file in the directory.
-
Update the variable values in
vars/gcp_cvo_ha_deployment.tfvars
.You can choose to deploy the connector by setting the variable "gcp_connector_deploy_bool" value to true/false. -
Initialize the Terraform repository to install all the pre-requisites and prepare for deployment.
terraform init
-
Verify the terraform files using terraform validate command.
terraform validate
-
Make a dry run of the configuration to get a preview of all the changes expected by the deployment.
terraform plan -target="module.gcp_ha" -var-file="vars/gcp_cvo_ha_deployment.tfvars"
-
Run the deployment
terraform apply -target="module.gcp_ha" -var-file="vars/gcp_cvo_ha_deployment.tfvars"
To delete the deployment
terraform destroy
Connector
Terraform variables for NetApp GCP connector instance for CVO deployment.
Name | Type | Description |
---|---|---|
gcp_connector_deploy_bool |
Bool |
(Required) Check for Connector deployment. |
gcp_connector_name |
String |
(Required) The name of the Cloud Manager Connector. |
gcp_connector_project_id |
String |
(Required) The GCP project_id where the connector will be created. |
gcp_connector_zone |
String |
(Required) The GCP zone where the Connector will be created. |
gcp_connector_company |
String |
(Required) The name of the company of the user. |
gcp_connector_service_account_email |
String |
(Required) The email of the service_account for the connector instance. This service account is used to allow the Connector to create Cloud Volume ONTAP. |
gcp_connector_service_account_path |
String |
(Required) The local path of the service_account JSON file for GCP authorization purposes. This service account is used to create the Connector in GCP. |
gcp_connector_account_id |
String |
(Optional) The NetApp account ID that the Connector will be associated with. If not provided, Cloud Manager uses the first account. If no account exists, Cloud Manager creates a new account. You can find the account ID in the account tab of Cloud Manager at https://cloudmanager.netapp.com. |
HA Pair
Terraform variables for NetApp CVO instances in HA Pair on GCP.
Name | Type | Description |
---|---|---|
gcp_cvo_is_ha |
Bool |
(Optional) Indicate whether the working environment is an HA pair or not [true, false]. The default is false. |
gcp_cvo_name |
String |
(Required) The name of the Cloud Volumes ONTAP working environment. |
gcp_cvo_project_id |
String |
(Required) The ID of the GCP project. |
gcp_cvo_zone |
String |
(Required) The zone of the region where the working environment will be created. |
gcp_cvo_node1_zone |
String |
(Optional) Zone for node 1. |
gcp_cvo_node2_zone |
String |
(Optional) Zone for node 2. |
gcp_cvo_mediator_zone |
String |
(Optional) Zone for mediator. |
gcp_cvo_vpc_id |
String |
(Optional) The name of the VPC. |
gcp_cvo_subnet_id |
String |
(Optional) The name of the subnet for Cloud Volumes ONTAP. The default is: 'default'. |
gcp_cvo_vpc0_node_and_data_connectivity |
String |
(Optional) VPC path for nic1, required for node and data connectivity. If using shared VPC, netwrok_project_id must be provided. |
gcp_cvo_vpc1_cluster_connectivity |
String |
(Optional) VPC path for nic2, required for cluster connectivity. |
gcp_cvo_vpc2_ha_connectivity |
String |
(Optional) VPC path for nic3, required for HA connectivity. |
gcp_cvo_vpc3_data_replication |
String |
(Optional) VPC path for nic4, required for data replication. |
gcp_cvo_subnet0_node_and_data_connectivity |
String |
(Optional) Subnet path for nic1, required for node and data connectivity. If using shared VPC, netwrok_project_id must be provided. |
gcp_cvo_subnet1_cluster_connectivity |
String |
(Optional) Subnet path for nic2, required for cluster connectivity. |
gcp_cvo_subnet2_ha_connectivity |
String |
(Optional) Subnet path for nic3, required for HA connectivity. |
gcp_cvo_subnet3_data_replication |
String |
(Optional) Subnet path for nic4, required for data replication. |
gcp_cvo_gcp_service_account |
String |
(Required) The gcp_service_account email in order to enable tiering of cold data to Google Cloud Storage. |
gcp_cvo_svm_password |
String |
(Required) The admin password for Cloud Volumes ONTAP. |
gcp_cvo_workspace_id |
String |
(Optional) The ID of the Cloud Manager workspace where you want to deploy Cloud Volumes ONTAP. If not provided, Cloud Manager uses the first workspace. You can find the ID from the Workspace tab on https://cloudmanager.netapp.com. |
gcp_cvo_license_type |
String |
(Optional) The type of license to use. For single node: ['capacity-paygo', 'gcp-cot-explore-paygo', 'gcp-cot-standard-paygo', 'gcp-cot-premium-paygo', 'gcp-cot-premium-byol'], For HA: ['ha-capacity-paygo', 'gcp-ha-cot-explore-paygo', 'gcp-ha-cot-standard-paygo', 'gcp-ha-cot-premium-paygo', 'gcp-ha-cot-premium-byol']. The default is 'capacity-paygo' for single node, and 'ha-capacity-paygo' for HA. |
gcp_cvo_capacity_package_name |
String |
(Optional) The capacity package name: ['Essential', 'Professional', 'Freemium']. Default is 'Essential'. |
gcp_cvo_gcp_volume_size |
String |
(Optional) The GCP volume size for the first data aggregate. For GB, the unit can be: [100 or 500]. For TB, the unit can be: [1,2,4,8]. The default is '1' . |
gcp_cvo_gcp_volume_size_unit |
String |
(Optional) ['GB' or 'TB']. The default is 'TB'. |
This section contains various Terraform configuration files to deploy/configure NetApp Volumes (Google Cloud NetApp Volumes) volume on GCP (Google Cloud Platform).
Terraform Documentation: https://registry.terraform.io/providers/NetApp/netapp-gcp/latest/docs
In order to run the template:
-
Clone the repository.
git clone https://github.com/NetApp/na_cloud_volumes_automation.git
-
Navigate to the desired folder
cd na_cloud_volumes_automation/
-
Save the GCP authentication key JSON file in the directory.
-
Update the variable values in
vars/gcp_cvs_volume.tfvars
. -
Initialize the Terraform repository to install all the pre-requisites and prepare for deployment.
terraform init
-
Verify the terraform files using terraform validate command.
terraform validate
-
Make a dry run of the configuration to get a preview of all the changes expected by the deployment.
terraform plan -target="module.gcp_cvs_volume" -var-file="vars/gcp_cvs_volume.tfvars"
-
Run the deployment
terraform apply -target="module.gcp_cvs_volume" -var-file="vars/gcp_cvs_volume.tfvars"
To delete the deployment
terraform destroy
NetApp Volumes Volume
Terraform variables for NetApp GCP NetApp Volumes Volume.
Name | Type | Description |
---|---|---|
gcp_cvs_name |
String |
(Required) The name of the NetApp Volumes volume. |
gcp_cvs_project_id |
String |
(Required) The GCP project_id where the NetApp Volumes Volume will be created. |
gcp_cvs_gcp_service_account_path |
String |
(Required) The local path of the service_account JSON file for GCP authorization purposes. This service account is used to create the NetApp Volumes Volume in GCP. |
gcp_cvs_region |
String |
(Required) The GCP zone where the NetApp Volumes Volume will be created. |
gcp_cvs_network |
String |
(Required) The network VPC of the volume. |
gcp_cvs_size |
Integer |
(Required) The size of volume is between 1024 to 102400 inclusive (in GiB). |
gcp_cvs_volume_path |
String |
(Optional) The name of the volume path for volume. |
gcp_cvs_protocol_types |
String |
(Required) The protocol_type of the volume. For NFS use 'NFSv3' or 'NFSv4' and for SMB use 'CIFS' or 'SMB'. |