Ответ 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 есть еще несколько деталей.