【发布时间】:2015-12-09 16:43:59
【问题描述】:
我想按顺序运行以下代码,以便在脚本执行之前计算 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.
代码sn-p:
$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}'"
}
有什么想法吗?谢谢
【问题讨论】:
-
不确定这是否已经改变,但过去的
$servers_string = "${servers_string}${name}"会失败。您无法重新定义已声明的变量(它似乎被立即声明为空或填充在该 if 语句中添加逗号)
标签: puppet