我想按顺序运行以下代码,以便在脚本执行之前计算servers_string
变量。
不幸的是,puppet因以下错误而失败:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Illegal relationship operand, can not form a relationship with a Hash. A Catalog type is required.
代码段:
$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}'"
}
有什么想法吗?感谢
答案 0 :(得分:1)
一般而言,资源关系以及特别是连锁运营商关于资源应用于节点的顺序。它们与目录构建器评估清单文件的顺序无关。
总是按顺序从左到右,从上到下评估清单。您不需要使用链操作符来确保它,也不能使用它们来更改它。只要放下连锁经营者,你就没事了(至少在这方面)。