Gestione di riavvii durante l'esecuzione dei comandi - AWS Systems Manager

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione di riavvii durante l'esecuzione dei comandi

Se si utilizzaRun Command, una funzionalità di AWS Systems Manager, per eseguire script che riavviano i nodi gestiti, si consiglia di specificare un codice di uscita nello script. Se tenti di riavviare un nodo da uno script utilizzando altri meccanismi, lo stato di esecuzione di script potrebbe non essere aggiornato correttamente, anche se il riavvio è l'ultimo passaggio nel tuo script. Per i nodi gestiti da Windows, è necessario specificare exit 3010 nello script. Per i nodi gestiti Linux e macOS, è necessario specificare exit 194. Il codice di uscita indica ad AWS Systems Manager Agent (SSM Agent) di riavviare il nodo gestito e quindi di riavviare lo script al termine del riavvio. Prima di iniziare il riavvio,SSM Agent notifica al servizio Systems Manager nel cloud che le comunicazioni verranno interrotte durante il riavvio dei server.

Nota

Lo script di riavvio non può fare parte di unaws:runDocument. Se un documento contiene lo script di riavvio e un altro documento tenta di eseguirlo tramite il plug-in aws:runDocument, SSM Agent causerà un errore.

Creare script idempotenti

Quando sviluppi script che riavviano i nodi gestiti, rendi idempotenti gli script in modo che la loro esecuzione prosegua dal punto in cui si è interrotta dopo il riavvio. Gli script idempotenti gestiscono lo stato e verificano se l'operazione è stata eseguita o meno. Questo evita che una fase venga eseguita più volte quando è concepita per un'esecuzione singola.

Ecco un esempio generale di script idempotente che riavvia il nodo gestito più volte.

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

Examples (Esempi)

I seguenti esempi di script usano codici di uscita per riavviare i nodi gestiti. L'esempio Linux installa gli aggiornamenti del pacchetto in e riavvia il nodo. L'Windows Serveresempio installa Telnet-Client sul nodo e quindi lo riavvia.

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 }