SaltStack
Материал из Xgu.ru
SaltStack или просто Salt — система управления конфигурацией программного обеспечения. В отличие от прочих похожих систем, использующих HTTP или SSH для коммуникации, SaltStack использует собственный коммуникационный протокол, работающий поверх ZeroMQ, что позволяет существенно повысить скорость применения изменений в конфигурации и снизить время реакции.
Один из наиболее быстроразвивающихся проектов на GitHub.
Поддерживаемые операционные системы:
- GNU/Linux;
- UNIX-подобные (FreeBSD, Mac OS X и другие);
- Windows (ограничено).
Язык программирования: Python.
Содержание |
[править] Ключевые понятия и элементы
- Salt master — процесс, работающий на машинах, с которых происходит управление
- Salt minion — процесс, работающий на управляемых машинах. Процесс отвечает за коммуникацию с мастером, получение инструкций от него, их исполнение и контроль состояния своего хоста (если по каким-то причинам на хосте нельзя установить минион, команды могут исполняться просто через SSH);
- Salt state (SLS) — конфигурационные файлы, написаны на YAML (манифесты в Puppet; playbooks в Ansible; повареные книги, cookbooks, в Chef);
- Formulas — множества вызовов к модулям состояний (state modules), организованных таким образом, чтобы достичь определённого результата; они описывают как должна выглядеть система в том случае, когда формула применена. Формулы это заранее приготовленные состояния (salt states).
- Templates (шаблоны) — обобщённые описания формул, позволяющие вычислять конкретные формулы в зависимости от ситуации (от значений конкретизирующих параметров); по умолчанию для написания шаблонов используетзя Jinja, но могут использоваться и другие языки/библиотеки описания шаблонов;
- Pillars — защищённые хранилища важной информации, собственно salt state'ов;
- Grains — факты о системах (количество ядер, памяти и так далее).
- Mine (шахта) — область на мастер-сервере, где сохраняются результаты исполнения команд на минионах. Шахты не хранят исторических данных, они хранят только результаты последнего запроса, поэтому посмотреть с их помощью "как оно было раньше" не получится.
Взаимодействие мастера и минионов происходит (по умолчанию) про протоколу ZeroMQ.
Введение в SaltStack:
Формулы:
[править] Достоинства и недостатки
[править] Достоинства
- В качестве основного протокола коммуникации используется ZeroMQ, что даёт большие преимущества в скорости коммуникации (Ansible в принципе тоже умеет использовать ZeroMQ, но по умолчанию использует SSH
- Очень подробный и качественный внутренний аудит
- Очень хорошо масштабируется
- Поддерживаются как push, так и pull
- Master/masterless-режимы
[править] Недостатки
- Довольно трудно начать использование, требует потратить время на изучение, не очень подходит для новичков
- Поддержка Windows
- Web-интерфейс (когда-то разрабатывался GUI Halite, но он больше не разрабатывается[1]; сейчас все надежды на SaltPad )
- Составление отчётов
[править] Команды
- salt-call
- salt — исполнить команду на множестве систем параллельно (главная команда SaltStack)
- salt-cloud
- salt-cp
- salt-key
- salt-master
- salt-minion
- salt-proxy
- salt-run
- salt-ssh
- salt-syndic
- salt-api
- spm
Подробнее о командах:
[править] Пример конфигурационного файла (SLS)
Конфигурационный файл SLS имеет формат YAML.
Пример конфигурации пакета/службы nginx:
nginx: pkg: - installed service: - running - watch: - pkg: nginx - file: /etc/nginx/nginx.conf
Что это обозначает:
nginx: ## Название пакета и службы pkg: ## Это пакет - installed ## Пакет нужно установить service: ## Это не только пакет, но и служба - running ## Служба должна быть запущена (если не запущена, запустить) - watch: ## На что нужно смотреть - pkg: nginx ## Если пакет обновляется, перезапустить службу - file: /etc/nginx/nginx.conf ## Если конфигурационный файл nginx.conf обновляется, перезапустить службу
[править] Дополнительная информация
- SaltStack Tutorials (англ.)
- Deploying Django with Salt - Now with PostgreSQL (англ.) — пример настройки сервера PostgreSQL и Django-приложения с помощью SaltStack
- Getting started with SaltStack by example: Automatically Installing nginx (англ.) — пример инсталляции и настройки nginx-сервера с помощью SaltStack
[править] Примечания
Системы управления конфигурацией | |
---|---|
Основы | Система управления конфигурацией |
Реализации | CFEngine • Puppet • bcfg2 • Chef • Ansible • SaltStack |