运行ansible playbooks时,您经常会遇到一些用例,其中任务(通常是shell或命令)应该返回错误代码.
到目前为止,解决方案是注册结果并添加ignore_errors: true并稍后决定它是否是真正的错误.
现在,有一个问题:它会弄乱日志,因为你会看到红色错误
fatal: ...
...ignoring
Run Code Online (Sandbox Code Playgroud)
有没有办法避免这些,所以我们不会在日志中出现假错误?
Kon*_*rov 10
failed_when并且changed_when是为了帮助你:
- shell: echo good | grep bad
register: res
failed_when: false
changed_when: false
Run Code Online (Sandbox Code Playgroud)
尽管shell命令失败,这将始终是好的和绿色.
您还可以failed_when根据已注册的变量定义复杂语句.
Bar*_*cki -1
最好的方法是/sf/answers/2830161281/(使用changed_when和failed_when)。请注意,它从 Ansible 1.4 开始工作。
对于较旧的 Ansible 版本,我看到(和使用)的唯一方法是根本不运行可能失败的任务。when您可以为此使用条件 ( )。
首先需要检查条件并将检查结果分配给变量
- name: "check if condition is met"
command: some condition that populates result
register: result
- name: "some operation"
command: operation that runs only if result is not failed.
when: result|failed
Run Code Online (Sandbox Code Playgroud)
这包括一些样板代码(您需要人工步骤来测试条件),但我没有看到更好的替代方案。我相信这比用 污染日志要好fatal: ... ...ignoring。
| 归档时间: |
|
| 查看次数: |
3562 次 |
| 最近记录: |