10

我们有两个不同的环境,开发和生产,由单个 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

然后引用usersin users-common,但这不起作用,因为正确的 Jinja 语法是set users = pillar['users'].items()并且这不打算在 Salt 状态包括。

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

4

1 回答 1

2

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

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

于 2013-08-21T17:20:00.097 回答