Ralph Aichinger
2024-10-14 11:20:03 UTC
Ist hier die richtige Gruppe für Ansible? Nein, es ist nicht
strictly Linux, aber ich vermute doch, dass sich die Anwendung
im Wesentlichen auf Linux konzentriert? Vorschläge für besser
passende NGs werden angenommen.
Egal: Ich mach gerade relativ viel mit Ansible, und wollte mal
rumfragen, was die allgemeine Meinung über das "block/rescue"
(also quasi Exceptions) bei Ansible ist. Ich ertappe mich
derzeit dabei, dass ich das sehr oft mache, z.B. wenn ich
ein Zertifikat installieren will: Vorher checken ob es schon
installiert ist, und wenn ein Error kommt (es nicht installiert
ist) im "rescue" Teil die eigentliche Installation rein.
Vorteil: Keine irritierenden Changes wenn gar nichts gemacht
werden soll. Man kann auch sein Playbook noch mal laufen lassen,
und sieht daran, dass eben nix passiert, dass die abgefragte
Bedingung eingehalten ist (und kein Fehlerzustand passiert).
Nachteil: Man hat im "regulären" ersten Lauf einen Fehler im Log drin,
auch wenn gar nichts kaputt ist. Ich schreib immer zu der jeweiligen
Task dazu dass hier ein Fehler passieren darf.
Ist das eurer Meinung nach OK, sowas so zu lösen? Gibt es ein
eleganteres Konstrukt, das umfangreichere Bedingungen
(also nicht z.B. die Existenz einer einzelnen Datei, die man mit
"creates" nutzen kann) verwendet um Code auszuführen, das man
verwenden sollte. Was für mich auch den Charme von "block"/"rescue"
ausmacht, ist, dass die Bedingung "durchfällt", selbst wenn ein
*anderer* Fehler als eigentlich gedacht auftritt.
/ralph
strictly Linux, aber ich vermute doch, dass sich die Anwendung
im Wesentlichen auf Linux konzentriert? Vorschläge für besser
passende NGs werden angenommen.
Egal: Ich mach gerade relativ viel mit Ansible, und wollte mal
rumfragen, was die allgemeine Meinung über das "block/rescue"
(also quasi Exceptions) bei Ansible ist. Ich ertappe mich
derzeit dabei, dass ich das sehr oft mache, z.B. wenn ich
ein Zertifikat installieren will: Vorher checken ob es schon
installiert ist, und wenn ein Error kommt (es nicht installiert
ist) im "rescue" Teil die eigentliche Installation rein.
Vorteil: Keine irritierenden Changes wenn gar nichts gemacht
werden soll. Man kann auch sein Playbook noch mal laufen lassen,
und sieht daran, dass eben nix passiert, dass die abgefragte
Bedingung eingehalten ist (und kein Fehlerzustand passiert).
Nachteil: Man hat im "regulären" ersten Lauf einen Fehler im Log drin,
auch wenn gar nichts kaputt ist. Ich schreib immer zu der jeweiligen
Task dazu dass hier ein Fehler passieren darf.
Ist das eurer Meinung nach OK, sowas so zu lösen? Gibt es ein
eleganteres Konstrukt, das umfangreichere Bedingungen
(also nicht z.B. die Existenz einer einzelnen Datei, die man mit
"creates" nutzen kann) verwendet um Code auszuführen, das man
verwenden sollte. Was für mich auch den Charme von "block"/"rescue"
ausmacht, ist, dass die Bedingung "durchfällt", selbst wenn ein
*anderer* Fehler als eigentlich gedacht auftritt.
/ralph