Infrastructure as a code for absolute beginner
Tags: beginners, devops, aws, terraform
Published: 2023-05-03 15:16:34

Hello all, welcome to part one of Iac with Terraform. We will start off with what is IaC to provisioning infrastructure with terraform

**What is IAC**
IAC simply stands for infrastructure as a code it is a practice that allows an engineer to set up and manage resources without directly interacting with the cloud console. IaC uses machine-readable code such as Python, Go, Ruby, and HCL.
With IaC tool you to write and execute code to deploy, update and destroy your IT infrastructure such as servers, databases, networks, automated tests, and log files, using code-based configuration and automation tools. 


**Brief history of IaC**

In time past managing IT infrastructure was done manually, you can imagine how painful that could have been, this method was error-prone and time-consuming, and it was difficult for organizations to keep up with rapid technological change.
With the rise of cloud computing and DevOps as a practice there was a growing need for a more agile and automated approach to IT infrastructure management.

By the early 2000s infrastructure, as a code was born, it became popular with tools such as Puppet and Chef, which were released in 2005 and 2009, respectively.

In 2011, Amazon Web Services (AWS) introduced cloudFormation, this service allows users to define infrastructure resources using JSON or YAML format templates. This approach was the beginning of a revolution as this now allows you to write reusable configuration files as it provides a cloud-based solution for managing infrastructure at scale.

 
In the years that followed, the adoption of IaC continued to grow, with many organizations embracing tools like Ansible, Terraform, and Kubernetes. These tools provided more advanced capabilities for managing infrastructure as code, such as automated provisioning, configuration management, and deployment orchestration.


**The five categories of IaC Tool**  

1. Configuration Management Tools: These tools are designed to manage and automate the configuration of software and infrastructure resources. Examples of configuration management tools include Puppet, Chef, and Ansible.

2. Orchestration Tools: These tools are used to manage the deployment and coordination of multiple infrastructure components, such as virtual machines, containers, and storage. Examples of orchestration tools include Kubernetes, Docker Swarm, and Apache Mesos.

3. Cloud Management Platforms: These are cloud-specific IaC tools that provide a unified interface for managing cloud resources from multiple cloud providers. Examples of cloud management platforms include Terraform, CloudFormation, and Azure Resource Manager.

4. Serverless Frameworks: These tools provide a platform for building and deploying serverless applications, which are designed to run on cloud infrastructure without the need for dedicated servers. Examples of serverless frameworks include AWS Serverless Application Model (SAM), Azure Functions, and Google Cloud Functions.

5. Testing and Compliance Tools: These tools help ensure that infrastructure configurations meet security and compliance requirements. Examples of testing and compliance tools include InSpec, Chef Compliance, and AWS Config.

**Conclusion**
Today, IaC has become a key practice in DevOps and cloud computing, enabling organizations to automate and streamline their IT operations. It has also led to the emergence of Infrastructure as a Service (IaaS) and Platform as a Service (PaaS) offerings, which allow businesses to manage their IT infrastructure in a more agile and cost-effective manner.