Puppet 我可以访问资源吗';资源外部的清单中的属性?

Puppet 我可以访问资源吗';资源外部的清单中的属性?,puppet,Puppet,在Puppet 3中,我希望能够基于已安装的RPM包版本在清单中进行分支。我认为这很简单,只要在包资源上查找version(或sure?)属性并在条件表达式中使用它。但就我的一生而言,我不知道如何从资源外部获取资源的属性,即使在浏览参考手册之后也是如此。不幸的是,无法访问资源的属性。看看我最近问的一个问题。如果您的包版本基于类属性、hiera数据,或者您可以使用这些数据作为条件的基础。不幸的是,无法访问资源的属性。看看我最近问的一个问题。如果您的包版本基于class属性、hiera数据,或者您可

在Puppet 3中,我希望能够基于已安装的RPM包版本在清单中进行分支。我认为这很简单,只要在包资源上查找
version
(或
sure
?)属性并在条件表达式中使用它。但就我的一生而言,我不知道如何从资源外部获取资源的属性,即使在浏览参考手册之后也是如此。

不幸的是,无法访问资源的属性。看看我最近问的一个问题。如果您的包版本基于类属性、hiera数据,或者您可以使用这些数据作为条件的基础。

不幸的是,无法访问资源的属性。看看我最近问的一个问题。如果您的包版本基于class属性、hiera数据,或者您可以使用这些数据作为条件的基础。

正如@mrhobo所说,这是不可能的。关键是在木偶中,你描述了你想要的状态(而不是别的);在这里,您告诉puppet所需的状态取决于机器中已安装的内容。这不是puppet的目的,它不是已经安装了什么,而是将要从可用的RPM回购中安装什么,这是我无法控制的。(但也许这是解决问题的更好方法——把RPM放在我可以控制它们的地方。)好的,我明白了。是的,您的清单应该说明您想要的rpm包的版本(在代码、hiera或其他地方说明);然后,您可以基于该版本进行分支。如果您不能使用标准的package puppet资源来安装包(您确定吗?puppet package资源可以配置:),您可以使用puppet exec安装它:正如@mrhobo所说,这是不可能的。关键是在木偶中,你描述了你想要的状态(而不是别的);在这里,您告诉puppet所需的状态取决于机器中已安装的内容。这不是puppet的目的,它不是已经安装了什么,而是将要从可用的RPM回购中安装什么,这是我无法控制的。(但也许这是解决问题的更好方法——把RPM放在我可以控制它们的地方。)好的,我明白了。是的,您的清单应该说明您想要的rpm包的版本(在代码、hiera或其他地方说明);然后,您可以基于该版本进行分支。如果无法使用标准程序包puppet资源安装程序包(您确定吗?可以配置puppet程序包资源:),则可以使用puppet exec安装它: