Criando uma Instância EC2 com Terraform e Expondo-a para a Internet
Introdução
A criação de infraestrutura na nuvem de forma automatizada e versátil é uma necessidade para qualquer profissional de TI moderno. O Terraform, uma ferramenta de código aberto desenvolvida pela HashiCorp, permite que você defina e forneça de forma segura e eficiente a infraestrutura de TI usando um arquivo de configuração. Neste post, vamos explorar como criar uma instância EC2 (Elastic Compute Cloud) na AWS usando o Terraform e configurá-la para ser acessível pela internet através da porta 22, permitindo conexões SSH de qualquer origem.
Pré-requisitos
- AWS Account: Você precisa de uma conta na AWS. Se ainda não possui, crie uma aqui.
- Terraform: Baixe e instale o Terraform em sua máquina. Você pode encontrar as instruções de instalação aqui.
- AWS CLI: Instale a AWS Command Line Interface (CLI) para configurar suas credenciais. As instruções de instalação estão disponíveis aqui.
Configurando o Terraform
Antes de começar a criar a instância EC2, é necessário configurar o Terraform para se conectar à sua conta AWS. Crie um arquivo chamado provider.tf
e adicione as seguintes linhas:
provider "aws" {
region = "us-east-1"
}
Este arquivo configura o provedor AWS para o Terraform, especificando a região onde a instância EC2 será criada.
Criando a Instância EC2
Agora, vamos criar o arquivo principal de configuração do Terraform, chamado main.tf
, que definirá a instância EC2 e os recursos necessários para expô-la à internet.
Definindo a Instância EC2
Adicione o seguinte código ao arquivo main.tf
:
resource "aws_instance" "ec2_instance" {
ami = "ami-0c55b159cbfafe1f0" # AMI do Amazon Linux 2
instance_type = "t2.micro"
tags = {
Name = "Terraform-EC2-Instance"
}
}
Este código define uma instância EC2 usando a AMI do Amazon Linux 2 e o tipo de instância t2.micro
.
Criando um Grupo de Segurança
Para permitir o acesso SSH à instância, precisamos criar um grupo de segurança que permita o tráfego na porta 22 de qualquer origem. Adicione o seguinte código ao arquivo main.tf
:
resource "aws_security_group" "allow_ssh" {
name_prefix = "allow_ssh_"
description = "Allow SSH access from anywhere"
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
Este código cria um grupo de segurança que permite o tráfego SSH de qualquer endereço IP.
Associando o Grupo de Segurança à Instância EC2
Agora, precisamos associar o grupo de segurança à instância EC2. Atualize o recurso aws_instance
no arquivo main.tf
para incluir o ID do grupo de segurança:
resource "aws_instance" "ec2_instance" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
vpc_security_group_ids = [aws_security_group.allow_ssh.id]
tags = {
Name = "Terraform-EC2-Instance"
}
}
Este código associa o grupo de segurança criado ao recurso de instância EC2.
Provisionando a Infraestrutura
Com a configuração completa, é hora de provisionar a infraestrutura usando o Terraform. Abra o terminal, navegue até o diretório onde os arquivos provider.tf
e main.tf
estão localizados e execute os seguintes comandos:
terraform init
terraform plan
terraform apply
O comando terraform init
inicializa o ambiente de trabalho do Terraform, baixando os provedores necessários. O comando terraform plan
exibe um plano de ação detalhado das alterações que serão feitas. Por fim, o comando terraform apply
aplica as alterações e cria a instância EC2.
Acessando a Instância EC2
Após a conclusão da criação da instância, você pode acessar o endereço IP público da instância EC2 usando SSH. Para encontrar o endereço IP público, você pode usar o AWS Management Console ou o comando terraform output
:
terraform output -json
O comando acima exibirá as saídas definidas no arquivo main.tf
, incluindo o endereço IP público da instância EC2. Use o seguinte comando para acessar a instância via SSH:
ssh -i "your-key-pair.pem" ec2-user@your-instance-public-ip
Substitua your-key-pair.pem
pelo nome do seu arquivo de chave privada e your-instance-public-ip
pelo endereço IP público da sua instância EC2.
Conclusão
Neste post, aprendemos como criar uma instância EC2 na AWS usando o Terraform e configurá-la para ser acessível pela internet através da porta 22. Essa abordagem automatizada e versátil é essencial para gerenciar infraestrutura de TI de forma eficiente e segura. Com o Terraform, você pode facilmente provisionar, modificar e destruir recursos de infraestrutura, garantindo consistência e reprodutibilidade em seu ambiente de nuvem.
Palavras-chave
Terraform, AWS, EC2, Elastic Compute Cloud, infraestrutura como código, IaC, Amazon Web Services, grupo de segurança, SSH, porta 22, automação, nuvem, DevOps