2013-08-20 4 views
10

우리는 하나의 솔트 서버로 관리되는 dev와 production의 두 가지 환경을 가지고 있습니다. 이 같은 뭔가 :솔트 스테이트에서 반복되는 것을 피하는 방법은 무엇입니까?

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-commonusers을 참조하는, 그러나 이것은 벡 작동하지 않았다 적절한 Jinja 구문은 set users = pillar['users'].items()이었고 이것은 Salt states includes에서 작동하도록 의도되지 않았습니다.

그럼 어떻게해야 제대로 할 수 있습니까?

답변

2

상태 (include 문 포함)가 평가되기 전에 모든 진자가 평가됩니다.

그러나 을 users-common으로 직접 참조 할 수는 있습니다. 그 주에서 기둥에 접근하는 것을 허용하지 않습니까?

관련 문제