Tratamento de reinicializações ao executar comandos - AWS Systems Manager

Tratamento de reinicializações ao executar comandos

Se você usar o Run Command, um recurso do AWS Systems Manager, para executar scripts que reinicializam os nós gerenciados, recomendamos que você especifique um código de saída em seu script. Se você tentar reiniciar um nó em um script usando algum outro mecanismo, a execução do script status pode não ser atualizada corretamente, mesmo se a reinicialização for a última etapa em seu script. Para os nós gerenciados do Windows, especifique exit 3010 em seu script. Para instâncias gerenciadas do Linux e do macOS especifique a exit 194. O código de saída instrui o Agente do AWS Systems Manager (SSM Agent) para reinicializar o nó gerenciado e reinicia o script depois que a reinicialização for concluída. Antes de iniciar a reinicialização, o SSM Agent informa o serviço do Systems Manager na nuvem que a comunicação será interrompida durante a reinicialização do servidor.

nota

O script de reinicialização não pode fazer parte de um plugin aws:runDocument. Se um documento contiver o script de reinicialização e outro documento tentar executar esse documento por meio do plugin aws:runDocument, o SSM Agent causará um erro.

Criar script idempotente

Ao desenvolver scripts que reinicializam nós gerenciados, torne os scripts idempotentes para que a execução do script continue de onde parou depois da reinicialização. Scripts impotentes gerenciam o estado e validam se a ação foi realizada ou não. Isso evita que uma etapa seja executada várias vezes quando ela deve ser executada apenas uma vez.

Veja a seguir um exemplo de um script idempotente que reinicializa o nó diversas vezes.

$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 }

Exemplos

O script a seguir usa exemplos de códigos de saída para reiniciar nós gerenciados. O exemplo instala atualizações de pacote Linux no Amazon Linux e, em seguida, reinicia o nó. O exemplo do Windows Server instala a aplicação Telnet-Client em seu nó e, em seguida, o 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 }