SaltStack-覆盖和引用支柱值

时间:2019-07-31 18:27:11

标签: python-3.x python-2.7 amazon-ec2 salt-stack

我对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

0 个答案:

没有答案