为什么要使用“资源收集者”?

时间:2016-09-01 15:24:42

标签: puppet

我正在查看Puppet Forge上的OpenStack模块。这些模块使用“资源收集器”,所以我在这里阅读“资源收集器”:https://docs.puppet.com/puppet/latest/reference/lang_collectors.html

我仍然无法弄清楚为什么需要使用资源收集器?

以下是OpenStack / puppet-keystone模块使用资源收集器的示例:

$referringURL = $_SERVER['HTTP_REFERER'];
echo "<a href = '".$referringURL."/MyAccount/SearchUser.aspx' class='back'>Return to Search Users page</a>";

我想这会做资源排序;导致memcached服务资源在keystone :: service :: begin Anchor之前执行。我真的不知道什么是锚。我猜它用于资源排序?

1 个答案:

答案 0 :(得分:2)

资源收集器有多种用途:

  • 他们实现虚拟资源,或者根据收集器的形式收集导出的资源。虚拟资源的realize()功能也在此空间中播放,但除了收集器之外没有办法收集导出的资源。另见下文。
  • 它们可以在链式表达式中使用,例如您的示例演示,以设置排序约束。
  • 它们可用于覆盖资源参数。

在这些用途中,收藏家的财产有时会使他们特别方便,其中包括:

  • 收集器对目录中的所有匹配资源进行操作,包括在评估收集器表达式时尚未声明的任何资源,无论声明的位置或范围如何。
  • 收集器支持筛选谓词(例如title == 'memcached'),有助于微调收集哪些资源。当与标签结合使用时,这可能特别有用。
  • 收藏家可以收集零资源,这没关系。

最后一个似乎是您提供的具体示例的要点:因为最多只有一个Service具有title == 'memcached',所以整体表达式会导致该服务在{{1}之前同步如果它包含在目录中,但如果没有声明此类服务则无效,与manifest清单顺序无关。我不认为还有其他任何与解析顺序无关的方法来实现这一目标。