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

时间:2015-03-12 15:23:29

标签: ansible ansible-playbook

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

- name: extract the tarball
  command: tar --ignore-command-error -xvkf release.tar

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

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

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

2 个答案:

答案 0 :(得分:32)

您想使用ignore_errors参数:

- name: extract the tarball
  command: tar --ignore-command-error -xvkf release.tar
  ignore_errors: yes

请参阅"Ignore Failed Commands" in the Error Handling documentation page

ignore_errors在以某种方式检测到成功时效果最佳 - 您可以register输出并检查,或者您可以使用creates查找特定文件名。

答案 1 :(得分:9)

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

- 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"

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