2. Составные цели

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

  • not;
  • and;
  • or.

Пример:

salt -C 'G@os:Debian and webser* or E@db.*' test.version 


В этом примере целью является любой миньон, имеющий идентификатор, начинающийся с подстроки ’webser’ , и работающий на операционной системе Debian, или миньон идентификатор которого начинается с подстроки ’db’ .
Тип сопоставления по умолчанию – glob, но он может быть изменён непосредственно в логическом выражении с помощью префикса, включающего соответствующую букву и следующий за ней символ @ . В приведённом выше примере элемент grain указан с префиксом G@ , а регулярное выражение – с префиксом E@ . Для цели webser* спецификатор типа цели указывать не требуется, т. к. подстрока является glob-выражением.

Составные сопоставления позволяют очень точно нацеливаться на миньоны, используя любые типы сопоставления Salt. Сопоставление по умолчанию — это сопоставление с использованием подстановок glob. Для выполнения сопоставления любого типа, кроме glob, следует добавить к строке сопоставления префикс, включающий соответствующую букву из таблицы 2 и следующий за ней символ @.

Таблица 2 – Ключи типов сопоставления в синтаксисе утилиты salt

Ключ Тип сопоставления Пример Альтернативные разделители
G Grains glob  G@os:Ubuntu Да
E PCRE Minion ID  E@web\d+\.(dev|qa|prod)\.loc Нет
P Grains PCRE  P@os: (RedHat|Fedora|CentOS) Да
L Список миньонов  L@minion1.example.ru,minion3.domain.ru or  bl*.domain.ru Нет
I Pillar glob  I@pdata:atomport Да
J Pillar PCRE  J@pdata:^(atom|port)$ Да
S Подсеть/ IP-адрес  S@192.168.1.0/24 or S@192.168.1.100 Нет
R Range cluster  R@%atom.port Нет
N Группа узлов  N@group1 Нет


Сопоставления могут быть объединены с помощью логических операторов and, or, not.
Например, в приведённом ниже вызове salt будут выбраны все миньоны, работающие на операционной системе Debian, имя хоста которых начинается с подстроки ’webserv’ , а также все миньоны, имя хоста которых соответствует регулярному pcre-выражению ’web-dc1-srv.*’:

salt -C 'webserv* and G@os:Debian or E@web-dc1-srv.*' test.version 


Возможно исключение из результата сопоставления миньона по его идентификатору:

salt -C 'not web-dc1-srv' test.version