2

我正在为我们公司设计一个木偶架构。我真的很喜欢用 hiera 和 YAML 文件对我的节点进行分类的想法。但是,我真的希望能够应用不基于事实的 YAML 文件或将 YAML 文件导入另一个 YAML 文件。

例如 NodeA.yaml

---
include webserver.yaml
include public.yaml

classes:
etc. . . 

这将允许我尽可能多地重用我的代码。这样,当我更改我的 Web 服务器配置时,我只需在一个文件中进行,而不是在每个节点的 YAML 文件中进行。

我也对其他解决方案持开放态度。

4

1 回答 1

3
  • YAML 不支持导入或包含
  • (不推荐)您可以使用stdlib模块中的loadyaml来实现所需的功能。检查这个使用函数的例子。loadyaml
  • 只需设计适当的hiera层次结构,您就可以轻松实现预期的功能。我不明白你为什么不想使用facter facts?例如:在每个节点上定义自定义因素 fact location。接下来定义一个层次结构:

    :hierarchy:
      - "%{::location}"/"%{::fqdn}"
      - "%{::location}"/common
      - common 
    

    接下来在文件中location_1/node1.yaml定义仅针对该节点 1 的数据。在文件中location_1/common.yaml定义所有节点通用的数据location_1。在common.yaml您定义所有节点通用的数据。如果某些数据对于所有节点都是通用的,那么您只需在其中定义一次即可common.yaml。您不必在每个节点的 yaml 文件中重复定义它。

于 2015-10-08T08:06:24.230 回答