This is the repository for the Terraform Provider Flash. The plugin provides resources for the Pure Storage FlashArray to be managed within Terraform.
For general information about Terraform, visit the official website and the GitHub project page.
As of version 1.1.2, the provider is available in the Terraform Registry, and can be downloaded automatically when running terraform init
.
The documentation for the provider can be found on the Provider's website
This provider plugin is maintained by Dave Evans.
Please submit issues here.
Add the required_providers
block to your terraform configuration.
terraform {
required_providers {
flash = {
source = "devans10/flash"
version = "~> 1.1.2"
}
}
}
You will also need to list the provider in all of the resources.
resource "purestorage_volume" "vol1" {
provider = flash
name = "volume_name"
size = 1073741824
}
(Deprecated)
Add the following to $HOME/.terraformrc
providers {
purestorage = "$GOPATH/bin/terraform-provider-flash"
}
Configure in TF configuration
provider "flash" {
api_token = "${var.purestorage_apitoken}"
target = "${var.purestorage_target}"
}
or
provider "flash" {
username = "${var.purestorage_username}"
password = "${var.purestorage_password}"
target = "${var.purestorage_target}"
}
Configure in environment
Set username(PURE_USERNAME
) and password(PURE_PASSWORD
) or API Token(PURE_APITOKEN
) and endpoint(PURE_TARGET
) in environment.
provider "flash" {}
Clone repository to: $GOPATH/src/github.com/devans10/terraform-provider-flash
mkdir -p $GOPATH/src/github.com/devans10; cd $GOPATH/src/github.com/devans10
git clone git@github.com:devans10/terraform-provider-flash
Enter the provider directory and build the provider
cd $GOPATH/src/github.com/devans10/terraform-provider-flash
make build
Using the provider
Create one volume
resource "purestorage_volume" "testvol_tf" {
provider = flash
name = "testvol_tf"
size = "1048000000"
}
Copy a volume
resource "purestorage_volume" "testvol_tf_copy" {
provider = flash
name = "testvol_tf_copy"
source = "testvol_tf"
}
Create a host
resource "purestorage_host" "testhosttf" {
provider = flash
name = "testhosttf"
volume {
vol = "testvol_tf"
lun = 1
}
}
Create a hostgroup
resource "purestorage_hostgroup" "testhgrouptf" {
provider = flash
name = "testhgrouptf"
hosts = ["testhosttf"]
volume {
vol = "testvol_tf_copy"
lun = 250
}
}
Create a Protection Group
Protection Group has a hosts, hgroups, and volumes parameters, but only 1 can be used.
resource "purestorage_protectiongroup" "testpgroup" {
provider = flash
name = "testpgroup"
volumes = ["testvol_tf", "testvol_tf_copy"]
}
If you wish to work on the provider, you'll first need Go installed on your machine (version 1.11+ is required). You'll also need to correctly setup a GOPATH, as well as adding $GOPATH/bin
to your $PATH
.
To compile the provider, run make build
. This will build the provider and put the provider binary in the $GOPATH/bin
directory.
$ make build
...
$ $GOPATH/bin/terraform-provider-flash
...
In order to test the provider, you can simply run make test
.
make test
To run acceptance tests, run make testacc
.
Volumes and Protection Groups created during the acceptance tests are not eradicated.
make testacc
terraform-provider-flash and its developer(s) are not affiliated with or sponsored by Pure Storage. The statements and opinions on this site are those of the developer(s) and do not necessarily represent those of Pure Storage. Pure Storage and the Pure Storage trademarks listed at https://www.purestorage.com/pure-folio/showcase.html?type=pdf&path=/content/dam/pdf/en/legal/external-trademark-list.pdf are trademarks of Pure Storage, Inc.