(IaC) Parte 1: Criando uma instância EC2 na AWS usando Terraform

Opa, maravilha pessoal. Hoje começo apresentando o primeiro de 5 artigos sobre infra-as-code, onde vamos aprender sobre Terraform, Ansible e AWS. Existem outras ferramentas que gerenciam a infra como código mas irei mostrar apenas as listadas acima. Pegue seu café, se acomode na cadeira que vem DevOps. 🚀 💻

Só vendo um pouco o que é o Terraform, é uma das ferramentas de infraestrutura muito populares, é um dos produtos da HashiCorp, uma empresa de software de código aberto com sede em San Francisco, Califórnia. Basicamente, o Terraform permite definir a infraestrutura para uma variedade de fornecedores. Por exemplo: AWS, Azure, GCP, Digital Ocean e OpenStack, etc.

Sugiro a leitura do artigo do pessoal da concrete.com que é topzera da balada. Seria bom você ler antes de prosseguir no artigo, isso vai ajudar você a entender melhor o processo de criação da instância. Link do artigo.

  • Principais comandos do Terraform

terraform init baixa os plugins necessários para executar o código.
terraform plan mostra o que o Terraform irá realizar na infra.
terrraform apply executa tudo que foi definido no arquivo de configuração.
terraform destroy irá destruir tudo que foi aplicado no provider.

Antes de iniciar, vale destacar que estou usando o sistema Ubuntu, então mostrarei a instalação da ferramenta nesse sistema, caso você queira instalar em outra distro, acesse a documentação aqui, é sensacional.

  • Instalação do Terraform no Linux Ubuntu

Para fazer a devida instalação basta navegar até a página abaixo e selecionar a sua distro, neste caso vou usar o Linux:

https://www.terraform.io/downloads.html

Agora vamos aos comandos:

  • Verifique se você possui o pacote unzip instalado, se não possuir faça a instalação conforme abaixo:
  • Nesse passo você precisa extrair o arquivo baixado do Terraform, lembre-se que você fez o download do pacote do Terraform:
  • Em seguida mova o binário para o diretório /usr/local/bin
  • Feito isso, para testar vamos executar o comando abaixo:
  • Veja as opções de uso do comando Terraform, basta executar # terraform
  • Criação de usuário na AWS

É necessário criar um usuário para gestão da instância EC2, vou deixar aqui a documentação da AWS que mostra de forma bem resumida e direta esse procedimento:

Criação de um usuário do IAM na sua conta da AWS.

Vale ressaltar que esse case pode ser feito usando o nível gratuito da AWS:

Conheça o nível gratuito e todos os recursos disponibilizados.

O que é importante nesse processo?
Depois que você terminar de criar seu usuário e adicionar ele em um grupo, será necessário salvar o ID da chave de acesso e a chave de acesso secreta. Isso será usado em um arquivo para que o terraform entenda onde estão as credenciais. Você verá uma tela similar a essa abaixo:

Criação de usuário na AWS com IAM
  • Criação do arquivo de credentials

Vamos agora criar um arquivo chamado credentials no seu /home e adicionar as chaves que foram criadas. Para isso execute:

# mkdir .aws

# vim .aws/credentials

Feito isso, vamos criar outro arquivo onde serão feitas as configurações da nossa infra na AWS, o terraform vai ler esse arquivo para criar nossa infra.

Vale mencionar que a HashiCorp usa o HCL (HashiCorp Configuration Language) é uma linguagem de configuração. O objetivo do HCL é criar uma linguagem de configuração estruturada que seja humana e amigável à máquina para uso com ferramentas de linha de comando, mas voltada especificamente para ferramentas, servidores, DevOps, etc.

Para mais informações sobre essa linguagem, clique aqui.

Vamos então à criação do arquivo de nome instance.tf conforme abaixo:

Aqui nesse arquivo especificamos que estamos usando o provider AWS, estamos usando a região “us-east-1”, compartilhamos nossas chaves de acesso, que foram obtidas lá na criação do usuário na AWS.

Passamos o AMI (seria um identificador) para dizer que estamos criando uma distro Ubuntu, e usando o tipo de instância “t2.micro”, esse tipo de instância faz parte do free tier da Amazon. Sempre que for consultar os providers use a documentação da ferramenta, link aqui.

  • Iniciando o case com o Terraform

Feito isso, vamos testar usando o comando terraform init esse comando faz o download dos plugins da AWS.

Veja que foi criado um arquivo oculto de nome .terraform

Agora vamos executar o comando terraform plan . Isso nos permitirá ver o que o Terraform fará antes de decidirmos definir a infra, pode ser que demore um pouco a saída desse comando. Mostra tudo sobre a instância na AWS:

Nesse momento sabemos tudo que o Terraform vai fazer, sendo assim, para criar a instância, executamos o comando terraform apply

Se formos para o console da AWS, podemos ver que uma instância t2.micro foi criada usando o Terraform:

AWS EC2 Instance

Caso você queira destruir a infraestrutura do Terraform que foi criada, podemos executar o comando terraform destroy .Isso destruirá todos os recursos criados por nós nesse artigo.

Esse artigo não cobre a parte de acesso à instância criada via SSH, foi apenas um exemplo básico de como você pode começar a usar o Terraform. Nos próximos artigos irei detalhar outros exemplos com Ansible e Terraform.

Gostaria de citar a semana DevOps da LinuxTips que ocorreu esse ano, eu aprendi muito com o pessoal Jeferson Fernando, Mateus Prado, Rafael Gomes entre outros. Aproveito também para divulgar a semana de IAAS que vai ocorrer agora em Dezembro, não deixem de participar. Link aqui. #VAIIII

Senior Linux Administrator at IBM