如何在Puppet中访问节点数组中的每个节点

问题描述

我对木偶很陌生,所以希望您能帮助我解决毫无疑问的简单问题?

我有一个节点数组,如下所示:

$nodesArray =   ['abc123.server.domain.net','bcd234.server.domain.net','cde345.server.domain.net','def456.server.domain.net','efg567.server.domain.net','fgh678.server.domain.net',]

我只是尝试使用Puppet的节点定义访问每个节点,以便可以在每个节点上安装应用程序。

$nodesArray.each| $individualNode | {
        node $individualNode {
               exec { 'install app':
                     command =>      '<command to install app>',}
        }
 }

尽管尝试了不同的操作,但我不断收到错误消息:

错误:无法为环境生产解析:节点abc123.server.domain.net上'individualNode'(文件:/root/script.pp,行:59,列:7)的语法错误

错误消息指向'node $ individualNode {'行,但是我看不到自己在做什么错误

解决方法

如果要声明具有相同内容的多个节点,则只需直接执行以下操作即可:

node 'abc123.server.domain.net','bcd234.server.domain.net','cde345.server.domain.net','def456.server.domain.net','efg567.server.domain.net','fgh678.server.domain.net' {
  exec { 'install app':
    command =>      '<command to install app>',}
}

但是请注意,Puppet最多会将一个节点定义与每个节点匹配,因此在多个这样的构造中列出任何节点都是无效的。

但是,一般来说,您会将Exec之类的资源声明放入模块中的中,然后使用一种或多种可用的机制指定要应用于每个节点的类。问题中提出的方法或多或少由内而外。