2013-09-26 116 views
1

在Puppet 3中,我希望能够根据RPM软件包的安装版本在清单内进行分支。我认为这很简单,只需在包资源上查找version(或ensure?)属性并在条件表达式中使用它即可。但是对于我来说,即使在梳理参考手册之后,我也无法弄清楚如何从资源之外获取资源的属性。我可以从资源外部访问清单内的资源属性吗?

+0

这是不可能的,因为@ mrhobo说。关键在于你在傀儡中描述了你想要的状态(而没有别的);在这里你告诉傀儡你的期望状态取决于机器中已经安装的内容。这不是傀儡的目的。 –

+0

这不是真正的安装情况,而是从可用的RPM回购库中安装的东西,这是我无法控制的。 (但也许这是一个更好的方法来解决这个问题 - 把RPM放在我可以控制它们的地方。) – L2G

+1

好吧,我明白了。是的,你的清单应该说明你想要的rpm包的哪个版本(在代码中,在hiera或别的地方说过);然后,您可以基于该版本进行分支。如果您不能使用标准软件包puppet资源来安装软件包(您确定吗?可以配置puppet软件包资源:http://docs.puppetlabs.com/references/latest/type.html#package),那么您可以使用puppet exec来安装它:http://docs.puppetlabs.com/references/latest/type.html#exec –

回答

1

不幸的是,访问资源的属性是不可能的。看看我最近问的similar question。如果您将套餐版本设置为类属性,hiera数据或both,则可以使用这些来根据您的条件。