Executa uma tarefa ansible em outros membros de um grupo, mas não no membro atual

2

Então eu tenho um grupo de servidores nginx:

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

E eu tenho uma tarefa de pré-implantação para ser executada. Estou executando no modo serial:1 e só quero que essa tarefa de pré-implementação seja executada em todos que não sejam eu.

Atualmente, minha tarefa é semelhante a essa, que é executada em todos os servidores nginx perfeitamente:

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

Alguma idéia de como excluir o nó atual da lista groups['nginx_internal_servers'] ?

    
por johnwards 19.05.2015 / 00:05

2 respostas

4

Entendi! Use um quando:)

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
    
por 19.05.2015 / 00:24
0

Versão de tarefa genérica

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

Tags