No dejo el tema de Active Directory Domain Services y el unir máquinas a dominio, y es que si la semana pasada os contaba cómo unir las máquinas basadas en GNU/Linux, esta vengo a contaros algo tan sencillo como ponente: unir en Azure máquinas Windows a dominio automáticamente desde nuestra plantilla JSON en ARM (Azure Resource Manager).
Imaginad la siguiente situación hipotética de infraestructura en Azure:
- Tenemos 4 máquinas virtuales que hacen de controlador de dominio de ADDS.
- Vamos a implementar 25 servidores Windows adicionales, todos ellos unidos a dominio usando estos controladores.
¡Phew! Nos vamos a tirar un rato ¿no? Los super-saiyans de la automatización sugerirán que lo más inteligente es desplegar las 25 máquinas con una imagen pre-cocinada preparada para aceptar conexiones WinRM y ya mediante PowerShell procedemos a unir automáticamente todas las máquinas. No está nada mal... ¡pero hay un camino mucho más sencillo y sin cocinar imágenes!
En la Azure QuickStart Templates Gallery encontramos esta interesante plantilla para unir máquinas Windows a dominio. Podemos ver como llama a la extensión JsonADDomainExtension para ejecutar la tarea una vez nuestra máquina está aprovisionada.
El código JSON para utilizarla tiene el siguiente aspecto:
{
"apiVersion": "2015-06-15",
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat('miMaquinaVirtual','/joindomain')]",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/','miMaquinaVirtual')]"
],
"properties": {
"publisher": "Microsoft.Compute",
"type": "JsonADDomainExtension",
"typeHandlerVersion": "1.3",
"autoUpgradeMinorVersion": true,
"settings": {
"Name": "calnus.com",
"OUPath": "CN=Computers,DC=calnus,DC=com",
"User": "Administrator@calnus.com",
"Restart": "true",
"Options": "3"
},
"protectedsettings": {
"Password": "[parameters('adminPassword')]"
}
}
}
¡Y con esto la tenemos! Aplicad la sustitución de cadenas por parámetros o variables e incluso utilizar copy() para unir de tirón varias máquinas virtuales sin escribir el JSON de todas ellas.
Hagamos un repaso rápido a los atributos:
- Evidentemente, no olvidar la dependencia de la máquina virtual en cuestión, como ocurriría con cualquier extensión.
- Name. Es el FQDN del dominio al que nos estamos uniendo.
- OUPath (opcional). ¿Queréis unir vuestra máquina a una OU distinta de la de por defecto? Especificádlo aquí en formato distinguishedName.
- User. El usuario apoderado para hacer la unión a dominio.
- Restart. ¿Reiniciamos la máquina automáticamente tras completar la operación?
- Options. El parámetro más esotérico, que recomiendo encarecidamente dejar siempre a 3, es la máscara de bits con la que se llama a la función de la API de Windows para realizar la operación de incorporación al dominio. Si tienes curiosidad puedes consultarlo aquí, prestando atención al parámetro fJoinOptions.
- Password. La contraseña de la cuenta con permisos para unir a dominio, como SecureString. No dejar escrita en ningún archivo de texto plano.
¡Y eso es todo por hoy! Espero que esto os haga la vida un poquito más fácil.