Вы можете использовать комбинацию фильтров для извлечения необходимого хоста:
tasks:
- debug:
msg: '{{groups["group_name"] | map("extract", hostvars) | selectattr("master_slave", "equalto", "master") | map(attribute="inventory_hostname") | list}}'
Шаг за шагом:
groups["group_name"]
- это список всеххосты в группе group_name
.
map("extract", hostvars)
принимают hostvars, словарь, сопоставляющий хост с их переменными, и извлекают хосты, которые находятся в group_name
(то есть groups["group_name"]
).В результате получается список, содержащий хосты в group_name
, сопоставленные с их переменными.
selectattr("master_slave", "equalto", "master")
выбирает все хосты, которые имеют атрибут master_slave
, равный master
.В результате получается список со всеми хостами, которые являются мастерами, сопоставленными с их переменными.
map(attribute="inventory_hostname")
принимает список в качестве входных данных и возвращает атрибут inventory_hostname
каждого элемента.В результате получается список со всеми хостами, которые являются мастерами.