У меня есть экземпляр EC2, на котором запущен AMI на основе AMI Amazon Linux. Как и все такие AMI, он поддерживает систему cloud-init для запуска сценариев запуска на основе данных пользователя, передаваемых в каждый экземпляр. В данном конкретном случае мои входные данные пользователя представляют собой файл Include, который является источником нескольких других сценариев запуска:
#include
http://s3.amazonaws.com/path/to/script/1
http://s3.amazonaws.com/path/to/script/2
Когда я впервые загружаю свой экземпляр, сценарий запуска cloud-init работает правильно. Однако, если я выполню мягкую перезагрузку экземпляра (например, запустив sudo shutdown -r now
), экземпляр вернется к работе без выполнения сценария запуска во второй раз. . Если я захожу в системные журналы, я вижу:
Running cloud-init user-scripts
user-scripts already ran once-per-instance
[ OK ]
Это не то, что я хочу - я вижу полезность наличия сценариев запуска, которые запускаются только один раз за время существования экземпляра, но в моем случае они должны запускаться каждый раз, когда экземпляр запускается, как обычные сценарии запуска.
Я понимаю, что одним из возможных решений является вручную вставить мои сценарии в rc.local
после первого запуска. Однако это кажется обременительным, поскольку среды cloud-init и rc.d немного отличаются, и теперь мне придется отлаживать скрипты при первом запуске и всех последующих запусках по отдельности.
Кто-нибудь знает, как я могу указать cloud-init всегда запускать мои скрипты? Это определенно звучит так, как если бы разработчики cloud-init приняли во внимание.
Другой подход должен использовать #cloud-boothook
в Вашем пользовательском сценарии данных. От эти документы :
Облачная Ложка для обуви
- Начинается с #cloud-boothook или Типа контента: text/cloud-boothook.
- Это содержание является данными ложки для обуви. Это хранится в файле под/var/lib/cloud и затем сразу выполняется.
- Это - самый ранний доступный "рычаг". нет никакого механизма, предусмотрел выполнение его только в один раз. ложка для обуви должна заботиться об этом самом. Этому предоставляют идентификатор экземпляра в переменной среды INSTANCE_ID. Используйте эту переменную для обеспечения некогда на экземпляр набор данных ложки для обуви.