我在我的hiera.yaml中添加了像这样的层次结构
- "nodes/%{::certname}"
- "locations/{::location}.yaml"
- "groups/%{::group}.yaml"
- common
对于节点,我知道Hiera通过节点资源将它们抬起来。但是它如何适用于位置或团体?我需要创建一个自定义事实吗?如果是,我该如何分配该事实。我可以在网站的节点定义中这样做。
node example.com{
::location = "new york"
::group = "mailer" ... }
对于节点,我知道Hiera通过节点向上看它们 资源。
我不是很肯定我理解你的意思,但我认为你有误会。
但是它如何适用于位置或组?
hiera插值插入了木偶变量的值和/或某些插值函数的结果。在这方面,certname
,location
和group
是相同的,但是certname
变量是由Puppet自动提供的,该变量基于代理商提供的证书以识别自身。(这是与节点块和节点termini完全正交的,尽管它们也是使用 the certname。)
我需要 创建自定义事实?
您可以这样做,因为代理提出的所有事实都可以作为顶级木偶变量可用。HIERA插值的变量不需要从事实中得出,但是在执行需要它们的Hiera查找之前,确实需要定义它们,并且目录构建器可以从目录构建器开始评估网站清单之前。
,如果是,我该如何分配该事实。
这完全是您如何实现事实的问题。
我可以在网站的节点定义中执行此操作。pp[?]
您不能在节点块中设置事实,但是您可以设置节点范围和top-scope 变量,然后将这些设置用于Hiera进行插值。对于节点范围,语法看起来像这样:
node example.com{
$location = "new york"
$group = "mailer"
# ...
}
对于顶部范围,它是相同的,就在节点块之外。另外,您可以通过外部节点分类器定义顶级变量(除其他方面)。