2015-03-12 6 views
12

Ich habe einen Befehl in einem ansible Textbuch:Wie mache ich Ansible ignorieren fehlgeschlagene Tarball-Extraktion?

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

Es wird erwartet, dass einige Dateien nicht, da sie bereits existieren extrahiert werden (-k Flag).

Dies führt jedoch dazu, dass das gesamte Playbook gestoppt werden kann, da ein Fehlercode aus der Tear-Extraktion besteht.

Wie kann ich das umgehen? Wie Sie sehen können, habe ich --ignore-command-error vergeblich versucht.

Antwort

31

Sie wollen das ignore_errors Argument verwenden:

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

Siehe "Ignore Failed Commands" in the Error Handling documentation page.

ignore_errors funktioniert am besten, wenn Sie in irgendeiner Weise Erfolg feststellen können - Sie können register die Ausgabe und das überprüfen, oder Sie können creates verwenden, um nach einem bestimmten Dateinamen zu suchen.

+1

Es ist 'ignore_errors', nicht' ignore_failures'. – udondan

+0

danke @udondan. – tedder42

+0

@ Tedder42, können wir 'ignore_errors' auf einer Playbook-Ebene anstelle einer Aufgabenebene geben? – Codebender

9

ignore_errors: yes wird weiterhin einen Fehler anzeigen, der die fehlgeschlagene Aufgabe in der Eingabeaufforderung zeigt. Wenn Sie diese Aufgabe wollen still scheitern, können Sie failed_when: false oder anspruchsvollere Bedingung festgelegt, wie in den manual beschrieben:

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

So könnte man die Ausgabe von stderr suchen. Sie möchten möglicherweise immer noch fehlschlagen, wenn die Datei nicht lesbar ist, nicht existiert oder was auch immer, aber nicht fehlschlägt, wenn das Archiv beschädigt ist und nicht extrahiert werden kann.

Verwandte Themen