gpt4 book ai didi

salt-stack - Saltstack——如何使用基于saltenv的Jinja逻辑

转载 作者:行者123 更新时间:2023-12-03 16:49:23 25 4
gpt4 key购买 nike

是否可以使用 Jinja 渲染基于 salt 环境的 Salt 状态文件?

这是一个为服务器设置时区的简单示例。如果我们在“开发”环境中,我想将时区设置为纽约,否则时区应设置为伦敦。

timezone.sls

{% if saltenv == 'dev' %}
America/New_York
{% else %}
Europe/London
{% endif %}
timezone.system

执行 salt '*' state.sls timezone saltenv='dev' 给出错误:

Rendering SLS "base:timezone" failed: Jinja variable 'saltenv' is undefined; line 1

编辑 - 根据要求,这里是“top.sls”文件的内容:

base:
'*':
- basic
- git

最佳答案

我觉得minion应该有一些身份,知道角色或环境。

这是您可以执行的操作。

第 1 步: 将 grain 分配给 minions,例如grain 名称 circleenv 和值将取决于 minion 的类型,即 devlive分期

salt '*dev*' grains.setval circle dev
salt '*live*' grains.setval circle dev

第 2 步: 在状态文件中,您可以执行以下操作以获取 grain value 并基于 circle 然后运行或赋值。这里我根据grain值执行不同的cmd.run

测试.sls

{% set circle = salt['grains.get']('circle', '') %}

run_cmd:
cmd.run:
{% if circle == 'dev' %}
- name: 'echo dev'
{% else %}
- name: 'echo live'
{% endif %}

现在,如果您运行以下命令,它将运行基于圆的命令。

salt '*' state.sls test

如果你有 minions 的绝对 id 也可以这样做,例如如果 dev minion id 始终是 dev-server 那么您可以运行以下命令并对其应用条件。

{% set id = salt['grains.get']('id', '') %}

关于salt-stack - Saltstack——如何使用基于saltenv的Jinja逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31940485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com