如何获取包含当前 sls 文件或模板的目录路径?

And*_*rew 5 salt-stack

一个具体的案例导致了一个更普遍的问题:我有一个盐配方,如下所示:

formula/
    init.sls
    some_other_state.sls
    defaults.yaml
Run Code Online (Sandbox Code Playgroud)

作为两个 sls 行为的一部分,我希望它们将 defaults.yaml 加载到字典中。我可以在其中任何一个中这样做:

{%- import_yaml formula/defaults.yaml as defaults %}
Run Code Online (Sandbox Code Playgroud)

...但是这会硬编码公式相对于盐树基础的位置,并且如果树被重组并且公式移动到(比如说)嵌套目录,则会破坏。

我尝试了这个:

{%- import_yaml (slspath + "/defaults.yaml") as defaults %}
Run Code Online (Sandbox Code Playgroud)

这适用于 init.sls,但不适用于 some_other_state.sls;原因是slspath前者扩展为包含目录,但后者扩展为完整路径。

我真正想要的是 slspath 的某种等价物,它总是扩展为“包含当前运行的 sls 的目录”。然后我可以指定我需要的相对路径。

这样的变量是否存在,如果存在,它是什么?

小智 4

您正在查找的变量是在0c78d7dctpldir中添加的。