Крстичевич, Мишо
- 1 year ago
- 0
- 0
SaltStack — система управления конфигурациями и удалённого выполнения операций. Является программным обеспечением с открытым исходным кодом , написанным на Python . Проект начат в 2011 году Томасом Хатчем (Thomas Hatch) . Поддерживает подход IaaS для развёртывания и управления облачными вычислениями .
Аналог Puppet , Chef и Ansible .
Двумя главными компонентами SaltStack являются Salt Master («мастер») и Salt Minion («ставленник», «приближённый», «миньон»). Мастер является центральной службой, к которой подключаются «ставленники» для получения конфигурации. Две основных идеи SaltStack: удалённое выполнение операций (remote execution) и управление конфигурациями. Удалённое выполнение функций Python является основой для построения повторяемой и управляемой конфигурации машин, с установленными на них «ставленниками» .
Мастер и «ставленники» общаются через промежуточное программное обеспечение, ориентированное на обработку сообщений : мастер запускает сообщения в очередь, из которой их получают «ставленники». Для обратной связи используется другая очередь. Первоначально для обмена сообщениями использовался ZeroMQ , но кластеры обслуживаемых серверов подчас имеют более десяти тысяч машин, поэтому на смену ZeroMQ был задуман основанный на UDP RAET ( англ. Reliable Asynchronous Event Transport — «надёжный асинхронный протокол для транспорта событий») .
В 2014 году в состав Salt был включён Salt Cloud, добавляющий в SaltStack уровень абстракции для работы с различными поставщиками облачных платформ .
Команда
salt
для запуска удалённого выполнения принимает следующие основные параметры
:
модуль.функция
,
SaltStack использует модули состояния (States) для описания требуемых состояний хостов-«ставленников». Состояния системы записываются в виде файлов с расширением
.sls
в синтаксисе
YAML
, например:
openssh-client: pkg.installed
Модули состояния отличаются от исполняемых модулей тем, что описывают требуемые состояния и их работа заключается в достижении описанного состояния. Исполняемые же модули выполняют заложенные в них действия каждый раз .
Описания состояний могут быть расширены использованием языка шаблонов Jinja 2, а конфиденциальные данные конкретных «ставленников» могут быть защищены (от других «ставленников») подсистемой Pillar .