SaltStack
SaltStack — система управления конфигурациями и удалённого выполнения операций. Является программным обеспечением с открытым исходным кодом, написанным на Python. Проект начат в 2011 году Томасом Хатчем (Thomas Hatch)[4]. Поддерживает подход IaaS для развёртывания и управления облачными вычислениями[5].
SaltStack | |
---|---|
Тип | Управление конфигурацией, системное администрирование |
Написана на | Python[1] |
Операционная система | кроссплатформенное программное обеспечение |
Последняя версия |
|
Лицензия | лицензия Apache |
Сайт | saltproject.io |
Архитектура
Двумя главными компонентами SaltStack являются Salt Master («мастер») и Salt Minion («ставленник», «приближённый», «миньон»). Мастер является центральной службой, к которой подключаются «ставленники» для получения конфигурации. Две основных идеи SaltStack: удалённое выполнение операций (remote execution) и управление конфигурациями. Удалённое выполнение функций Python является основой для построения повторяемой и управляемой конфигурации машин, с установленными на них «ставленниками»[6].
Мастер и «ставленники» общаются через промежуточное программное обеспечение, ориентированное на обработку сообщений: мастер запускает сообщения в очередь, из которой их получают «ставленники». Для обратной связи используется другая очередь. Первоначально для обмена сообщениями использовался ZeroMQ, но кластеры обслуживаемых серверов подчас имеют более десяти тысяч машин, поэтому на смену ZeroMQ был задуман основанный на UDP RAET (англ. Reliable Asynchronous Event Transport — «надёжный асинхронный протокол для транспорта событий»)[7].
В 2014 году в состав Salt был включён Salt Cloud, добавляющий в SaltStack уровень абстракции для работы с различными поставщиками облачных платформ[8].
Команды
Команда salt
для запуска удалённого выполнения принимает следующие основные параметры[9]:
- опции командной строки,
- целевые «ставленники» в виде маски для сопоставления или регулярного выражения по именам «ставленников», где должна быть выполнена команда,
- функция из модуля в виде
модуль.функция
, - параметры, передаваемые вызываемой функции.
Состояния
SaltStack использует модули состояния (States) для описания требуемых состояний хостов-«ставленников». Состояния системы записываются в виде файлов с расширением .sls
в синтаксисе YAML, например:[10]
openssh-client: pkg.installed
Модули состояния отличаются от исполняемых модулей тем, что описывают требуемые состояния и их работа заключается в достижении описанного состояния. Исполняемые же модули выполняют заложенные в них действия каждый раз[10].
Описания состояний могут быть расширены использованием языка шаблонов Jinja2, а конфиденциальные данные конкретных «ставленников» могут быть защищены (от других «ставленников») подсистемой Pillar[11].
Примечания
- The salt Open Source Project on Open Hub: Languages Page — 2006.
- Salt 3004 (Silicon) Is Here! — 2021.
- https://github.com/saltstack/salt/releases/tag/v3004 — 2021.
- Learning SaltStack, 2015, Preface.
- Review: Puppet vs. Chef vs. Ansible vs. Salt (21 ноября 2013).
- Learning SaltStack, 2015, Introducing Salt.
- Hall, 2015, Chapter 7. Understanding the RAET Protocol.
- Learning SaltStack, 2015, Chapter 7. Using Salt Cloud to Manage Virtual Minions.
- Learning SaltStack, 2015, The structure of a remote execution command.
- Learning SaltStack, 2015, Chapter 4. Defining the State of Your Infrastructure.
- Learning SaltStack, 2015, Chapter 5. Expanding Our States with Jinja2 and Pillar.
Литература
- Colton Myers. Learning SaltStack. — Packt Publishing, 2015. — 174 p. — ISBN 978-1-78439-901-6.
- Craig Sebenik, Thomas Hatch. Salt Essentials. — O'Reilly Media, Inc., 2015. — 250 с. — ISBN 978-1-4919-0063-5.
- Joseph Hall. Mastering SaltStack. — Packt Publishing, 2015. — 306 с. — ISBN 978-1-78528-838-8.