Как сделать так, чтобы сценарии запуска cloud-init запускались каждый раз при загрузке моего экземпляра EC2?

У меня есть экземпляр 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 приняли во внимание.

53
задан Adrian Petrescu 24 June 2011 в 15:24
поделиться

1 ответ

Другой подход должен использовать #cloud-boothook в Вашем пользовательском сценарии данных. От эти документы :

Облачная Ложка для обуви

  • Начинается с #cloud-boothook или Типа контента: text/cloud-boothook.
  • Это содержание является данными ложки для обуви. Это хранится в файле под/var/lib/cloud и затем сразу выполняется.
  • Это - самый ранний доступный "рычаг". нет никакого механизма, предусмотрел выполнение его только в один раз. ложка для обуви должна заботиться об этом самом. Этому предоставляют идентификатор экземпляра в переменной среды INSTANCE_ID. Используйте эту переменную для обеспечения некогда на экземпляр набор данных ложки для обуви.
0
ответ дан 7 November 2019 в 08:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: