Перейти к основному содержимому
Версия: Новая

Запуск команд

Пример 1. Получение информации о наборе параметров сетевых интерфейсов

Описание задачи

Цель задачи в качестве примера: необходимо получить информацию о следующих параметрах сетевых интерфейсов миньона (или группы миньонов) с установленной ОС Windows:

  • IP-адрес сетевого интерфейса;
  • маску подсети (Subnet Mask);
  • шлюз по умолчанию (Default Gateway);
  • DNS-серверы.

Создание команды

В качестве типа нацеливания рекомендуется выбрать параметр grain.
В Salt.Box модуль Grains используется для построения статических данных о миньонах.
Эти данные включают в себя информацию о наборе параметров сетевых интерфейсов, ОС, CPU архитектуре и др.

Для того чтобы получить информацию о параметрах сетевых интерфейсов, необходимо создать команду:

  1. Перейдите в пункт Команды Рис. 1.

    Переход в пункт Команды
    Рисунок 1. Переход в пункт Команды


  2. Далее на странице Команды нажмите кнопку +Создать команду, расположенную в верхней левой части страницы Рис. 1.
    Будет выведено диалоговое окно создания команды Рис. 2.

    Диалоговое окно создания команды. Выбор функции
    Рисунок 2. Диалоговое окно создания команды. Выбор функции


    примечание

    Обязательные поля отмечены знаком *

  3. В диалоговом окне Cоздание команды, в поле Тип цели выберите параметр grain Рис. 2 [1].

  4. В поле Цель Рис. 2 [2] введите название ОС. Это позволит сделать отбор только по указанным параметрам.

    к сведению

    Для типа нацеливания grain будет синтаксис: ключ элемента grain и следующее за ним glob-выражение, например: os:Windows* Рис. 2 [2].

  5. В поле Функция введите название функции ip.get_all_interfaces Рис. 2 [3].

    к сведению

    Функция ip.get_all_interfaces собирает и предоставляет подробную информацию о каждом сетевом интерфейсе, обнаруженном в ОС миньона (миньонов).
    Функция ip.get_all_interfaces относится к модулю win_ip для ОС Windows, в общих случаях для получения информации о сетевых интерфейсах на других ОС (Linux, Unix) в Salt.Box чаще используются:

    • network.interfaces() — эта функция из модуля network, возвращает словарь с информацией обо всех интерфейсах на миньоне, аналогично, но с другой структурой вывода
    • network.ip_addrs() — возвращает список IPv4-адресов, присвоенных хосту (с возможностью фильтрации по интерфейсу или подсети).
  6. Нажмите кнопку Создать Рис. 2 [4].

Разбор ответа

В результате вышеописанных действий произойдет переход на страницу выполненной команды с отображением результатов в виде таблицы Рис. 3.

к сведению

Для того чтобы получить более детальную информацию о выводе результатов, нажмите кнопку Полный вывод Рис. 4.

Признаками положительного результата исходя из описания задачи будут:

  • Сверху на странице выполненной команды появится индикатор зеленого цвета Рис. 3.
  • В таблице страницы результатов в столбце Успешно появится заполненный атрибут со значением Да с индикатором зеленого цвета Рис. 3.
  • В поле кода возврата выполнения retcode должно появиться значение 0 Рис. 4.
  • В поле результата выполнения функции data должна появиться полная, структурированная информация о сетевых интерфейсах. Рис. 4.
к сведению

Таким образом, комбинация типа цели grain с функцией ip.get_all_interfaces в Salt.Box выполняет две операции: фильтрацию миньонов по их системным данным (grains) и запуск команды для сбора сетевой информации на отобранных машинах.

Отображение результата успешно выполненной команды
Рисунок 3. Отображение результата успешно выполненной команды


Отображение результата успешно выполненной команды. Кнопка Полный вывод
Рисунок 4. Отображение результата успешно выполненной команды. Кнопка Полный вывод


к сведению

Выполненная команда появится и будет доступна в списке команд на странице Команды Рис. 5.

Выполненная команда на странице Команды
Рисунок 5. Выполненная команда на странице Команды


к сведению

Более подробную информацию о том, как создаются команды со страницы команд см. в разделе Команды.

Пример 2. Добавление стандартного локального пользователя в ОС Linux

Описание задачи

Цель задачи в качестве примера: пользователю необходимо на все миньоны с установленной ОС Linux (например Alt Linux, платформа p11) добавить стандартного локального пользователя со следующими условиями:

  • Имя пользователя присвоитьtest_user.
  • Пользователь должен входить в группы adm и remote.
  • Командная оболочка пользователя должна быть /bin/zsh.
  • Должны быть заполнены атрибуты Fullname и Workphone пользователя.

Создание команды

В качестве типа нацеливания рекомендуется выбрать параметр compound (составной тип нацеливания).
В Salt.Box модуль Compound позволяет комбинировать несколько различных типов нацеливания (таких, как glob, grain, pillar, ipcidr и т.д.) в одной сложной логической структуре.
В данном примере в качестве цели предлагается выбрать комбинацию: host* and P@os:ALT.* and S@192.168.122.0/24, в котором происходит следующая фильтрация:

  1. host* (модуль Glob): Фильтрация по имени.
  2. P@os:ALT.* (модуль Grains_pcre): Фильтрация по логической конфигурации (применяется только к миньонам с ОС ALT Linux).
    Фильтрация по P@os:ALT.* дает более правильный и безопасный вариант по сравнению с P@os:ALT* (модуль grains).
  3. S@192.168.122.0/24 (модуль Ip cidr): Фильтрация по физическому сетевому адресу.

Если нацеливаться только по host*, команда может затронуть и тестовые, и production-серверы. Добавление типов целей P@os:ALT.* и S@192.168.122.0/24 гарантирует, что действие произойдет только в нужном, изолированном сегменте.

к сведению

Тип нацеливания compound дает возможность создать более точечный и комплексный фильтр, используя логические операторы для объединения или исключения миньонов, отобранных разными методами.
Преимущества использования такого сложного типа цели заключаются в безопасности, точности и гранулярности управления.

Для того чтобы добавить стандартного локального пользователя для одного миньона или группы миньонов с установленной ОС Linux (например Alt Linux, платформа p11), необходимо создать команду:

  1. Перейдите в пункт Команды Рис. 1.

  2. На странице Команды нажмите кнопку +Создать команду, расположенную в верхней левой части страницы Рис. 1.
    Будет выведено диалоговое окно создания команды Рис. 6.

    Диалоговое окно создания команды. Выбор функции и заполнение полей
    Рисунок 6. Диалоговое окно создания команды. Выбор функции и заполнение полей


    примечание

    Обязательные поля отмечены знаком *

  3. В диалоговом окне Создание команды, в поле Тип цели выберите параметр compound Рис. 6 [1].

  4. Заполните поле Цель Рис. 6 [2].

    к сведению

    Для типа нацеливания compound синтаксис будет состоять из различных параметров (типов целей), разделенных логическими операторами and, or, not.
    Пример: host* and P@os:ALT.* and S@192.168.122.0/24 Рис. 6 [2].

  5. Из раскрывающегося списка поля Функция выберите функцию (или введите название) user.add Рис. 6 [3].

    к сведению

    Функция user.add является частью модуля выполнения user в SaltStack. Она используется для добавления нового пользователя в систему на целевых миньонах.

  6. В обязательном поле Name укажите имя пользователя Рис. 6 [4].
    На Рис. 6 [5] и Рис. 7 [1] представлены заполненные необязательные поля, например поля Groups, Shell, Fullname и т.д.

    Диалоговое окно создания команды (продолжение). Заполнение полей. Кнопка Создать
    Рисунок 7. Диалоговое окно создания команды (продолжение). Заполнение полей. Кнопка Создать


  7. Нажмите кнопку Создать Рис. 7 [2].

Разбор ответа

В результате описанных выше действий произойдет переход на страницу выполненной команды с отображением результатов Рис. 8.

к сведению

Для того чтобы получить более детальную информацию о выводе результатов, нажмите кнопку Полный вывод Рис. 9.

Признаками положительного результата исходя из описания задачи будут:

  • Сверху на странице выполненной команды появится индикатор зеленого цвета Рис. 8.
  • В таблице страницы результатов в столбце Успешно появится заполненный атрибут со значением Да с индикатором зеленого цвета Рис. 8.
  • В поле кода возврата выполнения retcode должно появиться значение 0 Рис. 9,
  • В поле результата выполнения функции data должно появиться значение true Рис. 9.
к сведению

Общим результатом данного примера является: то, что на всех миньонах, чьи имена начинаются с host, которые находятся в подсети 192.168.122.0/24 и которым назначен grain_pcre os:ALT., будет создан системный пользователь с именем test_user.

Отображение результата успешно выполненной команды
Рисунок 8. Отображение результата успешно выполненной команды


Отображение результата успешно выполненной команды. Кнопка Полный вывод
Рисунок 9. Отображение результата успешно выполненной команды. Кнопка Полный вывод


к сведению

Выполненная команда появится и будет доступна в списке команд на странице Команды Рис. 10.

Выполненная команда на странице Команды
Рисунок 10. Выполненная команда на странице Команды