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) …?

  • Scrivere un file di configuration upstart per Unicorn
  • Quale configuration VPS sarebbe meglio?
  • NGINX Unicorn 504 Gateway Time-out
  • come abilitare la logging di redmine (ruby su binari)?
  • Imansible distribuire un'applicazione di rotaie usando il codice eb cli
  • Creazione di un contenitore docker da una distribuzione di capistrano
  • Nginx e Unicorn su macchine separate
  • session chef-server-webui non funziona quando l'accesso da un indirizzo IP esterno
  • 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.