How VMware engineers used Terraform to save their deployment workflow
VMware's cloud provider software business unit was drowning in manual processes, until they started using Terraform to build infrastructure as code.
When VMware's cloud provider software business unit needed to update the way they managed their infrastructure, they were fortunate to have a lot of expertise on how to improve their operations since they're in the business of building IT management software.
VMware's infrastructure stack, which is globally distributed among teams in England, Israel, and the US, includes:
They had four main problems to address:
- They were still trying to make infrastructure changes manually at a rapid pace, which ended up creating a mess.
- Not having any documentation for these manual processes exacerbated the problem. Communication was hard with their globally distributed team
- They had trouble keeping one consistent infrastructure setup and tracking changes.
- There was no way to see who made changes and why they made them.
They decided that they needed four things to address those problems:
- A simple way to set up development, staging, and production environments with the exact same infrastructure.
- A method for version controlling the infrastructure (it's not as simple as sharing a configuration file)
- A way to set up infrastructure quickly and automate this process.
- A way to quickly copy production so you can safely test or debug in a production-like environment.
Kiril Nesenko, a DevOps engineer for VMware at the time, helped bring Terraform into his business unit as a solution to these problems.
Their deployment flow, with Terraform, consisted of the following steps:
- Prepare changes to the infrastructure in Terraform's declarative language: HCL
- Pushed changes to Gerrit (code review)
- Jenkins runs smoke testing (validation, formatting, plan)
- Merge and deploy the change to all environments
- The changes are tracked in a Terraform state file (tfstate)
- Notification is sent to relevant Slack channels
It's also recommended that store and manage your Terraform's remote state in an object storage service and version that, or use Terraform Enterprise.
Watch the full 17-minute presentation plus a 9-minute Q&A to get more details on VMware's infrastructure as code practices.
The speaker, Kiril Nesenko, is now a release engineer at Facebook.