Читать книгу Handbuch Infrastructure as Code - Kief Morris - Страница 66
Idempotenz
ОглавлениеDas kontinuierliche Anwenden von Code ist eine wichtige Praxis für das Pflegen der Konsistenz und Kontrolle Ihres Infrastruktur-Codes, wie in »Code kontinuierlich anwenden« auf Seite 395 beschrieben wird. Dazu gehört ein wiederholtes Wiederanwenden von Code auf die Infrastruktur, um einen Drift zu vermeiden. Code muss idempotent sein, um sicher kontinuierlich angewendet werden zu können.
Sie können idempotenten Code beliebig häufig wiederholt laufen lassen, ohne die Ausgabe oder das Ergebnis zu verändern. Lassen Sie ein Tool mehrfach laufen, das nicht idempotent ist, kann das die Dinge ziemlich durcheinanderbringen.
Hier ein Beispiel für ein Shell-Skript, das nicht idempotent ist:
echo "spock:*:1010:1010:Spock:/home/spock:/bin/bash" \
>> /etc/passwd
Lassen Sie dieses Skript einmal laufen, erhalten Sie das gewünschte Ergebnis: Der Anwender spock wird zur Datei /etc/passwd hinzugefügt. Lassen Sie es zehnmal laufen, erhalten Sie zehn identische Einträge für diesen gleichen Anwender.
Mit einem idempotenten Infrastruktur-Tool geben Sie an, wie das Ergebnis aussehen soll:
user:
name: spock
full_name: Spock
uid: 1010
gid: 1010
home: /home/spock
shell: /bin/bash
Egal wie oft Sie das Tool mit diesem Code laufen lassen, wird es sicherstellen, dass nur ein Eintrag für den Anwender spock in der Datei /etc/passwd existiert. Keine unschönen Nebeneffekte.