与哈希的木偶关系

时间:2015-12-09 16:44:00

标签: puppet

我想按顺序运行以下代码,以便在脚本执行之前计算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}'"
}

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:1)

一般而言,资源关系以及特别是连锁运营商关于资源应用于节点的顺序。它们与目录构建器评估清单文件的顺序无关。

总是按顺序从左到右,从上到下评估清单。您不需要使用链操作符来确保它,也不能使用它们来更改它。只要放下连锁经营者,你就​​没事了(至少在这方面)。