(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

baixa os plugins necessários para executar o código.
mostra o que o Terraform irá realizar na infra.
executa tudo que foi definido no arquivo de configuração.
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
  • 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:

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 esse comando faz o download dos plugins da AWS.

Veja que foi criado um arquivo oculto de nome

Agora vamos executar o comando . 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

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 .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

Passion for DevOps