Я пишу шаблон CloudFormation, и я пытаюсь отлаживать пользовательские данные script, которые я предоставляю в шаблоне. Как я могу запустить cloud-init
вручную и заставить его выполнять те же действия, что и при запуске нового экземпляра?
Как запустить cloud-init вручную?
Ответ 1
Вы можете просто запустить его следующим образом:
/usr/bin/cloud-init -d init
Это запускает настройку облачной инициализации с использованием исходных модулей. (Опция -d предназначена для отладки) Если вы хотите запустить все модули, которые вы должны запустить:
/usr/bin/cloud-init -d modules
Имейте в виду, что во второй раз, когда вы запускаете их, это не делает многого, поскольку он уже запускается во время загрузки. Чтобы заставить работать после загрузки, вы можете запустить из командной строки:
( cd /var/lib/cloud/ && sudo rm -rf * )
В более старых версиях эквивалент cloud-init init
:
/usr/bin/cloud-init start
Вы также можете найти этот вопрос полезным, хотя он относится к более старым версиям cloud-init: Как запускать сценарии запуска cloud-init каждый раз, когда загружается экземпляр EC2?
Документация для cloud init здесь дает вам примеры. Но это не объясняет параметры командной строки или каждый из модулей, поэтому вам нужно поиграть с разными значениями в конфигурации, чтобы получить желаемые результаты. Конечно, вы также можете посмотреть код.
Ответ 2
В CentOS7 в AWS вы можете перезапустить службу облачного init с помощью systemctl:
systemctl restart cloud-init.service
И затем проверьте вывод журнала, чтобы увидеть результаты:
journalctl -f
Ответ 3
Kudus to @Rico, а также, если вы хотите запустить один модуль - либо для тестирования, либо потому, что ваш дистрибутив не включает модуль по умолчанию (hi Precise!), вы можете
/usr/bin/cloud-init -d single -n <module-name>
Например, когда мой дистрибутив не запускает write_files
по умолчанию (как и многие старые дистрибутивы), я использую это в верхней части runcmd:
runcmd:
- /usr/bin/cloud-init -d single -n write-files
[Я знаю, что это не ответ на OP, но когда я решил решить мою проблему, этот вопрос был одним из лучших результатов, поэтому я считаю, что другие люди могут найти это полезным]