Ejecutar tareas post instalación en Nano Server

Para cerrar la trilogía de posts sobre Nano server hoy toca escribir acerca de las acciones post instalación una vez ha sido desplegado. Y diréis, ¿no me sirven las tareas que he configurables en el MDT? pues no :/

Así pues, para resolver este “problema” existen algunas posibilidades aplicables a varios sistemas operativos Microsoft:

  • Mediante un fichero unnattend.xml
  • Editando el fichero setupcomplete.cmd

Ante esta encrucijada donde las dos opciones disponibles implican editar archivos de sistema, he decidido decantarme por la edición del fichero setupcomplete.cmd situado en la ruta C:\windows\setup\scripts.

IMPORTANTE: Editar archivos de sistema siempre implica un riesgo, así que si no estáis al 100% seguros de lo que tocáis mejor no hacerlo.

Por defecto este fichero tiene el siguiente contenido:

@ECHO OFF
set SCLOG=%SystemRoot%\setup\scripts\setupcomplete.log
echo "Executing 'netsh advfirewall firewall add rule name='WinRM 5985' protocol=TCP dir=in localport=5985 profile=any action=allow'" >> %SCLOG%
netsh advfirewall firewall add rule name="WinRM 5985" protocol=TCP dir=in localport=5985 profile=any action=allow >> %SCLOG%
echo "Executing 'netsh advfirewall firewall set rule group='@FirewallAPI.dll,-29252' new enable=Yes'" >> %SCLOG%
netsh advfirewall firewall set rule group="@FirewallAPI.dll,-29252" new enable=Yes >> %SCLOG%
echo "Executing 'tzutil.exe /s 'UTC''" >> %SCLOG%</pre><pre>

Para ejecutar tareas post instalación tan solo tenemos que añadir unas lineas en este fichero, por ejemplo:

  • Añadir variable de registro:

    reg.exe ADD “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment” /v Path /t REG_EXPAND_SZ /d “%Path%C:\opscode\chef\bin;C:\opscode\chef\embedded\bin;” /f

  • Ejecutar script en powershell:

    powershell “C:\temp\Scripts\miscript.ps1” >> %SCLOG%

Una vez editado el fichero debemos situarlo en la misma ruta. (En mi caso he usado el script que os comenté en mi anterior articulo que me permite depositar archivos tanto en la raíz de C: como en la carpeta C:\Windows).

Al iniciar el nano server este proceso tarda de 45 a 60 segundos en empezar a ejecutarse y una vez finalizado podemos consultar el log  en la misma ruta (setupcomplete.log).

"Executing 'netsh advfirewall firewall add rule name='WinRM 5985' protocol=TCP dir=in localport=5985 profile=any action=allow'" 
Ok.
"Executing 'netsh advfirewall firewall set rule group='@FirewallAPI.dll,-29252' new enable=Yes'"
Updated 3 rule(s).
Ok.
"Executing 'tzutil.exe /s 'UTC''" 
"Executing 'netsh advfirewall firewall add rule name='WinRM 5985' protocol=TCP dir=in localport=5985 profile=any action=allow'" 
Ok.
"Executing 'netsh advfirewall firewall set rule group='@FirewallAPI.dll,-29252' new enable=Yes'"
Updated 3 rule(s).
Ok.
"Executing 'tzutil.exe /s 'UTC''"

Desplegando una imagen de Nano Server desde MDT

Recientemente me encontré con el reto de automatizar el despliegue de una solución con Nano Server y después de darle varias vueltas, me decidí por realizar el despliegue usando MDT dado que se trata de una herramienta que no solo me permite distribuir varias imágenes de SO, sino que también puedo realizar muchas tareas pre instalación y post instalación.

Así pues, me puse en marcha y vi que la cosa no seria tan fácil dado que usando las Task Sequences que vienen por defecto, el proceso de despliegue no funcionaba bien. Así pues, después de pelearme con la herramienta durante un rato di con los archivos de customización para MDT que ha realizado Michael Niehaus (Estos los podéis descargar desde el siguiente link )

Dentro de este ZIP encontraremos tres carpetas (Scripts, Templates, Tools) con los siguientes ficheros:

  • Microsoft.BDD.DJoin.exe
  • LTIOfflineJoin.wsf
  • ServerNano.xml
  • ServerNanoVHD.xml
  • Unattend_x64.xml.10.0.ServerDatacenterNano
  • Unattend_x64.xml.10.0.ServerStandardNanoNano

Estos deberán ser depositados en:

  • Tools: en la carpeta Tools del deployment share C:\DeploymentShare\Tools\x64
  • Templates: en la carpeta Templates donde se ha instalado el MDT C:\Program Files\Microsoft Deployment Toolkit\Templates
  • Scripts: en la carpeta Scripts del deployment share C:\DeploymentShare\Scripts

Una vez realizados estos cambios, en el momento que queramos crear una Task Sequence desde el MDT ya podremos seleccionar el template Nano Server Task Sequence.

MDT_Nano1.png

Dado que las Task Sequences con Nano Server son bastante limitadas, las podemos combinar con alguno de los muchos scripts que circulan por Internet tanto para MDT como para SCCM.

En mi caso, por ejemplo, lo he combinado con este de copiar ficheros para, una vez finalizado el despliegue de un Nano Server con roles de virtualización, ejecutar scripts a posteriori que crearán maquinas virtuales sobre el servidor que he desplegado.