Explicitamente grupos vazios no Ansible

4

Eu tenho um manual que é aplicado a vários inventários. Algumas das peças não se aplicam a todos os inventários.

Posso deixar o grupo fora de um inventário ou posso adicioná-lo, mas deixá-lo vazio. Em ambos os casos, isso gera um aviso quando a jogada opcional é executada:

[WARNING]: Could not match supplied host pattern, ignoring: myoptionalgroup

Eu ainda quero usar essa classe de aviso para gerar um relatório para detectar erros. onde um nome de grupo foi digitado incorretamente na peça ou no inventário, mas não quero que apareça quando souber que é deliberado.

Como posso melhor suprimir o aviso nas situações em que sei que não haverá hosts aos quais uma peça se aplica em determinado inventário?

    
por Paul Butcher 25.10.2017 / 10:32

1 resposta

6

Dificilmente existe uma maneira de suprimir este aviso em si, mas você pode acabar com o jogo em alguma condição.

Por exemplo, você pode verificar os hosts na execução atual e encerrar a reprodução se houver um dummy host:

---
- hosts: localhost
  gather_facts: no
  tasks:
    - debug:
        msg: hello 1

- hosts: optional
  gather_facts: no
  pre_tasks:
    - meta: end_play
      when: ('dummy' in play_hosts)
  tasks:
    - debug:
        msg: hello 2

- hosts: localhost
  gather_facts: no
  tasks:
    - debug:
        msg: hello 3

Isto irá:

  • dê um aviso se optional group não existir ou estiver vazio e pular o play
  • encerre a reprodução com pré-tarefa se optional group contiver dummy host
  • executar tarefas normalmente se optional group contiver outros hosts e não houver dummy
por 25.10.2017 / 11:23

Tags