Puppet 具有哈希的傀儡关系
我希望按顺序运行以下代码,以便在执行脚本之前计算Puppet 具有哈希的傀儡关系,puppet,Puppet,我希望按顺序运行以下代码,以便在执行脚本之前计算servers\u字符串变量 不幸的是,puppet失败,出现以下错误: 错误:无法从远程服务器检索目录:服务器上的错误400:评估错误:非法关系操作数,无法与哈希形成关系。需要目录类型。 代码片段: $servers = [{ name => 'toto', ip => '10.0.0.1'}, { name => 'titi', ip => '10.0.0.2' }] $servers.each | Hash $ser
servers\u字符串变量
不幸的是,puppet失败,出现以下错误:
错误:无法从远程服务器检索目录:服务器上的错误400:评估错误:非法关系操作数,无法与哈希形成关系。需要目录类型。
代码片段:
$servers = [{ name => 'toto', ip => '10.0.0.1'}, { name => 'titi', ip => '10.0.0.2' }]
$servers.each | Hash $server | {
if $servers_string != "" {
$servers_string = "${servers_string},"
}
$name = $server['name']
$servers_string = "${servers_string}${name}"
}->
file { '/my/path/myscript.sh':
ensure => file,
mode => '0700',
owner => 'root',
group => 'root',
source => "puppet:///modules/${module_name}/install.sh --servers '${servers_string}'"
}
有什么想法吗?感谢一般来说,资源关系,特别是链式操作符,是关于将资源应用于节点的顺序的。它们与目录生成器计算清单文件的顺序无关
清单总是按照从左到右、从上到下的顺序进行计算。您不需要使用连锁运营商来确保,也不能使用他们来更改它。只需删除chain操作符,您就可以了(至少在这方面)。不确定这是否已更改,但$servers\u string=“${servers\u string}${name}”
过去会失败。您无法重新定义已声明的变量(该变量似乎在bat之外声明为空或在添加逗号的if语句中填充)