2015-02-04 1 views
1

웹 사이트의 기둥 데이터를 설정했습니다. 을 web_root, 가상 호스트와 MySQL :다른 기둥 데이터로 두 번 소금 상태를 실행 하시겠습니까?

web_root: 
    config_file: salt://some/path.conf 
    key: some data 
    directory_name: directoryA 

virtualhost: 
    config_file: salt://some/path.conf 
    name: websiteA 

mysql: 
    database: 
    - websiteA_db 

을 web_root, 가상 호스트와 MySQL (수식을 사용)에 대한 상태로이 맵.

다른 필러 데이터를 사용하여 이러한 상태를 여러 번 실행하는 미니언을 사용하고 싶습니다.

include: 
    - apache 
    - php 
{% for instance in [instanceA, instanceB] -%} 
    {% load pillar data /pillar/{{ instance }} -%} 
    - web_root #run the state 
    - virtualhost #run the state 
    - mysql #run the state 
{% endfor -%} 

이것은 가능합니까? 나는과 같이 기둥 데이터를 설정할 수 있습니다 알고

web_root: 
    instanceA: 
    config_file: salt://some/pathA.conf 
    key: some data 
    directory_name: directoryA 
    instanceB: 
    config_file: salt://some/pathB.conf 
    key: some data 
    directory_name: directoryB 

virtualhost: 
    instanceA: 
    config_file: salt://some/pathA.conf 
    name: websiteA 
    instanceB: 
    config_file: salt://some/pathB.conf 
    name: websiteB 

mysql: 
    database: 
    - websiteA_db 
    - websiteB_db 

을하지만, 예를 들어, 덜 읽을뿐만 아니라 사용하는 다른 구문하고, 내가 각 상태 파일에 루프를 추가해야한다는 것을 의미 mysql은 구문에 대한 요구 사항이 설정된 수식입니다.

답변

0

당신은 이런 식으로 뭔가를 할 것입니다 :

기둥 데이터

web_root: 
    instances: 
    A: 
     - name: A 
     - key: key_A_data 
    B: 
     - name: B 
     - key: key_B_data 

에게 주 파일

{% set names = salt['pillar.get']('web_root:instances') %} 

apache: 
    pkg.installed: [] 

{% for name in names %} 
instance{{ name }}: 
    - config_file: salt://some/path{{ name }}.conf 
    - key: {{ key }} 
    - directory_name: directory{{ name }} 
{% endfor %} 

를 그런 당신의 개체의 나머지 같은 일을한다. 이 방법을 사용하면 기둥에 객체를 추가 할 때 상태 파일을 변경할 필요가 없습니다.