saltstack pillar 不遵循使用 init.sls with include 语句的规范

saltstack pillar does not follow the norm of using init.sls with include statements

定义 saltstack 状态时,您可以构建子目录,在这些子目录中,可以创建 init.sls 文件,这些文件带有指向其他 .sls 文件的 include 子句.我在定义 Pillar 时尝试了同样的事情,似乎 Pillar 不会在指定目录下寻找 init.sls 文件,他们似乎也不关心 include 子句。

这是一个例子:

#/srv/pillar/top.sls
base:
  '*':
    - dir1.dir2
    - dir1.dir5
#/srv/pillar/dir1/dir2/init.sls
include:
  - .users
  - .passwords

/srv/pillar/dir1/dir2 有以下文件

/srv/pillar/dir1/dir2/users.sls
/srv/pillar/dir1/dir2/passwords.sls
#/srv/pillar/dir1/dir5/init.sls
include:
  - .addresses
  - .names

/srv/pillar/dir1/dir5 有以下文件

/srv/pillar/dir1/dir5/addresses.sls
/srv/pillar/dir1/dir5/names.sls

在这个例子中,DRY 可能不是微不足道的——但是当事情变得更大时,更理想的是拥有允许 include 的定义,而不是现在必须按如下方式编写文件:

#/srv/pillar/top.sls
base:
  '*':
    - dir1.dir2.users
    - dir1.dir2.passwords
    - dir1.dir2.names
    - dir1.dir5.addresses

我是否遗漏了什么 - 关于如何实现我在这个用例中反映的内容的任何建议?

这是因为支柱的顶部文件是为了实现这一点。 Pillar 旨在为允许查看它的机器提供密钥和值。它没有包含其他人的概念。

我觉得你描述的是有可能的。如SaltStack Docu you can include pillars in other pillars. And also a init.sls (see Pillar Walkthrough中所述)是可能的。所以我不明白为什么你不应该完全按照你描述的那样去做。事实上,我只是用同样的方法做了,而且很管用!