HashiCorp Terraform
VMware Cloud Provider

Terraform vCloud Director Provider v2.4.0 Is Here

We have released a new HashiCorp Terraform vCloud Director Provider v2.4.0 version! While in the previous focused v2.3.0 release we had added support for the fresh Terraform 0.12 version, in this new v2.4.0 release we continued to build out the momentum of new capabilities and complete workflows. As usual, you can automatically download it via the terraform init command and find the corresponding documentation on the HashiCorp Terraform website:

https://www.terraform.io/docs/providers/vcd/index.html

Note that if you’d like to read about the features added in the previous major v2.2.0 release, please see this article as well:

https://blogs.vmware.com/cloudprovider/2019/05/terraform-vcloud-director-provider-v2-2-0-released.html

v2.4.0 Features

First of all, we have added two new resources, which complete the full workflow of automating deployment of applications in an otherwise absolutely empty vCD instance:

  • New resource vcd_org_user – for Org User management
  • New resource vcd_edgegateway – for automating management of Edge Gateways in the Org VDC

They become especially powerful when used together with the previously added resources like External Network, Org and Org VDC. Service providers can now automate creation of a working and usable tenant organizations from scratch.

In addition to being useful to users, we are using these capabilities in the development of this provider as well. You can see how we do that in the newly added make test-env-init and make test-env-apply build commands. They are able to setup all the test prerequisite resources in an empty vCD.

Then, there is a major addition to support Load Balancer which is available in the NSX Edge Gateway:

  • New resources vcd_lb_virtual_servervcd_lb_service_monitorvcd_lb_server_poolvcd_lb_app_profile and vcd_lb_app_rule – for automatic Load Balancer creation, similar to what you see in the tabs of the web GUI
  • New data sources vcd_lb_virtual_servervcd_lb_service_monitorvcd_lb_server_poolvcd_lb_app_profile and vcd_lb_app_rule – for the ability to query and refer existing Load Balancer configurations in vCD from within the Terraform

Moreover, we have started adding import functions for the ability to pull in existing resources into Terraform state file and configuration. Both Load Balancer resources and Org User resource come with this capability. For a specific example, please see “Importing” section of the Org User documentation page.

v2.4.0 Improvements

Of course, there are incremental improvements in this release as well:

  • New arguments network_name with network_typein vcd_snat and vcd_dnat resources – for ability to assign a specific network for a NAT rule
  • New argument vcd_org_vdc.metadata – for setting metadata to an Org VDC

Finally, it’s noteworthy, that we have refactored legacy code of how parallel operations are handled. Instead of retry calls the code is now using a reliable locking mechanism, which leads to both faster and more stable operations during apply and destroy phases. This is especially important when many resources are being handled.

Please also see our changelog for more changes and details with links to related GitHub pull requests.

Next Steps

As you can see, we are actively increasing the general capabilities of the Terraform vCloud Director Provider. If you have a need specific to your use case, consider contributing through the GitHub repository in a true open-source fashion. If you have any questions, please join our Slack channel #vcd-terraform-dev through VMware {code}.

And, most importantly, have fun!