Скрипт salt-bootstrap

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

salt-bootstrap — официальный shell-скрипт проекта Salt (репозиторий saltstack/salt-bootstrap на GitHub), который одной командой ставит Salt практически на любую POSIX-систему. Скрипт сам определяет дистрибутив и его версию, подключает нужный пакетный репозиторий и устанавливает миньон, а при желании — и мастер. Его главная ценность — унификация: вместо того чтобы поддерживать отдельные инструкции для Debian, Ubuntu, RHEL-подобных систем и прочих платформ, вы держите один и тот же вызов скрипта в cloud-init, kickstart или в шаблоне образа. Для быстрых стендов и автоматической регистрации новых миньонов это самый короткий путь от чистой машины до принятого ключа на мастере.

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

Скрипт скачивается из официального репозитория (файл bootstrap-salt.sh) и запускается через sh. Без аргументов он ставит стабильную версию миньона; аргументами задаётся ветка и точная версия, например sh bootstrap-salt.sh stable 3008. Поведение управляется флагами: -M дополнительно устанавливает salt-master, -N пропускает установку миньона (полезно для выделенного мастера), -X не запускает демоны после установки, -A <адрес> сразу прописывает адрес мастера в конфигурацию миньона, -i <id> задаёт идентификатор миньона. Под капотом скрипт делает то же, что и ручная установка: подключает репозиторий packages.broadcom.com, ставит onedir-пакеты и раскладывает конфигурацию, — поэтому результат не отличается от «пакетной» инсталляции и дальше обслуживается обычным пакетным менеджером.

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

Основной сценарий — автоматическое разворачивание миньонов: блок runcmd в cloud-init, user-data у виртуалок, провижининг в Vagrant или скрипт первичной настройки железа. Один и тот же вызов работает на разных дистрибутивах, что незаменимо в гетерогенном парке. Второй сценарий — учебные и тестовые стенды: поднять мастер и миньон на паре виртуалок за минуту (-M на одной, -A на другой). Когда парк гомогенный и репозитории уже управляются вашей системой конфигурации, прямая установка пакетов из packages.broadcom.com даёт больше контроля — bootstrap там просто не нужен. В изолированных сетях без доступа в интернет скрипт применим только вместе с локальным зеркалом репозитория.

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

Первая — запуск без фиксации версии: «стабильная» ветка со временем меняется, и новые машины начинают получать другой мажор, чем остальной парк; всегда передавайте явную версию (stable 3008). Вторая — слепой пайп curl | sh из интернета в продакшене: скачайте скрипт, зафиксируйте его версию у себя и раскатывайте проверенную копию. Третья — забытый флаг -A: миньон установлен, но не знает адрес мастера и ищет DNS-имя salt. Четвёртая — использование bootstrap там, где идёт борьба за идемпотентность: скрипт — инструмент первичной установки, а не средство управления версиями Salt на живом парке; обновления дальше должны идти через пакетный менеджер.

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

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

Проверить знания (2)

Загрузка вопросов…