Configuración de un clúster de máquinas virtuales de Azure mediante Terraform

En este artículo se muestra el código de Terraform de ejemplo para crear un clúster de máquinas virtuales en Azure.

En este artículo aprenderá a:

  • Configuración de un clúster de máquinas virtuales de Azure

1. Configurar su entorno

  • Suscripción de Azure: Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

2. Implementación del código

  1. Cree un directorio en el que probar el código de ejemplo de Terraform y conviértalo en el directorio actual.

  2. Cree un archivo llamado main.tf e inserte el siguiente código:

    module "windowsservers" {
      source              = "Azure/compute/azurerm"
      resource_group_name = azurerm_resource_group.rg.name
      is_windows_image    = true
      vm_hostname         = "mywinvm"                         // Line can be removed if only one VM module per resource group
      admin_password      = "ComplxP@ssw0rd!"                 // See note following code about storing passwords in config files
      vm_os_simple        = "WindowsServer"
      public_ip_dns       = ["winsimplevmips"]                // Change to a unique name per data center region
      vnet_subnet_id      = module.network.vnet_subnets[0]
    
      depends_on = [azurerm_resource_group.rg]
    }
    
    module "network" {
      source              = "Azure/network/azurerm"
      resource_group_name = azurerm_resource_group.rg.name
      subnet_prefixes     = ["10.0.1.0/24"]
      subnet_names        = ["subnet1"]
    
      depends_on = [azurerm_resource_group.rg]
    }
    
    output "windows_vm_public_name" {
      value = module.windowsservers.public_ip_dns_name
    }
    
    output "vm_public_ip" {
      value = module.windowsservers.public_ip_address
    }
    
    output "vm_private_ips" {
      value = module.windowsservers.network_interface_private_ip
    }
    

    Puntos clave:

    • En el ejemplo de código anterior, a la variable admin_password se le asigna un valor literal por simplicidad. Hay muchas maneras de almacenar datos confidenciales, como las contraseñas. La decisión de cómo desea proteger los datos se reduce a las opciones individuales que implican su entorno particular y el nivel de comodidad que expone estos datos. Como ejemplo del riesgo, el almacenamiento de un archivo como este en el control de código fuente podría provocar que otros usuarios pudieran verlo. Para más información sobre este tema, HashiCorp ha documentado varias maneras de declarar variables de entrada y técnicas para la administración de datos confidenciales (por ejemplo, contraseñas).

3. Inicialización de Terraform

Para inicializar la implementación de Terraform, ejecute terraform init.

terraform init

Puntos clave:

  • Este comando descarga los módulos de Azure necesarios para crear un grupo de recursos de Azure.

4. Creación de un plan de ejecución de Terraform

Ejecute terraform plan para crear un plan de ejecución.

terraform plan -out main.tfplan

Puntos clave:

  • El comando terraform plan crea un plan de ejecución, pero no lo ejecuta. En su lugar, determina qué acciones son necesarias para crear la configuración especificada en los archivos de configuración. Este patrón le permite comprobar si el plan de ejecución coincide con sus expectativas antes de realizar cambios en los recursos reales.
  • El parámetro -out opcional permite especificar un archivo de salida para el plan. El uso del parámetro -out garantiza que el plan que ha revisado es exactamente lo que se aplica.
  • Para más información acerca de la seguridad y conservar los planes de ejecución, consulte la sección Advertencia de seguridad.

5. Aplicación de un plan de ejecución de Terraform

Ejecute terraform apply para aplicar el plan de ejecución a su infraestructura en la nube.

terraform apply main.tfplan

Puntos clave:

  • El comando terraform apply anterior da por hecho que ejecutó anteriormente terraform plan -out main.tfplan.
  • Si especificó un nombre de archivo diferente para el parámetro -out, use ese mismo nombre de archivo en la llamada a terraform apply.
  • Si no ha utilizado el parámetro -out, simplemente llame a terraform apply sin ningún parámetro.

Solución de problemas de Terraform en Azure

Solución de problemas comunes al usar Terraform en Azure

Pasos siguientes