Я пытаюсь проверить концепцию с помощью Mongodb (сегментирование), и мне хотелось бы запускать команду каждый раз, когда я запускаю новый кластер, без необходимости добавлять строки во все мои файлы sls. Моя текущая инициализация выглядит следующим образом:
монго Реплика4: 27000 /usr/lib/mongo/init_addshard.js:
cmd:
- run
- user: present
Слово Replica4 не является шаблонным идентификатором, хотелось бы знать, каким образом я смогу это сделать, чтобы при запуске нового кластера мне не пришлось бы ничего трогать в этом файле.
Взгляните на соляной столб. Но прежде чем вы это сделаете, ознакомьтесь с моим ужасным хаком ниже, все в одном файле 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 %}
Моя настраивает ssl-ключ для nginx, но вы просто вставляете туда Replica4, он будет расширен как Окружающая среда. Я просто добавляю среды по мере необходимости, и это все синхронизируется за меня.
Ваш может выглядеть примерно так:
{% for environment in 'Replica4','Replica5', %}
mongo {{ environment }}:27000 /usr/lib/mongo/init_addshard.js:
cmd:
- run
- user: present
{% endfor %}