Ich habe mit mount
und stat
Modul versucht. Beide haben Ihre Anforderungen nicht erfüllt.
Ich habe es geschafft, nur mit einem OS-Befehl zu arbeiten. Ich habe auf Redhat-, Debian- und SLES-Familien getestet.
vars:
- myvolume: /backup
tasks:
- command: mountpoint -q {{myvolume}}
register: volume_stat
failed_when: False
changed_when: False
- debug:
msg: "This is a mountpoint!"
when: volume_stat.rc == 0
Das Problem ist, mountpoint
Befehl Stderr erzeugt, wenn der Pfad nicht ein Mount-Punkt ist, so dass Sie ignore_errors
verwenden, ist Hexe keine gute Lösung.
EDIT 1: Ist durch @udondan erwähnt, failed_when
ist ein besserer Ansatz dann ignore_errors
, da es nicht Ausgabefehler der Fall ist.
Es kann sein, was Sie wollen, wenn Sie das Playbook stoppen müssen, wenn der Pfad kein Mount-Punkt ist.
Ich hoffe, jemand findet eine bessere Lösung als diese.
HINWEIS: Es gibt einige Plattformen, die nicht mountpoint
Befehl hat, soweit ich weiß, Darwin (Mac OSX) und SunOS (Oracle Solaris), wenn Sie diese brauchen auf diesen Systemen zu arbeiten, werden Sie muss eine andere Problemumgehung finden.
Ich glaube, um einen Mountpoint zu erstellen, muss das Ziel tatsächlich existieren. Ein vorhandener Pfad bedeutet jedoch nicht, dass er bereitgestellt wird. – udondan
Sie haben Recht @udondan, ich habe meine Antwort geändert. –
Anstatt 'ignore_errors: true' könnten Sie' failed_when: false' verwenden.Es ist ein bisschen weniger hässlich, weil es den Fehler in der Ausgabe nicht zeigen würde. Auf der anderen Seite würde es _alle_ Fehler überspringen. Ich weiß nicht, ob der Befehl 'Mountpoint' auf manchen Systemen nicht existiert. Das wäre etwas, an dem du versagen würdest. :) Aber wenn du so willst, kannst du mit der Bedingung 'failed_when' fiedeln. – udondan