Tema del burattino- ERB- Domanda su classi definite

I file del template Puppet sono file erb rail.

Voglio la linea:

Include modsecurity.d/*.conf

Per essere incluso nel file finale se la class mod_security è inclusa.

Dai documenti del burattino: http://docs.puppetlabs.com/guides/templating.html –

E questo snippet stamperà tutta la class definita nel catalogo:

 <% classs.each do |klass| -%> The class <%= klass %> is defined <% end -%> 

Condizionale:

 <% if broadcast != "NONE" %> broadcast <%= broadcast %> <% end %> 

Sono nuovo alla syntax. La definizione significa la stessa cosa inclusa? Per quale condizione dovrei controllare una class particolare, vale a dire se è definita (mod_security) …?

2 Solutions collect form web for “Tema del burattino- ERB- Domanda su classi definite”

Classi definite significa che la class è inclusa. Per essere chiari, il <% if broadcast ... bit non è il modo per verificare l'inclusione della class broadcast, ma piuttosto per la syntax di un condizionale utilizzando il valore della variabile di trasmissione, l'arrays arrays contiene i nomi di tutti le classi definite.

Questo sarebbe come verificare la class mod_security per esempio:

 <% if classs.include? ("mod_security")%>
 text condizionale
 <% end%>

Edit:

Forse … il metodo è chiamato includere? non include ?. Fissato sopra.

Fare attenzione a farlo perché se la class è inclusa nella variabile 'classi' dipende da quando viene eseguito il test del burattino questo particolare model viene valutato e ciò potrebbe essere non deterministico. È molto probabile che il tuo model sarà valutato e poi in seguito durante l'esecuzione la tua class di mod_security viene inclusa e valutata.

Due modi per questo:

  1. se è ansible garantire che verrà aggiunto da un classificatore di nodes esterni, è sicuro

  2. meglio ancora, fare un fatto personalizzato che accerta la presenza di mod_security e utilizza tale factname come variabile condizionale.

    Facter.add ("mod_security_version") fa il setcode do version =% {rpm -qa | grep mod_security} se version.empty? version = 0 end end end versione

Poi nel tuo model:

 <% if ! mod_security_version.eql?("0") %> Include modsecurity.d/*.conf <% end %> 

Nota che questo deve essere un confronto di stringhe (non mod_security_version != 0 ) perché tutti i fatti di fatto sono le stringhe una volta che hanno colpito ERB.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.