Salt Cloud

Тема дорожной карты · SaltStack

salt-cloud — инструмент для провижининга виртуальных машин, который позволяет создавать серверы с нуля и сразу настраивать их с помощью Salt. Он работает с облачными провайдерами и локальными гипервизорами, автоматически устанавливает миньона через bootstrap-скрипт и принимает ключ на мастере. В результате новая машина сразу подключается к управлению Salt. Это отличает salt-cloud от простого вызова API провайдера, так как жизненный цикл ВМ и её конфигурация находятся под единым контролем.

Как это работает

Конфигурация salt-cloud делится на два уровня. Провайдеры (/etc/salt/cloud.providers.d/) содержат информацию о подключении к платформе: тип драйвера (например, OpenStack, EC2, GCE, DigitalOcean, Proxmox, libvirt), учётные данные и регион. Профили (/etc/salt/cloud.profiles.d/) описывают параметры создаваемых машин: провайдер, образ, размер, сеть, а также настройки будущего миньона, такие как адрес мастера и grains, что позволяет сразу пометить машину ролью. Создание ВМ выполняется командой salt-cloud -p <профиль> web-01. Для групп машин используются map-файлы — YAML со списком «профиль → имена машин». Команда salt-cloud -m map.yml -P создаёт все перечисленные машины параллельно благодаря флагу -P. После создания ВМ salt-cloud подключается по SSH, устанавливает миньона с помощью bootstrap-скрипта, настраивает конфигурацию и принимает ключ на мастере. Команда salt-cloud -d web-01 уничтожает машину и удаляет её ключ. Команда salt-cloud -Q показывает текущие машины у провайдеров. После Great Module Migration часть облачных драйверов переехала в расширения saltext и устанавливается отдельно.

Когда применять

salt-cloud полезен, когда Salt уже используется для управления конфигурацией и создание машин нужно интегрировать в этот процесс. Новые узлы рождаются с миньоном, правильными grains и без ручного принятия ключей. Типичные случаи применения — расширение парка воркеров, создание тестовых стендов и управление машинами в частном облаке на Proxmox или libvirt. В сравнении с Terraform, salt-cloud не строит граф зависимостей между ресурсами и не ведёт файл состояния, он просто создает и удаляет машины по профилям. Для сложных инфраструктур, где нужны сети, балансировщики и DNS, лучше использовать Terraform для создания ресурсов, а Salt для настройки систем. salt-cloud же эффективен там, где требуется простая и быстрая интеграция «создал — сразу управляю».

Типичные ошибки

Удалять машины мимо salt-cloud — через консоль провайдера: ВМ исчезает, а её ключ остаётся на мастере «висяком». При удалении через salt-cloud -d ключ вычищается автоматически. Хранить учётные данные провайдера в открытом тексте в cloud.providers.d и коммитить их в Git — лучше использовать pillar или внешние хранилища секретов. Создавать большие map-файлы без -P: машины поднимаются последовательно, и раскатка стенда растягивается на часы. Не считать map-файл источником истины: salt-cloud не отслеживает дрейф — если машину изменили или удалили вручную, никто об этом не узнает. Для инфраструктуры с претензией на декларативность лучше использовать Terraform.

Связанные понятия

Полезные ресурсы

🔤 Английские термины в этой теме

Слова из этой темы, которые русскоязычные часто произносят неверно. Кнопка 🔊 произносит голосом браузера.

Весь словарь терминов →