对组中的其他成员执行任务,但不是当前成员

所以我有一组nginx服务器:

[nginx_internal_servers] n01.local n02.local n03.local 

我有一个预部署任务运行。 我以serial:1模式运行,我只希望这个预部署任务运行在除我以外的所有人。

目前我的任务看起来像这样,完全可以在所有的nginx服务器上运行:

 pre_tasks: - name: Take service out of nginx upstream pools local_action: command {{ playbook_dir }}/scripts/nginx-upstream-management.sh -s {{ item[0] }} -r {{ item[2] }} -g {{ item[1] }} with_nested: - groups['nginx_internal_servers'] - services_endpoints.keys() - ansible_all_ipv4_addresses|last 

任何想法如何从列表groups['nginx_internal_servers']排除当前节点groups['nginx_internal_servers']

得到它了! 使用时:)

 pre_tasks: - name: Take service out of nginx upstream pools local_action: command {{ playbook_dir }}/scripts/nginx-upstream-management.sh -s {{ item[0] }} -r {{ item[2] }} -g {{ item[1] }} with_nested: - groups['nginx_internal_servers'] - services_endpoints.keys() - ansible_all_ipv4_addresses|last when: item[0] != inventory_hostname 

通用任务版本

 - name: run on all but the first host in a play some_module: some_param=some_value when: inventory_hostname != play_hosts[0]