У нас есть две разные среды: dev и production, управляемые одним сервером Salt. Что-то вроде этого:
base:
'dev-*':
- users-dev
'prod-*':
- users-prod
user-dev
и users-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
в users-common
, но это не сработало, потому что правильный синтаксис Jinja был set users = pillar['users'].items()
, и это не предназначалось для работы по состояниям Солта.
Итак, вопрос в том, как правильно это сделать?