Всегда спать на упаковщике?

На моем исследовании 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.

Некоторые образы могут выполнять некоторые задания при запуске, и вы можете обнаружить, что ваши сборки не работают. Вы можете использовать различные проверки, чтобы убедиться, что виртуальная машина готова к инициализации, как сказал Эле Мунджели. Также вы можете использовать один раз в качестве первого поставщика, как вы сказали.

Обратите внимание, что есть лучшее решение для : вы можете использовать вариант коммуникатора и настроить необходимое время. См. документы

Другие вопросы по тегам