Долго ломал голову как это сделать, но не нашел более правильного решения.
{%- set dc_name = ['jotunheimr'] %} {%- for s_group, s_details in pillar.get('server-groups', {}).items() %} {%- set s_srvs = pillar.get('server-groups', {}) %} {%- for srv in s_srvs[s_group] %} {%- if srv == grains['id'] %} {%- do dc_name.append(s_group) %} {%- endif %} {%- endfor %} {%- endfor %} {%- if dc_name|length > 1 %} {%- endif %} {%- set bacula_path = salt['pillar.get']('datacenters:%s:srv_ip' % dc_name|last, '127.0.0.1') %}
Итак пошагово.
Предполагаем, что у нас не может быть сервер-группы с именем jotunheimr. Создаем list с таким элементом.
Далее проверяем принадлежит ли наш сервер к какой-либо группе и если принадлежит, выполняем:
{%- do dc_name.append(s_group) %}
Таким образом в случае если наш сервер принадлежит к какой либо группе, мы получим список с двумя (или более) переменными.
Т.к. у меня задача была получить только одну сервер-группу, то в результате я просто делал dc_name|last, что давало мне последний элемент списка.