Criando uma Instância EC2 com Terraform e Expondo-a para a Internet


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