Я знаю, что с помощью соляной среды и конфигурации master / minion мы можем сделать практически все.
Мне нравится, что minion принимает конфигурацию из этой среды:
- общий
- прод
- 1010 * ОК *
- DEV
каждый миньон привязан к переменной env миньона, как minenv
положить где-нибудь зерно или столб (minenv - моя переменная)
если minionA привязан к minenv = 'qa' и привязан к websrv.sls в общих , prod , qa средах с помощью top.sls, websrv.sls в common должны быть переопределены из websrv.sls в prod , и это должно быть переопределено из websrv.sls в qa и websrv.sls в dev должны игнорироваться.
#minionA(minenv='qa')
/srv/salt/common/top.sls
common:
minionA:
- websrv
- db
- antivirus
/srv/salt/prod/top.sls
prod:
minionA:
- websrv
- db
/srv/salt/qa/top.sls
qa:
minionA:
- websrv
/srv/salt/dev/top.sls
dev:
minionA:
- websrv
- mail
Я бы хотел иметь поведение, подобное наследованию классов.
, поэтому, если есть конфигурация в общей среде, которая отсутствует в среде prod , ее необходимо применить, и если такая же конфигурация присутствует в prod конфигурация prod должна переопределять конфигурацию common .
Таким образом, в приведенном выше примере выполнение salt '*' state.apply
на миньоне А выполнит:
/srv/salt/qa/websrv.sls
/srv/salt/prod/db.sls
/srv/salt/common/antivirus.sls
|------common-----------------------------|
| |
| |---prod---------------------------| |
| | |---qa----------------------| | |
| | | |---dev-------| | | |
| | | | ... | | | |
| | | | | | | |
| | | |-------------| | | |
| | |---------------------------| | |
| |----------------------------------| |
|-----------------------------------------|
как это сделать?
все еще возможно?
полезно?
С наилучшими пожеланиями,
Leonardo