我对Ansible很陌生,在我的一本剧本中我面临着以下问题
可供选择的剧本任务代码:
- name: Delete existing dist folder
shell: "[ -d {{ base_path }}/dist ] && rm -rf {{ base_path }}/dist"输出:
fatal: [masked.amazonaws.com]: FAILED! => {
"changed": true,
"cmd": "[ -d /home/centos/masked/masked/dist ] && rm -rf /home/centos/masked/masked/dist",
"delta": "0:00:00.098034",
"end": "2018-09-26 20:26:06.940872",
"invocation": {
"module_args": {
"_raw_params": "[ -d /home/centos/masked/masked/dist ] && rm -rf /home/centos/masked/masked/dist",
"_uses_shell": true,
"argv": null,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"stdin": null,
"warn": true
}
},
"msg": "non-zero return code",
"rc": 1,
"start": "2018-09-26 20:26:06.842838",
"stderr": "",
"stderr_lines": [],
"stdout": "",
"stdout_lines": []如果我手动运行这个命令,它就能正常工作。
[ -d /home/centos/masked/masked/dist ] && rm -rf
/home/centos/masked/masked/dist有谁知道会有什么问题吗?
感谢你的回应。
提前谢谢。
发布于 2018-09-27 20:38:39
使用file模块删除目录,而不是shell
- name: Delete existing dist folder
file:
path: "{{ base_path }}/dist"
state: absent根据文献资料的说法,它非常接近rm -rf
如果是
absent,目录将被递归删除,文件或符号链接将被取消链接。注意,如果路径不存在,如果状态没有改变,缺席不会导致文件失败。
发布于 2018-09-26 20:40:46
non-zero return code
如果左手边的[ -d {{ base_path }}/dist ]值为false,则返回一个非零代码。使用三行形式代替。或者编写一个shell脚本并调用它,
if [ -d {{ base_path }}/dist ]; then
rm -rf {{ base_path }}/dist
fihttps://stackoverflow.com/questions/52525686
复制相似问题