Azure Automation y PowerShell DSC

Hace ya algunas semanas te conté qué es PowerShell DSC y cómo puedes definir una serie de requisitos, para que tus máquinas tengan el estado deseado en tan solo unas lineas de código PowerShell. También te conté que, para que estas condiciones se cumplan, existe un motor llamado Local Configuration Manager que se encarga de lanzar estas configuraciones sobre los nodos. Hoy me gustaría hablarte de cómo encaja Azure Automation en esta foto.

Azure Automation: DSC Nodes

Si ya has jugado con Azure Automation, creando algún runbook para tu suscripción, habrás notado que hay varios apartados relacionados con DSC:

Azure Automation - DSC sections
Azure Automation – DSC sections
  • DSC Configurations es la sección que almacena los scripts de PowerShell DSC que se aplicarán a los nodos.
    Azure Automation - DSC Configurations
    Azure Automation – DSC Configurations

    Haciendo clic sobre View configuration source podrás ver el contenido de cada una de las configuraciones.

    Azure Automation - DSC Configurations - View configuration source
    Azure Automation – DSC Configurations – View configuration source
  • DSC Node Configuration muestra la asociación entre los scripts y los nodos que están haciendo uso de ellos.

    Azure Automation - DSC Node Configuration
    Azure Automation – DSC Node Configuration
  • DSC Nodes son las máquinas que tienes registradas dentro de Azure Automation, a los cuales podrás aplicar las configuraciones que has definido. Estas pueden estar en cualquier parte.

    Azure Automation - DSC Nodes
    Azure Automation – DSC Nodes

Vamos a crear una configuración desde cero para que puedas ver cómo funciona. Lo primero que voy a definir es cuál es el estado que deseo para uno de mis nodos.

Configuration TelnetServer{
    #vmtelnetdemo node
    Node "vmtelnetdemo"{
        
        #Install Telnet-server      
        WindowsFeature  Telnet-Server{
            Ensure = "Present"
            Name = "Telnet-Server"
        }      
    }
}

La configuración es bastante sencilla, ya que sólo estoy pidiendo que vmtelnetdemo tenga instalada la característica Telnet-Server. El siguiente paso es subir dicha configuración en el apartado DSC Configuration. Haz clic sobre la opción Add a configuration y selecciona el archivo donde has guardado el script anterior.

Azure Automation - DSC Configurations - Add a configuration
Azure Automation – DSC Configurations – Add a configuration

Añade la máquina virtual vmtelnetdemo en el apartado DSC Nodes.

Azure Automation - DSC Nodes - Add Azure VM
Azure Automation – DSC Nodes – Add Azure VM

La primera opción es añadir una máquina que esté alojada en Microsoft Azure pero, como puedes ver en la imagen anterior, también es posible añadir máquinas on-premises (o cualquier otro sitio), siguiendo la documentación que se activa a través de ese botón. Cuando seleccionas tu máquina virtual, debes además configurar una serie de valores:

Azure Automation - DSC Nodes - Registration
Azure Automation – DSC Nodes – Registration

Estos valores son los mismos que te conté sobre el motor de PowerShell DSC, Local Configuration Manager, los cuales te permiten modificar la forma de la que se comportará el nodo frente a DSC. Acepta los cambios y haz clic en Create para que se actualice y registre la nueva máquina. Compila la nueva configuración para telnet desde el apartado DSC Configurations > TelnetServer.

Azure Automation - DSC Configurations - Compile DSC Script
Azure Automation – DSC Configurations – Compile DSC Script

Una vez que se haya completado será enviada dicha configuración al servidor, y vmtelnetdemo quedará pendiente de aplicar los cambios, en este caso la instalación de la característica Telnet-Server.

Azure Automation - DSC Nodes - No compliant - Pending
Azure Automation – DSC Nodes – Pending

Después de unos minutos se aplicará la configuración correspondiente.

Azure Automation - DSC Nodes - VMTELNETDEMO - Compliant
Azure Automation – DSC Nodes – VMTELNETDEMO – Compliant

Y podrás comprobar que la máquina vmtelnetdemo tiene instalada la característica Telnet-Server, tal y como habías requerido.

RDP - vmtelnetdemo - Telnet-Server feature installed
RDP – vmtelnetdemo – Telnet-Server feature installed

Esta ha sido una prueba de una configuración súper sencilla con Azure Automation y PowerShell DSC, para que tus máquinas siempre tengan el estado que has deseado.

¡Saludos!