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

How to access each node in an array of nodes in Puppet

我是 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>',
               }
        }
 }

尽管尝试了不同的方法,我还是不断收到错误消息:

Error: Could not parse for environment production: Syntax error at 'individualNode ' (file: /root/script.pp, line: 59, column: 7) on node abc123.server.domain.net

错误消息指向 '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 之类的资源声明放入 modules ,然后使用一种或多种可用机制来指定将哪个 类 应用于每个节点。问题中提出的方法或多或少是由内而外的。