我正在使用Salt Stack进行部署,需要将不同的浏览器版本部署到Selenium Grid节点(例如Firefox 29.0和30.0)。因此,从Salt的角度来看,我想在中使用以下内容top.sls:
base:
'firefox29':
- firefox
- version: 29.0
'firefox30':
- firefox
- version: 30.0
在这个例子中,我们重用firefox。sls :
firefox:
pkg.installed:
- skip_verify: True
- version: {{ version }}
我用最近的Salt(2014.1.7)尝试了上面的SLS文件,它们只是被忽略了(没有安装任何东西)。当我从firefox中删除版本时。sls它安装最新的Firefox。
是否有可能像我的例子那样以某种方式参数化SLS状态?我在Github (https://github.com/saltstack/salt/issues/8878)上看到了一个问题,描述了使用Jinja宏的方法,但没有设法将其用于我的情况。
您可以使用jinja宏:
firefox:
pkg.installed:
{% if grains['id'] == 'firefox29' %}
- version: 29.0
{% elif grains['id'] == 'firefox30' %}
- version: 30.0
{% endif %}
如果它变得比这更复杂,你应该投资于学习支柱并保持这种逻辑。http://docs.saltstack.com/en/latest/topics/pillar/