2013-08-20 16 views
10

Wir haben zwei verschiedene Umgebungen, Entwicklung und Produktion, die von einem einzigen Salt Server verwaltet werden. Etwas wie folgt aus:Wie vermeide ich mich in Salzstaaten zu wiederholen?

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

user-dev und users-prod Zustände sind so ziemlich das gleiche, wie folgt aus:

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

Wir wollten nicht den Code so unsere ursprüngliche Idee kopieren war, so etwas zu tun :

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

und dann zu users in users-common, Bezug zu nehmen, aber diese bec hat nicht funktioniert ause die richtige Jinja-Syntax war set users = pillar['users'].items() und das war nicht beabsichtigt, über Salt Staaten zu arbeiten umfasst.

Also, die Frage ist, wie man es richtig macht?

Antwort

2

Alle Jinja wird ausgewertet, bevor einer der Zustände (einschließlich der include Anweisungen) ausgewertet werden.

Allerdings würde ich denken, dass Sie direkt auf pillar['users'].items() innerhalb von users-common verweisen können. Gestattet es Ihnen nicht, von diesem Zustand aus auf die Säule zuzugreifen?