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
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
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=""
export AWS_SECRET_ACCESS_KEY=""
export AWS_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
# 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á:
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
À 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
A 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!