Я взламываю puppetlabs-haproxy
модуль (https://github.com/puppetlabs/puppetlabs-haproxy), и я пытаюсь добавить возможность определять, должен ли конкретный прослушиватель haproxy включать прослушиватель статистики. Вот что у меня есть:
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.
}
Основное отличие в том, что я добавил параметр $stats_uri
, и я пытаюсь проверить, установлен ли он, и добавить пару ключ / значение в $options
если это.
В настоящее время я получаю синтаксическую ошибку, потому что вы, очевидно, делаете это не так, как я в отмеченной строке.
Итак, вопрос в том, как мне использовать $options
объект в зависимости от того, $stats_uri
стоит или нет?
Хорошо, $options['stats'] = 'uri /'
наверное работает. Но не делай так - в зависимости от непреднамеренного поведения - не лучшая идея.
Вместо этого сделайте разные параметры своими параметрами:
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 /'
}