Como posso executar uma tarefa delegada para um host offline usando Ansible?

3

Eu tenho tarefas Ansible para ativar e desativar o Nagios verificando alguns hosts. Eles usam "delegate_to" no servidor Nagios. No entanto, não posso usá-los quando o host em questão está off-line, porque o Ansible tenta inserir SSH e marca a tarefa quando ela não pode.

Como essa tarefa não requer contato com o host de alguma forma, parece que deve haver uma maneira de o Ansible ignorar o host e se comunicar apenas com o delegado. Isso é possível?

    
por Joshua Swink 10.10.2014 / 03:04

2 respostas

1

Como está implícito em alguns dos comentários, é provável que algo esteja causando o erro de conexão SSH em vez da tarefa delegada. Ao usar delegte_to: , Ansible só se conecta via SSH à máquina indicada na cláusula delegate (em casos diferentes de localhost).

Eu tentaria a desativação sugerida de fatos ( gather_facts: no ) e também compartilharia a saída de sua (s) execução (ões) de playbook com falha. Também pode ser que haja uma tarefa / função não delegada incluída no playbook que está falhando no jogo devido ao host alvo estar inativo.

    
por 13.06.2015 / 00:32
0

Você precisará pular todas as tarefas habituais do host indisponível usando, por exemplo, tags, desative a coleta de fatos e funcionará. Testado assim:

test_delegate.yml:

- hosts: unavailable.test
  gather_facts: false
  tasks:
    - command: /bin/stuff
    - ping:
      delegate_to: localhost
      tags: nagios

Resultado:

$ ansible-playbook -i unavailable.test, -tnagios test_delegate.yml 

PLAY [unavailable.test] ********************************************************

TASK [ping] ********************************************************************
ok: [unavailable.test -> localhost]

PLAY RECAP *********************************************************************
unavailable.test           : ok=1    changed=0    unreachable=0    failed=0   

localhost aqui no exemplo significa o host acessível, nagios no seu caso.

    
por 02.09.2017 / 17:17