test.sls 是我通过 Orchestrate 调用的状态文件,并通过 Pillar 给出 env 变量。如何获取 env 值并将其传递给 web_check sls 文件。
测试.sls
{% set env = salt.pillar.get('env') %}
{{ env }}_check:
salt.state:
- tgt: 'minion-id'
- sls: web_check # called sls state file
web_check.sls
{% if env == 'qa' %}
test:
cmd.run:
- name: ls -ltra /tmp
{% elif env == 'uat' %}
test:
cmd.run:
- name: ls -ltra /tmp/uat
{% endif %}
执行
salt-run state.orchestrate test pillar='{"env": "qa"}'
Pillar 通常是从编排传递数据的最佳方式:
{% set env = pillar["env"] %} # the value from the master's pillar (via CLI)
{{ env }}_check:
salt.state:
- tgt: minion-id
- sls: web_check
- pillar:
env: "{{ env }}" # overrides the minion's pillar
{% if pillar["env"] == "qa" %}
test:
cmd.run:
- name: ls -ltra /tmp
{% elif pillar["env"] == "uat" %}
test:
cmd.run:
- name: ls -ltra /tmp/uat
{% endif %}
但是,您在这里所做的事情看起来与 Salt Environments 的用途完全相同,您可以使用
saltenv
参数进行选择。