所以我有一组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]