如何将变量从orchestration传递到minion状态?

问题描述 投票:0回答:1

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"}'
salt-stack
1个回答
0
投票

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
参数进行选择。

© www.soinside.com 2019 - 2024. All rights reserved.