我正在为我们公司设计一个木偶架构。我非常喜欢用层次和YAML文件对节点进行分类的想法。但是,我真的希望能够应用不基于事实的YAML文件,或者将YAML文件导入到另一个YAML文件中。
例如NodeA.yaml
---
include webserver.yaml
include public.yaml
classes:
etc. . .
这将允许我尽可能重用我的代码。这样,当我改变我的web服务器配置时,我只需要在一个文件中做,而不是每个节点的YAML文件。
我也愿意考虑其他的解决方案。
- YAML不支持导入或包含
- (不推荐)您可以使用来自stdlib模块的loadyaml来实现所需的功能。查看
loadyaml
函数使用示例 -
只要设计合适的
hiera
层次结构,就可以很容易地实现预期的功能。我不明白你为什么不想用facter facts
?例如:在每个节点上定义自定义因子factlocation
。接下来定义一个层次结构::hierarchy: - "%{::location}"/"%{::fqdn}" - "%{::location}"/common - common
接下来,在文件
location_1/node1.yaml
中,仅为该node1定义特定的数据。在文件location_1/common.yaml
中定义location_1
中所有节点的公共数据。在common.yaml
中,您定义了所有节点的公共数据。如果某些数据对于所有节点都是通用的,那么您只需在common.yaml
中定义一次即可。不必在每个节点的yaml文件中冗余地定义