Por Luke Orellana

Este post te muestra cómo configurar un servidor de extracción DSC (DSC Pull Server) en Azure para nuestro nodo vSphere DSC. ¡Vamos allá!

¿Qué es vSphereDSC?

vSphereDSC es un proyecto de comunidad de código abierto que lleva la configuración de estado deseado de PowerShell a la pila de VMware. Nos permite adoptar una mentalidad más » DevOps » al administrar nuestra infraestructura y puede proporcionar los siguientes beneficios a los administradores de VMware:

  • ¿Ganado o mascota? Al construir un entorno utilizando un sistema de gestión de configuración como DSC, has dado un gran paso para tratar tu infraestructura de VMware como ganado. El apego sentimental a tus hosts ESXi o a las máquinas virtuales que creaste a mano ahora desaparece, y ya no es una «mascota» sino una configuración que se inserta por código.
  • Infraestructura como código: Tener la infraestructura generada y ejecutada por código no solo proporciona una forma profunda de «documentación» del entorno, sino que ahora también podemos implementar el control de fuente en los cambios de configuración que hagamos para nuestro entorno. Ello proporciona muchos beneficios, como el «seguimiento de eventos» y la «revisión de código» de nuestras configuraciones.
  • Escalabilidad: Tener puesto un administrador de configuración permite que el tiempo de administración de un nodo sea el mismo que si hubiera 10,000 nodos. Se evita que las empresas sigan el proceso de tradicional de tener que escalar el equipo de operaciones junto con la infraestructura TI.
  • Configuraciones forzadas: La mayoría de las interrupciones se deben a cambios realizados en el entorno. Tener alguna forma de hacer cumplir y monitorizar cada cambio es fantástico para garantizar la estabilidad.

La metodología DSC de vSphere requiere que haya un Administrador de configuración local (LCM) que ejecute Windows Management Framework 5.1 y PowerCLI 10.1.1 o superior. Debido a que no puede instalar un LCM en vCenter o ESXi, el LCM en Windows nativo actúa como un proxy entre VMware y DSC. Un servidor de extracción alojará el archivo de configuración para el LCM. El archivo de configuración tendrá diferentes configuraciones para el entorno de VMware, que luego se aplicará mediante PowerCLI. La imagen a continuación de la web de VMware ofrece un gran ejemplo del diseño:

Desired State Configuration Resources for VMware

Configuración del servidor de Automatización de DSC Pull en Azure

Existen muchas soluciones para un servidor pull insitu. Sin embargo, Microsoft asegura que, si bien aún soportan su funcionalidad Windows de su servidor Pull, no se centrarán en ninguna de las nuevas funciones o capacidades con este servicio. La atención de Microsoft se ha trasladado a Azure Automation, que se puede configurar como un administrador de configuración «en la nube». Dado que Microsoft ahora recomienda usar Azure Automation en lugar de un servidor de extracción local, vamos a utilizar Azure Automation Configuration Management como nuestro servidor de extracción en este artículo. Estas son algunas de las ventajas que obtenemos al ejecutar nuestro servidor de extracción en Azure:

  • Certificados: todos los certificados de clientes se generan y administran automáticamente, sin tener que preocuparse por crear nuestros propios certificados.
  • Tienda de secretos: podemos administrar las credenciales y las contraseñas y enviarlas a nuestros scripts.
  • Informes: ahora tenemos un elegante panel de control para administrar nuestras configuraciones.
  • Administración central: ahora podemos administrar todas las configuraciones de LCM desde un lugar único en la nube.

Ahora mismo, podemos administrar hasta 5 nodos «locales» de forma gratuita a través de Configuration Management en Azure y, como solo necesitamos un nodo para configurar VMware DSC, resulta ser una perfecta solución sin coste para ir haciendo probaturas en DSC con VMware:

Azure configuration management

Para comenzar a configurar nuestro LCM en Azure Automation, necesitamos crear una cuenta de automatización. Inicie sesión en Azure, o si no tienes una cuenta, inicia una cuenta de prueba gratuita . En la pantalla de inicio, haz una búsqueda de cuentas de automatización . Luego selecciona Agregar para crear nuestra cuenta. A continuación, completa la hoja con tu nombre de cuenta, grupo de recursos y ubicación. Mantén la opción para la cuenta de ejecución de Azure en y selecciona Crear:

Azure automation accounts

Ahora que hemos creado nuestra cuenta y nuestro grupo de recursos, necesitamos instalar algunos módulos. Tiramos adelante con la configuración LCM predeterminada de Azure DSC, que nos ahorrará algunos pasos y simplificará el proceso de configuración. Puedes instalar estos módulos en el propio nodo LCM o en un puesto de trabajo de administración. Necesitaremos estos módulos para agregar nuestro nodo LCM a Azure Automation Configuration Management. Necesitaremos los módulos de AzureRM.Automation, así que escribe lo siguiente en una consola administrativa de PowerShell para instalarlos desde la Galería de PowerShell:

Install-Module AzureRM.Automation -Force

A continuación, necesitaremos los módulos DSC para configurar nuestro LCM para informar a Azure, así que escribe la siguiente sintaxis:

Install-Module -name xPSDesiredStateConfiguration -Force

Ahora pega el siguiente código del sitio web de Microsoft en PowerShell ISE o VSCode. Necesitaremos completar los parámetros para que coincidan con nuestra cuenta de automatización recién creada. Creé una carpeta en la raíz de C para los archivos de configuración de DSC. Asegúrate de que el campo computername coincida con el nombre del nodo LCM que estamos usando para vSphere DSC o no podremos configurar el LCM:

# Define the parameters for Get-AzureRmAutomationDscOnboardingMetaconfig using PowerShell Splatting
$Params = @{
    ResourceGroupName = 'LukelabDSC-RG'; # The name of the Resource Group that contains your Azure Automation Account
    AutomationAccountName = 'LukeLabDSC'; # The name of the Azure Automation Account where you want a node on-boarded to
    ComputerName = @('vspheredsc'); # The names of the computers that the meta configuration will be generated for
    OutputFolder = "C:\DSCConfigs";
}
# Use PowerShell splatting to pass parameters to the Azure Automation cmdlet being invoked
# For more info about splatting, run: Get-Help -Name about_Splatting
Get-AzureRmAutomationDscOnboardingMetaconfig @Params

Ahora que hemos completado la información, en cualquier herramienta que uses, conéctatee a Azure escribiendo:

connect-azurermaccount

Luego obtendremos un aviso para iniciar sesión en Azure, se verá así:

Una vez ya estás logueado, ejecuta el fragmento de código que completamos anteriormente, te creará nuestro archivo meta.mof, que es el archivo que configura el motor LCM. Básicamente, le dirá a nuestro nodo vsphereDSC que acuda a Azure en busca de su archivo de configuración:

Ahora es el momento mágico. Puedes copiar el archivo .meta.mof en el propio nodo LCM y ejecutar Set-DSLOcalConfigurationManager localmente o usar PSRemoting para enviar la configuración directamente al nodo. Especifica la ruta hacia el archivo meta.mof que creamos. Además, yo siempre utilizo el parámetro -verbose para poder ir viendo todos los detalles de lo que está sucediendo:

Set-DSCLocalConfigurationManager -path "C:\DCSConfigs\DSCMetaConfigs\" -Computername vspheredsc -credential $creds -verbose

Podemos ver con el registro detallado que el LCM se ha configurado correctamente:

Ahora, cuando echamos un vistazo a nuestra Cuenta de automatización en Azure y seleccionamos Configuración de estado (DSC), podemos ver nuestro nodo agregado y un bonito gráfico para administrar todos nuestros nodos:

state configuration

Así que ahora hemos configurado un servidor de extracción DSC en Azure para nuestro nodo vSphere DSC. Asegúrate de revisar la próxima publicación en la que crearemos una configuración DSC para nuestro entorno ESXi e implementaremos la configuración en el nodo. Además, ten en cuenta que el nodo LCM no puede ser parte de un dominio, el Administrador de configuración local generará un error al configurar con un error de «código de respuesta inesperado».

¿Y tú? ¿Te parece útil este tipo de gestión a escala para vSphere? ¿Has probado algo similar? ¿Te funcionó bien? Me gustaría saber de tu experiencia. Por favor, cuéntame en la sección de comentarios. 🙂