2014-12-04 39 views
1

我需要将我的支柱组织到子目录中。Saltstack支柱 - 使用子目录

/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 

但是,当我要求conf.sls对于变量info,没有任何工作:

salt '*' pillar.get app1.env1.info 

什么也没有显示!

我已经执行:

saltutil.refresh_pillar 

并重新启动盐的过程。

我应该怎么做才能使盐柱识别子目录?

回答

7

你的例子中有几个误解。在子目录中组织您的支柱文件不会转化为所产生的支柱变量的名称空间。子目录嵌套支柱文件中的变量仍然是支柱字典的根源。

为了在你支柱top.sls文件子目录,可以使用点符号:

创建支柱这么/测试/ 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 
0123从柱子的foo

获取价值

$ sudo salt lead pillar.get foo 
lead: 
    bar 

如果你想在命名空间的支柱字典变量,表示在这么/测试/ 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" 
} 
+0

感谢@西门-A- EUGSTER – 2015-11-20 15:12:04