Gestión de reinicios al ejecutar comandos - AWS Systems Manager

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Gestión de reinicios al ejecutar comandos

Si utiliza la capacidad de Run Command AWS Systems Manager, para ejecutar scripts que reinicien los nodos gestionados, le recomendamos que especifique un código de salida en el script. Si intenta utilizar algún otro mecanismo para reiniciar un nodo desde un script, el estado de ejecución de ese script podría no actualizarse correctamente, aunque el reinicio sea el último paso del script. Para los nodos administrados de Windows, especifique exit 3010 en el script. Para los nodos administrados de Linux y macOS, especifique exit 194. El código de salida indica a AWS Systems Manager Agent (SSM Agent) que reinicie el nodo gestionado y, a continuación, reinicie el script una vez finalizado el reinicio. Antes de comenzar el reinicio, el SSM Agent informará al servicio Systems Manager en la nube que la comunicación se va a interrumpir mientras se reinicia el servidor.

nota

El script de reinicio no puede formar parte de un complemento aws:runDocument. Si un documento contiene el script de reinicio y otro documento intenta ejecutarlo a través del complemento aws:runDocument, SSM Agent devuelve un error.

Creación de scripts idempotentes

Al desarrollar scripts que se utilizan para reiniciar nodos administrados, es importante que se asegure de que estos sean idempotentes para que, una vez finalizado el reinicio, la ejecución de los scripts continúe en el punto en que se encontraban anteriormente. Los scripts idempotentes administran el estado y validan si la acción se ha realizado o no. Esto impide que un paso se ejecute varias veces cuando solo está diseñado para ejecutarse una vez.

A continuación, se muestra un ejemplo resumido de un script idempotente que reinicia el nodo administrado varias veces.

$name = Get current computer name If ($name –ne $desiredName) { Rename computer exit 3010 } $domain = Get current domain name If ($domain –ne $desiredDomain) { Join domain exit 3010 } If (desired package not installed) { Install package exit 3010 }

Ejemplos

En los ejemplos de scripts siguientes, se utilizan códigos de salida para reiniciar nodos administrados. En el ejemplo de Linux, se instalan actualizaciones de paquetes en Amazon Linux y, a continuación, se reinicia el nodo. En el Windows Server ejemplo, se instala el cliente Telnet en el nodo y, a continuación, se reinicia.

Amazon Linux
#!/bin/bash yum -y update needs-restarting -r if [ $? -eq 1 ] then exit 194 else exit 0 fi
Windows
$telnet = Get-WindowsFeature -Name Telnet-Client if (-not $telnet.Installed) { # Install Telnet and then send a reboot request to SSM Agent. Install-WindowsFeature -Name "Telnet-Client" exit 3010 }