我需要将我的支柱组织到子目录中。
/srv/pillar/
├── app1
│ └── env1
│ └── conf.sls
├── data.sls
└── top.sls
我已经加入了top.sls:
base:
'*':
- data
- app1/env1/conf
当我为变量info
请求data.sls时,它可以工作:
salt '*' pillar.get info
local:
some data
但是当我为变量info
请求conf.sls时,没有任何作用:
salt '*' pillar.get app1.env1.info
什么都没有!
我已经执行了:
saltutil.refresh_pillar
并重新启动salt进程。
如何让盐柱识别子目录?
答案 0 :(得分:7)
您的示例中存在一些误解。在子目录中组织支柱文件不会转换为生成的柱变量上的命名空间。子目录嵌套柱文件中的变量仍然位于支柱词的根部。
要在您的支柱top.sls文件中包含子目录,请使用点表示法:
创建支柱so / test / example.sls
cd /srv/pillar
mkdir -p so/test
echo 'foo: bar' > so/test/example.sls
编辑top.sls
base:
'*':
- users
lead:
- so.test.example
刷新对奴才的支柱'领先'
$ sudo salt lead saltutil.refresh_pillar
lead:
None
从柱子中提取foo的值
$ sudo salt lead pillar.get foo
lead:
bar
如果你想在柱头dict中命名变量,请在so / test / example.sls中表示:
$ cat /srv/pillar/so/test/examples.sls
so:
test:
foo: bar
$ sudo salt lead pillar.get so --out=json
{
"lead": {
"test": {
"foo": "bar"
}
}
}
$ sudo salt lead pillar.get so:test:foo --out=json
{
"lead": "bar"
}