Pré-requisitos
Ter uma conta AWS
Ter o Terraform instalado na máquina local
Conhecimento básico de AWS e Terraform
##Configuração da conta AWS
Antes de começarmos, precisamos configurar nossa conta AWS para que possamos usá-la com o Terraform. Para fazer isso, precisamos criar um novo grupo de segurança e uma nova VPC.
Crie um novo grupo de segurança
bash
> [!IMPORTANTE]
> Certifique-se de que sua conta AWS tenha permissões apropriadas para criar recursos.
hcl
recurso "aws_security_group" "my_security_group" {
nome = "meu_grupo_de_segurança"
description = "Meu grupo de segurança para a VPC"
# Regras de entrada
ingresso {
from_port = 22
para_porta = 22
protocolo = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
# Regras de saída
saída {
from_port = 0
porta_para = 0
protocolo = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
Crie uma nova VPC
hcl
recurso "aws_vpc" "meu_vpc" {
cidr_block = "10.0.0.0/16"
etiquetas = {
Nome = "Minha VPC"
}
}
Criação da rede subjacente
Depois de criar o VPC, podemos criar a rede subjacente. Para fazer isso, devemos criar uma nova sub-rede e uma nova tabela de roteamento.
Crie uma nova sub-rede
hcl
recurso "aws_subnet" "my_subnet" {
cidr_block = "10.0.1.0/24"
vpc_id=aws_vpc.my_vpc.id
disponibilidade_zone = "us-west-2a"
etiquetas = {
Nome = "Minha sub-rede"
}
}
Crie uma nova tabela de roteamento
hcl
recurso "aws_route_table" "my_route_table" {
vpc_id=aws_vpc.my_vpc.id
etiquetas = {
Name = "Minha tabela de roteamento"
}
}
Configurações de rede de segurança
Depois de criar a rede subjacente, podemos configurar a rede de segurança. Para fazer isso, precisamos criar uma nova regra de segurança e associá-la à sub-rede.
Crie uma nova regra de segurança
hcl
recurso "aws_security_group_rule" "my_security_rule" {
tipo = "entrada"
from_port = 22
para_porta = 22
protocolo = "tcp"
source_security_group_id=aws_security_group.my_security_group.id
security_group_id=aws_security_group.my_security_group.id
}
Associe a regra de segurança à sub-rede
hcl
recurso "aws_route_table_association" "my_route_association" {
subnet_id = aws_subnet.my_subnet.id
route_table_id=aws_route_table.my_route_table.id
}
Configuração da rede de dados
Depois de configurar a rede de segurança, podemos configurar a rede de dados. Para fazer isso, precisamos criar uma nova instância EC2 e associá-la à sub-rede.
Crie uma nova instância EC2
hcl
recurso "aws_instance" "my_ec2_instance" {
ami="ami-abc123"
instance_type = "t2.micro"
vpc_security_group_ids = [aws_security_group.my_security_group.id]
subnet_id = aws_subnet.my_subnet.id
}
Associe a instância EC2 à sub-rede
hcl
recurso "aws_network_interface_attachment" "my_network_association" {
instance_id = aws_instance.my_instance_ec2.id
network_interface_id = aws_network_interface.my_network.id
índice_de_dispositivo = 0
}
Configuração de rede de armazenamento
Depois de configurar a rede de dados, podemos configurar a rede de armazenamento. Para fazer isso, precisamos criar um novo volume EBS e anexá-lo à instância EC2.
Crie um novo volume EBS
hcl
recurso "aws_ebs_volume" "my_ebs_volume" {
disponibilidade_zone = "us-west-2a"
tamanho = 10
}
Anexe o volume EBS à instância EC2
hcl
recurso "aws_volume_attachment" "my_ebs_association" {
nome_do_dispositivo = "/dev/sdh"
volume_id=aws_ebs_volume.my_ebs_volume.id
instance_id = aws_instance.my_instance_ec2.id
}
Redirecionar configurações de rede
Depois de configurar a rede de armazenamento, podemos configurar a rede de redirecionamento. Para fazer isso, precisamos criar um novo grupo de redirecionamento e associá-lo à instância EC2.
Crie um novo grupo de redirecionamento
hcl
recurso "aws_lb_target_group" "my_redirect_group" {
nome = "redirecionamento-meu-grupo"
porta = 80
protocolo = "HTTP"
vpc_id=aws_vpc.my_vpc.id
}
Associe o grupo de redirecionamento à instância do EC2
hcl
recurso "aws_lb_target_group_attachment" "my_association_redirect" {
target_group_arn = aws_lb_target_group.my_group_redirection.arn
target_id=aws_instance.my_ec2_instance.id
porta = 80
}
Balanceamento de configuração de rede
Depois de configurar a rede de redirecionamento, podemos configurar a rede de balanceamento. Para fazer isso, precisamos criar um novo grupo de balanceamento e associá-lo à instância EC2.
Crie um novo grupo de balanceamento
hcl
recurso "aws_lb" "my_balancing_group" {
nome = "meu-grupo de balanceamento"
interno = falso
load_balancer_type = "aplicativo"
grupos_de_segurança = [aws_security_group.my_security_group.id]
sub-redes = [aws_subnet.my_subnet.id]
}
Associe o grupo de balanceamento à instância do EC2
hcl
recurso "aws_lb_listener" "my_balancing_association" {
load_balancer_arn = aws_lb.my_balancer_group.arn
protocolo = "HTTP"
porta = 80
ação_padrão {
tipo = "avançar"
target_group_arn = aws_lb_target_group.my_group_redirection.arn
}
}
Monitorando a configuração da rede
Depois de configurar a rede de balanceamento, podemos configurar a rede de monitoramento. Para fazer isso, precisamos criar um novo grupo de monitoramento e associá-lo à instância EC2.
Crie um novo grupo de monitoramento
hcl
recurso "aws_cloudwatch_metric_alarm" "my_monitoring_group" {
alarm_name = "meu-grupo de monitoramento"
comparação_operator = "GreaterThanOrEqualToThreshold"
períodos_avaliação = "1"
metric_name = "CPUUtilização"
namespace = "AWS/EC2"
período = "300"
estatística = "Média"
limite = "80"
ações_enabled = verdadeiro
alarm_actions = [aws_sns_topic.mi_topic.arn]
}
Associe o grupo de monitoramento à instância do EC2
hcl
recurso "aws_sns_topic" "meu_topic" {
nome = "meu-tópico"
}
Conclusão
Neste artigo, vimos como projetar uma rede VPC na AWS com Terraform. Criamos uma nova VPC, uma nova sub-rede, uma nova tabela de roteamento, uma nova regra de segurança, uma nova instância EC2, um novo volume EBS, um novo grupo de redirecionamento, um novo grupo de balanceamento e um novo grupo de monitoramento.