我为网站设置了支柱数据,例如web_root,virtualhost和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,virtualhost和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 :(得分: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 %}
然后对其余的对象做同样的事情。这样,在向柱子添加对象时,您不必更改状态文件。