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:

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.

  • Puppet: il managedhome sul tipo di utente funziona solo quando l'utente non esiste
  • Installazione di Jenkins con Puppet non riesce ad importre il tasto GPG
  • propagazione propagazione fantoccio dal nodo al model erb?
  • Aggiorna automaticamente i certificati master del burattino nel nuovo certificato
  • I rapporti Puppet potrebbero essere rimossi una volta che questi sono stati elaborati da Puppet-dashboard o PuppetDB?
  • Puppet: Come sostituire / ridefinire la class di figlia esterna (usecase e esempio detailled)
  • Puppet realizzare utenti definiti
  • Costruire la variabile del burattino in base alle condizioni
  • 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.