Cómo crear AWS VPC usando Terraform

Cómo crear AWS VPC usando Terraform

AWS proporciona un servicio virtual de nube privada (VPC) para crear una red virtual aislada lógicamente en la nube. Aquí, podemos lanzar instancias EC2 y RDS y crear grupos de seguridad y otros recursos. Como muchas otras tareas, también podemos crear un VPC usando Terraform.

Lo que cubriremos

Esta guía mostrará cómo crear un AWS VPC (Virtual Private Cloud) usando Terraform.

Que necesitarás

  1. Cuenta de AWS
  2. Acceso a Internet
  3. Conceptos básicos de Terraform

Creación de AWS VPC usando Terraform

Ahora que hemos instalado Terraform en nuestra máquina local, podemos continuar nuestra tarea de trabajar con VPC. Aquí, hemos esbozado la configuración de VPC para nuestro caso:

Tenemos una subred privada y una pública con su tabla de ruta correspondiente. La subred pública también tiene una puerta de enlace nat conectada a ella. La configuración de Terraform para diferentes componentes se almacena en diferentes archivos como:

  1. variables.TF: definición de variables utilizadas en los archivos
  2. VPC.TF: para el recurso VPC
  3. puerta.TF: para recursos de puerta de enlace
  4. subaño.TF: para definir subredes públicos y privados
  5. mesa de ruta.TF: para recursos de mesa de ruta pública y privada
  6. principal.TF

Como se mencionó anteriormente, Terraform utiliza varios archivos de configuración para aprovisionar los recursos, y cada uno de estos archivos debe residir en su respectiva carpeta/directorio de trabajo. Creemos un directorio para este propósito:

Paso 1. Cree una carpeta que mantenga sus archivos de configuración y luego navegue a esta carpeta:

1
$ mkdir linuxhint-teraform && cd linuxhint-terraform

Paso 2. Permítanos crear nuestro primer archivo de configuración, "Variables.tf ”, que contendrá información sobre nuestra región de AWS y el tipo de instancia que queremos usar:

1
$ nano variables.TF

Ahora, coloque el siguiente texto dentro y guarde el archivo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
variable "aws_region"
descripción = "La región de AWS para crear el VPC en."
predeterminado = "us-east-1"

variable "VPC-CIDR"
cidr_block = "172.168.0.6/16 "

variable "PubSubcidr"
cidr_block = "172.168.0.0/24 "

variable "prisubcidr"
cidr_block = "172.168.1.0/24 "

Paso 3. Crear VPC.TF:

1
$ nano vpc.TF

Ahora, coloque el siguiente texto dentro y guarde el archivo:

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

Etapa 4. Crear puerta de enlace.Archivo TF y definir Internet Gateway y Nat Gateway aquí:

1
$ Nano Gateway.TF

Ahora, coloque el siguiente texto dentro y guarde el archivo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
18
19
# Crear recurso de puerta de enlace de Internet y adjuntarlo a la VPC
recurso "aws_internet_gateway" "igw"
VPC_ID = AWS_VPC.my-vpc.identificación

# Crea EIP para el IGW
recurso "aws_eip" "myeip"
VPC = True

# Crear recurso Nat Gateway y adjuntarlo a la VPC
Recurso "AWS_NAT_GATEWAY" "NAT-GW"
asignation_id = aws_eip.myeip.identificación
subnet_id = aws_subnet.myPublicSubnet.identificación

Paso 5. Crear subredes.TF para las subredes privadas y públicas dentro de la VPC:

1
Subredes de $ nano.TF

Ahora, coloque el siguiente texto dentro y guarde el archivo:

1
2
3
4
5
6
7
8
9
recursos "aws_subnet" "myprivatesubnet"
VPC_ID = AWS_VPC.my-vpc.identificación
cidr_block = var.prisubcidr

recursos "AWS_SUBNET" "myPublicSubnet"
VPC_ID = AWS_VPC.my-vpc.identificación
cidr_block = var.pubsubcidr

Paso 6. Crear mesa de ruta.TF para subredes privados y públicos:

1
$ Nano Route-Table.TF

Ahora, coloque el siguiente texto dentro y guarde el archivo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
18
19
20
21
22
23
24
25
26
27
28
# Creación de RT para subred privada
recurso "aws_route_table" "privrt"
VPC_ID = AWS_VPC.my-vpc.identificación
ruta
CIDR_BLOCK = "0.0.0.0/0 "
nat_gateway_id = aws_nat_gateway.NAT-GW.identificación


# Creación de RT para subred pública
Recurso "AWS_ROUTE_TABLE" "Publrt"
VPC_ID = AWS_VPC.my-vpc.identificación
ruta
CIDR_BLOCK = "0.0.0.0/0 "
Gateway_id = aws_internet_gateway.IGW.identificación


#Sociar el RT público con las subredes públicas
recurso "aws_route_table_association" "PubrTass"
subnet_id = aws_subnet.myPublicSubnet.identificación
Route_table_id = aws_route_table.editorial.identificación

#Sociar el RT privado con las subredes privadas
recurso "aws_route_table_association" "prirTass"
subnet_id = aws_subnet.myprivatesubnet.identificación
Route_table_id = aws_route_table.privado.identificación

Paso 7. Hacer un "principal.Archivo TF "que contendrá la definición de nuestra infraestructura:

1
$ nano principal.TF

Ahora, coloque la siguiente configuración dentro:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
18
19
20
21
Terraform
requerido_providers
AWS =
fuente = "Hashicorp/AWS"
versión = "~> 3.27 "


requerido_version = "> = 0.14.9 "

Proveedor "AWS"
región = var.AWS_region
shared_credentials_file = "/home/user_name/.AWS/Credenciales "
perfil = "perfil1"

Modificar el "Nombre de usuario"En el código anterior con el nombre de usuario en su caso. Veamos un poco sobre los parámetros utilizados en los archivos anteriores:

  • shared_credentials_file: Es la ruta del archivo que contiene las credenciales de los usuarios de AWS.
  • perfil: Especifica el perfil del usuario que se utilizará para trabajar con AWS.
  • AWS_VPC: Recurso para construir una VPC.
  • cidr_block: Proporciona un bloque IPv4 CIDR para el VPC.
  • aws_internet_gateway: Recurso para crear una puerta de enlace de Internet para el VPC.
  • AWS_EIP: Recurso para producir una IP elástica (EIP).
  • aws_nat_gateway: Recurso para crear una puerta de enlace Nat para el VPC.
  • Asignación_id: Atributo para la ID de asignación del EIP generado anteriormente.
  • subnet_id: Atributo para la ID de subred de la subred donde se implementa Nat Gateway.
  • aws_subnet: Recurso para crear una subred VPC.
  • aws_route_table: Recurso para crear una tabla de ruta VPC.
  • ruta: Argumento que contiene una lista de objetos de ruta.
  • nat_gateway_id: Argumento que denota la identificación de la puerta de enlace VPC Nat.
  • Gateway_id: Argumento opcional para VPC Internet Gateway.
  • aws_route_table_association: Recursos para crear una asociación entre la tabla de ruta (pública o privada) y 1) Internet Gateway y 2) Virtual Private Gateway.
  • ruta_table_id: La ID de tabla de ruta con la que estamos asociando la subred.

Inicializando el directorio de Terraform

Para descargar e instalar el proveedor que definimos en nuestra configuración y otros archivos, necesitamos inicializar el directorio que contiene este archivo:

1
$ Terraform init

Construyendo la infraestructura

Para aplicar los cambios que planeamos anteriormente, ejecute el siguiente comando:

1
$ Terraform se aplica

Ingrese "Sí" en el terminal cuando se le solicite.

Verificar el procedimiento

Ahora, verifiquemos si se crea o no el VPC deseado. Dirígete a la consola VPC y verifique los VPC disponibles:

Podemos ver que nuestro VPC se crea con éxito.

Después de haber realizado esta tarea, elimine los recursos para evitar cargos innecesarios:

1
$ Terraform Destro

Ingrese "Sí" para aplicar la acción.

Conclusión

En esta guía, hemos aprendido sobre la creación de un VPC en AWS usando Terraform. Lo siguiente que puede hacer es tratar de aprovisionar una instancia de RDS o EC2 usando Terraform.