cloud-init настраивает машину при первом запуске из образа: создаёт
пользователей, кладёт SSH-ключи, ставит пакеты, пишет файлы, задаёт
сеть (netplan). Облачные образы Ubuntu умеют его «из коробки».
bash
cloud-init status # статус выполнения (done/running/error)
cloud-init status --long --wait # дождаться завершения
cloud-id # какой датасорс (aws/azure/nocloud/…)
Стадии: init-local → init → config → final. Источник конфига (datasource):
облачные метаданные, NoCloud (ISO/seed), и т.п.
Ключи
Конфигурация передаётся как user-data. Начинается с #cloud-config:
Выполняется только при первом старте (по instance-id). Повторно — cloud-init
clean или новый instance-id.
Пакеты не поставились / runcmd не отработал
/var/log/cloud-init-output.log — вывод команд и ошибки (нет сети для apt?
опечатка? зависимость?).
Не зайти по SSH после провижена
Ключ не попал нужному пользователю или сеть (netplan) не поднялась. Логи
cloud-init + консоль гипервизора. Проверь cloud-init query userdata.
Hostname/сеть «возвращаются» к дефолту
cloud-init переустанавливает их на каждом boot, если не отключить:
preserve_hostname: true, либо network: {config: disabled} (см. hostnamectl, netplan).
Отключить cloud-init совсем
sudo touch /etc/cloud/cloud-init.disabled (или удалить пакет).
См. также
netplan — Постоянная настройка сети в Ubuntu — YAML, статический IP и DHCP, безопасное применение.
users-groups — Учётные записи, группы, членство; useradd/usermod, /etc/passwd и /etc/group.
ssh-keys — Генерация ключей, authorized_keys, ssh-agent, права на файлы .ssh.