【问题标题】:How to avoid repeating myself in Salt states?如何避免在盐州重蹈覆辙?
【发布时间】:2013-08-22 01:20:00
【问题描述】:

我们有两个不同的环境,开发和生产,由单个 Salt 服务器管理。 像这样的:

base:
  'dev-*':
    - users-dev
  'prod-*':
    - users-prod

user-devusers-prod 状态几乎相同,如下所示:

{% for user, data in pillar['users-dev'].items() %}
{{ user }}-user:
  user.present:
    < ...something... >
{{ user }}_ssh_auth:
  ssh_auth.present:
    < ...something... >
{% endfor %}

我们不想复制代码,所以我们最初的想法是做这样的事情:

{% users = pillar['users'].items() %}
include:
  - users-common

然后在 users-common 中引用 users,但这不起作用,因为正确的 Jinja 语法是 set users = pillar['users'].items(),而这不适用于跨 Salt 状态包括。

那么,问题是如何正确地做到这一点?

【问题讨论】:

    标签: configuration-management salt-stack


    【解决方案1】:

    在评估任何状态(包括 include 语句)之前评估所有 jinja。

    但是,我认为您可以直接在 users-common 中引用 pillar['users'].items()。是不是不允许你从那个状态访问柱子?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 2015-05-15
      • 1970-01-01
      • 2020-05-18
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多