Методы управления агентами

Модуль координации поддерживает следующие методы управления агентами:

Удаленное выполнение

Удаленное выполнение реализовано посредством модуля выполнения.

Модуль выполнения — это набор связанных функций или методов, которые можно запускать на агентах по команде salt от сервера управления для выполнения определенных задач, таких как манипулирование файлами или перезапуск сервисов.

Команды состоят из:

  • опций команд — дополнительных параметров (например, имя пользователя, пароль, путь к файлу конфигурации и другие настойки), уточняющих, как именно нужно выполнить задачу;

  • описания цели — агентов, на которых должна быть выполнена задача;

  • функции исполнения — кода на языке Python, который должен быть выполнен на агентах;

  • аргументов функции — значений, которые передаются в функцию при ее вызове.

Цели

Сервер управления задает цели, чтобы указать, какие агенты должны выполнить ту или иную команду.

Цель — это группа агентов на одном или нескольких серверах управления, к которым применяется Salt-команда.

Сервером управления можно управлять так же как агентом, и он может быть целью, если для него запущен агент.

Ниже приведен пример простой команды:

salt '*' test.ping

Где:

  • звездочка (*) — цель, которая определяет всех агентов;

  • test.ping — передает агентам команду запустить функцию test.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.

Формулы

Формулы — это наборы состояний, которые вместе настраивают компонент приложения или системы на агенте. Формулы обычно организованы с помощью нескольких различных файлов с расширением .sls. Разделение состояний формулы по разным файлам может упростить организацию работы. Объявления состояний могут включать и ссылаться на объявления в других файлах.

Top-файл

В дополнение к ручному запуску состояний агентов, модуль координации также поддерживает их автоматический запуск. Для этого используется Top-файл — основной файл конфигурации. В Top-файле определяются соответствия между именами агентами и формулами, которые будут применены к этим агентам. В данном случае решается задача масштабирования, что позволяет избежать запуска каждого состояния по отдельности и вручную, когда в какой-либо среде существуют сотни файлов состояний, предназначенных для нескольких тысяч агентов.