Когда запускается cloud-init и как он находит свои данные?

В настоящее время я занимаюсь CoreOS, и до сих пор я думаю, что получил общую идею и концепцию. Еще одна вещь, которую я еще не получил, - это выполнение cloud-init.

Я понимаю, что cloud-init - это процесс, который выполняет некоторую конфигурацию для CoreOS. Я еще не понимаю, что...

  • Когда работает CoreOS cloud-init? При первой загрузке? На каждой загрузке?...?
  • Как cloud-init знает, где найти свои данные конфигурации? Я видел, что есть config-drive, и это имеет смысл, но это единственный способ? Какова роль файла user-data?...?

Ответ 1

CoreOS запускает cloudinit несколько раз во время процесса загрузки. Сейчас это происходит при каждой загрузке, но эта функциональность может измениться в будущем.

Первый проход - это OEM-облачный init, который запекается в изображении для настройки сети и других функций, необходимых этому провайдеру. Это делается для EC2, Rackspace, Google Compute Engine и т.д., Поскольку все они имеют разные требования. Вы можете увидеть эти файлы в Github.

Второй проход - это пропуск данных пользователя, который обрабатывается по-разному для провайдера. Например, EC2 позволяет пользователю вводить текст свободной формы в свой пользовательский интерфейс, который хранится в их службе метаданных. У EC2 OEM есть устройство, которое считывает эти метаданные и передает его во второй запуск cloud-init. В Rackspace/Openstack config-drive используется для монтирования файловой системы только для чтения, содержащей пользовательские данные. Производители Rackspace и Openstack знают, как монтировать и искать файл данных пользователя в этом месте.

В последней версии CoreOS также есть флаг для извлечения удаленного файла, который будет оцениваться для использования с загрузкой PXE.

В файлах документации CoreOS есть еще несколько деталей.