puppet - 将节点分配给特定的层次结构
问题描述
我在 hiera.yaml 中添加了这样的层次结构
- "nodes/%{::certname}"
- "locations/{::location}.yaml"
- "groups/%{::group}.yaml"
- common
对于我知道的节点,hiera 通过节点资源查找它们。但它如何适用于地点或团体?我需要创建自定义事实吗?如果是的话,我怎样才能给节点分配这个事实。我可以在 site.pp 的节点定义中这样做吗:
node example.com{
::location = "new york"
::group = "mailer" ... }
解决方案
对于我知道的节点,hiera 通过节点资源查找它们。
我不确定我理解你的意思,但我认为你有误解。
但它如何适用于地点或团体?
Hiera 插值插入 Puppet 变量的值和/或某些插值函数的结果。 certname
, location
, 和group
在这方面是相同的,但certname
变量是由 Puppet 自动提供的,基于代理提供的证书来标识自己。(这与节点块和节点终端完全正交,尽管它们也使用证书名称。)
我需要创建自定义事实吗?
您可以这样做,因为代理提供的所有事实都可以作为顶级 Puppet 变量使用。由 Hiera 插值的变量不需要从事实派生,但它们确实需要在执行需要它们的 Hiera 查找之前定义,并且在目录构建器开始评估站点清单之前就可以使用事实。
如果是的话,我怎样才能给节点分配这个事实。
这完全是你如何实现 fact的问题。
我可以在 site.pp[?] 的节点定义中这样做吗?
您不能在节点块中设置事实,但可以设置节点范围和顶级范围变量,然后 Hiera 应该可以使用这些变量进行插值。对于节点范围,语法如下所示:
node example.com{
$location = "new york"
$group = "mailer"
# ...
}
对于顶级范围,它是相同的,只是在节点块之外。或者,您可以通过外部节点分类器定义顶级范围变量(除其他外)。
推荐阅读
- python-3.x - 在基于 pip 的 Python 安装中安装 conda 包
- acumatica - Acumatica 中的这张表在哪里?
- wordpress - 凯尔特字体 - eot, woff, ttf - webfont
- reactjs - 在反应 ag-grid 中动态显示/隐藏分页选项
- arrays - 从内存对齐的运行时 C 数组创建特征矩阵
- ios - 在 iOS 上运行的 plist 文件出现问题:Info.plist:在第 44 行遇到意外元素(plist 只能包含一个对象)
- node.js - 与前端应用程序共享 Prisma 类型?
- javascript - 在 bootstrap vue 中使用 @change 传递参数*和*单击的值
元素 - java - 我怎样才能坚持使用@Formula?
- python - 为数据框中列的每一行提取历史值,并在 Python 中将它们连接在一起