Salt, или SaltStack – это инструмент дистанционного выполнения и система управления конфигурацией. Возможности удаленного выполнения позволяют администраторам запускать команды на разных машинах. Функция управления конфигурацией создает модель клиент-сервер для быстрого, легкого и безопасного подключения компонентов инфраструктуры в соответствии с заданной политикой.
В этой статье мы рассмотрим некоторые основные понятия и терминологию, необходимые для эффективного использования Salt.
Роли Salt
Структура управления Salt довольно проста. В типичной установке есть только два разных класса машин.
Salt Master
Salt Master – это машина, которая управляет инфраструктурой и определяет политики для подчиненных серверов. Мастер работает как репозиторий данных конфигурации и центр управления, который инициирует удаленные команды и приводит другие машины в требуемое состояние. Для обеспечения этой функциональности на мастер-сервер устанавливается демон salt-master.
Галилео | Соль 🍽️ Salt
Управлять инфраструктурой можно и без мастера, но большинство настроек используют расширенные функции Salt Master. Для управления большими инфраструктурами Salt может делегировать определенные компоненты и задачи, обычно связанные с мастером, на выделенные серверы. Он также может работать в многоуровневой конфигурации, где команды могут быть переданы через мастер-машины боле низкого уровня.
Salt Minion
Ведомые серверы называются Minion-ами. На каждый ведомый сервер для связи с мастером устанавливается демон salt-minion. Миньон отвечает за выполнение инструкций, отправленных мастером, сообщает о результате заданий и предоставляет данные о базовом хосте.
Взаимодействие компонентов Salt
Мастер и Миньоны Salt по умолчанию взаимодействуют через библиотеку обмена сообщениями ZeroMQ. Она обеспечивает чрезвычайно высокую пропускную способность сети между сторонами, позволяя Salt отправлять сообщения и данные с высокой скоростью. Поскольку ZeroMQ является библиотекой, а не независимым сервисом, эта функциональность встроена в демоны salt-master и salt-minion.
При использовании ZeroMQ Salt поддерживает систему открытых ключей для аутентификации мастеров и миньонов. При первой загрузке миньон генерирует пару ключей и отправляет свои учетные данные на мастер-сервер, от которого он зависит. Затем мастер может принять этот ключ после проверки миньона. После этого обе стороны могут быстро и безопасно обмениваться данными с помощью ZeroMQ, зашифрованной ключами.
Если по какой-либо причине на ноде невозможно установить демон salt-minion, Salt также может выдавать команды через SSH. Этот вариант предоставляется для удобства, но он значительно снижает производительность и в некоторых случаях может привести к осложнениям с другими командами Salt. Для обеспечения производительности, безопасности и простоты настоятельно рекомендуется использовать демон с salt-minion, если это возможно.
Терминология Salt
Теперь нужно ознакомиться с базовыми терминами Salt.
Salt: оркестрация конфигурациями // «Администратор Linux. Виртуализация и кластеризация»
Удаленное выполнение: модули и функции
Salt различает функции удаленного управления и управления конфигурацией. Возможности удаленного выполнения предоставляются специальными модулями. Модули выполнения – это набор связанных функций, которые выполняют работу на миньонах.
Salt включает функции, позволяющие запускать произвольные команды оболочки на миньонах, но идея модулей заключается в том, чтобы предоставить простой механизм для выполнения команд без необходимости выходить из командной строки. Использование модулей позволяет Salt абстрагироваться от основных различий между системами. Благодаря этому вы можете получить одинаковую информацию от миньонов Linux или BSD, хотя фактические механизмы для сбора этих данных будут разными.
Salt предлагает широкий выбор встроенных модулей выполнения для обеспечения готовых функций. Администраторы могут также писать свои собственные модули или включать написанные сообществом модули для расширения библиотеки команд.
Управление конфигурацией: состояния, формулы и шаблоны
Доступ к функциям управления конфигурацией Salt можно получить, создав репозитории конфигурационных файлов. Файлы, содержащиеся в этих репозиториях, могут быть нескольких типов.
Состояния и формулы
Управление конфигурацией Salt в основном реализуется системой состояний (state).
Система состояний использует модули состояний, которые отличаются от описанных выше модулей выполнения. К счастью, модули состояния и выполнения имеют тенденцию отражать друг друга. Система состояний позволяет администратору описывать состояние, в котором должна быть та или иная машина. Как и в случае модулей выполнения, большинство модулей состояния представляют собой ярлыки функций и обеспечивают простой синтаксис для многих общих действий. Это помогает поддерживать читаемость и устраняет необходимость создания сложной логики в файлах управления конфигурацией.
Формулы Salt – это наборы вызовов модулей состояния, объединенные с целью достижения определенного состояния системы. Эти файлы управления конфигурацией описывают, как система должна выглядеть после применения формулы. По умолчанию они записываются в формате сериализации данных YAML, что обеспечивает удобочитаемость и удобство в работе.
Администратор Salt может применять формулы, связывая миньоны с конкретными наборами формул. Миньоны будут выполнять найденные модули состояния, чтобы привести свою систему в соответствие с предоставленной политикой.
Хорошая коллекция формул Salt, созданных организацией и сообществом SaltStack, есть на GitHub.
Шаблоны
Шаблоны позволяют писать формулы Salt и другие файлы более гибким образом. Шаблоны могут использовать информацию о миньонах для создания настраиваемых версий формул или конфигурационных файлов. По умолчанию Salt использует шаблонизатор Jinja, который предлагает возможность замены и простые логические конструкции для принятия решений.
Рендерер – это компонент, который запускает шаблон для создания правильных файлов состояния или конфигурации. Рендереры определяются форматом шаблонов. Учитывая описанные выше значения по умолчанию, рендерер по умолчанию обрабатывает шаблоны Jinja для создания файлов YAML.
Запрос и назначение информации миньонам
Чтобы управлять огромным количеством систем, Salt требует некоторой информации о каждой из хост-систем. Шаблоны, описанные выше, могут использовать данные, связанные с каждой системой, для адаптации поведения каждого миньона. Существует несколько различных систем для запроса или назначения этой информации хостам.
Зерна
Зерна Salt (Salt grains) – это фрагменты информации, собранные и поддерживаемые миньоном, прежде всего в отношении основной системы хоста. Они обычно собираются демоном salt-minion и передаются мастеру по запросу. Эта функциональность может быть использована для различных целей.
Например, зерна можно использовать для таргетинга определенного подмножества нод из пула миньонов для удаленного управления или управления конфигурацией. Если вы хотите увидеть время безотказной работы серверов Ubuntu, зерно позволит вам настроить таргетинг только на эти машины.
Зерна также можно использовать в качестве аргументов для изменений конфигурации или команд. Например, вы можете использовать зерна для получения адреса IPv4, связанного с интерфейсом eth0, для изменения файла конфигурации или в качестве аргумента для команды.
Администраторы также могут назначать зерна для миньонов. Например, довольно распространено использование зерен для назначения роли серверу. Затем это можно использовать для таргетинга подмножества нод.
Хранилища pillar
Зерна можно присвоить миньонам, но подавляющее большинство переменных конфигурации будет назначено через систему pillar. В Salt pillar представляет собой хранилище «ключ-значение», которое миньон может использовать для извлечения произвольно назначенных данных. Это работает как структура данных словаря, которая может быть вложенной или многоуровневой.
Хранилища pillar предлагают несколько важных преимуществ по сравнению с системой зерен. Самое главное, данные pillar доступны только для назначенных ему миньонов. Другие миньоны не будут иметь доступа к значениям, хранящимся внутри pillar. Это делает его идеальным для хранения конфиденциальных данных, специфичных для ноды или подмножества нод. Например, секретные ключи или учетные данные БД часто предоставляются в конфигурации pillar.
Данные pillar часто используются в контексте управления конфигурацией как способ ввода переменных данных в шаблон конфигурации. Salt предлагает выбор шаблонов для замены переменных частей конфигурационного файла элементами, специфичными для ноды, которая будет его использовать. Зерна также часто используются подобным образом для ссылки на данные хоста.
Salt Mine
Salt Mine – это область на vfcnth-сервере, где могут храниться результаты от регулярно выполняемых команд на миньонах. Цель этой системы – собрать результаты произвольных команд, запущенных на миньонах. Это глобальное хранилище может быть запрошено другими компонентами и миньонами в вашей инфраструктуре.
Хранилище Salt mine сохраняет только последний результат для каждого запуска команды, а это значит, что оно не предоставит вам истории. Основная цель Salt mine – предоставить обновленную информацию от миньонов в качестве гибкого дополнения к уже имеющимся зернам данных. Миньоны могут запрашивать данные о соседях через Salt mine. Интервалы, в которых миньоны обновляют данные в Salt mine, можно настроить в индивидуальном порядке.
Дополнительные функции
Salt предоставляет несколько дополнительных систем, которые не вписываются в вышеуказанные категории.
Реакторы
Система реакторов Salt обеспечивает механизм запуска действий в ответ на сгенерированные события. В Salt изменения, происходящие во всей инфраструктуре, приведут к тому, что демоны salt-minion или salt-master будут генерировать события в ZeroMQ. Система реакторов следит за этим и сравнивает события с настроенными реакторами, чтобы реагировать соответствующим образом.
Основной задачей реакторной системы является обеспечение гибкости для автоматического ситуационного реагирования. Например, если вы разработали стратегию автоматического масштабирования, ваша система автоматически создаст ноды, чтобы удовлетворить потребности инфраструктуры в ресурсах. Каждая новая нода запускает событие. Реактор может прослушивать эти события и создавать новые ноды, включив их в существующую инфраструктуру.
Salt Runner
Salt runner – это модули, которые выполняются на главном сервере вместо миньонов. Некоторые runner-ы – это утилиты общего назначения, используемые для проверки состояния или для обслуживания различных частей системы. Некоторые из них – мощные приложения, которые обеспечивают организацию инфраструктуры в более широких масштабах.
Salt returner
Salt returners определяют альтернативные места, куда будут отправлены результаты действия, выполняемого на миньоне. По умолчанию миньоны возвращают свои данные мастеру. Returner позволяет администратору перенаправить возвращаемые данные в другой пункт назначения. Как правило, это означает, что результаты возвращаются в пункт назначения, указанный в returner, и процессу, который инициировал команду миньона.
Чаще всего returner-ы передают результаты в систему базы данных или сервисы метрик или логирования. Returner можно также использовать для сбора данных, связанных с Salt, таких как кэш данных и данные о событиях.
Команды Salt
Соль предоставляет ряд команд для работы с описанными выше компонентами. Основные функции вы найдете ниже.
- salt-master: это процесс мастер-демона. Вы можете запустить мастера с помощью этой команды напрямую или (что более типично) через сценарий инициализации или service-файл.
- salt-minion: аналогично, это процесс демона миньона, используемый для связи с мастером и выполнения команд. Эта команда также обычно запускается через сценарий инициализации или service-файл.
- salt-key: этот инструмент используется для управления открытыми ключами миньона, для просмотра и отбора текущих ключей, отправленных потенциальными миньонами. Он также может генерировать ключи для размещения на миньонах вне диапазона.
- salt: эта команда используется для таргетинга миньонов для запуска специальных модулей выполнения. Это основной инструмент удаленного выполнения.
- salt-ssh: эта команда позволяет использовать SSH в качестве альтернативы ZeroMQ.
- salt-run: эта команда используется для запуска модулей runner на главном сервере.
- salt-call: эта команда используется для запуска модулей выполнения на текущем миньоне. Она часто используется для отладки проблемных команд путем обхода мастера.
- salt-cloud: эта команда используется для управления облачными ресурсами разных провайдеров. Она позволяет легко запускать новые миньоны.
Конечно, это только основные команды.
Заключение
Теперь вы знакомы с базовой терминологией SaltStack и понимаете, какие инструменты нужно использовать для управления своей инфраструктурой.
- Установка мастера и миньона Salt в Ubuntu 14.04
- Создание формул Salt
- Установка Salt Master
Источник: www.8host.com
Salt за 10 минут
SaltStack — cистема управления конфигурациями и удалённого выполнения операций.
В данный момент изучаю данную систему и раз уж есть такая возможность решил попереводить статьи с официального сайта и повыкладывать здесь пока хватит энтузиазма. Т.к. у нас в организации используется в основном Red Hat и Centos, переводить буду части касающиеся этих операционных систем.
Данная статья представляет собой перевод официальной документации. Внизу страницы вы найдете ссылку на первоисточник на англ. языке.
Установка SALT
Установка salt-master, salt-minion из официального репозитория SaltStack на RHEL / CENTOS
sudo yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
Внимание! При установке на Red Hat Enterprise Linux 7 с отключенными (не подписанными на) ‘RHEL Server Releases’ или ‘RHEL Server Optional Channel’ репозиториями, добавьте CentOS 7 GPG key URL к конфигурации yum репозитория SaltStack для установки базовых пакетов.
[saltstack-repo] name=SaltStack repo for Red Hat Enterprise Linux $releasever baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest enabled=1 gpgcheck=1 gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/base/RPM-GPG-KEY-CentOS-7
sudo yum clean expire-cache
Установите salt-minion, salt-master и другие Salt компоненты:
sudo yum install salt-master salt-minion salt-ssh salt-syndic salt-cloud salt-api
Запуск SALT
Salt работает по топологии Master(сервер) / Minion(клиент). Миньоны подключаются к мастеру на порты TCP 4505,4506.
Дефолтная конфигурация Мастера подходит для подавляющего большинства установок. Salt Master управляется локальными сервис менеджерами:
На системах с systemd (новые Debian, OpenSuse, Fedora, Centos, RHEL):
systemctl start salt-master
На системах с Upstart (Ubuntu, older Fedora/RHEL):
service salt-master start
Альтернативно, Мастер может быть запущен напрямую через командную строку как демон:
salt-master -d
Мастер может быть также запущен в debug режиме, таким образом значительно увеличивая вывод команд:
salt-master -l debug
Мастер принимает входящие соединения на портах TCP 4505,4506.
Поиск SALT MASTER
По умолчанию конфигурационные файлы лежат в каталоге /etc/salt. Большинство платформ придерживаются этой схемы, но такие платформы как FreeBSD и Windows располагают этот файл в других местах.
При старте Миньон по умолчанию ищет в сети хост с hostname salt. Если нашел, то Миньон инициирует процесс рукопожатия и аутентификации по ключу с Мастером. Это означает, что самый простой способ конфигурации это настроить внутренний DNS на разрешение имени salt в IP Мастера.
Если такой подход не устраивает, то можно внести изменения в /etc/salt/minion:
master: hostname_master
master: IP_master
Настройка SALT MINION
Миньон может функционировать как с Мастером так и без него. Это руководство предполагает, что Миньон будет подключен к Мастеру, для получения информации о том, как запустить Миньон без Мастера смотрите тут.
После того, как Мастер может быть найден, запустить Миньон можно так же, как Мастера:
На системах с systemd (новые Debian, OpenSuse, Fedora, Centos, RHEL):
systemctl start salt-minion
На системах с Upstart (Ubuntu, older Fedora/RHEL):
service salt-minion start
salt-minion -d
В фоновом режиме с опцией debug:
salt-minion -l debug
Когда Миньон запускается, он генерирует id, если он не был сгенерирован во время предыдущего запуска и кэширует в /etc/salt/minion_id по умолчанию. Это имя по которому Миньон будет пытаться аутентироваться на Мастере. Следующие шаги предпринимаются, чтобы попытаться найти значение отличное от localhost:
- Выполняется функция socket.getfqdn()
- Проверяется /etc/hostname (не на Windows)
- Проверяется /etc/hosts ( %WINDIR%system32driversetchosts на Windows )
Если ничего не сработало, то localhost используется как запасной вариант.
id Миньона может быть задан вручную используя параметр id в файле конфигурации Миньона. Если этот параметр задан, то он будет переопределять все другие источники id.
Теперь, когда Миньон запущен, он будет генерировать криптографические ключи и пытаться подключиться к мастеру. Следующим шагом надо вернуться к Мастеру и принять новый открытый ключ Миньона.
Использование SALT-KEY
Salt аутентифицирует Миньонов используя открытый ключ шифрования и аутентификацию. Чтобы Миньон мог начать принимать команды от Мастера его ключ должен быть принят Мастером.
Команда salt-key используется для управления всеми ключами на Мастере. Для просмотра всех ключей, которые находятся на Мастере:
salt-key -L
Будут выведены ключи, которые были приняты, отклонены и находятся в ожидании принятия. Самый простой способ принят ключ миньона это принять все отложенные ключи:
salt-key -A
Ключи должны быть проверены! Выведите отпечаток ключа Мастера запустив salt-key -F master на Мастере. Скопируйте master.pub отпечаток с секции Local Keys и затем установи это значение как master_finger в конфигурации.
# salt-key -F master Local Keys: master.pem: 6c:a0:e8:b0:84:36:59:86:b6:49:c3:fb:87:a4:c4:e9 master.pub: d9:c6:e0:42:76:e5:82:f7:13:6a:65:ee:cb:f3:2e:aa
Скопируйте значение отпечатка master.pub из секции Local Keys и установите в качестве параметра master_finger в конфигурационном файле Миньона. Сохраните и перезапустите сервис salt-minion.
На Мастере запустите salt-key -f minion_id, чтобы напечатать отпечаток публичного ключа Миньона, который был принят Мастером. На Миньоне запустите salt-call key.finger —local, чтобы напечатать отпечаток ключа Миньона.
# salt-key -f foo.domain.com Unaccepted Keys: foo.domain.com: 39:f9:e4:8a:aa:74:8d:52:1a:ec:92:03:82:09:c8:f9
# salt-call key.finger —local local: 39:f9:e4:8a:aa:74:8d:52:1a:ec:92:03:82:09:c8:f9
Если совпадают, то примите ключ командой:
salt-key -a foo.domain
Посылка первых команд
Сейчас, когда миньон подключен к Мастеру и аутентифицирован, Мастер может отправлять команды Миньону. Salt-команды позволяют выполнить обширный набор функций и для конкретных Миньонов или групп Миньонов. Salt-команды состоят из опций команд, описания цели, функции исполнения и аргументов функции.
Простая команда выглядит так:
salt ‘*’ test.ping
Звездочка ( * ) определяет цель, которая определяет всех Миньонов. test.ping говорит миньонам запустить функцию test.ping. В случае test.ping, test ссылается на модуль исполнения. ping ссылается на функцию ping содержащуюся в вышеуказанном модуле.
Внимание! Исполнительные модули — это рабочие лошадки Salt. Они выполняют работу в системе выполняя различные задачи, такие как манипулирование файлами и рестарт сервисов.
Результатом выполнения этой команды будет оповещение Мастера, что все миньоны выполнили test.ping параллельно и возвращение результата.
Это на самом деле не ICMP ping, а скорее простая функция, которая возвращает True. Использование test.ping это хороший способ подтверждения что Миньон подключен.
Каждый Миньон регистрирует себя с уникальным ID. Этот ID по умолчанию есть hostname, но может быть явно задан в конфиге Миньона также с помощью параметра id.
Конечно существуют сотни других модулей, которые могут быть вызваны просто как test.ping. В следующем примере возвращается использование диска на всех Миньонах.
salt ‘*’ disk.usage
Знакомство с функциями
Она покажет очень большой список доступных функций и документацию по ним.
Внимание! Документация модулей также может быть доступна на сайте.
Эти функции охватывают все, от управления пакетами до управления серверами баз данных. Они включают в себя мощную систему управления API, которая является основой для управления конфигурациями Salt и многих других сторон Salt.
Внимание!
Salt поставляется с большим кол-вом системных плагинов. Функции, которые доступны по средствам salt команд называются исполнительными модулями.
Полезные функции
Модуль cmd содержит функции которые выполняются на Миньонах, такие как cmd.run и cmd.run_all:
salt ‘*’ cmd.run ‘ls -l /etc’
pkg функции автоматически сопоставляют локальный менеджер пакетов с соответствующими функциями. Это означает pkg.install установит пакеты через yum на Red Hat системы, через apt на Debian системы и т.д.:
salt ‘*’ pkg.install vim
Внимание! Некоторые кастомные сборки Linux и производные от некоторых дистрибутивов не правильно определяются определяются Salt. Если приведенная выше команда возвращает ошибку типа pkg.install is not available тогда вы можете переопределить pkg provider. Этот процесс описан здесь.
Функция network.interfaces выводит список всех интерфейсов на Миньоне, вместе с их IP-адресами, масками, MAC-адресами и т.д.:
salt ‘*’ network.interfaces
CHANGING THE OUTPUT FORMAT
Формат вывода по умолчанию используемый для большинства команд Salt называется nested (вложеный), но существуют несколько других способов, которые могут использованы для изменения вывода. Например, pprint способ может быть использован для отображения возвращенных данных использующий Python-кий модуль pprint:
Полный список способов вывода Salt, а также примеры вывода могут быть найдены здесь.
SALT-CALL
Примеры выше описывали запуск команд с Мастера используя salt команду, но при диагностике может быть более эффективным зайти на Миньон по ssh и использовать salt-call.
Это позволяет увидеть сообщения Миньона относящиеся к исполняемой команде (которые не являются частью вывода, который вы видите когда запускаете команду salt), что делает ненужным применение команды tail -f /vat/log/salt/. Более подробную информацию о salt-call можно посмотреть здесь.
Зерна (GRAINS)
Salt ипользует систему, называемую Grains для построения статических данных о Миньонах. Эти данные включают в себя информацию о ОС, CPU архитектуре и много другое. Система grains испольуется Salt для доставки данных платформы многим компанентам и пользователям.
Grains может также быть статическим набором, что делает его легким для присвоения значений Миньонам для группировки и управления.
Обычной практикой является назначение зерен Миньонам, чтобы указать какую роль или роли возможны для Миньон. Эти статические зерна могут быть установлены в конфигурационном файле Миньона или через grains.setval функцию.
Выбор цели
Salt позволяет указывать Миньонов в качестве цели по большому кол-ву критериев.
salt ‘larry1, larry2, curly1’ test.ping
salt ‘larry*’ test.ping
salt ‘*1’ test.ping
Есть много других способов помимо основных:
Regular Expressions
Используя pcre-совместимые регулярные выражения
Grains
Цель основанная на данных grains: Targeting with Grains
Pillar
Цель основанная на данных pillar: Targeting with Pillar
IP
Цель основанная на IP address/subnet/range
Compound
Цель основанная на нескольких целях: Targeting with Compound
Nodegroup
Target with nodegroups: Targeting with Nodegroup
Передача аргументов
Много функций могут применять аргументы, которые могут быть переданы:
salt ‘*’ pkg.install vim
В этом примере передается аргумент vim функции pkg.install. Много функций могут иметь более сложные аргументы чем просто строка, аргументы обрабатываемые через YAML, позволяющие передавать более сложные данные:
salt ‘*’ test.echo ‘foo: bar’
В этом случае Salt переводит строку ‘foo: bar’ в словарь «»
Источник: habr.com
Salt за 10 минут
2016-11-11 в 11:55, admin , рубрики: Salt Stack, salt-master, salt-minion, Настройка Linux, системное администрирование, метки: Salt Stack, salt-master, salt-minion
SaltStack — cистема управления конфигурациями и удалённого выполнения операций.
В данный момент изучаю данную систему и раз уж есть такая возможность решил попереводить статьи с официального сайта и повыкладывать здесь пока хватит энтузиазма. Т.к. у нас в организации используется в основном Red Hat и Centos, переводить буду части касающиеся этих операционных систем.
Данная статья представляет собой перевод официальной документации. Внизу страницы вы найдете ссылку на первоисточник на англ. языке.
Установка SALT
Установка salt-master, salt-minion из официального репозитория SaltStack на RHEL / CENTOS
sudo yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpm
Внимание! При установке на Red Hat Enterprise Linux 7 с отключенными (не подписанными на) ‘RHEL Server Releases’ или ‘RHEL Server Optional Channel’ репозиториями, добавьте CentOS 7 GPG key URL к конфигурации yum репозитория SaltStack для установки базовых пакетов.
[saltstack-repo] name=SaltStack repo for Red Hat Enterprise Linux $releasever baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest enabled=1 gpgcheck=1 gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/base/RPM-GPG-KEY-CentOS-7
sudo yum clean expire-cache
Установите salt-minion, salt-master и другие Salt компоненты:
sudo yum install salt-master salt-minion salt-ssh salt-syndic salt-cloud salt-api
Запуск SALT
Salt работает по топологии Master(сервер) / Minion(клиент). Миньоны подключаются к мастеру на порты TCP 4505,4506.
Дефолтная конфигурация Мастера подходит для подавляющего большинства установок. Salt Master управляется локальными сервис менеджерами:
На системах с systemd (новые Debian, OpenSuse, Fedora, Centos, RHEL):
systemctl start salt-master
На системах с Upstart (Ubuntu, older Fedora/RHEL):
service salt-master start
Альтернативно, Мастер может быть запущен напрямую через командную строку как демон:
salt-master -d
Мастер может быть также запущен в debug режиме, таким образом значительно увеличивая вывод команд:
salt-master -l debug
Мастер принимает входящие соединения на портах TCP 4505,4506.
Поиск SALT MASTER
По умолчанию конфигурационные файлы лежат в каталоге /etc/salt. Большинство платформ придерживаются этой схемы, но такие платформы как FreeBSD и Windows располагают этот файл в других местах.
При старте Миньон по умолчанию ищет в сети хост с hostname salt. Если нашел, то Миньон инициирует процесс рукопожатия и аутентификации по ключу с Мастером. Это означает, что самый простой способ конфигурации это настроить внутренний DNS на разрешение имени salt в IP Мастера.
Если такой подход не устраивает, то можно внести изменения в /etc/salt/minion:
master: hostname_master
master: IP_master
Настройка SALT MINION
Миньон может функционировать как с Мастером так и без него. Это руководство предполагает, что Миньон будет подключен к Мастеру, для получения информации о том, как запустить Миньон без Мастера смотрите тут.
После того, как Мастер может быть найден, запустить Миньон можно так же, как Мастера:
На системах с systemd (новые Debian, OpenSuse, Fedora, Centos, RHEL):
systemctl start salt-minion
На системах с Upstart (Ubuntu, older Fedora/RHEL):
service salt-minion start
salt-minion -d
В фоновом режиме с опцией debug:
salt-minion -l debug
Когда Миньон запускается, он генерирует id, если он не был сгенерирован во время предыдущего запуска и кэширует в /etc/salt/minion_id по умолчанию. Это имя по которому Миньон будет пытаться аутентироваться на Мастере. Следующие шаги предпринимаются, чтобы попытаться найти значение отличное от localhost:
- Выполняется функция socket.getfqdn()
- Проверяется /etc/hostname (не на Windows)
- Проверяется /etc/hosts ( %WINDIR%system32driversetchosts на Windows )
Если вышеописанные методы не произвели id отличный от localhost, то проверяется отсортированый лист IP адресов (исключая диапазон 127.0.0.0/8) на Миньоне. Первым используется публично-маршрутизируемый IP-адрес, если есть хоть один. Иначе используется первый приватно-маршрутизируемый IP-адрес.
Если ничего не сработало, то localhost используется как запасной вариант.
id Миньона может быть задан вручную используя параметр id в файле конфигурации Миньона. Если этот параметр задан, то он будет переопределять все другие источники id.
Теперь, когда Миньон запущен, он будет генерировать криптографические ключи и пытаться подключиться к мастеру. Следующим шагом надо вернуться к Мастеру и принять новый открытый ключ Миньона.
Использование SALT-KEY
Salt аутентифицирует Миньонов используя открытый ключ шифрования и аутентификацию. Чтобы Миньон мог начать принимать команды от Мастера его ключ должен быть принят Мастером.
Команда salt-key используется для управления всеми ключами на Мастере. Для просмотра всех ключей, которые находятся на Мастере:
salt-key -L
Будут выведены ключи, которые были приняты, отклонены и находятся в ожидании принятия. Самый простой способ принят ключ миньона это принять все отложенные ключи:
salt-key -A
Ключи должны быть проверены! Выведите отпечаток ключа Мастера запустив salt-key -F master на Мастере. Скопируйте master.pub отпечаток с секции Local Keys и затем установи это значение как master_finger в конфигурации.
# salt-key -F master Local Keys: master.pem: 6c:a0:e8:b0:84:36:59:86:b6:49:c3:fb:87:a4:c4:e9 master.pub: d9:c6:e0:42:76:e5:82:f7:13:6a:65:ee:cb:f3:2e:aa
Скопируйте значение отпечатка master.pub из секции Local Keys и установите в качестве параметра master_finger в конфигурационном файле Миньона. Сохраните и перезапустите сервис salt-minion.
На Мастере запустите salt-key -f minion_id, чтобы напечатать отпечаток публичного ключа Миньона, который был принят Мастером. На Миньоне запустите salt-call key.finger —local, чтобы напечатать отпечаток ключа Миньона.
# salt-key -f foo.domain.com Unaccepted Keys: foo.domain.com: 39:f9:e4:8a:aa:74:8d:52:1a:ec:92:03:82:09:c8:f9
# salt-call key.finger —local local: 39:f9:e4:8a:aa:74:8d:52:1a:ec:92:03:82:09:c8:f9
Если совпадают, то примите ключ командой:
salt-key -a foo.domain
Посылка первых команд
Сейчас, когда миньон подключен к Мастеру и аутентифицирован, Мастер может отправлять команды Миньону. Salt-команды позволяют выполнить обширный набор функций и для конкретных Миньонов или групп Миньонов. Salt-команды состоят из опций команд, описания цели, функции исполнения и аргументов функции.
Простая команда выглядит так:
salt ‘*’ test.ping
Звездочка ( * ) определяет цель, которая определяет всех Миньонов. test.ping говорит миньонам запустить функцию test.ping. В случае test.ping, test ссылается на модуль исполнения. ping ссылается на функцию ping содержащуюся в вышеуказанном модуле.
Внимание! Исполнительные модули — это рабочие лошадки Salt. Они выполняют работу в системе выполняя различные задачи, такие как манипулирование файлами и рестарт сервисов.
Результатом выполнения этой команды будет оповещение Мастера, что все миньоны выполнили test.ping параллельно и возвращение результата.
Это на самом деле не ICMP ping, а скорее простая функция, которая возвращает True. Использование test.ping это хороший способ подтверждения что Миньон подключен.
Каждый Миньон регистрирует себя с уникальным ID. Этот ID по умолчанию есть hostname, но может быть явно задан в конфиге Миньона также с помощью параметра id.
Конечно существуют сотни других модулей, которые могут быть вызваны просто как test.ping. В следующем примере возвращается использование диска на всех Миньонах.
salt ‘*’ disk.usage
Знакомство с функциями
Она покажет очень большой список доступных функций и документацию по ним.
Внимание! Документация модулей также может быть доступна на сайте.
Источник: www.pvsm.ru