Puppet - condicionalmente sobrescrevendo um valor padrão embutido

2

Pegue este wrapper em torno de ssh_authorized_key, por exemplo:

define sshauthkeys::helper ($user,$ensure='present') {


        ssh_authorized_key { "puppet: ${name2} ${user}":
          ensure => $ensure,
          type => $ssh_keys["${name2}"]["type"],
          key => $ssh_keys["${name2}"]["key"],
          user => "${user}"
        }
}

Digamos que eu queira introduzir o suporte do parâmetro 'target' para esse tipo de recurso, eu faria algo como:

define sshauthkeys::helper ($user,$ensure='present', $target='') {

O problema é que, se eu quiser usar o padrão sensível do fantoche derivado do homedir $ user - e substituí-lo em casos marginais, eu perco o benefício do trabalho feito para definir o padrão em todas as outras circunstâncias. .

Existe uma maneira de, opcionalmente, substituir o valor sem ter que escrever duas funções?

Melhor descrição do problema:

define sshauthkeys :: helper ($ user, $ assegure = 'presente', $ target = '') {

    ssh_authorized_key { "puppet: ${name2} ${user}":
      // etc etc...
      target = $target 
      // ^--- Here, I'm forcing it to '' - how do I use the puppet 
      // built-in derivation, and only override optionally?
    }

}

    
por thinice 13.08.2013 / 22:31

1 resposta

5

Nesse caso, definir target => undef é a mesma coisa que não especificá-lo, então você pode escrever seu wrapper assim:

define sshauthkeys::helper ($user,
  $ensure='present',
  $target=undef
) {
    ssh_authorized_key { "puppet: ${name2} ${user}":
      ensure => $ensure,
      target => $target,
      type   => $ssh_keys["${name2}"]["type"],
      key    => $ssh_keys["${name2}"]["key"],
      user   => "${user}"
    }
}
    
por 14.08.2013 / 02:26

Tags