Como criar AWS VPC usando Terraform

Como criar AWS VPC usando Terraform

A AWS fornece um serviço virtual em nuvem privada (VPC) para criar uma rede virtual logicamente isolada na nuvem. Aqui, podemos lançar instâncias EC2 e RDS e criar grupos de segurança e outros recursos. Como muitas outras tarefas, também podemos criar um VPC usando TerraForm.

O que vamos cobrir

Este guia mostrará como criar um AWS VPC (virtual privado nuvem) usando o Terraform.

O que você precisará

  1. Conta da AWS
  2. Acesso à internet
  3. Noções básicas de Terraform

Criando o AWS VPC usando o Terraform

Agora que instalamos o Terraform em nossa máquina local, podemos continuar nossa tarefa de trabalhar com VPC. Aqui, descrevemos a configuração do VPC para o nosso caso:

Temos uma sub -rede privada e uma pública com a tabela de rota correspondente. A sub -rede pública também possui um gateway Nat anexado a ele. A configuração do Terraform para diferentes componentes é armazenada em diferentes arquivos como:

  1. variáveis.TF: Definição de variáveis ​​usadas nos arquivos
  2. VPC.TF: para recurso VPC
  3. Porta de entrada.TF: Para recursos de gateway
  4. sub -redes.TF: Para definir sub -redes públicas e privadas
  5. tabela de rota.TF: Para recursos de tabela de rota pública e privada
  6. principal.tf

Como mencionado anteriormente, o Terraform usa vários arquivos de configuração para o fornecimento de recursos, e cada um desses arquivos deve residir em sua respectiva pasta/diretório de trabalho. Vamos criar um diretório para esse fim:

Passo 1. Crie uma pasta que mantenha seus arquivos de configuração e navegue até esta pasta:

1
$ mkdir linuxhint-terraform && CD Linuxhint-Terraform

Passo 2. Vamos criar nosso primeiro arquivo de configuração, “Variáveis.TF ”, que conterão informações sobre nossa região da AWS e o tipo de instância que queremos usar:

1
$ nano variáveis.tf

Agora, coloque o seguinte texto dentro dele e salve o arquivo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
variável "aws_region"
Descrição = "A região da AWS para criar o VPC em."
default = "EUA-East-1"

variável "VPC-Cidr"
cidr_block = "172.168.0.0/16 "

variável "pubsubcidr"
cidr_block = "172.168.0.0/24 "

variável "prisubcidr"
cidr_block = "172.168.1.0/24 "

etapa 3. Crie VPC.TF:

1
$ nano VPC.tf

Agora, coloque o seguinte texto dentro dele e salve o arquivo:

1
2
3
4
5
Recurso "AWS_VPC" "MY-VPC"
cidr_block = var.VPC-Cidr

Passo 4. Crie gateway.Arquivo TF e defina o Internet Gateway e Nat Gateway aqui:

1
$ nano gateway.tf

Agora, coloque o seguinte texto dentro dele e salve o arquivo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Crie recurso de gateway da Internet e anexe -o ao VPC
Recurso "AWS_Internet_Gateway" "IGW"
VPC_ID = AWS_VPC.my-vpc.eu ia

# Crie EIP para o IGW
recurso "aws_eip" "myEip"
VPC = true

# Crie recurso de gateway Nat e anexe -o ao VPC
Recurso "AWS_NAT_GATEWAY" "NAT-GW"
alocation_id = AWS_EIP.myEip.eu ia
subnet_id = aws_subnet.MyPublicsubnet.eu ia

Etapa 5. Crie sub -redes.TF para as sub -redes privadas e públicas dentro do VPC:

1
$ Nano Subnets.tf

Agora, coloque o seguinte texto dentro dele e salve o arquivo:

1
2
3
4
5
6
7
8
9
Recurso "AWS_SUBNET" "MyPrivateSubnet"
VPC_ID = AWS_VPC.my-vpc.eu ia
cidr_block = var.Prisubcidr

Recurso "AWS_SUBNET" "MyPublicSubnet"
VPC_ID = AWS_VPC.my-vpc.eu ia
cidr_block = var.pubsubcidr

Etapa 6. Crie a tabela de rota.TF para sub -redes privadas e públicas:

1
$ nano-rota-tabela.tf

Agora, coloque o seguinte texto dentro dele e salve o arquivo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Criando RT para sub -rede privada
Recurso "AWS_ROUTE_TABLE" "Privrt"
VPC_ID = AWS_VPC.my-vpc.eu ia
rota
cidr_block = "0.0.0.0/0 "
nat_gateway_id = aws_nat_gateway.Nat-Gw.eu ia


# Criando RT para sub -rede pública
Recurso "AWS_ROUTE_TABLE" "Publrt"
VPC_ID = AWS_VPC.my-vpc.eu ia
rota
cidr_block = "0.0.0.0/0 "
gateway_id = aws_internet_gateway.IGW.eu ia


#Associanting the Public RT com as sub -redes públicas
Recurso "AWS_ROUTE_TABLE_ASSOCIATION" "PUBRTASS"
subnet_id = aws_subnet.MyPublicsubnet.eu ia
route_table_id = AWS_ROUTE_TABLE.Publicação.eu ia

#Sociantando o RT privado com as sub -redes particulares
Recurso "AWS_ROUTE_TABLE_ASSOCIATION" "prirtass"
subnet_id = aws_subnet.MyPrivatesubnet.eu ia
route_table_id = AWS_ROUTE_TABLE.privrt.eu ia

Etapa 7. Fazer um “principal.Arquivo TF ”que conterá a definição para nossa infraestrutura:

1
$ nano Main.tf

Agora, coloque a seguinte configuração dentro dele:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Terraform
requerir_providers
aws =
fonte = "Hashicorp/AWS"
versão = "~> 3.27 "


requerir_version = "> = 0.14.9 "

Provedor "AWS"
região = var.aws_region
shared_credentials_file = "/home/user_name/.AWS/credenciais "
perfil = "perfil1"

Modificar o “Nome de usuário”No código acima com o nome de usuário no seu caso. Vamos ver um pouco sobre os parâmetros usados ​​nos arquivos anteriores:

  • shared_credentials_file: É o caminho do arquivo que contém as credenciais dos usuários da AWS.
  • perfil: Especifica o perfil do usuário a ser usado para trabalhar com a AWS.
  • AWS_VPC: Recurso para a construção de um VPC.
  • Cidr_block: Fornece um bloco IPv4 Cidr para o VPC.
  • aws_internet_gateway: Recurso para criar um gateway da Internet para o VPC.
  • AWS_EIP: Recurso para produzir um IP elástico (EIP).
  • aws_nat_gateway: Recurso para criar um gateway Nat para o VPC.
  • Alocation_id: Atributo para alocação ID do EIP EIP acima gerado.
  • subnet_id: Atributo para a sub -rede ID da sub -rede onde o NAT Gateway é implantado.
  • AWS_SUBNET: Recurso para criar uma sub -rede VPC.
  • AWS_ROUTE_TABLE: Recurso para criar uma tabela de rota VPC.
  • rota: Argumento que contém uma lista de objetos de rota.
  • nat_gateway_id: Argumento que denota o ID do gateway VPC Nat.
  • gateway_id: Argumento opcional para gateway de internet vpc.
  • AWS_ROUTE_TABLE_ASSOCIATION: Recurso para criar uma associação entre a tabela de rota (pública ou privada) e 1) Gateway da Internet e 2) gateway virtual privado.
  • route_table_id: O ID da tabela de rota com o qual estamos associando a sub -rede.

Inicializando o diretório Terraform

Para baixar e instalar o provedor que definimos em nossa configuração e outros arquivos, precisamos inicializar o diretório que contém este arquivo:

1
$ Terraform init

Construindo a infraestrutura

Para aplicar as alterações que planejamos acima, execute o seguinte comando:

1
$ Terraform se aplica

Digite "sim" no terminal quando solicitado.

Verificando o procedimento

Agora, vamos verificar se o VPC desejado é criado ou não. Vá para o console do VPC e verifique os VPCs disponíveis:

Podemos ver que nosso VPC é criado com sucesso.

Depois de executar a execução desta tarefa, exclua os recursos para evitar cobranças desnecessárias:

1
$ Terraform Destruir

Digite "sim" para aplicar a ação.

Conclusão

Neste guia, aprendemos sobre a criação de um VPC na AWS usando o Terraform. A próxima coisa que você pode fazer é tentar provisionar uma instância RDS ou EC2 usando o Terraform.