Всегда спать на упаковщике?
На моем исследовании Packer мне интересно следующее:
Состояние документов (как часть шагов по началу работы, когда образ Ubuntu предоставляется AWS):
Примечание: сон 30 в примере выше очень важен. Поскольку Packer может обнаруживать SSH в экземпляре, как только SSH становится доступным, Ubuntu фактически не получает достаточного количества времени для инициализации. Спящий режим гарантирует, что ОС правильно инициализируется.
В нем показан пример, когда инициатор оболочки (встроенный) является первым инициатором инициации.
Вам всегда нужно sleep 30
перед началом работы любого поставщика, в частности:
- Когда я запускаю блок инициализации с помощью провайдера файлов, он автоматически ожидает, пока ОС правильно инициализируется?
- Когда я запускаю обработчик сценариев / сценариев вместо встроенного блока команд, нужно ли запускать первый сценарий с
sleep 30
?
Если да, то будет ли общее предположение, что вы всегда помещаете это поверх блока обеспечения:
"provisioners": [
{
"type": "shell",
"inline": [
"sleep 30"
]
},
{...}]
3 ответа
Вы можете бегать без сна, но особенно на AWS это будет грандиозный выстрел, работает он или нет. Сборки упаковщиков могут быть длинными и сложными, и некоторые спящие здесь и там могут значительно повысить ваш успех. Вам не нужно спать перед каждым провайдером, только первым. После этого ОС работает, и все должно работать хорошо.
Я не использую команду sleep до apt, но мои пакеты повалились повсюду. Я использую Packer AWS ebs builder. В документах есть заявление, которое решило мои проблемы с очень похожей стратегией - оно опрашивает облако-init, чтобы увидеть, что оно закончилось; cloud-init - это aws init, встроенный в образы Ubuntu ec2, созданные canonical.
{
"type": "shell",
"inline": [
"while [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo 'Waiting for cloud-init...'; sleep 1; done"
]
}
Так что в этом нет особой необходимости, но вы обнаружите, что, получив рабочую сборку с Packer, вы все равно захотите повысить надежность своих сценариев и других провайдеров с помощью синхронизации и повторных попыток. Неудачная сборка на Packer - большая трата времени.
Нет, спать перед каждым провайдером не нужно - только первый или после того, как провайдер перезапускает коробку.
После того, как Packer успешно подключится к запущенному экземпляру, дальнейшие сны будут просто излишне замедлять работу Packer.
Некоторые образы могут выполнять некоторые задания при запуске, и вы можете обнаружить, что ваши сборки не работают. Вы можете использовать различные проверки, чтобы убедиться, что виртуальная машина готова к инициализации, как сказал Эле Мунджели. Также вы можете использовать один раз в качестве первого поставщика, как вы сказали.
Обратите внимание, что есть лучшее решение для