Долго ломал голову как это сделать, но не нашел более правильного решения.
{%- 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, что давало мне последний элемент списка.