Sintaxe correta para adicionar um par chave = valor ao objeto existente no fantoche?

3

Estou hackeando o módulo puppetlabs-haproxy ( link ) e estou tentando adicionar a habilidade para detectar se um determinado ouvinte haproxy deve ter um ouvinte de estatísticas ativado. Aqui está o que eu tenho:

define haproxy::listen (
  $ports,
  $ipaddress        = $::ipaddress,
  $mode             = 'tcp',
  $collect_exported = true,
  $stats_uri        = false,
  $options          = {
    'option'  => [
      'tcplog',
    ],
    'balance' => 'roundrobin',
  }
) {
  if ($stats_uri) {
    $options['stats'] => 'uri /' #<=======SYNTAX ERROR HERE
  }
  # Template uses: $name, $ipaddress, $ports, $options
  concat::fragment { "${name}_listen_block":
    order   => "20-${name}-1",
    target  => '/etc/haproxy/haproxy.cfg',
    content => template('haproxy/haproxy_listen_block.erb'),
  }

  if $collect_exported {
    Haproxy::Balancermember <<| listening_service == $name |>>
  }
  # else: the resources have been created and they introduced their
  # concat fragments. We don't have to do anything about them.
}

A principal diferença é que eu adicionei um parâmetro $stats_uri , e estou tentando testar se isso está definido e adicionar um par de chave / valor em $options se for.

Atualmente, estou recebendo um erro de sintaxe, porque obviamente você não faz isso como se estivesse na linha marcada.

Então, a questão é: como eu manipulo o objeto $options com base em se $stats_uri está definido ou não?

    
por growse 20.12.2012 / 15:58

1 resposta

1

Bem, $options['stats'] = 'uri /' provavelmente funciona. Mas não faça dessa forma - dependendo de um comportamento não intencional, não é uma boa idéia.

Em vez disso, torne as diferentes opções seus próprios parâmetros:

define haproxy::listen (
  $ports,
  $ipaddress        = $::ipaddress,
  $mode             = 'tcp',
  $collect_exported = true,
  $stats_uri        = false,
  $option           = [ 'tcplog' ],
  $option_balance   = 'roundrobin',
  $option_stats     = undef,
) {
  if ($stats_uri) {
    $options_stats = 'uri /'
  }
    
por 21.12.2012 / 06:27

Tags