次のエラーメッセージと一緒にプレイブック出力の特定のエラーメッセージを無視しようとしています。
致命的:[192.168.0.1]:失敗しました! => {"changed": false, "failed": true, "msg": "SSL/TLS なしでプレーンテキストでパスワードを送信することは非常に安全ではありません。 Query == CHANGE 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 }}"
ラッキーですか?この目標を達成する方法は?
編集:Marcoの答えへの答え - さて、それは問題です。どのエラーが発生するのかわかりません。ただし、エラーメッセージに「SSLなしでプレーンテキストでパスワードを送信する」が含まれている場合は無視し、他のエラーでない限り無視しないでください。簡単に説明すると、「エラーメッセージに-> 'null'またはSSLが含まれていない場合は例外が発生します。」
ベストアンサー1
Ansibleにはエラー処理のためのいくつかのオプションがあります。ignore_errors: yes
ジョブで属性を使用できます。すべてのエラーを無視したくない場合は、次のようにエラーを構成する要素を正確に指定できます。
- name: task name
module: arguments ...
register: out
failed_when: 'error message' in out.stderr
より複雑な障害チェックを追加するには、次のようにエラー処理を別のタスクに分割できます。
- 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"
この例では、最初のジョブはコード123で失敗し、標準出力に「error」を出力します。これは登録されますが無視されます。 2番目の操作は出力値を分析し、戻りコードがゼロではなく標準出力に "error"文字列が含まれていない場合にのみ失敗します。
Ansibleドキュメントから詳細を読むことができます。https://docs.ansible.com/ansible/playbooks_error_handling.html