The official Terraform provider for VMware vCloud Director
- Documentation of the latest binary release available at https://www.terraform.io/docs/providers/vcd/index.html
- This project is using go-vcloud-director Golang SDK for making API calls to vCD
- Join through VMware {code} to in #vcd-terraform-dev channel
- Website: https://www.terraform.io
- Mailing list: Google Groups
Note. You only need to build the provider plugin if you want to develop it. Refer to documentation for using it. Terraform will
automatically download officially released binaries of this provider plugin on the first run of
terraform init
command.
Starting with version 2.1 provider started using Go modules This means that it is no longer necessary to be in GOPATH. See more on how to use modules and toggle between modes.
$ cd ~/mydir
$ git clone https://github.com/terraform-providers/terraform-provider-vcd.git
$ cd terraform-provider-vcd/
$ make build
Building The Provider (the old vendor way)
Prior to version 2.1 provider used Go vendor directory for dependency management. This method is not recommended anymore, but can be used to build provider on Go versions < 1.11.
Clone repository to: $GOPATH/src/github.com/terraform-providers/terraform-provider-vcd
$ mkdir -p $GOPATH/src/github.com/terraform-providers; cd $GOPATH/src/github.com/terraform-providers
$ git clone https://github.com/terraform-providers/terraform-provider-vcd.git
Enter the provider directory and build the provider
$ cd $GOPATH/src/github.com/terraform-providers/terraform-provider-vcd
$ make build
Starting with terraform-provider-vcd version 2.1 Go modules are used, while vendor
directory is left for backwards
compatibility only. This means a few things:
- The code no longer needs to stay in your
GOPATH
. It can though - see more on how to use modules and toggle between modes. vendor
directory is not to be changed manually. Always use Go modules when introducing new dependencies and always rebuild the vendor directory usinggo mod vendor
if you have changedgo.mod
orgo.sum
. Travis CI will catch and fail if it is not done. Note Go 1.14+ must be used forgo mod vendor
as starting with this version "/vendor" directory structure changed and Travis will fail if "/vendor" is built and commited with Go <1.12.- When developing
terraform-provider-vcd
one often needs to add extra stuff togo-vcloud-director
. Go modules have a convenient replace directive which can allow you to redirect import path to your own version ofgo-vcloud-director
.go.mod
can be altered: - You can replace your import with a forked branch like this:
module github.com/terraform-providers/terraform-provider-vcd/v2
require (
...
github.com/vmware/go-vcloud-director/v2 v2.1.0-alpha.2
)
replace github.com/vmware/go-vcloud-director/v2 v2.1.0-alpha.2 => github.com/my-git-user/go-vcloud-director/v2 v2.1.0-alpha.2
- You can also replace pointer to a branch with relative directory
module github.com/terraform-providers/terraform-provider-vcd/v2
require (
...
github.com/vmware/go-vcloud-director/v2 v2.1.0-alpha.2
)
replace github.com/vmware/go-vcloud-director/v2 v2.1.0-alpha.2 => ../go-vcloud-director
See CODING_GUIDELINES.md for more advice on how to write code for this project.
For a more thorough test using the Terraform client, you may want to transfer the plugin in the Terraform directory. A make
command can do this for you:
$ make install
This command will build the plugin and transfer it to $HOME/.terraform.d/plugins
, with a name that includes the version (as taken from the ./VERSION
file).
Once you have installed the plugin as mentioned above, you can simply create a new config.tf
as defined in the manual and run
$ terraform init
$ terraform plan
$ terraform apply