问题描述
我对木偶很陌生,所以希望您能帮助我解决毫无疑问的简单问题?
$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
之类的资源声明放入模块中的类中,然后使用一种或多种可用的机制指定要应用于每个节点的类。问题中提出的方法或多或少由内而外。