我试图忽略 playbook 输出中的特定错误消息有以下错误消息。
致命:[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']"}
Run Code Online (Sandbox Code Playgroud)> 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 Answer - 好吧,这就是问题所在,我不知道我可能会遇到什么错误。但我确信,如果 err msg 包含“在没有 SSL 的情况下以纯文本形式发送密码”,则忽略如果不是,否则不要忽略任何其他错误。简单地解释“如果错误消息不包含 -> 'null' 或 SSL,则抛出异常。”
Ansible 中有几个关于错误处理的选项。您可以ignore_errors: yes
在任务中使用属性。如果您不想忽略所有错误,您可以使用以下内容指定错误的确切构成:
- name: task name
module: arguments ...
register: out
failed_when: 'error message' in out.stderr
Run Code Online (Sandbox Code Playgroud)
如果要添加更复杂的故障检查,可以将错误处理拆分为单独的任务,如下所示:
- 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"
Run Code Online (Sandbox Code Playgroud)
在此示例中,第一个任务失败并返回代码 123,并在其标准输出上打印“错误”。这将被注册,但被忽略。第二个任务分析输出值,只有在返回码不同于零且标准输出不包含字符串“错误”时才会失败。
您可以在 Ansible 文档中阅读更多详细信息:https ://docs.ansible.com/ansible/playbooks_error_handling.html
归档时间: |
|
查看次数: |
14870 次 |
最近记录: |