Se você usar o Run Command, uma ferramenta do AWS Systems Manager, para executar scripts que reinicializam os nós gerenciados, recomendamos especificar 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.
#!/bin/bash
yum -y update
needs-restarting -r
if [ $? -eq 1 ]
then
exit 194
else
exit 0
fi