如何让 Ansible 忽略失败的 tarball 提取?
How do I make Ansible ignore failed tarball extraction?
我在 ansible 剧本中有一个命令:
- name: extract the tarball
command: tar --ignore-command-error -xvkf release.tar
预计某些文件不会被提取,因为它们已经存在(-k
标志)。
但是,这会导致 ansible 停止整个剧本,因为 tar 提取中存在错误代码。
我该如何解决这个问题?如您所见,我已尝试 --ignore-command-error
无济于事。
您想使用 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
查找特定文件名。
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
的输出。如果文件不可读、不存在或其他原因,您可能仍然希望失败,但当存档损坏且无法提取时,您不会失败。
我在 ansible 剧本中有一个命令:
- name: extract the tarball
command: tar --ignore-command-error -xvkf release.tar
预计某些文件不会被提取,因为它们已经存在(-k
标志)。
但是,这会导致 ansible 停止整个剧本,因为 tar 提取中存在错误代码。
我该如何解决这个问题?如您所见,我已尝试 --ignore-command-error
无济于事。
您想使用 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
查找特定文件名。
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
的输出。如果文件不可读、不存在或其他原因,您可能仍然希望失败,但当存档损坏且无法提取时,您不会失败。