Creación de Máquinas Virtuales en Azure con Terraform

Clase 23 de 37Curso de Terraform

Resumen

¿Cómo crear una máquina virtual desde cero en Azure con Terraform?

Crear una máquina virtual completamente desde cero puede parecer un reto, pero con las herramientas adecuadas, se convierte en un proceso bastante sencillo. En este caso, usaremos Terraform, una potente herramienta de infraestructura como código, para desplegar una máquina virtual en Azure. Aquí te mostramos cómo hacerlo guiándote con la documentación de Microsoft.

¿Cuál es el primer paso en el proceso?

Para comenzar, busca en internet "Windows virtual machine Terraform" para encontrar la documentación necesaria. Microsoft ofrece documentación en varios idiomas, lo cual facilita su entendimiento y aplicación. Es vital adaptar la documentación a nuestras necesidades específicas.

  1. Preparar el entorno: Abre VS Code y, dentro del repositorio de curso Terraform, crea una carpeta llamada maquinas_virtuales.
  2. Configurar el archivo principal: Añade el archivo main.tf, copia y ajusta el contenido del proveedor si ya tienes uno configurado, pero elimina cualquier elemento no necesario.
  3. Definir grupos de recursos:
    • Crea variables para la ubicación (location) y nombre del grupo de recursos en variables.tf.
    • Aquí está un ejemplo del bloque de variables:
      variable "location" {
        type = string
      }
      
      variable "resource_group" {
        type = string
      }
      

¿Cómo construir los componentes de red?

Los componentes de red son esenciales para que la máquina virtual pueda comunicarse correctamente.

  1. Crear una red virtual y una subred:

    • Define un bloque AzureRM_virtual_network y AzureRM_subnet.
    • Utiliza nombres descriptivos y heredados de tu grupo de recursos.
    • Ejemplo de configuración:
      resource "azurerm_virtual_network" "myTerraformNetwork" {
        name                = "mynetwork"
        address_space       = ["10.0.0.0/16"]
        location            = var.location
        resource_group_name = var.resource_group
      }
      
      resource "azurerm_subnet" "myTerraformSubnet" {
        name                 = "mysubnet"
        resource_group_name  = var.resource_group
        virtual_network_name = azurerm_virtual_network.myTerraformNetwork.name
        address_prefixes     = ["10.0.1.0/24"]
      }
      
  2. Configurar una IP pública y un grupo de seguridad de red:

    • Asegura que el protocolo RDP sea accesible para conectar vía escritorio remoto.
    • Ejemplo de bloque de grupo de seguridad:
      resource "azurerm_network_security_group" "myTerraformnsg" {
        name                = "mynsg"
        location            = var.location
        resource_group_name = var.resource_group
      
        security_rule {
          name                       = "Allow-RDP"
          priority                   = 1000
          direction                  = "Inbound"
          access                     = "Allow"
          protocol                   = "Tcp"
          source_port_range          = "*"
          destination_port_range     = "3389"
          source_address_prefix      = "*"
          destination_address_prefix = "*"
        }
      }
      
  3. Asociar interfaz de red con la seguridad:

    • Define AzureRM_network_interface para conectar la máquina virtual con la red.
    • Haz la asociación con el grupo de seguridad configurado.

¿Cómo terminar la configuración y desplegar la máquina virtual?

Una vez configurada la red, ya puedes proceder con el despliegue final de la máquina virtual.

  1. Definir y ajustar la máquina virtual:

    • Utiliza AzureRM_windows_virtual_machine y asegúrate de definir variables como user_name y password.
    • Ejemplo de carga de datos de la máquina virtual:
      resource "azurerm_windows_virtual_machine" "myVM" {
        name                  = "myVM"
        location              = var.location
        resource_group_name   = var.resource_group
        network_interface_ids = [azurerm_network_interface.myNI.id]
      
        os_disk {
          caching           = "ReadWrite"
          storage_account_type = "Standard_LRS"
        }
      
        source_image_reference {
          publisher = "MicrosoftWindowsServer"
          offer     = "WindowsServer"
          sku       = "2022-Datacenter"
          version   = "latest"
        }
      
        admin_username = var.vm_username
        admin_password = var.vm_password
      }
      
  2. Inicializar y aplicar la configuración en Terraform:

    • Ejecuta los comandos Terraform init, Terraform plan -out plan.out y Terraform apply para revisar y aplicar la infraestructura.
    • Siempre es buena idea verificar en el portal de Azure que los recursos se hayan creado correctamente.

Con esta guía y un poco de paciencia, serás capaz de crear y configurar máquinas virtuales en Azure, un conocimiento esencial para cualquier profesional de la tecnología de la información. ¡Sigue adelante y explora las infinitas posibilidades que ofrece Terraform!