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

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

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

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

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

Salt-команды состоят из:

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

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

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

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

Цели

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

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

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

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

salt '*' test.ping

Где:

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

  • test.ping — передает Миньонам команду запустить функцию test.ping:

SaltStack позволяет указывать Миньонов в качестве цели по большому количеству критериев:

Пример 1:

salt 'larry1, larry2, curly1' test.ping

Пример 2:

salt 'larry*' test.ping

Пример 3:

salt '*1' test.ping

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

Параметры Grains

SaltStack использует систему параметров Grains для построения статических данных, полученных от Миньонов. Эти данные включают в себя информацию об операционной системе, CPU-архитектуре и др. Система параметров Grains используется SaltStack для доставки данных платформы многим компонентам и пользователям.

Параметры Grains могут быть также статическим набором, что позволяет легко присваивать значения Миньонам для группировки и управления.

Например, параметры Grains назначаются Миньонам, чтобы указать, какая роль или роли возможны для Миньона. Параметры Grains могут быть установлены в конфигурационном файле Миньона или через функцию grains.setval.

Пример команды:

salt -G 'os:Ubuntu' test.version

Где:

  • -G — определяет, что SaltStack будет выполнять команду на узлах, у которых есть заданный групповой тег; групповой тег определяется по значению переменной grains, которая также должна быть задана на каждом узле;

  • os:Ubuntu — операционная система Ubuntu, которая определяется по значению переменной os, которая должна быть задана на каждом узле;

  • test.version  — команда вывода версии Salt, которая должна быть выполнена на всех узлах, для которых определен тег -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 %}

Управление конфигурацией

Состояния

Наряду с удаленным выполнением, SaltStack поддерживает метод управления Миньонами путем объявления состояния (Salt State), в котором он должен находиться.

Состояния определяются в файлах состояний с расширением .sls (Salt State).

С помощью состояний можно автоматизировать рекурсивные и предсказуемые задачи путем создания очереди заданий для выполнения в SaltStack без вмешательства пользователя. В файлы состояний также можно добавлять более сложную условную логику, используя шаблоны Jinja.

Формулы

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

Top-файл

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