3.2 Primeira VPC
Nesta etapa, vamos continuar o projeto para criar a primeira VPC na AWS.
⚡ Visão rápida: agora o projeto deixa de apenas consultar dados da AWS e passa a criar um recurso real de rede.
A ideia aqui é usar a estrutura que já foi montada nas fases anteriores e adicionar no main.tf um bloco de recurso para a VPC.
Vamos fazer isso em duas etapas:
- primeiro criar a VPC;
- depois modificar a infraestrutura para adicionar o nome por variável.
🧠 Mergulho profundo
Documentação oficial:
Abrir documentação do recursoaws_vpc
Abrir documentação do blocooutput
3.2.1 Criando a VPC
Nesta etapa, a mudança principal acontece no main.tf, porque é nele que vamos adicionar o primeiro recurso de infraestrutura da fase.
Adicione ao main.tf um bloco como este:
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
}
Esse bloco instrui o OpenTofu a criar uma VPC com a rede 10.0.0.0/16.
Depois disso, ajuste também o output.tf.
Além dos outputs que já existem no projeto, adicione mais um output para exibir o identificador interno da VPC criada.
No valor aws_vpc.main.id:
aws_vpc: é o tipo do recurso;main: é o nome lógico que demos para esse recurso no projeto;id: é o atributo interno gerado pela AWS depois da criação da VPC.
O bloco deve ficar assim:
output "vpc_id" {
value = aws_vpc.main.id
}
Isso é útil porque o id da VPC só existe depois da criação do recurso.
Mais para frente, esse valor poderá ser usado para encadear subnets, tabelas de rota, internet gateway, security groups e outros recursos de rede.
Se o projeto já está inicializado e o provider AWS não mudou, você pode seguir direto para o plano:
tofu plan
O esperado é que o plano mostre a criação da nova VPC.
Resources: 1 added, 0 changed, 0 destroyed.
Imagem de referência do plano no terminal:

Depois de revisar o plano, aplique:
tofu apply
Ao confirmar, o OpenTofu vai criar a VPC na AWS e registrar essa criação no arquivo de state.
Ou seja: além de existir na nuvem, a VPC também passa a existir como referência salva no projeto.
Como resultado desse primeiro apply, você deve conseguir ver a VPC criada na AWS ainda sem a tag Name.

3.2.2 Adicionar o nome da VPC com variável
Agora vamos modificar a infraestrutura já existente.
Em vez de escrever o nome diretamente dentro do recurso, a ideia é declarar uma variável para isso.
No variables.tf, adicione:
variable "vpc_name" {
type = string
}
No terraform.tfvars, adicione um valor para essa variável:
vpc_name = "andrew-42"
Se o curso inteiro estiver sendo feito dentro da mesma conta AWS por vários alunos, esse padrão ajuda bastante.
Nesse cenário, o ideal é cada aluno usar algo como nome-matricula para evitar confusão visual e facilitar a identificação da VPC dentro da conta compartilhada.
3.2.3 Modificar o recurso existente
Agora volte ao main.tf e ajuste o recurso que já existe.
Neste passo, vamos adicionar a tag Name a essa VPC.
Altere o bloco aws_vpc.main para que ele fique assim:
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Name = var.vpc_name
}
}
O ponto principal aqui é simples: o recurso já existe, então estamos apenas alterando um atributo.
Trecho adicionado ao recurso:
tags = {
Name = var.vpc_name
}
Depois disso, execute:
tofu plan
O plano deve indicar algo nesta linha:
Resources: 0 added, 1 changed, 0 destroyed.
Isso mostra que adicionar a tag Name nessa VPC não exige destruir e recriar o recurso.
Depois de revisar o resultado, aplique:
tofu apply
Esse apply atualiza a VPC já criada e grava essa nova condição no state.
Depois dessa alteração, a VPC já deve aparecer nomeada no console da AWS.

É importante entender o papel dessa tag Name.
Ela ajuda muito na identificação visual do recurso no console da AWS, mas ela não é um identificador único.
Na prática, seria possível ter várias VPCs com o mesmo valor na tag Name.
O identificador único real da AWS continua sendo o vpc_id, que é exatamente o valor que estamos exibindo no output.
3.2.4 Resultado esperado
No final desse processo, você terá passado por dois momentos diferentes:
- criação da VPC;
- modificação da VPC já existente.
Isso ajuda a perceber na prática a diferença entre:
- criar infraestrutura nova;
- modificar infraestrutura existente.
3.2.5 Verificando na AWS
Depois do segundo apply, você já pode abrir o console da AWS e verificar a VPC visualmente.
Nesse momento, você deve conseguir ver:
- a VPC criada na região configurada no projeto;
- o
idda VPC; - a
tag Namedefinida com o valor da variável.
Na prática, isso confirma algumas coisas importantes:
- o provider AWS está funcionando;
- o OpenTofu conseguiu criar um recurso real;
- o OpenTofu conseguiu modificar esse mesmo recurso sem recriá-lo;
- a VPC agora já pode servir como base para as próximas etapas de rede.