Нацеливание на миньоны
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