Como ignorar uma seqüência de erro de saída específica no Ansible e considerar bem-sucedida

1

Estou tentando ignorar uma mensagem de erro específica na saída do manual de reprodução que está com a mensagem de erro abaixo.

fatal: [192.168.0.1]: FALHA! = > {"changed": false, "failed": verdadeiro, "msg": "Enviar senhas em texto sem SSL / TLS é extremamente inseguro. Query == MUDAR MASTER TO ['MASTER_HOST =% (master_host) s', ' MASTER_USER =% (master_user) s ',' MASTER_PASSWORD =% (master_password) s ',' MASTER_LOG_FILE =% (master_log_file) s ',' MASTER_LOG_POS =% (master_log_pos) s '] "}

> Task: 
> - name: Setup Replication   
    become: true   
    mysql_replication:
>      login_host: "{{ slave_ip }}"
>      login_user: "user"
>      login_password: "***"
>      mode: changemaster
>      master_host: "{{ master_ip }}"
>      master_log_file: mysql-bin.000001
>      master_log_pos: 107
>      master_user: "{{ mysql_replicator_user }}"
>      master_password: "{{ mysql_replicator_password }}"

Alguma sorte? como conseguir isso?

EDITADO: Responder ao Marco Resposta - bem, esse é o problema aqui, eu não saberia qual erro eu poderia ter. Mas tenho certeza que se err msg contiver "Enviando senhas em texto sem SSL" ignore se não e outro erro, então não ignore. Para explicar em simples "Lançar exceção se a mensagem de erro não contiver - > 'null' ou SSL."

    
por mannoj 03.04.2017 / 12:56

1 resposta

4

Existem algumas opções relacionadas ao tratamento de erros no Ansible. Você pode usar o atributo ignore_errors: yes em sua tarefa. Se não quiser ignorar todos os erros, você pode especificar o que exatamente constitui um erro usando algo como:

- name: task name
  module: arguments ...
  register: out
  failed_when: 'error message' in out.stderr 

Se você deseja adicionar verificações de falhas mais complexas, é possível dividir o tratamento de erros em uma tarefa separada como esta:

- name: test
  shell: echo error; exit 123
  register: out
  ignore_errors: yes

- fail: msg="{{ out.stdout }}"
  when: "out.rc != 0 and 'error' not in out.stdout"

Neste exemplo, a primeira tarefa falha com o código de retorno 123 e imprime "erro" em sua saída padrão. Isso será registrado, mas ignorado. A segunda tarefa analisa os valores de saída e falha apenas se o código de retorno for diferente de zero E a saída padrão NÃO contém a sequência "error".

Você pode ler mais detalhes na documentação do Ansible: link

    
por 03.04.2017 / 13:35

Tags