Ich habe einen tasks.yml
, dass so etwas enthält:Abort, wenn keine der vorherigen Aufgaben ausgeführt wurden
- name: something on Debian wheezy
when: ansible_distribution == 'Debian' and ansible_distribution_version == '7'
- name: something on Debian jessie
when: ansible_distribution == 'Debian' and ansible_distribution_version == '8'
- name: something on Ubuntu
when: ansible_distribution == 'Ubuntu'
Ich möchte eine neue Aufgabe (oder etwas) hinzuzufügen, die die Textbuch wird abgebrochen, wenn keine dieser Aufgaben ausgeführt wurden.
Vielleicht "etwas" installiert ein Paket, und einige Aufgaben, die danach kommen, konfigurieren das neu installierte Paket. Wenn ich das Playbook auf einem RedHat-System laufe, wird dieses Paket nicht installiert, und ich möchte es abbrechen, bevor ich die Aufgaben ausführe, die es konfigurieren.
Ich glaube, ich könnte etwas tun, wie:
- fail: msg="abort!"
when: not (ansible_distribution == 'Debian' and ansible_distribution_version == '7') and not (ansible_distribution == 'Debian' and ansible_distribution_version == '8') and not ansible_distribution == 'Ubuntu'
... aber das ist ärgerlich. Gibt es eine bessere Lösung?
Sind Sie sicher, dass dies ein gutes Spielbuch Design ist? Ich würde es vorziehen, am Anfang der Playbook-Ausführung zu versagen, wenn das Betriebssystem nicht unterstützt wird, oder wenn es nicht wichtig ist, einfach die unnötigen Aufgaben zu überspringen. –
Richtig, das ist vielleicht besser, wenn man früh versagt, aber das bedeutet, dass man an zwei recht weit auseinander liegenden Orten nach unterstützten Betriebssystemen sucht, was ich auch nicht mag. Ich würde lieber dort versagen und wissen, dass das ist, warum dieses bestimmte Betriebssystem nicht unterstützt wird, und fügen Sie dann den Code hinzu, um etwas für dieses OS zu installieren und es einen Tag zu nennen. – Gohu