Salt Cloud
Тема дорожной карты · SaltStack
salt-cloud — инструмент провижининга виртуальных машин, закрывающий пробел между «настроить существующий сервер» и «создать сервер с нуля». Он умеет создавать ВМ у облачных провайдеров и в локальных гипервизорах, сразу ставить на них миньона через bootstrap-скрипт и автоматически принимать ключ на мастере. В результате новая машина появляется уже под управлением Salt: одной командой вы получаете хост, к которому тут же можно применить состояния. Это принципиально отличает salt-cloud от простого вызова API провайдера — жизненный цикл ВМ и её конфигурация оказываются в одних руках.
Как это работает
Конфигурация делится на два уровня. Провайдеры (/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, а не salt-cloud.
Связанные понятия
Полезные ресурсы
Проверить знания (2)
Загрузка вопросов…