Cod*_*der 4 ansible ansible-playbook
我对 Ansible 很陌生并且遇到了问题。我只想在满足条件时运行该模块,但如果条件失败,它应该使任务失败并向用户报告。目前我所做的,只会跳过它而不是失败。
下面是我的代码,我有要检查的条件,并且仅在 result.stdout == '有效' 时运行,但如果其'无效',我希望任务失败。目前,如果不满足条件,它只会跳过它。
---
- name: Check Value
become: yes
shell: /usr/bin/python3 check.py
args:
chdir: "mydir/scripts/"
register: result
tags: data_merge
- name: Merge Data
become: yes
when: result.stdout == 'valid'
local_action:
module: some_module
provider: "{{some_provider}}"
role_path: "{{role_path}}"
run_once: true
tags: data_merge
Run Code Online (Sandbox Code Playgroud)
您有三个选择:
用于failed_when使 playbook 无法检查条件。我建议向 python 脚本添加退出代码(例如:)exit(255 if error else 0),它比解析stdout:更干净
- name: Check Value
shell: /usr/bin/python3 check.py
args:
chdir: "mydir/scripts/"
register: result
failed_when: result.rc != 0
tags: data_merge
Run Code Online (Sandbox Code Playgroud)
fail将终止打印错误消息的应用程序:
- name: Fail on not valid
fail:
msg: failed
when: result.stdout != 'valid'
Run Code Online (Sandbox Code Playgroud)
meta: end_play将默默地停止应用程序(但如果您想要反馈输出,这可能没有用)
- name: Stop on not valid
meta: end_play
when: result.stdout != 'valid'
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,您都不再需要when: result.stdout == 'valid'合并数据了。
| 归档时间: |
|
| 查看次数: |
21458 次 |
| 最近记录: |