Behauptungen und Einschränkungen

11

Ich erstelle eine Vorlage zum Erstellen einer Konfigurationsdatei, und der Dienst, der diese Datei verwendet, legt Einschränkungen für die Bezeichnerlängen fest.

Wenn ein Bezeichner länger als beispielsweise 6 Zeichen ist, wird der Dienst die Anwendung teilweise anwenden, fehlschlagen und den Knoten in einem inkonsistenten Zustand belassen.

Wie kann ich eine Zusicherung durchführen, um einen Fehler bei der Bereitstellungstransaktion auszulösen und zu verhindern, dass der Dienst der Zielknoten falsch konfiguriert wird?

Mein besonderer Umstand ist Salt, aber ich wäre gespannt, wie andere Systeme das Problem ebenfalls lösen.

Michael Mol
quelle
Nun, beim Küchenchef werde ich eine Flusenregel hinzufügen, entweder rspec oder foodcritic, oder sicherstellen, dass die Kennung im Rezept übereinstimmt. Keine Ahnung für Salz, ich glaube nicht, dass es eine gerenische Antwort gibt, da jeder Konfigurationsmanager seine eigene Spezifität hat
Tensibai
Ich werde die Antwort etwas weniger spezifisch bearbeiten.
Michael Mol
Im Moment wäre meine derzeitige Überlegung für eine Saltstack + Jinja-Lösung ein Makro, das versucht, aus einer Datei zu lesen, die nicht existieren kann. Andere Renderer würden anders funktionieren. Ein Python-Renderer wäre beispielsweise trivial. einfach eine Ausnahme auslösen.
Michael Mol

Antworten:

7

In Ansible: können Sie assertoder failModul verwenden.

- name: "Make sure web_sites is dictionary"
  fail: msg="web_sites should be dictionary"
  when: web_sites is not dict  


- name: "cluster_name should be shorter than 6 chars"
  assert: 
       that: cluster_name|len <= 6

In Puppet: Es gibt nicht Funktion bei der Analyse der Phase ausgewertet , die Fehler auf Server verursachen Parsen (siehe Frage auf Stackoverflow )

 if length($cluster_name) > 6 {
      fail("Cluster name is too long. Should be less than 6 chars.")
 }
Věroš K.
quelle