Вы можете использовать фильтр difference
с одним списком элементов, содержащим текущий целевой сервер в качестве аргумента:
---
- hosts: servers
gather_facts: false
vars:
network_check_list: "{{ groups['servers'] | difference([inventory_hostname]) | join(',') }}"
tasks:
- debug:
var: network_check_list
Поскольку выражение jinja2 интерпретируется на месте и для каждого запуска на определенном сервере, Вы можете сохранить это определение в своем файле PlaySars Vars, и оно будет адаптировано к каждому контексту в задаче. Вот результат (использовал ваш пример инвентаря):
$ ansible-playbook -i inventory play.yml
PLAY [servers] ****************************************************************************************************************************************************************************************************
TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [server1] => {
"network_check_list": "server2,server3"
}
ok: [server2] => {
"network_check_list": "server1,server3"
}
ok: [server3] => {
"network_check_list": "server1,server2"
}
PLAY RECAP ********************************************************************************************************************************************************************************************************
server1 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
server2 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
server3 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Ссылка: https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#set -theory-filters