如何使Ansible忽略失败的tarball提取?

bcm*_*cfc 13 ansible ansible-playbook

我在一本ansible剧本中有一个命令:

- name: extract the tarball
  command: tar --ignore-command-error -xvkf release.tar
Run Code Online (Sandbox Code Playgroud)

预计有些文件不会被提取,因为它们已经存在(-k标记).

但是,由于tar提取有错误代码,因此会导致整个playbook停止运行.

我该如何解决这个问题?如你所见,我试图--ignore-command-error无济于事.

ted*_*r42 32

你想使用这个ignore_errors参数:

- name: extract the tarball
  command: tar --ignore-command-error -xvkf release.tar
  ignore_errors: yes
Run Code Online (Sandbox Code Playgroud)

请参阅错误处理文档页面中的"忽略失败的命令".

ignore_errors当你能以某种方式检测到成功时,效果最佳 - 你可以register输出并检查它,或者你可以creates用来寻找特定的文件名.


udo*_*dan 9

ignore_errors: yes仍会出现错误,显示提示中的失败任务.如果您希望该任务以静默方式失败,您可以设置failed_when: false或更复杂的条件,如手册中所述:

- name: this command prints FAILED when it fails
  command: /usr/bin/example-command -x -y -z
  register: command_result
  failed_when: "'FAILED' in command_result.stderr"
Run Code Online (Sandbox Code Playgroud)

所以你可以搜索输出stderr.如果文件不可读,不存在或者其他什么,您可能仍然希望失败,但是当存档被破坏且无法提取时不会失败.