Now a days, there is a lot of requirements to manage infrastructure running and working in cloud environment. And we do have the infrastructure running in on-premise environment as well since ages. Then what’s the requirement for Infrastructure as code(IAC) ?
Back in the good old days, when you needed to deploy the infrastructure, a group of powerful beings known as sysadmins used to deploy infrastructure manually. Every server, routers, load balancers, and database configuration was created and managed manually. There always used to be the fear of accidental misconfiguration, fear of down time, and fear of slow and fragile deployments. For example,
- What if sys admins are not available?
- What if we need same infrastructure without any changes, even of a tiny bit?
- What if we need to deploy similar hardware across multiple cloud environments?
To overcome these type of scenarios or issues, DevOps has come into play where we write code to do things Infrastructure as Code. The idea behind IAC is to write code to define, provision, and manage your infrastructure. So with IAC the entire provisioning and deployment process can be automated, which makes it much faster and more reliable than any manual process. You can represent the state of the infrastructure in source files that anyone can read. You can store those source files using any version control software. This will allow you to have multiple versions of the same file with most recent updates and commit log messages as well, easily roll back the changes if something is not working. And also, you can validate all infrastructure changes through code reviews and automated tests
There are various IAC solutions available i.e. CHEF, Puppet, Ansible and of course, Terraform.
In the next post, we shall see more details on Terraform.