2013-08-20 70 views
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 

,然後指usersusers-common,但這並沒有工作BEC使用適當的Jinja語法是set users = pillar['users'].items(),而這並不意味着在鹽州包括。

所以,問題是如何正確地做到這一點?

回答

2

在評估任何狀態(包括include語句)之前評估所有的jinja。

但是,我認爲你只需要在users-common內直接參考​​即可。它不允許你從該州內進入支柱嗎?