处理状态文件和支柱文件的 saltstack 中的相对路径

Dealing with relative paths in saltstack for state files and for pillar files

我想在包含 sls 文件时使用相对路径。此方法在包含状态文件时有效,但在包含支柱文件时无效。

假设我的 salt master 上有以下结构:

file_roots:
  base:
    - /srv/salt/states

pillar_roots:
  base:
    - /srv/salt/pillars

假设我有以下文件:

/srv/salt/states/top.sls
/srv/salt/states/test/
/srv/salt/states/test/init.sls
/srv/salt/states/test/test_state.sls

在 top.sls 文件中,我包含这样的测试目录:

base:
  '*':
    - test

init.sls 文件然后包括这样的实际状态文件:

include:
  - .test_state

当我调用 highstate 时,一切都按预期工作。现在我对支柱数据使用相同的逻辑。这意味着我有以下文件:

/srv/salt/pillars/top.sls
/srv/salt/pillars/test/
/srv/salt/pillars/test/init.sls
/srv/salt/pillars/test/test_pillar.sls

在 test_pillar.sls 文件中,我放了一根这样的柱子:

test_pillar: text

init.sls 文件如下所示(类似于上面的 init.sls 文件):

include:
  - .test_pillar

当我现在调用 highstate 时,我收到以下错误消息:

Data failed to compile:
----------
Pillar failed to render with the following messages:
----------
Specified SLS '.test_pillar' in environment 'base' is not available on the salt master

所以我回到 init.sls 文件并将文件路径设置为绝对路径:

include:
  - test.test_pillar

现在可以了。

长话短说:salt 允许我在 init.sls 中为状态文件使用相对路径,但在对支柱数据执行相同操作时会出现问题。

这是预期的行为吗?或者我是否必须使用其他语法?

在此提交中添加了支柱文件的相对包含:https://github.com/saltstack/salt/pull/52156

但截至撰写本文时,即 2019 年 11 月 15 日,它似乎尚未发布。