Я запускаю сценарий пользовательских данных при запуске компьютера ec2, который выключает его после проверки статуса выхода последней выполненной команды. Я подтвердил, что последняя выполненная команда была выполнена успешно, поэтому я не уверен, почему машина не завершает работу. Это происходит не каждый раз, это, кажется, происходит только тогда, когда скрипт пользовательских данных завершается быстро.
Вот конец моего сценария bash (после выполнения нескольких команд):
python myscript.py
ret=$?
echo $ret
if [[ $ret -eq 0 ]]; then
shutdown now
fi
Это дает следующий результат, но не завершает экземпляр:
0
Cloud-init v. 0.7.9 running 'init-local' at Wed, 28 Nov 2018 20:15:38 +0000. Up 11.12 seconds.
Cloud-init v. 0.7.9 running 'init' at Wed, 28 Nov 2018 20:15:41 +0000. Up 14.67 seconds.
ci-info: ++++++++++++++++++++++++++Net device info+++++++++++++++++++++++++++
ci-info: Device Up Address Mask Scope Hw-Address
ci-info: lo: True 127.0.0.1 255.0.0.0 . .
ci-info: lo: True . . d .
ci-info: eth0: True 10.90.1.222 255.255.255.0 . 0e:c9:6e:60:5d:e8
ci-info: eth0: True . . d 0e:c9:6e:60:5d:e8
ci-info: +++++++++++++++++++++++++++Route IPv4 info++++++++++++++++++++++++++++
ci-info: Route Destination Gateway Genmask Interface Flags
ci-info: 0 0.0.0.0 10.90.1.1 0.0.0.0 eth0 UG
ci-info: 1 10.90.1.0 0.0.0.0 255.255.255.0 eth0 U
ci-info: 2 169.254.169.254 0.0.0.0 255.255.255.255 eth0 UH
Cloud-init v. 0.7.9 running 'modules:config' at Wed, 28 Nov 2018 20:15:44 +0000. Up 17.35 seconds.
Cloud-init v. 0.7.9 running 'modules:final' at Wed, 28 Nov 2018 20:15:45 +0000. Up 18.45 seconds.
Connection to 10.90.1.222 closed by remote host. 20:15:46 +0000. Datasource DataSourceEc2. Up 19.56 seconds
Я пытаюсь определить, мешает ли Cloud-init каким-либо образом завершить работу экземпляра. Это потому, что скрипт завершился, пока другие фоновые процессы все еще инициализировались?
Недавно у меня была эта проблема, и решение, которое сработало для меня, заключалось в изменении команды выключения, чтобы явно запрашивать отключение питания вместо остановки:
shutdown -P now
Документы AWS по адресу https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html сказать:
По умолчанию, когда вы инициируете завершение работы из инстанса, поддерживаемого Amazon EBS (с помощью такой команды, как shutdown или poweroff), инстанс останавливается (обратите внимание, что halt не выдает команду poweroff, и, если она используется, инстанс не завершает работу; вместо этого он поместит ЦП в HLT, и экземпляр будет продолжать работать).