SaltStack

Материал из Xgu.ru

Перейти к: навигация, поиск
SaltStack.png

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 Github.png)
  • Составление отчётов

[править] Команды

  • 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 обновляется, перезапустить службу

[править] Дополнительная информация

[править] Примечания

  1. https://groups.google.com/forum/#!msg/salt-users/rmMWLSaw0RY/N5PGRqDkwQgJ
Источник — «http://xgu.ru/wiki/SaltStack»