是否可以使用Jinja根据盐环境渲染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
2 回答
我认为仆从应该有一些认识来了解角色或环境 .
这是你能做的 .
Step 1 : 为小兵分配粮食,例如粒子名称
circle
或env
和值将取决于小兵的类型,即dev
,live
,staging
等 .Step 2 : 在状态文件中,您可以执行以下操作以获取
grain value
,然后基于circle
,您可以运行或分配值 . 这里我根据粒度值执行不同的cmd.run
test.sls
现在,如果您运行以下命令,它将根据圆圈运行命令 .
如果您对minions有绝对
id
,也可以这样做,例如如果dev minion id始终为dev-server
,则可以运行以下命令并对其应用条件 .我知道我有点晚了,但如果满足您的要求,请尝试这样做:
鉴于我认为您的top.sls文件中的 生产环境 /测试平台/开发环境如下所示:
生产环境 -
发展 -
试验台 -