Задний план
У меня есть экземпляр Salt, настроенный с gitfs бэкэнд. По умолчанию здесь указывается мастер филиал, чтобы быть base
Окружающая среда. Итак, когда я выполняю:
salt <minion-id> state.apply
в top.sls файл выполняется по умолчанию.
Ситуация
Я хотел бы знать, есть ли способ указать / выполнить это top.sls файл, также указав saltenv
(для выбора ветки):
salt <minion-id> state.apply saltenv=<branch>
В настоящее время это возвращает:
minion-id:
-----------
ID: states
Function: no.None
Result: False
Comment: No Top file or external nodes data matches found.
Changes:
Я знаю, что могу определить несколько сред в top.sls файл, но значение, передаваемое в saltenv
несколько динамичный. Он всегда будет содержать значение feature/
, но это единственная постоянная часть. Я попытался добавить среду с подстановочными знаками в файл top.sls, но это вызвало ошибки компиляции. Я знаю, что у меня может быть двухэтапный процесс, в котором функциональные ветки объединяются с ветвью разработки, которая, в свою очередь, объединяется с главной, но я бы хотел избежать создания ветки разработки только для решения этой проблемы.
Вы можете установить динамическую связь между средами / ветвями, доступными для GitFS Salt, и верхним файлом с помощью Jinja.
В твоем top.sls
файл, вы можете иметь запись верхнего уровня:
{{ saltenv }}:
'*':
- foo.bar
...
{{ saltenv }}
будет заменен текущим контекстом среды. Обычно я определяю это во время выполнения через:
some-minion $ sudo salt-call saltutil.sync_modules saltenv=blah
some-minion $ sudo salt-call state.apply saltenv=blah