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.
Связанные понятия
Полезные ресурсы
🔤 Английские термины в этой теме
Слова из этой темы, которые русскоязычные часто произносят неверно. Кнопка 🔊 произносит голосом браузера.
- awkward /ˈɔːkwərd/ неловкий, w в середине почти не слышна разбор: Small talk и культурные коды: how are you, weekend
- credentials /krəˈdɛnʃəlz/ «кридЕншелз» разбор: Безопасность: vulnerability, exploit, hardening, least privilege
- configure /kənˈfɪɡjər/ ударение на «фи» разбор: Глаголы инженера: deploy, merge, roll back, refactor
- result /rɪˈzʌlt/ ударение на второй слог разбор: Behavioral questions и метод STAR
- command /kəˈmɑːnd/ ударение на второй слог разбор: Английский Linux и терминала
- infrastructure /ˈɪnfrəstrʌktʃər/ ударение на первый слог разбор: Немые буквы и ударение: cache, queue, suite, height
- git /ɡɪt/ «гит», твёрдое «г» разбор: Английский Git и code review