對群組的其他成員執行 ansible 任務,但不對目前成員執行

對群組的其他成員執行 ansible 任務,但不對目前成員執行

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

答案1

知道了!使用「何時」:)

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

答案2

通用任務版本

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

相關內容