Vor einer Änderung muss teilweise ein Dienst gestoppt sein, beispielsweise wenn man Eigenschaften eines Benutzers ändern, wenn unter diesem ein Dienst läuft.
Natürlich kann man im ansible task vor der der Änderung den Dienst stoppen und nachher starten, nur wäre das nicht mehr „idempotent“, da der Dienst dann auch gestoppt/gestartet würde wenn gar keine Änderung nötig ist.
Um dieses Problem zu Umgehen kann man mit dem check_mode vorher testen ob eine Änderung überhaupt nötig ist.
Hier ändern wir die Benutzereigenschaften des Benutzers „mydaemon“:
- user: name: mydaemon home: /srv/mydaemon shell: /bin/bash check_mode: yes register: needs_update - service: name=mydaemon state=stopped when: needs_update is changed - name: "Set home directory and shell of the mydaemon user" user: name: mydaemon home: /srv/mydaemon shell: /bin/bash - service: name=mydaemon state=started when: needs_update is changed |