ansible: ignore silenciosamente hosts inacessíveis


4

Usamos ansible para configurar alguns hosts, incluindo a configuração de IP. Não queremos usar um servidor DHCP. Às vezes, adicionamos novos hosts à rede. Esses novos hosts estão em um intervalo de endereços IP e os hosts de produção existentes em outro. Apenas colocamos novos hosts na primeira rede e, em seguida, permitimos configurá-los, testá-los e alterar o IP para a faixa de produção. O Ansible é executado regularmente via cron.

No entanto, quando não houver novos hosts, o ansible relatará um erro inacessível. Nenhum novo host é a situação usual. Como posso suprimir isso ou torná-lo menos proeminente?

Basicamente, nosso manual é assim:

---
#  configure existing hosts
- hosts: production
  tasks:
    - name: do regular maintenance
      # ...

- hosts: new
  # Does not seem to do anything
  ignore_errors: True 
  tasks: 
    - name: configure freshly discovered host
        # ...
    - name: test freshly discovered host
        # ...
    - name: change ip config to production network
        # ...

O / etc / ansible / hosts fica assim:

[production]
192.168.2.[11:255]

[new]
# those are firewalled
192.168.2.[1:10]

Quando eu corro isso, vejo um grande vermelho

PLAY RECAP   ****************************************************
192.168.2.1              : ok=0    changed=0    unreachable=1    failed=0   
[...]

no final, o que é confuso para meus colegas.

Eu vi essa pergunta e achei que, se eu usar ignore_errors, mas não definir um sinalizador, deverá ignorar silenciosamente os hosts inacessíveis, mas isso não parece ter nenhum efeito.

Respostas:


2

Adicionando esta resposta: uma correção foi adicionada no Ansible 2.7: https://github.com/ansible/ansible/blob/stable-2.7/changelogs/CHANGELOG-v2.7.rst#major-changes

Nova palavra-chave ignore_unreachable para execuções e blocos. Permite ignorar tarefas que falham devido a hosts inacessíveis e verificar os resultados com o teste é inacessível.

EDIT: Por experiência pessoal, preciso adicionar ignore_errorsjunto para que o manual realmente continue.


Você pode mostrar um exemplo de como usar esse argumento?
Alex Cohen

@AlexCohen Seu uso é idêntico ao ignore_errorsque pode ser encontrado aqui: docs.ansible.com/ansible/latest/user_guide/…
KdgDev

0

Você precisaria criar um plug - in de retorno de chamada para modificar a maneira como o Ansible produz sua saída.

Você pode começar com default.pyfornecido como um exemplo com Ansible. Procure a unreachablesequência e modifique o script para atender às suas necessidades.

Por exemplo, para torná-lo menos proeminente, você pode, por exemplo, substituir o valor da COLOR_UNREACHABLEvariável.

Salve o código modificado callback_pluginsno diretório do projeto, aponte para o diretório e ative o plug- in no ansible.cfgarquivo de configuração.


0

Uma maneira que encontrei foi executar esse script no meu arquivo hosts primeiro e depois editar a lista de acordo. Em seguida, execute o script Ansible.

É uma solução, mas ainda melhor do que ficar de olho no Ansible o tempo todo, esperando que ele pare novamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.