【问题标题】:Salt Stack: templating in SLS filesSalt Stack:在 SLS 文件中进行模板化
【发布时间】:2014-07-24 05:01:57
【问题描述】:

我正在使用 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 中删除 version 时,它会安装最新的 Firefox。

是否可以像我的示例中那样以某种方式参数化 SLS 状态?我在 Github (https://github.com/saltstack/salt/issues/8878) 上看到了一个问题,描述了使用 Jinja 宏执行此操作的方法,但没有设法将其用于我的情况。

【问题讨论】:

    标签: templates firefox selenium salt-stack


    【解决方案1】:

    可以使用 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/

    【讨论】:

    • 是的,我实际上做了几乎相同的事情,但是在 grains['id'] 中使用了 'firefox30'。
    • 很高兴听到!您介意将我的答案标记为解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多