La extensión LCM Controller desempeña un papel fundamental en la gestión del ciclo de vida de los clústeres Azure Stack HCI. Sin embargo, en la versión 2311.2 (release 23H2) numerosos administradores han encontrado que la extensión no se instala o no se carga en uno o varios nodos, dejando el clúster en estado inconsistente. Este artículo describe en profundidad la naturaleza del error, proporciona un procedimiento de mitigación probado en producción y ofrece buenas prácticas para evitar la reincidencia —todo ello con foco en la optimización SEO y la utilidad real para el lector.
Visión general del problema
Azure Stack HCI 23H2 introduce una serie de extensiones nativas para orquestar actualizaciones, supervisar componentes críticos y simplificar la operación diaria. Entre ellas se encuentra LCM Controller, responsable de coordinar las políticas de “Life‑Cycle Management” (LCM) que controlan parches, drivers y firmware.
En la compilación 2311.2, el instalador de la extensión se distribuyó con una dependencia que no resuelve correctamente en todos los entornos. Esto provoca que la instalación falle de forma silenciosa o quede estancada en estado «Installing
». Lo más habitual es que solo algunos nodos resulten afectados, generando un clúster con extensiones desalineadas.
Síntomas específicos detectados
- En el portal de Azure, el estado de la extensión aparece como Failed o Installing indefinidamente para nodos concretos.
- El comando
Get-AzStackHciExtension
devuelveStatus=Unknown
en el nodo problemático. - El servicio
WindowsAzureGuestAgent
registra eventos30111
con texto «Package failed to download or install». - No se generan archivos de log en
C:\Packages\Plugins\MSExtension.LcmController
, lo que indica que el ejecutable principal nunca se inicia. - En escenarios con Arc‑enabled Servers, la política «Aplica extensiones críticas» se detiene debido a la incompatibilidad del clúster.
Causa raíz provisional
Microsoft ha confirmado internamente que se trata de un bug de empaquetado: la extensión se compila con un manifiesto que apunta a una versión específica del módulo Az.StackHci
. En entornos donde ese módulo está ausente o obsoleto, el agente de extensiones aborta la instalación. El agente, además, no informa de la dependencia incumplida, lo que complica el diagnóstico. Microsoft ha anunciado que la versión corregida se publicará «en breve».
Impacto operativo
Un clúster con LCM Controller parcialmente instalado sufre las siguientes limitaciones:
- El «device compliance status» en Azure marca el clúster como Needs Attention, aumentando ruido operativo en los dashboards.
- Se bloquean las actualizaciones automáticas de firmware, ya que la comprobación de pre-flight requiere consistencia de extensiones.
- Las tareas de mantenimiento programadas mediante «Cluster-Aware Updating» pueden fallar por timeout si un nodo permanece en estado «Waiting for extension».
Pasos de mitigación y solución
El proceso ha sido verificado por múltiples administradores de la comunidad y reduce el tiempo fuera de servicio a unos pocos minutos por nodo.
Paso | Acción | Propósito |
---|---|---|
1 | Cerrar sesión en todos los nodos afectados. | Evita que sesiones RDP o PowerShell remotas mantengan archivos bloqueados. |
2 | Desinstalar la extensión LCM Controller desde el portal de Azure. | Limpia cualquier instalación parcial. |
3 | En Azure Cloud Shell, ejecutar la instalación remota por nodo. | Descarga el paquete directo del repositorio oficial, soslayando el instalador local. |
4 | Verificar que la extensión aparezca como «Installed» en todos los nodos. | Asegura la coherencia de estado en el clúster. |
Script recomendado en Cloud Shell
# Sustituye <ResourceGroup> y <ClusterName> por los valores reales
$rg = "<ResourceGroup>"
$cluster = "<ClusterName>"
$nodes = (Get-AzStackHciClusterNode -ResourceGroupName $rg -ClusterName $cluster).Name
foreach (\$n in \$nodes) {
Write-Host "Instalando LCM Controller en \$n..." -ForegroundColor Cyan
New-AzStackHciExtension ` -ResourceGroupName $rg`
-ClusterName \$cluster ` -Name "LCMController"`
-TargetNodeName \$n ` -Type "MSExtension.LcmController"`
-TypeHandlerVersion "1.0" \`
-AutoUpgradeMinorVersion \$true
}
Consejo: si la red tiene políticas de proxy restrictivas, añade la variable de entorno https_proxy
en Cloud Shell para asegurar la salida al repositorio.
Validación posterior a la instalación
Para verificar que el clúster queda uniforme, ejecuta en cualquier nodo:
$ext = Get-AzStackHciExtension -ClusterName $cluster -ResourceGroupName $rg |
Where-Object { $_.Name -eq "LCMController" }
$ext | Format-Table TargetNodeName, ProvisioningState
Todos los nodos deben devolver ProvisioningState = Succeeded
. Opcionalmente, analiza el log:
Get-WinEvent -LogName Microsoft-AzureStack-HCI-Operations |
Where-Object { $_.Message -like "LCM Controller" } |
Sort-Object TimeCreated -Descending |
Select-Object -First 10
Buenas prácticas para evitar la reincidencia
- Política de pruebas A/B. Antes de desplegar extensiones en producción, prueba el paquete en un clúster de laboratorio conectado a los mismos repositorios.
- Control de versiones. Documenta la versión exacta de cada extensión y correlaciónala con la versión de agentes Arc y Azure Stack HCI.
- Revisión de dependencias. Mantén actualizado el módulo
Az.StackHci
ejecutando:Update-Module Az.StackHci -Force
- Supervisión proactiva. Configura alertas basadas en el evento 30111 del Guest Agent y en el estado Failed de extensiones.
- Documentación interna. Incluye capturas de portal, scripts empleados y resultados en tu base de conocimiento corporativa.
Preguntas frecuentes
¿Debo reiniciar los nodos después de reinstalar la extensión?
No, la extensión se ejecuta en modo usuario y no requiere reinicio. Únicamente reinicia si vas a aplicar firmware tras la reparación.
¿La falla afecta a la disponibilidad de máquinas virtuales?
No directamente. Sin embargo, si tu proceso de actualización de firmware se detiene, podrías posponer actualizaciones de seguridad relevantes para el hipervisor.
¿Puedo forzar la instalación con versiones anteriores del paquete?
No es recomendable. Microsoft planea publicar una hotfix; instalar paquetes antiguos puede introducir incompatibilidades con Arc.
Próximos pasos y monitorización
Microsoft ha comunicado que el paquete corregido debería publicarse en el «Update Center» en las próximas semanas. Para recibirlo sin intervención manual:
- Asegúrate de que AutoUpgradeMinorVersion está en
true
para la extensión. - Mantén el Guest Agent actualizado a la versión que acompaña a la build 23H2.
- Suscríbete a las alertas de servicio de Azure para la región de tu clúster.
En caso de que la futura versión no resuelva el problema, Microsoft recomienda abrir un ticket de soporte y adjuntar los archivos generados por el cmdlet Get-AzStackHciDiagnosticLog
.
Conclusión
El error en la extensión LCM Controller para Azure Stack HCI 23H2 puede resultar desconcertante por la ausencia de mensajes de advertencia claros. No obstante, el procedimiento descrito —desinstalación, instalación remota y validación— ha demostrado ser eficaz y rápido, restaurando la integridad del clúster sin tiempos de inactividad significativos. Mantener una estrategia de pruebas controladas, monitoreo y documentación garantizará que los futuros despliegues de extensiones se realicen de manera predecible y segura. De este modo, tu infraestructura HCI seguirá beneficiándose de las capacidades de actualización y conformidad automatizadas que caracterizan a la plataforma.