Raccogliere e passare i parametri abitrari in Puppet

C'è un modo per (a) accettare argomenti arbitrari a una class o una definizione di risorse e quindi (b) passare tali argomenti ad un'altra class o definizione delle risorse?

Trovo spesso che quello che scrivo è un sottile involucro su un tipo nativo o su un module di terze parti. Per esempio:

  • Puppet: command di shell in esecuzione quando il file (o il pacchetto) viene aggiornato
  • Burattino: fonte di file condizionale
  • Burattino, impostazione delle dependencies
  • Le variables del burattino non sempre funzionano
  • Patching con il burattino
  • file di servizio attraverso Puppet: "Imansible valutare"
  • define myconfigfile { file { "/path/to/$name": owner => lars, group => lars, ... } } 

    Cioè, myconfigfile è effettivamente abbreviato per un insieme di risorse di file con un prefisso noto. Vorrei davvero che myconfigfile accettasse gli stessi parametri del tipo di risorsa di file (come content , source , ecc.), Ma vorrei evitare:

     define myconfigfile ( $content = undef, $source = undef ) { ... } 

    Questo funziona bene quando ci sono solo uno o due parametri, ma diventa imansible gestire se cerco di avvolgere una class parametrizzata con un sacco di parametri.

    One Solution collect form web for “Raccogliere e passare i parametri abitrari in Puppet”

    Una possibilità sarebbe quella di utilizzare un hash per passare in un elenco arbitrario di parametri.

    Un'altra opzione, e forse meglio, sarebbe quella di utilizzare il Ruby DSL che ti permette di usare Ruby anziché il linguaggio Puppet.

    Esistono anche una serie di esempi .

    Essenzialmente, si passerebbe nel hashmap poi utilizzare l'iterazione / loop di Ruby (l' object hash ruby ha un metodo .each) per estrarre le coppie chiave-valore dal hash.

    Il Ruby DSL è diventato disponibile in 2.6.x.

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