Вики / Загрузка
cloud-init (первичная настройка ВМ)
Автонастройка облачных/виртуальных машин при первом старте — user-data, отладка.
cloud-init настраивает машину при первом запуске из образа: создаёт пользователей, кладёт SSH-ключи, ставит пакеты, пишет файлы, задаёт сеть (netplan). Облачные образы Ubuntu умеют его «из коробки».
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:
#cloud-config
hostname: web01
users:
- name: deploy
sudo: ALL=(ALL) NOPASSWD:ALL
groups: [sudo, docker]
ssh_authorized_keys:
- ssh-ed25519 AAAA... me@laptop
package_update: true
packages: [nginx, htop]
write_files:
- path: /etc/myapp/conf
permissions: '0644'
content: |
key = value
runcmd:
- systemctl enable --now nginx
runcmd — команды на стадии final (один раз); bootcmd — очень рано и на КАЖДЫЙ
boot.
cloud-init status --long # done / error + детали
sudo cloud-init schema --system # проверить синтаксис user-data
sudo cloud-init query userdata # что увидела машина
# логи:
sudo less /var/log/cloud-init.log # подробный ход модулей
sudo less /var/log/cloud-init-output.log # вывод runcmd/packages (тут видно ошибки)
# повторно прогнать при отладке образа:
sudo cloud-init clean --logs # сбросить состояние и логи
sudo cloud-init clean --logs --reboot
user-data не применился
- Первая строка ровно
#cloud-config(без пробелов/BOM), валидный YAML (cloud-init schema --system). - Выполняется только при первом старте (по 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 (или удалить пакет).
cloud-init status --long # статус/ошибки
sudo cloud-init schema --system # проверить user-data
sudo less /var/log/cloud-init-output.log # вывод команд
sudo cloud-init clean --logs # сбросить (выполнить заново)
# user-data: #cloud-config → users / packages / runcmd / write_files
# отключить: /etc/cloud/cloud-init.disabled
См. также
- netplan (постоянная сеть Ubuntu) — Сеть
- SSH-ключи и ssh-agent — Сеть
- Пользователи и группы — Пользователи и права