Terraform - O que é Infraestrutura como Código?
Tags: terraform, aws, iaac, cloud
Published: 2022-09-03 05:47:23

Neste atigo iremos entender melhor o que é Infraestrutura como Código, ou simplesmente IaC (infrastructure as code). 

Infraestrutura como código permitem gerenciar a infraestrutura com arquivos de configuração em vez de por meio de uma interface gráfica do usuário. IaC permite que você crie, altere e gerencie sua infraestrutura de maneira segura, consistente e repetitível, definindo configurações de recursos que você pode versionar, reutilizar e compartilhar.

Terraform é a ferramena de infraestrutura como código da HashiCorp. Esta ferramente permite que você defina recursos e infraestrutura em arquivos de configuração declarativos de maneira legível por humanos e gerencie o ciclo de vida de sua infraestrutura. O uso do Terraform tem várias vantagens em relação ao gerenciamento manual de sua infraestrutura:

- Terraform pode gerenciar a infraestrutura em várias plataformas de nuvem (AWS, Azure, GCP, Oracle, entre outros).
- A linguagem de configuração legível por humanos ajuda você a rapidamente escrever infraestrutura como código.
- O gerenciamente de estado do Terraform permite o rastrear alterações de recursos em todas os seus deploys.
- Você pode commitar suas configurações com o controle de versão para colaborar com segurança na infraestrutura.

![Terraform](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qyg9b7y31bfsqj03697d.png)

**Manage any infrastructure**

Os plugins do Terraform chamados de providers permitem que o Terraform interaja com as plataformas de nuvem e outros serviços por meio de APIs (Application Programming Interface). A HashiCorp e a comunidade Terraform já escreveram mais de 1.000 providers para gerenciar recursos na Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk e DataDog, só para citar alguns. Você pode Encontrar providers para as plataformas e serviços que você já usa no [Terraform Registry](https://registry.terraform.io/browse/providers?_gl=1*14d5v34*_ga*MTU2ODY5MDUyMS4xNjYyMTgxNzA5*_ga_P7S46ZYEKW*MTY2MjE4MTcwOS4xLjEuMTY2MjE4MjA3OS4wLjAuMA..).

![Terraform Providers](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j4m164iea6zgssqidm6z.png)

**Padronize o workflow de Deploy**

Os providers definem unidades individuais de infraestrutura, por exemplo, instâncias de computação (Amazon EC2 ou Azure Virtual Machines) ou redes privadas (Amazon VPC ou Azure Virtual Network) como recursos.

A linguagem de configuração do Terraform é declarativa, o que significa que descreve o estado final desejado para sua infraestrutura. Os providers do Terraform calculam automaticamente as dependências entre os recursos para criá-los ou destruí-los na ordem correta.

![Terraform workflow](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mdf5g47myxhtiotaj27i.png)

Para fazer o deploy de infraestrutura com o Terraform:

- Escopo - Identifique a infraestrutura para o seu projeto.
- Autor - Escreva a configuração para sua infraestrutura.
- Inicializar - Instale os plugins que o Terraform precisa para gerenciar a infraestrutura.
- Planejar - Visualize as alterações que o Terraform fará para corresponder à sua configuração.
- Aplicar - Faça as alterações planejadas.

**Acompanhe sua infraestrutura**

O Terraform rastreia sua infraestrutura real em um arquivo de estado, que atua como uma fonte de "verdade" para o seu ambiente. O Terraform usa o arquivo de estado para determinar as alterações a serem feitas em sua infraestrutura para que ela corresponda à sua configuração.

**Conclusão**

Neste artigo vimos alguns conceitos básicos sobre Infraestrutura como Código e Terraform, uma ferramenta de software de código aberto, criada pela HashiCorp. 

Espero que tenham gostado e até a próxima.