Asserzioni e vincoli


11

Sto costruendo un modello per creare un file di configurazione e il servizio che utilizza questo file pone vincoli sulla lunghezza dell'identificatore.

Se un identificatore è più lungo di, diciamo, 6 caratteri, il servizio otterrà parzialmente l'applicazione della configurazione, fallirà e lascerà il nodo in uno stato incoerente.

Come posso eseguire un'asserzione per innescare un errore di transazione di distribuzione, impedendo che il servizio dei nodi di destinazione venga configurato in modo errato?

La mia circostanza particolare è Salt, ma sarei curioso di vedere come anche altri sistemi risolvono il problema.


Bene, nello chef aggiungerò una regola di linting, o rspec o foodcritic o assicurerò che l'identificatore corrisponda alla ricetta. Nessuna idea per Salt, non credo che ci sia una risposta gerenica poiché ogni gestore della configurazione ha la sua specificità
Tensibai

Modificherò la risposta per essere un po 'meno specifico.
Michael Mol,

Al momento, la mia attuale contemplazione per una soluzione Saltstack + Jinja sarebbe una macro che tenta di leggere da un file che non può esistere. Altri renderer funzionerebbero diversamente. Un renderizzatore Python, per esempio, sarebbe banale; semplicemente lanciare un'eccezione.
Michael Mol,

Risposte:


7

In Ansible: è possibile utilizzare asserto il failmodulo.

- 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: esiste una funzione di errore valutata durante la fase di analisi che causa errori di analisi sul server (vedere la domanda su StackOverflow )

 if length($cluster_name) > 6 {
      fail("Cluster name is too long. Should be less than 6 chars.")
 }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.