arrow_back

Automatiza la implementación de redes con Terraform

Acceder Unirse
Pon a prueba tus conocimientos y compártelos con nuestra comunidad

Automatiza la implementación de redes con Terraform

Lab 1 hora universal_currency_alt 5 créditos show_chart Intermedio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Pon a prueba tus conocimientos y compártelos con nuestra comunidad

GSP460

Descripción general

En este lab, crearás archivos de configuración de Terraform con un módulo para automatizar la implementación de una red personalizada con recursos. En particular, implementarás 3 redes con instancias de VM y reglas de firewall.

Objetivos

  • Crear un archivo de configuración para una red en modo personalizado
  • Crear un archivo de configuración para una regla de firewall
  • Crear un módulo para instancias de VM
  • Crear un archivo de configuración para una red en modo automático
  • Crear e implementar un archivo de configuración
  • Verificar la implementación de un archivo de configuración

Instalación y requisitos

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.

Cómo iniciar tu lab y acceder a la consola de Google Cloud

  1. Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:

    • El botón para abrir la consola de Google Cloud
    • El tiempo restante
    • Las credenciales temporales que debes usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).

    El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
  3. De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.

    {{{user_0.username | "Username"}}}

    También puedes encontrar el nombre de usuario en el panel Detalles del lab.

  4. Haz clic en Siguiente.

  5. Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.

    {{{user_0.password | "Password"}}}

    También puedes encontrar la contraseña en el panel Detalles del lab.

  6. Haz clic en Siguiente.

    Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud. Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
  7. Haz clic para avanzar por las páginas siguientes:

    • Acepta los Términos y Condiciones.
    • No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No te registres para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.

Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.

Activa Cloud Shell

Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. Haz clic en Activar Cloud Shell en la parte superior de la consola de Google Cloud.

  2. Haz clic para avanzar por las siguientes ventanas:

    • Continúa en la ventana de información de Cloud Shell.
    • Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API de Google Cloud.

Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu Project_ID, . El resultado contiene una línea que declara el Project_ID para esta sesión:

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

Resultado:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Nota: Para obtener toda la documentación de gcloud, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.

Tarea 1: Instala Terraform y Cloud Shell

Terraform permite crear, cambiar y mejorar infraestructura de forma segura y predecible. Es una herramienta de código abierto que codifica las APIs en archivos de configuración declarativos que se pueden compartir entre los miembros de un equipo, tratar como código, editar, revisar o someter a control de versiones.

Inicializa Terraform

Terraform usa una arquitectura basada en complementos para admitir la gran cantidad de proveedores de infraestructura y servicios disponibles. Cada proveedor es su propio objeto binario encapsulado, que se distribuye independientemente de Terraform. Configura Google como proveedor para inicializar Terraform.

  1. Crea un directorio para el archivo de configuración de Terraform ejecutando el siguiente comando:
mkdir tfnet
  1. En Cloud Shell, haz clic en Abrir editor para abrir el editor de Cloud Shell. Haz clic en Abrir en una ventana nueva si es necesario.

  2. Expande la carpeta tfnet en el panel de la izquierda del editor de código.

  3. Para crear un archivo nuevo en la carpeta tfnet, haz clic en File > New File.

  4. Asígnale el nombre provider.tf y, luego, ábrelo.

  5. Copia este código en provider.tf:

    provider "google" {}
  6. Inicializa Terraform ejecutando los siguientes comandos:

    cd tfnet terraform init

El resultado debería verse así:

* provider.google: version = "~> 3.63" Terraform has been successfully initialized!

Ya puedes comenzar a trabajar con Terraform en Cloud Shell.

Tarea 2: Crea managementnet y sus recursos

Crea la red en modo personalizado managementnet junto con su regla de firewall y su instancia de VM (managementnet-us-vm).

Configura managementnet

Crea un archivo de configuración nuevo y define managementnet.

  1. Para crear un archivo nuevo, haz clic en File > New File.
  2. Asígnale el nombre managementnet.tf y, luego, ábrelo.
  3. Copia este código básico en managementnet.tf:
# Create the managementnet network resource [RESOURCE_TYPE] "managementnet" { name = [RESOURCE_NAME] #RESOURCE properties go here }

Esta plantilla básica es un excelente punto de partida para todos los recursos de Google Cloud. El campo name permite asignarle un nombre al recurso y el campo type permite especificar el recurso de Google Cloud que quieres crear. También puedes definir propiedades, aunque para algunos recursos son opcionales.

  1. En managementnet.tf, reemplaza [RESOURCE_TYPE] por "google_compute_network".
Nota: El recurso google_compute_network es una red de VPC. Puedes encontrar los recursos disponibles en la documentación del proveedor de Google Cloud. Si necesitas más detalles sobre este recurso, consulta la documentación de Terraform.
  1. En managementnet.tf, reemplaza [RESOURCE_NAME] por "managementnet".
  2. Agrega esta propiedad a managementnet.tf:
auto_create_subnetworks = "false"

A diferencia de las redes en modo automático, las redes en modo personalizado no crean subredes automáticamente en cada región. Por lo tanto, debes configurar auto_create_subnetworks como false.

  1. Verifica que managementnet.tf tenga el siguiente aspecto:
# Create managementnet network resource "google_compute_network" "managementnet" { name = "managementnet" auto_create_subnetworks = "false" }
  1. Para guardar managementnet.tf, haz clic en File > Save.

Agrega una subred a managementnet

Agrega managementsubnet-us a la red de VPC.

  1. Agrega el siguiente recurso a managementnet.tf:
# Create managementsubnet-us subnetwork resource "google_compute_subnetwork" "managementsubnet-us" { name = "managementsubnet-us" region = "{{{ project_0.default_region | Region 1 }}}" network = google_compute_network.managementnet.self_link ip_cidr_range = "10.130.0.0/20" } Nota: El recurso google_compute_subnetwork es una subred. En el archivo, se especifican el nombre, la región, la red de VPC y el rango de IP de CIDR para managementsubnet-us. Si necesitas más detalles sobre este recurso, consulta la documentación de Terraform.
  1. Para guardar managementnet.tf, haz clic en File > Save.

Configura la regla de firewall

Define una regla de firewall para permitir el tráfico HTTP, SSH, RDP e ICMP en managementnet.

  1. Agrega este código básico a managementnet.tf:
# Add a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on managementnet resource [RESOURCE_TYPE] "managementnet-allow-http-ssh-rdp-icmp" { name = [RESOURCE_NAME] source_ranges = [ "0.0.0.0/0" ] #RESOURCE properties go here }
  1. En managementnet.tf, reemplaza [RESOURCE_TYPE] por "google_compute_firewall":
Nota: El recurso google_compute_firewall es una regla de firewall. Si necesitas más detalles sobre este recurso, consulta la documentación de Terraform.
  1. En managementnet.tf, reemplaza [RESOURCE_NAME] por "managementnet-allow-http-ssh-rdp-icmp".
  2. Agrega esta propiedad a managementnet.tf:
network = google_compute_network.managementnet.self_link Nota: Como la regla de firewall depende de la red a la que pertenece, debes usar la referencia google_compute_network.managementnet.self_link para indicarle a Terraform que resuelva esos recursos por orden de dependencia. En este caso, se crea la red antes que la regla de firewall.
  1. Agrega estas propiedades a managementnet.tf:
allow { protocol = "tcp" ports = ["22", "80", "3389"] } allow { protocol = "icmp" }

La lista de reglas allow especifica qué protocolos y puertos se permiten.

  1. Verifica que el código agregado a managementnet.tf tenga el siguiente aspecto:
# Create a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on managementnet resource "google_compute_firewall" "managementnet_allow_http_ssh_rdp_icmp" { name = "managementnet-allow-http-ssh-rdp-icmp" source_ranges = [ "0.0.0.0/0" ] network = google_compute_network.managementnet.self_link allow { protocol = "tcp" ports = ["22", "80", "3389"] } allow { protocol = "icmp" } }
  1. Para guardar managementnet.tf, haz clic en File > Save.

Configura la instancia de VM

Crea un módulo para definir la instancia de VM. Los módulos son parámetros de configuración reutilizables almacenados en carpetas. Usarás el módulo para todas las instancias de VM de este lab.

  1. Para crear una carpeta nueva en tfnet, selecciona la carpeta tfnet y, luego, haz clic en File > New Folder.
  2. Asígnale el nombre instance.
  3. Para crear un archivo nuevo en instance, selecciona la carpeta instance y, luego, haz clic en File > New File.
  4. Asígnale el nombre main.tf y, luego, ábrelo.

Deberías tener la siguiente estructura de carpetas en Cloud Shell:

  1. Copia este código básico en main.tf:
resource [RESOURCE_TYPE] "vm_instance" { name = [RESOURCE_NAME] #RESOURCE properties go here }
  1. En main.tf, reemplaza [RESOURCE_TYPE] por "google_compute_instance".
Nota: El recurso google_compute_instance es una instancia de Compute Engine. Si necesitas más detalles sobre este recurso, consulta la documentación de Terraform.
  1. En main.tf, reemplaza [RESOURCE_NAME] por var.instance_name.

Como usarás este módulo para todas las instancias de VM, debes definir el nombre de la instancia como variable de entrada, de modo que puedas controlar el nombre de la variable desde managementnet.tf. Si necesitas más detalles acerca de las variables de entrada, consulta la documentación para definirlas.

  1. Agrega estas propiedades a main.tf:
zone = var.instance_zone machine_type = var.instance_type

Estas propiedades definen la zona y el tipo de máquina de la instancia como variables de entrada.

  1. Agrega estas propiedades a main.tf:
boot_disk { initialize_params { image = "debian-cloud/debian-11" } }

Esta propiedad define el disco de arranque para que use la imagen de SO de Debian 11. Debido a que las cuatro instancias de VM usarán la misma imagen, puedes codificar esta propiedad en el módulo.

  1. Agrega estas propiedades a main.tf:
network_interface { subnetwork = var.instance_subnetwork access_config { # Allocate a one-to-one NAT IP to the instance } }

Esta propiedad define la interfaz de red, proporcionando el nombre de la subred como una variable de entrada y la configuración de acceso. Si se deja vacía la configuración de acceso, el resultado será una dirección IP externa efímera. Si necesitas más detalles, consulta la documentación de Terraform.

  1. Define las 4 variables de entrada en la parte superior de main.tf y verifica que main.tf tenga el siguiente aspecto, incluidas las llaves, {}:
variable "instance_name" {} variable "instance_zone" {} variable "instance_type" { default = "e2-standard-2" } variable "instance_subnetwork" {} resource "google_compute_instance" "vm_instance" { name = var.instance_name zone = var.instance_zone machine_type = var.instance_type boot_disk { initialize_params { image = "debian-cloud/debian-11" } } network_interface { subnetwork = var.instance_subnetwork access_config { # Allocate a one-to-one NAT IP to the instance } } }

Cuando le asignas un valor predeterminado a instance_type, la variable pasa a ser opcional. Los valores de instance_name, instance_zone e instance_subnetwork son obligatorios, y deberás definirlos en managementnet.tf.

  1. Para guardar main.tf, haz clic en Archivo > Guardar.
  2. Agrega la siguiente instancia de VM a managementnet.tf:
# Add the managementnet-us-vm instance module "managementnet-us-vm" { source = "./instance" instance_name = "managementnet-us-vm" instance_zone = "{{{project_0.default_zone | ZONE 1}}}" instance_subnetwork = google_compute_subnetwork.managementsubnet-us.self_link }

En este recurso, se utiliza el módulo de la carpeta instance y se proporcionan el nombre, la zona y la red como entradas. Como esta instancia depende de una red de VPC, debes usar la referencia google_compute_subnetwork.managementsubnet-us.self_link para indicarle a Terraform que resuelva esos recursos en orden de dependencia. En este caso, se crea la subred antes que la instancia.

Nota: El beneficio de escribir módulos de Terraform es que se pueden reutilizar en múltiples archivos de configuración. En vez de escribir tus propios módulos, también puedes aprovechar los que se ofrecen en el registro de módulos de Terraform.
  1. Para guardar managementnet.tf, haz clic en File > Save.

Crea managementnet y sus recursos

Llegó la hora de aplicar los archivos de configuración de managementnet.

  1. Reescribe los archivos de configuración de Terraform en un formato y estilo canónicos ejecutando el siguiente comando:
terraform fmt Nota: Si recibes un mensaje de error, revisa los pasos anteriores para asegurarte de que tu configuración coincida con las instrucciones del lab. Si el problema persiste, consulta estos archivos de configuración terminados:
  • managementnet.tf
  • main.tf
  • provider.tf
    1. Inicializa Terraform ejecutando el siguiente comando:
    terraform init

    El resultado debería verse así:

    Initializing the backend... ... * provider.google: version = "~> 3.63" Terraform has been successfully initialized! Nota: Si recibes un mensaje de error, revisa los pasos anteriores para asegurarte de que cuentas con la estructura de carpetas y archivos correcta. Si el problema persiste, consulta los archivos de configuración terminados que vinculamos anteriormente. Una vez resuelto el problema, vuelve a ejecutar el comando anterior.
    1. Crea un plan de ejecución usando el siguiente comando:
    terraform plan

    El resultado debería verse así:

    ... Plan: 4 to add, 0 to change, 0 to destroy. ...

    Terraform determinó que se deben agregar los siguientes 4 recursos:

    Nombre Descripción
    managementnet Red de VPC
    managementsubnet-us Subred de managementnet en
    managementnet_allow_http_ssh_rdp_icmp Regla de firewall para permitir el tráfico HTTP, SSH, RDP e ICMP
    managementnet-us-vm Instancia de VM en
    1. Aplica los cambios deseados ejecutando el siguiente comando:
    terraform apply
    1. Usa el siguiente comando para confirmar las acciones planificadas:
    yes

    El resultado debería verse así:

    ... Apply complete! Resources: 4 added, 0 changed, 0 destroyed.

    Notarás que, cuando se crea la red de VPC, también se crean la regla de firewall y la subred. Después de crear la subred, se crea la instancia de VM. Este orden se debe a que la regla de firewall y la subred dependían de la red, y la instancia de VM dependía de la subred a través de referencias self_link.

    Nota: Si recibes un mensaje de error durante la ejecución, revisa los pasos anteriores para asegurarte de que cuentas con la estructura de carpetas y archivos correcta. Si el problema persiste, consulta los archivos de configuración terminados que vinculamos anteriormente. Una vez resuelto el problema, vuelve a ejecutar el comando anterior.

    Verifica managementnet y sus recursos

    En la consola de Cloud, verifica que se hayan creado los recursos.

    1. En la consola de Cloud, selecciona el menú de navegación > Red de VPC > Redes de VPC.
    2. Visualiza la red de VPC managementnet con su subred.
    3. En el panel izquierdo, haz clic en Firewall.
    4. Visualiza la regla de firewall managementnet_allow_http_ssh_rdp_icmp que se creó para la red de VPC.
    5. Selecciona el menú de navegación > Compute Engine > Instancias de VM.
    6. Confirma que aparezca la instancia managementnet-us-vm.
    7. Vuelve a Cloud Shell.

    Haz clic en Revisar mi progreso para verificar el objetivo. Crear managementnet y sus recursos

    Tarea 3: Crea privatenet y sus recursos

    Crea la red en modo personalizado privatenet junto con su regla de firewall y su instancia de VM (privatenet-us-vm).

    Configura privatenet

    Crea un archivo de configuración nuevo y define privatenet.

    1. Para crear un archivo nuevo en la carpeta tfnet, haz clic en File > New File.
    2. Asígnale el nombre privatenet.tf y, luego, ábrelo.

    Deberías tener la siguiente estructura de carpetas en Cloud Shell:

    1. Agrega la red de VPC copiando este código en privatenet.tf:
    # Create privatenet network resource "google_compute_network" "privatenet" { name = "privatenet" auto_create_subnetworks = false }
    1. Agrega el recurso de la subred privatesubnet-us a privatenet.tf:
    # Create privatesubnet-us subnetwork resource "google_compute_subnetwork" "privatesubnet-us" { name = "privatesubnet-us" region = "{{{project_0.default_region| REGION 1}}}" network = google_compute_network.privatenet.self_link ip_cidr_range = "172.16.0.0/24" }
    1. Agrega el recurso de la subred privatesubnet-second-subnet a privatenet.tf:
    # Create privatesubnet-second-subnet subnetwork resource "google_compute_subnetwork" "privatesubnet-second-subnet" { name = "privatesubnet-second-subnet" region = "{{{project_0.default_region_2 | REGION 2}}}" network = google_compute_network.privatenet.self_link ip_cidr_range = "172.20.0.0/24" }
    1. Para guardar privatenet.tf, haz clic en Archivo > Guardar.

    Configura la regla de firewall

    Define una regla de firewall para permitir el tráfico HTTP, SSH y RDP en privatenet.

    1. Agrega la regla de firewall a privatenet.tf:
    # Create a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on privatenet resource "google_compute_firewall" "privatenet-allow-http-ssh-rdp-icmp" { name = "privatenet-allow-http-ssh-rdp-icmp" source_ranges = [ "0.0.0.0/0" ] network = google_compute_network.privatenet.self_link allow { protocol = "tcp" ports = ["22", "80", "3389"] } allow { protocol = "icmp" } } Nota: Como alternativa, puedes crear un módulo para la regla de firewall, ya que la única diferencia con la regla de firewall anterior es la red de VPC a la que se aplica.
    1. Para guardar privatenet.tf, haz clic en File > Save.

    Configura la instancia de VM

    Usa el módulo de la carpeta instance para configurar privatenet-us-vm.

    1. Agrega el recurso de la instancia de VM a privatenet.tf:
    # Add the privatenet-us-vm instance module "privatenet-us-vm" { source = "./instance" instance_name = "privatenet-us-vm" instance_zone = "{{{project_0.default_zone | ZONE 1}}}" instance_subnetwork = google_compute_subnetwork.privatesubnet-us.self_link }
    1. Para guardar privatenet.tf, haz clic en File > Save.

    Crea privatenet y sus recursos

    Llegó la hora de aplicar la configuración de privatenet.

    1. Reescribe los archivos de configuración de Terraform en un formato y estilo canónicos ejecutando el siguiente comando:
    terraform fmt Nota: Si recibes un mensaje de error, revisa los pasos anteriores para asegurarte de que tu configuración coincida con las instrucciones del lab. Si el problema persiste, consulta estos archivos de configuración terminados:
  • privatenet.tf
  • managementnet.tf
  • main.tf
  • provider.tf
    1. Inicializa Terraform ejecutando el siguiente comando:
    terraform init

    El resultado debería verse así:

    Initializing the backend... ... * provider.google: version = "~> 3.63" Terraform has been successfully initialized! Nota: Si recibes un mensaje de error, revisa los pasos anteriores para asegurarte de que cuentas con la estructura de carpetas y archivos correcta. Si el problema persiste, consulta los archivos de configuración terminados que vinculamos anteriormente. Una vez resuelto el problema, vuelve a ejecutar el comando anterior.
    1. Crea un plan de ejecución usando el siguiente comando:
    terraform plan

    El resultado debería verse así:

    ... Plan: 5 to add, 0 to change, 0 to destroy. ...

    Terraform determinó que se deben agregar los siguientes 5 recursos:

    Nombre Descripción
    privatenet Red de VPC
    privatesubnet-us Subred de privatenet en
    privatesubnet-second-subnet Subred de privatenet en
    privatenet-allow-http-ssh-rdp-icmp Regla de firewall para permitir el tráfico HTTP, SSH, RDP e ICMP
    privatenet-us-vm Instancia de VM en
    1. Aplica los cambios deseados ejecutando el siguiente comando:
    terraform apply
    1. Usa el siguiente comando para confirmar las acciones planificadas:
    yes

    El resultado debería verse así:

    ... Apply complete! Resources: 5 added, 0 changed, 0 destroyed. Nota: Si recibes un mensaje de error durante la ejecución, revisa los pasos anteriores para asegurarte de que cuentas con la estructura de carpetas y archivos correcta. Si el problema persiste, consulta los archivos de configuración terminados que vinculamos anteriormente. Una vez resuelto el problema, vuelve a ejecutar el comando anterior.

    Verifica privatenet y sus recursos

    En la consola de Cloud, verifica que se hayan creado los recursos.

    1. En la consola de Cloud, selecciona el menú de navegación > Red de VPC > Redes de VPC.
    2. Revisa que estén la red de VPC privatenet y sus subredes.
    3. En el panel del lado izquierdo, haz clic en Red de VPC > Firewall.
    4. Revisa que esté la regla de firewall privatenet_allow_http_ssh_rdp_icmp para la red de VPC que se creó.
    5. Selecciona el menú de navegación > Compute Engine > Instancias de VM.
    6. Anota las direcciones IP internas de privatenet-us-vm.
    7. En managementnet-us-vm, haz clic en SSH para iniciar una terminal y conectarte.
    8. Para probar la conectividad a la dirección IP interna de privatenet-us-vm, ejecuta el siguiente comando en la terminal SSH (reemplaza la dirección IP interna de privatenet-us-vm por el valor que anotaste):
    ping -c 3 <Enter privatenet-us-vm's internal IP here> Nota: El comando no debería funcionar porque ambas instancias de VM se encuentran en redes de VPC distintas.
    1. Vuelve a Cloud Shell.

    Haz clic en Revisar mi progreso para verificar el objetivo. Crear privatenet y sus recursos

    Tarea 4: Crea mynetwork y sus recursos

    Crea la red en modo automático mynetwork junto con su regla de firewall y dos instancias de VM (mynet_us_vm y mynet_second_vm).

    Configura mynetwork

    Crea un archivo de configuración nuevo y define mynetwork.

    1. Para crear un archivo nuevo en la carpeta tfnet, haz clic en File > New File.
    2. Asígnale el nombre mynetwork.tf y, luego, ábrelo.

    Deberías tener la siguiente estructura de carpetas en Cloud Shell:

    1. Copia el siguiente código en mynetwork.tf:
    # Create the mynetwork network resource "google_compute_network" "mynetwork" { name = "mynetwork" #RESOURCE properties go here }
    1. Agrega esta propiedad a mynetwork.tf:
    auto_create_subnetworks = "true"

    Por definición, las redes en modo automático crean subredes en cada región automáticamente. Por lo tanto, debes configurar auto_create_subnetworks como true.

    1. Verifica que mynetwork.tf tenga el siguiente aspecto:
    # Create the mynetwork network resource "google_compute_network" "mynetwork" { name = "mynetwork" auto_create_subnetworks = "true" }
    1. Para guardar mynetwork.tf, haz clic en File > Save.

    Configura la regla de firewall

    Define una regla de firewall para permitir el tráfico HTTP, SSH y RDP en mynetwork.

    1. Agrega la regla de firewall a mynetwork.tf:
    # Create a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on mynetwork resource "google_compute_firewall" "mynetwork-allow-http-ssh-rdp-icmp" { name = "mynetwork-allow-http-ssh-rdp-icmp" source_ranges = [ "0.0.0.0/0" ] network = google_compute_network.mynetwork.self_link allow { protocol = "tcp" ports = ["22", "80", "3389"] } allow { protocol = "icmp" } }
    1. Para guardar mynetwork.tf, haz clic en File > Save.

    Configura la instancia de VM

    Usa el módulo de la carpeta instance para configurar mynetwork-us-vm y mynetwork-second-vm.

    1. Agrega estas instancias de VM a mynetwork.tf:
    # Create the mynet-us-vm instance module "mynet-us-vm" { source = "./instance" instance_name = "mynet-us-vm" instance_zone = "{{{project_0.default_zone | ZONE 1}}}" instance_subnetwork = google_compute_network.mynetwork.self_link } # Create the mynet-second-vm" instance module "mynet-second-vm" { source = "./instance" instance_name = "mynet-second-vm" instance_zone = "{{{project_0.default_zone_2 | ZONE 2}}}" instance_subnetwork = google_compute_network.mynetwork.self_link }
    1. Para guardar mynetwork.tf, haz clic en File > Save.

    Crea mynetwork y sus recursos

    Llegó la hora de aplicar la configuración de mynetwork.

    1. Reescribe los archivos de configuración de Terraform en un formato y estilo canónicos ejecutando el siguiente comando:
    terraform fmt Nota: Si recibes un mensaje de error, revisa los pasos anteriores para asegurarte de que tu configuración coincida con las instrucciones del lab. Si el problema persiste, consulta estos archivos de configuración terminados:
  • privatenet.tf
  • managementnet.tf
  • mynetwork.tf
  • main.tf
  • provider.tf
    1. Inicializa Terraform ejecutando el siguiente comando:
    terraform init

    El resultado debería verse así:

    Initializing the backend... ... * provider.google: version = "~> 3.63" Terraform has been successfully initialized! Nota: Si recibes un mensaje de error, revisa los pasos anteriores para asegurarte de que cuentas con la estructura de carpetas y archivos correcta. Si el problema persiste, consulta los archivos de configuración terminados que vinculamos anteriormente. Una vez resuelto el problema, vuelve a ejecutar el comando anterior.
    1. Crea un plan de ejecución usando el siguiente comando:
    terraform plan

    El resultado debería verse así:

    ... Plan: 4 to add, 0 to change, 0 to destroy. ...

    Terraform determinó que se deben agregar los siguientes 4 recursos:

    Nombre Descripción
    mynetwork Red de VPC
    mynetwork-allow-http-ssh-rdp-icmp Regla de firewall para permitir el tráfico HTTP, SSH, RDP e ICMP
    mynet-us-vm Instancia de VM en
    mynet-second-vm Instancia de VM en
    1. Aplica los cambios deseados ejecutando el siguiente comando:
    terraform apply
    1. Usa el siguiente comando para confirmar las acciones planificadas:
    yes

    El resultado debería verse así:

    ... Apply complete! Resources: 4 added, 0 changed, 0 destroyed. Nota: Si recibes un mensaje de error durante la ejecución, revisa los pasos anteriores para asegurarte de que cuentas con la estructura de carpetas y archivos correcta. Si el problema persiste, consulta los archivos de configuración terminados que vinculamos anteriormente. Una vez resuelto el problema, vuelve a ejecutar el comando anterior.

    Verifica mynetwork y sus recursos

    En la consola de Cloud, verifica que se hayan creado los recursos.

    1. En la consola de Cloud, selecciona el menú de navegación > Red de VPC > Redes de VPC.
    2. Revisa que estén la red de VPC mynetwork y sus subredes.
    3. En el panel izquierdo, haz clic en Firewall.
    4. Revisa que esté la regla de firewall mynetwork-allow-http-ssh-rdp-icmp para la red de VPC que se creó.
    5. Selecciona el menú de navegación > Compute Engine > Instancias de VM.
    6. Revisa que estén las instancias mynet-us-vm y mynet-second-vm.
    7. Anota las direcciones IP internas de mynet-second-vm.
    8. En mynet-us-vm, haz clic en SSH para iniciar una terminal y conectarte.
    9. Para probar la conectividad con la dirección IP interna de mynet-second-vm, ejecuta el siguiente comando en la terminal SSH (reemplaza la dirección IP interna de mynet-second-vm por el valor que anotaste):
    ping -c 3 <Enter mynet-second-vm's internal IP here> Nota: El comando debería funcionar porque ambas instancias de VM están en la misma red y el tráfico de ICMP está permitido.

    Haz clic en Revisar mi progreso para verificar el objetivo. Crear mynetwork y sus recursos

    ¡Felicitaciones!

    Aquí termina el lab de autoaprendizaje Automatiza la implementación de redes con Terraform.

    En este lab, creaste módulos y archivos de configuración de Terraform para automatizar la implementación de una red personalizada. A medida que modificas la configuración, Terraform puede determinar qué cambió y generar planes de ejecución incrementales, lo que te permite crear la configuración general paso a paso.

    El módulo de la carpeta instance te permitió reutilizar la misma configuración para varios recursos y te brindó propiedades como variables de entrada. Puedes aprovechar los módulos y archivos de configuración que creaste como puntos de partida en tus próximas implementaciones.

    Capacitación y certificación de Google Cloud

    Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.

    Última actualización del manual: 19 de enero de 2024

    Prueba más reciente del lab: 19 de enero de 2024

    Copyright 2025 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.

    Before you begin

    1. Labs create a Google Cloud project and resources for a fixed time
    2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
    3. On the top left of your screen, click Start lab to begin

    Este contenido no está disponible en este momento

    Te enviaremos una notificación por correo electrónico cuando esté disponible

    ¡Genial!

    Nos comunicaremos contigo por correo electrónico si está disponible

    One lab at a time

    Confirm to end all existing labs and start this one

    Use private browsing to run the lab

    Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.