傀儡 lambda 块失败的解析器验证
puppet lambda block failing parser validate
我正在尝试通过看书来学习木偶。该书有一个非常简单的示例,展示了使用带 each
的 lambda 块进行迭代。但是,我无法在我的 Ubuntu 框上执行它。
/vagrant/manifests/mountpoints.pp
$data = ['routers']
$data.each |String $item| {
notify {$item:
message => $item
}
}
代码无法通过 puppet parser validate
验证,我无法确定原因。
[tmp]$puppet parser validate /vagrant/manifests/mountpoints.pp
Error: Could not parse for environment production: Syntax error at '.' at /vagrant/manifests/mountpoints.pp:2
我的问题是:这个示例代码有什么问题?
如果你的书确实有那个,那么你可能应该停止使用那本书。对于 lambda 来说,这从来都不是正确的语法,即使在 3.8 和未来的解析器中也是如此。
正确的语法是:
$data = ['routers']
$data.each |$item| {
notify {$item:
message => $item
}
}
或使用 cleaner/tidier 样式(只给定一个元素、资源和一个与标题重复的参数):
['routers'].each |String $item| { notify { $item: } }
https://docs.puppet.com/puppet/latest/reference/lang_iteration.html 有一些关于迭代 lambda 的有用文档。
同样值得注意的是,您必须使用 Puppet >= 4 或 Puppet >= 3.2 <= 3.8 并启用未来的解析器才能在代码中使用 lambda。
我正在尝试通过看书来学习木偶。该书有一个非常简单的示例,展示了使用带 each
的 lambda 块进行迭代。但是,我无法在我的 Ubuntu 框上执行它。
/vagrant/manifests/mountpoints.pp
$data = ['routers']
$data.each |String $item| {
notify {$item:
message => $item
}
}
代码无法通过 puppet parser validate
验证,我无法确定原因。
[tmp]$puppet parser validate /vagrant/manifests/mountpoints.pp
Error: Could not parse for environment production: Syntax error at '.' at /vagrant/manifests/mountpoints.pp:2
我的问题是:这个示例代码有什么问题?
如果你的书确实有那个,那么你可能应该停止使用那本书。对于 lambda 来说,这从来都不是正确的语法,即使在 3.8 和未来的解析器中也是如此。
正确的语法是:
$data = ['routers']
$data.each |$item| {
notify {$item:
message => $item
}
}
或使用 cleaner/tidier 样式(只给定一个元素、资源和一个与标题重复的参数):
['routers'].each |String $item| { notify { $item: } }
https://docs.puppet.com/puppet/latest/reference/lang_iteration.html 有一些关于迭代 lambda 的有用文档。
同样值得注意的是,您必须使用 Puppet >= 4 或 Puppet >= 3.2 <= 3.8 并启用未来的解析器才能在代码中使用 lambda。