1. Простые цели

1.5. Нацеливание с помощью интерфейса Grains

Интерфейс Grains был встроен в Salt для того, чтобы обеспечить возможность нацеливания на миньоны, основываясь на их системной информации. На миньонах, работающих в определенной операционной системе или с определённым ядром операционной системы, могут запускаться совместимые функции интерфейса Grains.

Для вызова функции с помощью интерфейса Grains указывается опция -G , элемент grain и glob-выражение, которому должно соответствовать значение grain. Синтаксис строки нацеливания включает в себя ключ grain и следующее за ним glob-выражение, например: os:Arch* .

Например, в следующем вызове будут выбраны миньоны, работающие на операционной системе CentOS:

salt -G 'os:CentOS' test.ping 


В следующем вызове выводится количество процессорных ядер на каждом миньоне с 64-битным процессором:

salt -G 'cpuarch:x86_64' grains.item num_cpus 


При нацеливании с помощью Grains можно использовать подстановочные glob-выражения, а вложенные значения словаря можно сопоставлять путём добавления двоеточия для каждого уровня словаря.
Например, в следующем вызове будут выбраны хосты, имеющие элемент grain с именем ec2_tags , который, в свою очередь, является словарём с ключом ’environment’ и значением, содержащим подстроку ’production’ :

salt -G
  'ec2_tags:environment:*production*' 


Примеры:
1.    Для вывода доступных элементов grain и их значений на миньоне altos необходимо выполнить команду grains.items (вывод показан не полностью):

salt 'altos' grains.items 


salt 'altos' grains.items

Команда

salt -G 'shell:/bin/bash' test.ping 

выполнит команду test.ping на всех миньонах, у которых grain ’shell’ содержит значение ’/bin/bash’ :

salt -G 'shell:/bin/bash' test.ping

К серверу подключено три клиента, но ответило только два, т. к. только у них элемент grain ’shell’ имеет значение ’/bin/sh’ .

2.    Давайте создадим выражение которое использует 2 grains’а для определения миньона. Возьмем os и ipv4.

2 grains’а для определения миньона. Возьмем os и ipv4

3.    В данном примере команда test.ping выполняется на всех миньонах, которые:
имеют элемент grain ’os’ со значением, не равным ‘Windows’
И
имеют элемент grain ‘ipv4’, соответствующий шаблону ‘10.32.10.2*’ , т. е., ‘10.32.10.2’, ‘10.32.10.20’, ‘10.32.10.21’, ‘10.32.10.200’ и т. д.

test.ping выполняется на всех миньонах, которые:
	имеют элемент grain ’os’ со значением, не равным ‘Windows’
И
	имеют элеме