Terraform is a tool for managing infrastructure. It works with most cloud providers out there, but it can also (although with considerably more work) integrate with any custom solutions a company might have.
What does it mean to manage infrastructure? Although different infrastructure management systems have different features, there are a few features that are present in most systems:
- Asset lifecycle – Adding or removing assets (machines, load balancers, switches, etc…)
- Networking – Managing how the assets communicate (networks, routes, permissions, etc…)
- Security – Secure the network and machines so it can only be accesses by the intended people
- Updates – Update the system software when necessary for security or stability reasons
There are many tools out there that allow you to manage your infrastructure (Chef, Ansible, Salt, etc…). I have worked in companies that run successfully using Chef, Ansible and Salt, so I’m sure any of the tools can be made to work. I’m writing this post about Terraform because I heard good things about it from people I admire. Two things that usually come up are an easy way to manage your whole infrastructure using configuration files, as well as making optimal changes that can be applied quickly without affecting dependent services.