Wiki
Виртуализация

cloud-init — что это простыми словами

cloud-init — стандартный первый-boot конфигуратор облачных VM. Читает user-data, ставит SSH-ключи, пакеты, запускает скрипты. Основа автоматизации VPS.

cloud-init — программа-конфигуратор, которая запускается при первом старте виртуальной машины и настраивает её на основе user-data, переданного гипервизором. Разработана Canonical для Ubuntu Cloud Images, сейчас — де-факто стандарт: работает в AWS EC2, Azure, GCP, DigitalOcean, Hetzner Cloud, у нас.

Формат user-data — YAML с директивами `#cloud-config`: ``` #cloud-config users: - name: deploy ssh_authorized_keys: - ssh-ed25519 AAAA... sudo: ALL=(ALL) NOPASSWD:ALL packages: [nginx, postgresql, git] runcmd: - systemctl enable --now nginx - curl -sSL https://get.docker.com | sh ``` За один старт получаете готовую машину с пакетами, юзерами, ключами и запущенными сервисами.

Альтернативный формат — обычный bash-скрипт (`#!/bin/bash`). Гипервизор передаёт содержимое через metadata service (`http://169.254.169.254/`) или CD-ROM с ISO-образом (NoCloud datasource). cloud-init читает и исполняет.

У нас cloud-init поддержан во всех cloud-init образах (Ubuntu 24.04, Debian 12, Rocky 9, Alpine). При создании VPS вы можете вписать user-data в UI или через API. Готовые шаблоны: WordPress, Nextcloud, GitLab, WireGuard, docker-swarm. См. `/docs/cloud-init`.

Частые вопросы

Что если cloud-init упал?
Логи в `/var/log/cloud-init.log` и `/var/log/cloud-init-output.log`. Повторный запуск — `cloud-init clean && cloud-init init && cloud-init modules --mode=config && cloud-init modules --mode=final`.
cloud-init только для первого boot?
По умолчанию да. Но каждый reboot он проверяет, что руки не поменяли — можно и повторно применять с --force.

Смотрите также