Infra as Code com Terraform: um guia completo para iniciantes

Infra as Code com Terraform: um guia completo para iniciantes

O Terraform é uma ferramenta de infraestrutura como código (IaC) desenvolvida pela HashiCorp, que ganhou popularidade por sua capacidade de gerenciar infraestruturas de forma eficiente e escalável. Este guia visa desmistificar o Terraform para iniciantes, oferecendo uma visão abrangente e exemplos práticos.

Mas afinal de contas, o que é Terraform?

Terraform é uma ferramenta de IaC que permite definir, provisionar e gerenciar diferentes tipos de recursos e infraestruturas, como os principais players de mercado no quesito nuvem pública (AWS, Azure, Google Cloud, etc) usando uma linguagem de configuração declarativa conhecida como HashiCorp Configuration Language (HCL).

Por que usar o Terraform?

O Terraform é escolhido por sua capacidade de gerenciar recursos como código de maneira eficiente e escalável, onde ele suporta múltiplos provedores de nuvem, permitindo uma gestão unificada e simplificada.

Com sintaxe declarativa, ele define o estado desejado da infraestrutura, automatizando a criação, atualização e destruição de recursos.

Além do mais, o Terraform promove consistência e colaboração, pois os arquivos de configuração podem ser versionados e revisados como código e, sua execução em planos permite visualizar mudanças antes da aplicação, minimizando riscos.

O Terraform é ideal para ambientes complexos e dinâmicos, onde ele ajuda com a otimização da gestão de infraestrutura, aumentando a produtividade e reduzindo erros humanos.

Conceitos básicos do Terraform

O Terraform é uma ferramenta madura que possui vários componentes e conceitos que podem ser usados no seu dia-a-dia porém, é sempre importante ter em mente que os itens abaixo são os fundamentais:

Providers

Os providers (ou provedores) permitem que o Terraform interaja com APIs de serviços como AWS, Azure, GCP, entre outros. Eles são essenciais para criar e gerenciar recursos. É possível consultar a lista de providers disponíveis para o Terraform em https://registry.terraform.io/browse/providers?category=security-authentication.Além do mais, é importante destacar que o Terraform consegue gerenciar não só os recursos de cloud em si, mas também diversos outros componentes como aplicações de comunicação, CI/CD, orquestração de containers entre diversos outros.

Resources

Os recursos são os componentes básicos da infraestrutura, como instâncias de máquina virtual, redes, e bancos de dados.

Modules

Os módulos nada mais são do que conjuntos de recursos que podem ser reutilizados e compartilhados entre projetos.

State

O estado do Terraform armazena informações sobre o ambiente gerido, permitindo que o Terraform saiba o que já foi provisionado. Essa é uma das parte mais sensíveis do Terraform, já que é dessa forma que ele sabe o que ele poderá gerenciar.

Instalação do Terraform

Para começar, é necessário instalar o Terraform em sua máquina local.

Se estiver usando Linux, você pode executar os seguintes comandos:

				
					# Instala as bibliotecas básicas para o funcionamento do Terraform
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl

# Adiciona a chave do repositório na máquina local
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -

# Adicionando o repositório na lista de repositórios locais
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"

# Faz a instalação do Terraform
sudo apt-get update && sudo apt-get install terraform

				
			

Também é possível instalar usando no MacOS, utilizando o Brew:

				
					brew tap hashicorp/tap
brew install hashicorp/tap/terraform

				
			

Assim como é possível baixar o binário do Terraform diretamente no site oficial através do link https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli (onde inclusive você pode baixar o instalador caso esteja usando Windows).

Exemplo prático: criando uma VM na AWS

O exemplo que iremos usar está disponível no playground da empresa Toolbox, disponível no endereço: https://github.com/toolbox-playground/terraform-exemplo-aws

Configuração inicial

Com o Terraform instalado, você vai precisar de uma chave de acesso para poder criar seus recursos na AWS! Para isso, no console da AWS, procure pelo recurso IAM. Em seguida, gere um acesso do tipo de CLI, onde ele irá te fornecer a ACCESS KEY e a SECRET ACCESS KEY, que são os tokens de acesso que usaremos junto ao Terraform.Como nossa ideia é a de demonstrar o uso do Terraform, vamos utilizar o meio de autenticação mais simples que o Terraform possui, que é através das variáveis de ambiente. Para isso, iremos criar 3 variáveis de ambiente:
				
					# No caso de Linux / MacOS você pode rodar os seguinte comandos:
export AWS_ACCESS_KEY_ID="<ACCESS_KEY_ID>"
export AWS_SECRET_ACCESS_KEY="<SECRET_ACCESS_KEY>"
export AWS_DEFAULT_REGION="<DEFAULT_REGION>"

				
			

Baixando o repositório e executando os comandos

Como informado anteriormente, a Toolbox está disponibilizando um repositório de exemplo para você acompanhar e fazer o seu primeiro exercício com Terraform, que está disponível em https://github.com/toolbox-playground/terraform-exemplo-aws.

Inicializando o Terraform

Agora com tudo instalado e configurado, é hora de inicializar o Terraform. Para isso, basta ir no diretório do seu projeto e executado o seguinte comando:
				
					# Comando para inicializar o Terraform
terraform init

				
			

Este comando é o responsável por baixar todos requisitos para que o provider escolhido funcione corretamente.

Planejando e Aplicando as configurações

Rode o seguinte comando para ver o resultado do planejando (comando plan) e em seguida crie os recursos escolhidos:
				
					# Comando para verificar os recursos que serão criados
terraform plan

				
			
				
					# Comando para criar os recursos informados
terraform apply

				
			

O comando plan é o responsável por mostrar todos os recursos que serão criados/alterados/destruídos pelo Terraform. Esse é um comando extremamente poderoso e que pode te ajudar a decidir se você continua ou não.

Agora que você conferiu o que será modificado, é hora de informarmos para o Terraform que ele pode ir adiante fazendo tais ações. Para isso, você executará:

O Terraform apply fará todas as mudanças informadas no passo anterior. No nosso exemplo, isso é algo simples de identificar, já que estamos fazendo uma criação do zero!

Verificando a instância criada

Acessando o console da AWS, será possível observar nossa máquina virtual já criada:

Limpando os recursos criados

Por fim, informaremos ao Terraform para deletar essa nossa recém máquina virtual. Para isso, o comando necessário é:

				
					# Comando para criar os recursos informados
terraform destroy

				
			

Boas práticas

Como os outros comandos do Terraform, o comando destroy executa um comando plan informando tudo o que será destruído. Após fazer a confirmação, basta seguir para que o Terraform comece a destruição da nossa máquina virtual:Voltando no console da AWS, será possível observar que a máquina já está em processo de descomissionamento

À medida que o Terraform escala, é importante seguir umas boas práticas a fim de não se perder no seu gerenciamento! Alguns exemplos simples que podemos citar são:

  • Organização: Mantenha seus arquivos Terraform organizados em diretórios claros;
  • Modularização: Use módulos para reutilizar configurações;

Versionamento de Estado: Utilize um backend remoto para armazenar o estado, como o S3 da AWS, para facilitar o trabalho em equipe

Acelere sua carreira conosco

Mentoria Next Level DevOps é um programa de mentoria de 12 meses com encontros semanais ao vivo, com um grupo seleto e restrito, onde estaremos do seu lado para mantê-lo relevante e atualizado no mercado de tecnologia, aprendendo e implementando as melhores práticas e ferramentas de DevOps.

Clique aqui para entrar na prioridade pela melhor oferta de lançamento

Considerações finais

Este guia introdutório ao Terraform abordou desde os conceitos básicos até um exemplo prático de como provisionar uma instância EC2 na AWS. Com a prática, você poderá explorar funcionalidades mais avançadas e se beneficiar da automação e eficiência que o Terraform proporciona.

Espero que este guia tenha sido útil para desmistificar o Terraform e ajudar você a dar os primeiros passos nessa poderosa ferramenta de IaC. Continue explorando e experimentando para aprofundar seu conhecimento!