чего вдруг они должны как-то объединяться?
я хочу не странного, а странным способом. не ansible way. цель такая: с помощью групп формировать список приложений для хоста
Элементарно делается. У тебя же групп не 100500. В группе список: mq_apps: [....] web_apps: [....] При установке на хост: (mq_apps | default([])) + (web_apps | default([])) + (other_apps | default([]))
не, мне хотелось как раз один список для каждой группы, т.е. чтобы просто динамически состав приложений на хосте менть: добавил group_vars/app1.yml apps: - name: app1 param: 1 group_vars/app2.yml apps: - name: app2 param: 2 а потом как-то смержить, чтобы в include with_items
Ты хочешь обойти перекрытие переменных? O_o
только в конкретном месте
ну желание то вполне нормальное, просто энсибл его не разделяет
Это не нормальное желание. Вы пытаетесь реализовать вполне обычную вещь совершенно негодными средствами. При том, что есть куча годных.
Но зачем? ты хочешь "универсальную роль"?
Универсальная роль - нормально. Просто работа с переменными и группами делается не так.
Если сервисы собираются из одной кодовой базы и пр., деплоятся и настраиваются единообразно - это очень удобно. Но нужно быть готовым к нюансам.
Общие части в один список, опциональные - в другие списки. Явным образом. Можно задавать разные значения по группам. Но общий список должен составляться не объединением списков одной и той же переменной из разных групп, а из разных переменных.
идея в том, чтобы использовать один и тот же код для деплоя приложений однотипных с разными именами и параметрами, просто include with items
вот кратко, как мне хотелось 👆🏻
Код роли можете показать? Со списком
объявляешь один хост под разными именами но с одним ansible_host. суешь их в разные группы. получаешь то что хочешь. через месяц тебя ненавидят коллеги
- include_tasks: deploy.yml with_items: "{{ apps }}" deploy.yml - debug: msg: "{{ item.name }} {{ item.param }} with_items: - "{{ item.name }}" - "{{ item.param }}"
Ок. А что мешает сделать так. Берёте ваши любимые группы. Для каждой новой группы объявляете свою переменную с одинаковым префиксом, например. А в роли вытаскиваете все переменные списка с таким паттерном и мержите их обычным циклом по полученным переменным?
звучит интересно, но стремновато, следить же придётся за lookup, чтоб случайно не пересёкся. это будет план б
Обсуждают сегодня