4 minutes
Criando uma Infraestrutura na AWS com Terraform.
O Terraform é um software de código aberto normalmente utilizado para construção, manutenção e versionamento de uma infraestrutura de maneira eficiente e segura, através de linguagem declarativa. Atualmente uma grande variedade de nuvens públicas ( AWS, GCP, Azure, Digital Ocean…) e privadas, como OpenStack, tem suporte para ter implentações de infraestrutura por código com o Terraform. Inclusive essa é uma das habilidades que as empresas estão buscando de maneira mais incisiva no mercado, pois com a ascenção de microserviços e do Cloud Computing, quem domina a infraestrutura como código está um passo a frente dos demais, pois com alguns comandos temos uma infraestrutura rodando na nuvem.
Para iniciarmos é importante que você tenha instalado o Terraform na sua máquina, como esse é um processo bem simples e você pode estar lendo esse artigo de qualquer SO, deixarei o link da página de downloads para facilitar sua chegada ao site da Terraform, aonde você irá procurar pelo seu sistema operacional e a forma de realizar a instalação.
Após a instalação vamos começar a criar nossa infraestrutura, o que é pré-requisito para fazermos esse tutorial:
- Ter um usuário criado na AWS, com permissões para provisionar EC2.
- Ter a access-key e secret-key do usuário.
Caso você não tenha um usuário, ele pode ser criado de maneira simples pelo IAM da sua conta root na AWS, e as chaves necessárias podem ser criadas pela guia CREDENCIAIS DE SEGURANÇA. Agora vamos iniciar criando nosso primeira arquivo que se chamará “main.tf”, nele vamos configurar nossa conexão com a AWS, para isso, vou deixar aqui o código que iremos utilizar, é importante ressaltar que encontramos os templates nas documentações oficiais do Terraform. Nosso arquivo “main.tf” ficará assim:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.25.0"
}
}
}
provider "aws" {
region = "us-east-1"
access_key = "access_key"
secret_key = "secret_key"
}
A única coisa a ser substituída será os valores na frente das chaves de access_key e secret_key pois você irá colocar os valores do seu usuário específico, e a region se você utilizar outra na AWS, pode modificar conforme a sua preferência.
Após isso, vamos para o nosso passo número 2, que é criar um Security Group, que é um grupo no qual podemos ter um controle de tráfego sobre quem tem permissão para acessar e sair dos recursos. Então crie na mesma pasta um outro arquivo chamado “security_group.tf” e escreva o seguinte:
resource "aws_security_group" "SG_TF" {
name = "SG_TF"
description = "Permite acesso SSH as instancias"
ingress {
description = "libera_ssh"
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
ipv6_cidr_blocks = ["::/0"]
}
}
Nesse código na primeira linha mostra que estamos criando um recurso que é um Security Group e o nome que estamos dando a esse grupo que no caso é SG_TF, nesse grupo que criamos só vamos configurar uma coisa, que é uma regra de entrada na porta 22 para podermos acessar nossas instâncias via SSH, como é um teste vamos liberar de qualquer IP, por isso o cidr_blocks está com “0.0.0.0/0”.
Agora a parte 3, desencadeia o nosso terceiro arquivo a ser criado que é o “instance.tf” aonde vamos de fato criar nossas instâncias EC2 na AWS, para esse step é necesário que vc crie uma “Key Pair” na AWS e baixe ela na sua máquina e coloque na pasta aonde estamos criando. Se você nunca criou, você encontrará facilmente dentro de EC2 no menu lateral em “Redes e Segurança” a opção “Pares de chave”. Após isso vamos para o que vamos escrever em nosso código:
resource "aws_instance" "luiz_teste" {
count = 2
ami = "ami-090fa75af13c156b4"
instance_type = "t2.micro"
key_name = "terraform-teste"
tags = {
Name = "luiz_teste"
env = "tst"
}
vpc_security_group_ids = [ aws_security_group.SG_TF.id ]
}
Estamos criando 2 instâncias utilizando uma imagem da Amazon Linux que se enquadra no nosso plano gratuito, o tipo de instância é o t2.micro que também faz parte do plano gratuito, visto que nosso propósito é somente de subir a infraestrutura. O key_name é o nome do par de chaves que você criou dentro da AWS e por último a identificação das instâncias dentro do security group que criamos para nossa infra.
Agora, com nosso terminal aberto vamos utilizar três comandos, primeiro usaremos um $ terraform init, depois um $ terraform plan, que irá fazer o planejamento de tudo que será criado na AWS. Após isso vamos para o último comando que é o $ terraform apply onde toda a mágica vai ocorrer.
Se verificarmos no Console da AWS vamos verificar que rapidamente tudo está funcionando e no seu devido lugar como podemos ver abaixo:
Conclusão
Se você não aprendeu Terraform, eu te aconselho a começar a olhar com mais carinho para essa tecnologia, pela facilidade e demanda que ela tem tido ultimamente, na internet achamos vários materiais gratuitos da ferramenta que facilitam e muito nossa aprendizagem, caso você nunca tenha tido contato com a ferramenta. Após esse artigo, creio que você conseguirá dar seus primeiros passos na Infra as Code.