创建客户端和target_server的字典
clients: "{{ dict(groups.clients|
zip(groups.clients|
map('extract', hostvars, 'target_server'))) }}"
给予
clients:
Wireguard-Client-1: Wireguard-Server
Wireguard-Client-2: Different-Server
使用它来选择匹配的客户端
my_clients: "{{ clients|dict2items|
selectattr('value', 'eq', inventory_hostname)|
map(attribute='key') }}"
给予
my_clients:
- Wireguard-Client-1
完整的测试剧本示例
- hosts: servers
vars:
clients: "{{ dict(groups.clients|
zip(groups.clients|
map('extract', hostvars, 'target_server'))) }}"
my_clients: "{{ clients|dict2items|
selectattr('value', 'eq', inventory_hostname)|
map(attribute='key') }}"
tasks:
- debug:
var: clients
- debug:
var: my_clients
您可以从资源清册中选择匹配的所有主机
目标服务器
my_clients: "{{ hostvars|dict2items|
selectattr('value.target_server', 'defined')|
selectattr('value.target_server', 'eq', inventory_hostname)|
map(attribute='key') }}"