我想知道是否有可能查找另一个Puppet资源的值,如下面的示例:
define foo( $username ) { $home = User[$username].home .... }
上面的语法不起作用,但这可能是因为我不太了解Ruby。
据我所知,这是不可能的。 原来,Puppet对variables使用了dynamic范围,但是从2.7.0开始不推荐使用。 在这里看到更多的信息,你应该做什么。
然而,在这个特定的情况下,我并不认为这是一个简单的范围界定。 事实上,我认为你应该使用虚拟资源或导出资源 。 实际上,它们都非常相似,除了导出的资源在主机间工作。
无论哪种方式,您都必须以与您想要做的完全不同的方式来构build您的代码,在我看来。 花一些时间看复杂的木偶模块,并了解他们如何去做他们所做的事情。
木偶有自己的语言,它不使用Ruby。 你可以定义一个资源如下:
define add_user ( $uid ) { $username = $title user { $username: home => "/home/$username", shell => "/bin/bash", uid => $uid } }
并用以下方式调用它:
add_user { tom: uid => 501 }
阅读更多 …