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`.