Terraform — Criando infraestrutura na AWS
Tutorial criando recursos na AWS como ECS com a ferramenta DevOps Terraform da HashCorp
O que é Terraform
Software de infraestrutura de código de código aberto criado pela HashiCorp.
Os usuários definem e fornecem infraestrutura de dados e Cloud usando a linguagem de configuração declarativa “HashiCorp Configuration Language” (HCL).
Instalação
Para instalar o Terraform, acesse https://developer.hashicorp.com/terraform/downloads e siga as instruções de acordo com seu sistema operacional.
Neste exemplo, vamos utilizar o MacOS com o Brew. O Brew é um gerenciador de pacotes para MacOS. Para saber mais, comenta se você tem interesse que eu compartilho um vídeo chamado “Instalando softwares no MacOS com Homebrew”.
Para instalar o Terraform com Brew, digite no terminal:
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
Para testar a instalação, informe no terminal terraform –help.
Instale também o autocomplete com o comando terraform -install-autocomplete.
Criando o arquivo principal de configuração
Para criarmos nossa estrutura inicial, vamos utilizar o Docker para criar um servidor web com NGNIX em poucos minutos.
Este meu outro conteúdo “Docker” traz informações sobre como instalar o Docker e criar containers.
Inicie o Docker através do terminal com o comando open -a Docker.
Crie uma pasta para reunir os seus arquivos de configuração do Terraform:
mkdir learn-terraform-docker-container
Em seguida, acesse a pasta com cd learn-terraform-docker-container.
Vamos utilizar o editor de código VS Code, que é gratuito e nos ajudará a escrever nossos arquivos do Terraform. Para instalar o Code na sua máquina, consulte meu outro tutorial “Visual Studio Code”
Na pasta criada, digite code . e crie um novo arquivo chamado main.tf.
É neste arquivo que iremos definir os nossos recursos.
Terraform Registry
Para instalar novos recursos, podemos consultar o site do Terraform Registry.
Por exemplo, no link https://registry.terraform.io/providers/hashicorp/aws/latest/docs, você encontra a documentação completa sobre o recurso (provider) da AWS.
Para adicionar recursos com a AWS, edite o arquivo main.tf inserindo o seguinte código:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
# Configure the AWS Provider
provider "aws" {
region = "us-east-1"
}
Instale a extensão do Terraform para o VS Code chamada HashiCorp Terraform (https://marketplace.visualstudio.com/items?itemName=HashiCorp.terraform) e tenha a sintaxe colorida.
Criando um servidor web com a imagem do NGNIX no Docker
Para o nosso exemplo, vamos utilizar um código de configuração já pronto, que irá criar um servidor web na porta 8000 utilizando uma imagem do NGNIX no Docker. Salve tudo no arquivo main.tf:
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 2.13.0"
}
}
}
provider "docker" {}
resource "docker_image" "nginx" {
name = "nginx:latest"
keep_locally = false
}
resource "docker_container" "nginx" {
image = docker_image.nginx.latest
name = "tutorial"
ports {
internal = 80
external = 8000
}
}
Você pode encontrar o provider do Docker no Terraform Registry também.
Aplicando as configurações do Terraform
Inicialize o projeto, que baixará um plugin e irá permitir que o Terraform interaja com o Docker:
terraform init
Em seguida, execute sua configuração com o comando terraform apply no terminal.
Isto irá aplicar sua configuração e iniciar o container Docker com a imagem do NGNIX rodando na porta 8000.
Observe que ele apontou uma configuração como obsoleta, mas não impediu de instalar os recursos. Acesse o endereço no navegador com http://localhost:8000 e confira se tudo funcionou. Você deverá ver a página de boas-vindas no NGNIX.
Utilizando o Terraform com AWS CLI
Para o nosso exemplo, você precisa criar uma conta na AWS. Acesse o endereço https://aws.amazon.com/free para adquirir uma versão gratuita, suficiente para nosso estudo.
Em seguida, utilize o AWS CLI com suas credenciais IAM de usuário para criar recursos com o Terraform direto do seu terminal.
Para instalar o AWS CLI e configurar suas credenciais, confira o conteúdo “AWS CLI no terminal”.
Após a autenticação com seu Access key ID e secret-access-key.
Criando infraestrutura na AWS
Agora vamos substituir o nosso arquivo main.tf pelo provider da AWS utilizando a criação do recurso EC2, que irá gerar instância direto na AWS Console.
Lembrando que a documentação completa do provider da AWS encontra-se no link https://registry.terraform.io/providers/hashicorp/aws/latest/docs.
A configuração que iremos utilizar é a seguinte:
# escolhe o provider aws
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.16"
}
}
required_version = ">= 1.2.0"
}
# utiliza a opção Oregon de região
provider "aws" {
region = "us-west-2"
}
# cria um recurso único chamado aws_instance.app_server
# com um tier t2.micro (free) no EC2
resource "aws_instance" "app_server" {
ami = "ami-830c94e3"
instance_type = "t2.micro"
tags = {
Name = "ExampleAppServerInstance"
}
}
Após as alterações no main.tf, certifique de estar logado na AWS CLI com suas credenciais e informe os comandos:
terraform init
terraform plan
terraform apply
Para este último, se tudo estiver correto, você deve confirmar a alteração respondendo yes no terminal.
Ao final, é possível acessar o AWS Console em https://us-west-2.console.aws.amazon.com/ec2 e verificar a criação da instância do ECS tamanho t2.micro.
Outros recursos que podem compor o arquivo de configuração principal, por exemplo, é o data source, que aponta uma configuração externa ao arquivo do Terraform.
Exemplo: o terraform_remote_state: cria o estado mais recente de um back-end para recuperar os valores de output do módulo root de alguma outra configuração do Terraform.
data "terraform_remote_state" "project" {
backend = "s3"
}
Comenta se você achou útil e deixa sua curtida, assim eu posso criar uma parte 2 configurando mais recursos, beleza?!
Valeu migles! Me segue nas outras redes sociais: https://danvitoriano.com.br