Colete e repasse parâmetros abitentários em Puppet

4

Existe uma maneira de (a) aceitar argumentos arbitrários para uma definição de classe ou recurso e, em seguida, (b) passar esses argumentos para outra definição de classe ou recurso?

Muitas vezes descubro que o que estou escrevendo é uma capa fina sobre um nativo digite ou através de um módulo de terceiros. Por exemplo:

define myconfigfile {
  file { "/path/to/$name":
    owner => lars,
    group => lars,
    ...
  }
}

Ou seja, myconfigfile é efetivamente uma forma abreviada de um conjunto de arquivos recursos com um prefixo conhecido. Eu realmente gostaria de myconfigfile para aceitar os mesmos parâmetros que o tipo de recurso file (como content , source , etc), mas gostaria de evitar:

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

Isso funciona bem quando há apenas um ou dois parâmetros, mas torna-se incontrolável se eu estou tentando envolver uma classe parametrizada com muitos parâmetros.

    
por larsks 19.06.2012 / 19:18

1 resposta

0

Uma possibilidade seria usar um hash para passar uma lista arbitrária de parâmetros.

Outra opção, e talvez melhor, seria usar o DSL do Ruby , que permite que você use Ruby em vez da linguagem Puppet.

Também há uma variedade de exemplos disponíveis.

Essencialmente, você passaria no hashmap e usaria a iteração / looping do Ruby (o objeto de hash ruby tem um método .each para extrair os pares de valores-chave do hash.

O Ruby DSL tornou-se disponível em 2.6.x.

    
por 22.06.2012 / 21:57

Tags