我对Saltstack非常陌生,仍然在学习,所以如果有更好的做事方法,请告诉我。
我正在尝试传递替代值,并在可变支柱文件中级联使用该替代值。因此,我计划有一个default.sls
文件,其中包含所有其他支柱将使用的变量。我还希望能够从命令行覆盖default.sls
变量。
这是我在做什么:
文件结构:
/pillar/top.sls
/pillar/default.sls
/pillar/test.sls
在/pillar/top.sls
base:
'*':
- default
'test':
- match: glob
- test
在/pillar/default.sls
{% set home_location = salt['cmd.shell']('eval echo "~ec2-user"') %}
environment: dev
uniqueid: all
side: a
region: myregion
app: myapp
ipaddress: {{ grains['ip4_interfaces']['eth0'][0] }}
hostname: {{ grains['host'] }}
homedir: {{ home_location }}
docker:
- pip:
- version: 4.0.2
在/pillar/test.sls
test:
- log:
- group: logs-{{ pillar['environment'] }}-{{ pillar['uniqueid'] }}-{{ pillar['app'] }}
- stream: logs_{{ pillar['side'] }}_mysupertest_{{ pillar['ipaddress'] }}
这是我正在运行的命令locally
(无管理员):
salt-call --id 'test' pillar.items --local pillar='{"environment":"uat","side":"b"}'
它引发以下错误:
SaltRenderError:Jinja变量'salt.utils.context.NamespacedDictWrapper对象'没有属性'environment' [CRITICAL]支柱渲染错误:渲染SLS“测试”失败。有关详细信息,请参阅主日志。
因此它没有从default.sls
文件中获取值。我在做什么错了?
我还尝试将以下内容添加到test.sls
文件中,结果相同:
include:
- pillar://default