我正在尝试使用 Mongodb(分片)进行概念验证,并且我希望每次启动新集群时都运行一个命令,而不必在所有 sls 文件中添加行。我当前的初始化如下:
蒙戈副本4:27000 /usr/lib/mongo/init_addshard.js:
命令:
- run
- user: present
Replica4 这个词不是模板化的,我想知道一种能够做到这一点的方法,这样当我启动一个新集群时,我就不必触碰这个文件中的任何内容。
答案1
看看 salt pillar。但在你这样做之前,先看看下面我糟糕的 hack,全部在一个 init.sls 中:
{% for environment in 'test','production','development' %}
/etc/nginx/sites-available/{{ environment }}:
file:
- managed
- source: salt://templates/nginx.conf.template
- template: jinja
- defaults:
environment: {{ environment }}
/etc/ssl/private/{{ environment }}.key.pem:
file:
- managed
- source: salt://certs/{{ environment }}.key.pem
/etc/ssl/certs/{{ environment }}.cert.pem:
file:
- managed
- source: salt://certs/{{ environment }}.cert.pem
{% endfor %}
我正在为 nginx 配置 SSL 密钥,但你只需在其中输入 Replica4,它将扩展为环境。我只需根据需要添加环境,它就会为我同步所有内容。
你的可能看起来像这样:
{% for environment in 'Replica4','Replica5', %}
mongo {{ environment }}:27000 /usr/lib/mongo/init_addshard.js:
cmd:
- run
- user: present
{% endfor %}