The cloud demands agility through automation, whether you’re deploying code or infrastructure. That has made infrastructure-as-code cloud automation an integral part of DevOps processes, by letting infrastructure be maintained the same way as code.
In this blog we will explore Terraform providers, which can enable infrastructure-as-code deployment process for your Cloud Volumes ONTAP storage infrastructure across multiple cloud platforms.
In this article we’ll be covering:Infrastructure as code, or IAC as it is popularly known, offers a repeatable process of deploying infrastructure resources at scale, especially in large enterprises. IAC maintains the source of truth for your code and enables version control of your infrastructure configuration that simplifies deployments and rollbacks. An infrastructure-as-code deployment helps both in addressing the issue of configuration drifts and eliminating snowflake environments that could lead to errors and disorder.
All the leading cloud service providers offer their own native IAC solutions. On AWS there is Amazon CloudFormation, while Azure has ARM templates, and Google Cloud offers the Cloud Deployment Manager. However, with multi- and hybrid cloud deployments on the rise, it is more efficient to have a common IAC tool that can be used across multiple platforms. That’s where Terraform can come in handy.
Terraform is an open-source IAC solution that can be used for deploying, updating, and versioning infrastructure. It is cloud agnostic and can be used to manage deployments in AWS, GCP, or Azure. It can also be used for management of on-premises environments hosted on VMware, OpenStack, and more. There is also support to integrate Terraform with source control systems like GitHub and popular DevOps tools.
Terraform cloud deployments use Hashicorp Configuration Language (HCL) to write fully declarative configuration files to manage infrastructure. Terraform enables the concept of immutable infrastructure that can be versioned and checked in into a source control solution. It helps you to create and test execution plans before the actual deployment and tracks the state of environments to identify changes.
Deploying different environments with Terraform is as easy as updating the Terraform template parameters to point to respective environments. Terraform providers are plugins that interact with APIs of service providers/vendors to create and manage resources. For example, each cloud platform has a Terraform provider to manage resources in their respective platforms.
Cloud Volumes ONTAP provides an enterprise class storage management solution for your workloads deployed across all leading cloud platforms. Cloud Volumes ONTAP is based on NetApp ONTAP technology trusted by enterprises to handle storage of mission critical LOB applications for almost 25 years. Besides enhancing performance and ensuring best-in-class data protection, governance, and security, Cloud Volumes ONTAP adds in agility to cloud storage with infrastructure as code, Ansible-ready capabilities.
Alongside Cloud Volumes ONTAP, NetApp Cloud Manager provides a single-pane management view of storage systems deployed across hybrid and multicloud environments. It simplifies provisioning and lifecycle management of cloud storage across diverse platforms, both through the GUI and through RESTful API calls. Cloud Manager also supports automated cloud operations and storage management through NetApp’s Terraform provider.
The earlier approach to Terraform cloud deployment was through thinly wrapped API calls. Now Cloud Manager Terraform provider offers a native, fully supported NetApp product that enhances the previous approach.
The Cloud Manager Terraform provider:
Let’s start with the Terraform basics. You need to include the provider code in your template as the first step. NetApp Cloud Manager is listed in the Hashicorp Terraform registry and you can use the code block below in your Terraform configuration to use the provider.
terraform {
required_providers {
netapp-cloudmanager = {
source = "NetApp/netapp-cloudmanager"
version = "21.1.1"
}
}
}
provider "netapp-cloudmanager" {
# Configuration options
}
Execute the terraform init command to initiate the provider for your deployment.
You can obtain the refresh token by logging into your NetApp BlueXP account and going to this page: https://services.cloud.netapp.com/refresh-token.
Cloud Manager Terraform provider can be used to create the following type of resources: Cloud Volumes ONTAP, aggregates, CIFS server, Cloud Volumes ONTAP storage volumes, NSS Accounts, and SnapMirror® relationships. Let’s look at how this works for each one of them.
In this section we’ll show you how to configure Cloud Volumes ONTAP using Terraform Provider for Cloud Manager.
As a prerequisite, you’ll need a Connecter in place. A Connector resource is required in each cloud provider environment for Cloud Manager to deploy/manage Cloud Volumes ONTAP resources and processes.
Too deploy a Connector, you’ll need an account with permissions in the cloud environment you want to use and a Connector with policies configured for AWS, Azure and GCP. Sample code for deployment of connectors can be found here:
With your Connector set up, you can now use Terraform to deploy Cloud Volumes ONTAP. Let’s explore a sample Terraform code block that can be used for Cloud Volumes ONTAP single node deployment in AWS.
resource "netapp-cloudmanager_cvo_aws" "Cloud Volumes ONTAP-aws" {
provider = netapp-cloudmanager
name = "Cloud Volumes ONTAPSingleNode"
region = "us-west-2"
subnet_id = "subnet-test"
vpc_id = "vpc-0f46c06a"
aws_tag {
tag_key = "demo"
tag_value = "env1"
}
aws_tag {
tag_key = "conf"
tag_value = "singlenode"
}
svm_password = "Test@1234!"
client_id = netapp-cloudmanager_connector_aws.cm-aws.client_id
writing_speed_state = "NORMAL"
}
The following are the arguments for this code
The architecture of Cloud Volumes ONTAP depends on the underlying cloud provider storage disks and groups them into aggregates. The aggregates are then used to provision Cloud Volumes ONTAP storage volumes. Cloud Manager aggregate deployment needs an existing Cloud Volumes ONTAP and Cloud Manager connector as prerequisites.
Sample code for deployment of an aggregate can be found here
Using Cloud Manager Terraform provider, you can provision a CIFS server resource based on an existing AD or workgroup on a Cloud Volumes ONTAP. It can then be used to create CIFS volumes. It also requires a Cloud Volumes ONTAP and Cloud Manager connector deployed as prerequisites.
Sample code for deployment of CIFS server can be found here
This code can be used to create, update, or delete Cloud Volumes ONTAP volumes. You can create NFS, CIFS, and iSCSI volumes using the provider. Both a Cloud Manager Connector resource and Cloud Volumes ONTAP are prerequisites for this action.
Sample code for provisioning volumes can be found here
Using Terraform provider, you can create or delete NetApp Support Site Account, that can be used to reach out to NetApp support team, access KB articles, and download software.
A sample code for deploying an NSS account can be found here
You can use NetApp SnapMirror technology to replicate data between different Cloud Volumes ONTAP volumes. Cloud Manager Terraform provider can be leveraged to create new SnapMirror® configuration for Cloud Volumes ONTAP. Doing this requires a Cloud Volumes ONTAP system and a Cloud Manager connector as prerequisites.
Sample code to create new SnapMirror configurations for Cloud Volumes ONTAP can be found here.
NetApp Terraform Cloud provider enables fully supported IAC deployment for Cloud Volumes ONTAP environments in multiple cloud platforms. It can be easily integrated with your existing DevOps tools to build a comprehensive CI/CD solution for your cloud storage deployments. It enhances the agility offered by Cloud Volumes ONTAP to quickly provision and configure storage volumes for your enterprise workloads on demand.
To get started now, sample configuration files for AWS/Azure/GCP are available in the GitHub for NetApp Cloud Manager Terraform Provider.