Puppet:“$x.each...”出现语法错误
Puppet: Syntax error with '$x.each...'
我有以下代码:
define keepalived::vrrp_instance(
$state,
$interface,
$virtual_addresses,
$virtual_router_id,
$priority = $::keepalived::params::priority,
$advert_int = $::keepalived::params::advert_int,
$password = $::keepalived::params::password,
$notify_master = $::keepalived::params::notify_master,
$notify_backup = $::keepalived::params::notify_backup,
$notify_fault = $::keepalived::params::notify_fault,
$notify_all = $::keepalived::params::notify_all,
$smtp_alert = $::keepalived::params::smtp_alert,
) {
...
$virtual_addresses.each |$address| {
$splitted_address = split($address,' ')
if !is_ip_address($splitted_address[0]) {
fail("Error virtual_address Value: \"${address}\" not an ip address!")
}
}
...
}
$virtual_addresses 类似于 ['127.0.0.1 dev eth0','fd00::1 dev eth0']
运行 代码我得到以下错误:
Syntax error at '.'; expected '}' at /etc/puppet/environments/ip6_dev/modules_custom/keepalived/manifests/vrrp_instance.pp:136 on node
第 136 行是“$virtual_addresses.each |$address| {”
我找不到错误(https://docs.puppetlabs.com/references/3.stable/function.html#each)
我正在使用 Puppet 3.3.2
"note requires parser = future"
确保您在 Puppet 中使用未来的解析器。
在 puppet.conf
文件中设置 parser = future
或添加命令行开关 --parser=future
更新:
包装您的验证功能:
define verify::wrapper ()
{
$ip_address = split($name,' ')
if !is_ip_address("${ip_address[0]}") {
fail("Error virtual_address Value: \"${ip_address[0]}\" not an ip address!")
}
}
下次使用它:
define keepalived::vrrp_instance(...)
{
...
verify::wrapper{ $virtual_addresses : }
...
}
我有以下代码:
define keepalived::vrrp_instance(
$state,
$interface,
$virtual_addresses,
$virtual_router_id,
$priority = $::keepalived::params::priority,
$advert_int = $::keepalived::params::advert_int,
$password = $::keepalived::params::password,
$notify_master = $::keepalived::params::notify_master,
$notify_backup = $::keepalived::params::notify_backup,
$notify_fault = $::keepalived::params::notify_fault,
$notify_all = $::keepalived::params::notify_all,
$smtp_alert = $::keepalived::params::smtp_alert,
) {
...
$virtual_addresses.each |$address| {
$splitted_address = split($address,' ')
if !is_ip_address($splitted_address[0]) {
fail("Error virtual_address Value: \"${address}\" not an ip address!")
}
}
...
}
$virtual_addresses 类似于 ['127.0.0.1 dev eth0','fd00::1 dev eth0']
运行 代码我得到以下错误:
Syntax error at '.'; expected '}' at /etc/puppet/environments/ip6_dev/modules_custom/keepalived/manifests/vrrp_instance.pp:136 on node
第 136 行是“$virtual_addresses.each |$address| {”
我找不到错误(https://docs.puppetlabs.com/references/3.stable/function.html#each)
我正在使用 Puppet 3.3.2
"note requires parser = future"
确保您在 Puppet 中使用未来的解析器。
在 puppet.conf
文件中设置 parser = future
或添加命令行开关 --parser=future
更新: 包装您的验证功能:
define verify::wrapper ()
{
$ip_address = split($name,' ')
if !is_ip_address("${ip_address[0]}") {
fail("Error virtual_address Value: \"${ip_address[0]}\" not an ip address!")
}
}
下次使用它:
define keepalived::vrrp_instance(...)
{
...
verify::wrapper{ $virtual_addresses : }
...
}