É possível 'incluir' um arquivo de tarefas com um conjunto diferente de hosts?

5

Idealmente, gostaria de poder fazer algo como:

- include: deregister_from_loadbalancer.yml
  delegate_to: loadbalancer

De tal forma que eu ainda tenho acesso ao vars para o host em que estou executando o jogo geral, mas ações estão ocorrendo no host loadbalancer.

Por que não separar jogadas?

Eu não posso simplesmente dividir isso em peças separadas, porque estou tirando as máquinas da rotação do balanceador de carga uma por vez. Separar em várias jogadas significaria algo como:

- hosts: loadbalancers
  tasks:
    - include: remove_from_loadbalancer.yml
      vars:
        machine: "{{ item }}"
      with_items: "{{ groups['webservers'] }}"

# at this point in the play I'm being fired for gross incompetence

- hosts: webservers
  tasks:
    # ... update them

- hosts: loadbalancers
  tasks:
    - include: add_to_loadbalancer.yml
      vars:
        machine: "{{ item }}"
      with_items: "{{ groups['webservers'] }}"
    
por Parthian Shot 10.02.2016 / 16:09

1 resposta

6

Se o exemplo que você postou ...

- include: deregister_from_loadbalancer.yml
  delegate_to: loadbalancer

... não funciona, você ainda pode fazer isso. Inclui em geral pode ter parâmetros, então você pode escrever como:

- include: deregister_from_loadbalancer.yml
  delegate_host: loadbalancer

E no seu include deregister_from_loadbalancer.yml você usa esse var para delegar todas as suas tarefas então:

- some: task
  delegate_to: "{{ delegate_host | default(omit) }}"

- another: task
  delegate_to: "{{ delegate_host | default(omit) }}"
    
por 12.02.2016 / 04:35

Tags