Методы управления агентами
Модуль координации поддерживает следующие методы управления агентами:
Удаленное выполнение
Удаленное выполнение реализовано посредством модуля выполнения.
Модуль выполнения — это набор связанных функций или методов, которые можно запускать на агентах по команде
salt от сервера управления для выполнения определенных задач, таких как манипулирование файлами или перезапуск сервисов.
Команды состоят из:
-
опций команд — дополнительных параметров (например, имя пользователя, пароль, путь к файлу конфигурации и другие настойки), уточняющих, как именно нужно выполнить задачу;
-
описания цели — агентов, на которых должна быть выполнена задача;
-
функции исполнения — кода на языке Python, который должен быть выполнен на агентах;
-
аргументов функции — значений, которые передаются в функцию при ее вызове.
Цели
Сервер управления задает цели, чтобы указать, какие агенты должны выполнить ту или иную команду.
Цель — это группа агентов на одном или нескольких серверах управления, к которым применяется Salt-команда.
| Сервером управления можно управлять так же как агентом, и он может быть целью, если для него запущен агент. |
Ниже приведен пример простой команды:
salt '*' test.ping
Где:
-
звездочка (
*) — цель, которая определяет всех агентов; -
test.ping— передает агентам команду запустить функциюtest.ping:-
testссылается на модуль исполнения; -
pingссылается на функциюping, содержащуюся в вышеуказанном модуле.
-
Модуль координации позволяет указывать агентов в качестве цели по большому количеству критериев:
Пример 1:
salt 'larry1, larry2, curly1' test.ping
Пример 2:
salt 'larry*' test.ping
Пример 3:
salt '*1' test.ping
Помимо основных способов определения целей, существует способ определения конкретного агента по идентификатору или нескольких агентов по их совместно используемым признакам или характеристикам — параметрам Grains.
Параметры Grains
Модуль координации использует систему параметров Grains для построения статических данных, полученных от агентов. Эти данные включают в себя информацию об операционной системе, CPU-архитектуре и др. Система параметров Grains используется модулем координации для доставки данных платформы многим компонентам и пользователям.
Параметры Grains могут быть также статическим набором, что позволяет легко присваивать значения агентам для группировки и управления.
Например, параметры Grains назначаются агентам, чтобы указать, какая роль или роли возможны для агента.
Параметры Grains могут быть установлены в конфигурационном файле агента или через функцию
grains.setval.
Пример команды:
salt -G 'os:Ubuntu' test.version
Где:
-
-G— определяет, что модуль координации будет выполнять команду на узлах, у которых есть заданный групповой тег; групповой тег определяется по значению переменнойgrains, которая также должна быть задана на каждом узле; -
os:Ubuntu— операционная система Ubuntu, которая определяется по значению переменнойos, которая должна быть задана на каждом узле; -
test.version— команда вывода версии модуля, которая должна быть выполнена на всех узлах, для которых определен тег-Gи задана переменнаяos:Ubuntu.
Использование параметров Grains (статистических данных-фактов, полученных от агентов) также возможно за счет использования шаблонов Jinja.
В примере ниже файл состояния /srv/salt/webserver_setup.sls устанавливает Apache и настраивает имя для пакета
в соответствии с операционной системой:
install_apache:
pkg.installed:
{% if grains['os'] == 'CentOS' %}
- name: httpd
{% else %}
- name: apache
{% endif %}
Управление конфигурацией
Наряду с удаленным выполнением, модуль координации поддерживает метод управления агентами путем объявления состояния, в котором он должен находиться.
Состояния
Состояния определяются в файлах состояний с расширением .sls.
С помощью состояний можно автоматизировать рекурсивные и предсказуемые задачи путем создания очереди заданий для выполнения в модуле координации без вмешательства пользователя. В файлы состояний также можно добавлять более сложную условную логику, используя шаблоны Jinja.
Формулы
Формула — это способ описания конфигурации и состояния системы в виде набора файлов и директорий. Формула может использоваться для автоматизации развертывания и управления конфигурацией системы, а также для создания шаблонов для повторного использования.
Большинство формул состоит из нескольких состояний, которые описываются в файле формата YAML. Состояние — это конечное состояние, которого должна достичь система после применения формулы.
Top-файл
В дополнение к ручному запуску состояний агентов, модуль координации также поддерживает их автоматический запуск. Для этого используется Top-файл — основной файл конфигурации. В Top-файле определяются соответствия между именами агентами и формулами, которые будут применены к этим агентам. В данном случае решается задача масштабирования, что позволяет избежать запуска каждого состояния по отдельности и вручную, когда в какой-либо среде существуют сотни файлов состояний, предназначенных для нескольких тысяч агентов.