Команды
Команда представляет собой программный объект Salt.Box, взаимодействующий со службой salt-master
с целью создания SaltStack Job, получения ответов (Job Return) от миньонов и сохранения их в базе данных Salt.Box.
Создание команды
Создание команды из карточки миньона
Для создания команды из карточки миньона на странице миньонов откройте карточку миньона и нажмите кнопку Create Job
, расположенную в верхней левой части карточки Рис. 1.
![]() |
---|
Будет выведено диалоговое окно создания команды, при этом в полях Target type
и Target
будут указаны необходимые значения: тип нацеливания и идентификатор миньона Рис. 2.
![]() |
---|
Создание команды со страницы команд
Для создания команды со страницы команд в главном меню выберите пункт Команды
.
Далее на странице команд нажмите кнопку Create Job
, расположенную в верхней левой части страницы.
Будет выведено диалоговое окно создания команды, при этом в поле Target type
будет указано значение по умолчанию — glob
, а поле Target
будет пустым.
Выбор функции
В выпадающем списке Function
выберите функцию, которая будет вызываться командой Рис. 2.
В таблице 1 приведён перечень доступных функций.
Группа функций | Функция | Назначение |
---|---|---|
cmd | cmd.run | Выполнить переданную команду и вернуть вывод в виде строки |
cp | cp.get_dir | Используется для рекурсивного копирования каталога с мастера |
cp.get_fil | Загрузить файл с URL в каталог кэша миньона и вернуть содержимое этого файла. Возвращает False , если Salt не удалось кэшировать файл с URL | |
cp.get_url | Используется для получения одного файла с URL | |
disk | disk.blkid | Возвращает атрибуты блочного устройства: UUID, LABEL и т. д. Эта функция работает только в системах, где доступен blkid |
disk.fstype | Возвращает имя файловой системы указанного устройства | |
disk.get_fstype_from_path | Возвращает тип файловой системы базового устройства для указанного пути | |
disk.usage | Возвращает информацию об использовании для томов, смонтированных на этом миньоне | |
file | file.chgrp | Сменить группу файла |
file.chown | Сменить владельца файла, установить указанные пользователя и группу файла | |
file.diskusage | Рекурсивно расчитать использование диска по указанному пути и вернуть это значение в байтах | |
file.grep | Выполнить grep указанной строки в указанном файле | |
file.line | Построчное редактирование файла | |
file.link | Создать жесткую ссылку на файл | |
file.mkdir | ||
file.move | Переместить файл или каталог | |
file.read | Вернуть содержимое файла | |
file.readdir | Вернуть список, содержащий содержимое каталога | |
file.rmdir | Удалить указанный каталог. | |
file.stats | Вернуть словарь, содержащий статистику для указанного файла | |
file.touch | Аналогично команде touch — создать файл, если он не существует, или обновить atime и mtime, если файл существует | |
grains | grains.append | Добавить значение в список в файле конфигурации grains. Если grain не существует, добавляется ключ grain, а значение добавляется к новому grain как элемент списка |
grains.delkey | Полностью удалить grain, т.е. удалить ключ и значение grain | |
grains.item | Вернуть один или несколько элементов grain | |
grains.items | Вернуть все элементы grains миньона | |
grains.set | Установить ключ в произвольное значение. Функция используется как setval, но работает с вложенными ключами. Эта функция консервативна. Она перезапишет запись, только если ее значение и заданное значение не являются списком или словарем. Параметр force используется для разрешения перезаписи во всех случаях | |
mount | mount.active | Вернуть список активных смонтированных файловых систем |
mount.fstab | Просмотреть содержимое fstab | |
mount.get_device_from_path | Вернуть базовое устройство для указанного пути | |
mount.get_mount_from_path | Вернуть смонтированную файловую систему, предоставляющую указанный путь | |
mount.mount | Смонтировать устройство | |
mount.remount | Попытаться перемонтировать устройство. Если устройство еще не смонтировано, вызывается mount | |
mount.swaps | Вернуть словарь, содержащий информацию об активном swap | |
mount.umount | Попытаться размонтировать устройство, указав каталог, в который оно смонтировано | |
network | network.active_tcp | Вернуть словарь, содержащий информацию обо всех запущенных TCP-соединениях (в настоящее время только для Linux и Solaris) |
network.arp | Вернуть таблицу arp миньона | |
network.connect | Проверить подключение к хосту с использованием определенного порта миньона | |
network.default_route | Вернуть маршрут(ы) по умолчанию из таблицы маршрутизации | |
network.dig | Выполнить DNS-поиск с помощью dig | |
network.fqdns | Вернуть все известные FQDN для системы перебором всех интерфейсов с попытками выполнить обратное разрешение (исключая интерфейс 'lo' ) | |
network.get_fqdn | Получить полное доменное имя | |
network.get_hostname | Получить имя хоста | |
network.get_route | Вернуть информацию о маршрутизации для указанного IP-адреса назначения | |
network.hwaddr | Вернуть аппаратный адрес (MAC-адрес) заданного интерфейса | |
network.interface | Вернуть адрес inet для заданного интерфейса | |
network.interfaces | Вернуть словарь информации обо всех интерфейсах миньона | |
network.ip_addrs | Вернуть список адресов IPv4, назначенных хосту. 127.0.0.1 игнорируется, если не указано 'include_loopback=True' . Если указано 'interface' , то будут возвращены только IP-адреса этого интерфейса. Указание CIDR 'cidr="10.0.0.0/8"' вернет только адреса, которые находятся в этой подсети. Если 'type' = 'public' , то будут возвращены только публичные адреса. Аналогично для 'type' ='private' | |
network.mod_hostname | Изменить имя хоста | |
network.netstat | Вернуть информацию об открытых портах и состояниях | |
network.ping | Выполнить ICMP-пинг на хост | |
network.routes | Вернуть текущие настроенные маршруты из таблицы маршрутизации | |
network.subnets | Возвращает список подсетей IPv4, к которым принадлежит хост | |
network.traceroute | Выполнить трассировку маршрута на сторонний хост | |
network.wol | SОтправить пакет Wake On Lan на хост | |
saltutil | saltutil.kill_all_jobs | Отправить сигнал kill (SIGKILL 9) всем текущим работающим заданиям |
saltutil.kill_job | Отправить сигнал kill (SIGKILL 9) процессу указанного задания salt | |
saltutil.running | Вернуть данные обо всех работающих процессах salt на minion | |
saltutil.sync_all | Синхронизировать все динамические модули с файлового сервера для определенной среды. Эта функция синхронизирует пользовательские модули, состояния (states), маяки (beacons), grains, модули возврата (returners), модули вывода (output modules), рендереры (renderers) и утилиты | |
saltutil.sync_grains | Синхронизировать модули grains миньона с salt://_grains | |
saltutil.sync_modules | Синхронизировать модули выполнения миньона с salt://_modules | |
saltutil.sync_states | Синхронизировать модули состояния миньона с salt://_states | |
state | state.apply | Эта функция вызовет state.highstate <salt.modules.state.highstate> или state.sls <salt.modules.state.sls> в зависимости от аргументов, переданных этой функции |
systemd_service | systemd_service.available | |
systemd_service.disable | Отключить указанную службу (запретить запуск при загрузке системы) | |
systemd_service.disabled | Вывести, запрещён ли запуск указзанной службы при загрузке системы | |
systemd_service.enable | Включить запуск указанной службы при загрузке системы | |
systemd_service.get_all | Вернуть список всех доступных служб | |
systemd_service.mask | Замаскировать указанную службу с помощью systemd | |
systemd_service.masked | Проверить, замаскирована ли служба | |
systemd_service.restart | Перезапустить указанную службу с помощью systemd | |
systemd_service.show | Показать свойства одного или нескольких юнитов/задач или менеджера | |
systemd_service.status | Возвращает статус службы через systemd. Если имя содержит подстановку, возвращается словарь, сопоставляющий имя службы со значениями True /False | |
systemd_service.stop | Остановить указанную службу с помощью systemd | |
test | test.echo | Вернуть указанную строку — используется для проверки соединения |
test.ping | Используется для проверки работоспособности и ответа миньона. Не является ICMP-пингом | |
test.rand_sleep | Перейти в состояние сна на случайное количество секунд. Используется для проверки длительных команд и миньонов, отвечающих с разными интервалами | |
test.version | Вернуть версию Salt на миньоне | |
test.versions | Вернуть версии компонентов, используемых salt | |
win_service | win_service.available | Проверить, доступна ли служба в системе |
win_service.delete | Удалить указанную службу | |
win_service.disable | Отключить запуск указанной службы при загрузке системы | |
win_service.disabled | Проверить, отключен ли запуск указанной службы при загрузке системы | |
win_service.enable | Включить запуск указанной службы при загрузке системы | |
win_service.enabled | Проверить, включен ли запуск указанной службы при загрузке системы | |
win_service.get_all | Вернуть список всех установленных служб | |
win_service.get_disabled | Вернуть список отключенных служб. Отключенная служба определяется как служба, помеченная как 'Отключено' или 'Вручную' | |
win_service.get_enabled | Вернуть список включенных служб. Включенная служба определяется как служба, отмеченная как Auto Start | |
win_service.getsid | Вернуть SID этой службы Windows | |
win_service.info | ||
win_service.missing | Значение, обратное возвращаемому функцией win_service.available | |
win_service.restart | Перезапустить указанную службу. Службе передается команда stop, за которой следует start | |
win_service.start | Запустить указанную службу | |
win_service.status | Вернуть статус службы. Если имя службы содержит подстановку, возвращается словарь, сопоставляющий имя службы со значениями True /False | |
win_service.stop | Остановить указанную службу |
Укажите аргументы, если их принимает функция.
Выбор типа нацеливания, указание цели
В выпадающем списке Target type
выберите тип нацеливания Рис. 3.
От выбора типа нацеливания зависит способ интерпретации поля Target
— цели, указывающей на отдельный миньон или группу миньонов.
Сведения о типах нацеливания приведены в таблице 2.
![]() |
---|
Таблица 2. Типы нацеливания
Тип нацеливания | Значение | Пояснение |
---|---|---|
glob | Подстановка в стиле bash | Сопоставление по умолчанию, которое используется в SaltStack, — это подстановка в стиле оболочки bash вокруг идентификатора миньона (glob ) |
pcre | Регулярное выражение в стиле Perl | Использовать pcre-выражения |
list | Python-список хостов | Использовать список, разделённый запятыми |
grain | Сопоставление с grains | Использовать значения элементов grain. Синтаксис: ключ элемента grain и следующее за ним glob-выражение, например: os:Alt* |
grain_pcre | Сопоставление с grains в сочетании с регулярным выражением | Использовать значения элементов grain. Синтаксис: ключ элемента grain и следующее за ним pcre-выражение, например: os:Alt.* |
pillar | Сопоставление с данными pillar | Использовать значение pillar. Синтаксис: ключ элемента pillar и следующее за ним glob-выражение, например: role:production* |
pillar_pcre | Сопоставление с данными pillar в сочетании с регулярным выражением | Использовать значение pillar. Синтаксис: ключ элемента pillar и следующее за ним pcre-выражение, например: role:prod.* |
nodegroup | Сопоставление с nodegroup | Использовать одну из предопределённых групп узлов |
range | Использовать сервер Range для сопоставления | использовать выражение для диапазона (например, %cluster ). Использование параметра Range требует настройки сервера диапазона и указания его местоположения в главном файле конфигурации |
compound | Использовать составное нацеливание | Опция "составная цель" позволяет использовать цели нескольких типов в одном выражении, обеспечивая высокую степень детализации сопоставления. Цели разных типов в выражении разделены пробелами и логическими операторами not, and, or; перед целями, отличными от glob , стоит идентификатор, соответствующий типу аргумента конкретной цели, например: salt 'G@os:RedHat and webser* or E@database.*' |
ipcidr | Сопоставление на основе подсети (нотация CIDR) или адреса IPv4 | Сопоставление по подсети (в нотации CIDR) или IP-адресу |
В поле Target
укажите цель команды — выражение в зависимости от выбранного типа нацеливания.
Подтверждение создания команды
Нажмите кнопку Create
Рис. 4.
![]() |
---|
Команда будет создана, отобразится окно с карточкой команды Рис. 5.
Выполнение команды начинается немедленно после создания.
Карточка команды
![]() |
---|
Карточка команды состоит из двух блоков:
- блок атрибутов команды Рис. 5 [1]
перечень атрибутов команды приведён в таблице 3
- таблица миньонов Рис. 5 [2]
на вкладке отображается список обработанных целей (миньонов, на которые доставлена команда)
В таблице 3 приведён перечень атрибутов команды.
Таблица 3. Перечень атрибутов командыАтрибут | Описание |
---|---|
Targets | Цель команды |
Function | Функция модуля выполнения |
Target Type | Тип нацеливания |
Arguments | Позиционные аргументы |
User | Пользователь, создавший команду |
Key-Value arguments | Справочник именованных аргументов |
Выполнение команды
Граф выполнения команды
На Рис. 6 показан граф выполнения команды.
Условия переходов между статусами команды приведены в таблице 4.
Таблица 4. Таблица переходов графа выполнения команды
Метка дуги | Условие перехода |
---|---|
1 | В течение 10 минут с момета создания команды получено подтверждение от salt-master о создании SaltStack Job |
2 | В течение 10 минут с момета создания команды не получено подтверждение от salt-master о создании SaltStack Job |
Результаты выполнения команды
При нажатии значка + слева от записи миньона открывается JSON-выражение — ответ, полученный от миньона Рис. 5 [3].
Записи в таблице миньонов появляются по мере получения ответов от миньонов.
В таблице 5 приведён перечень полей таблицы миньонов.
Таблица 5. Перечень полей таблицы миньоновАтрибут | Значение |
---|---|
MID | Идентификатор миньона |
Success | Статус выполнения |
Return Code | Код возврата функции |
Timestamp | Время ответа миньона |