Anonymous
Коллеги подскажите, как правильно подключать vars написанные для одной роли, в другой. Например имееются в group_vars/role1/vars.yml. нужные мне данные я в плейбу role2 хочу использовать ихже, использовать. include ? или еще что то есть
Anonymous
не оч понял, они у меня и так лежат на глобальном уровне только в хост группе
Anonymous
сейчас так group_vars/ role1/vars.yml
Anonymous
я не оч хочу переносить их в all а хочу использовать в рамках хостугрыпп role2
Anonymous
пока самое близкое нашел https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#defining-variables-in-files
Anonymous
но не совсем то
Anonymous
да
Timur
Ну и?
Timur
Делай другую группу и включай туда группу role1
Timur
Переменные в нее тоже подтянутся
Anonymous
ну в примере выше - hosts: role1 это где лежат варс
Anonymous
а для второго плейбука это будет - hosts: role2
Timur
Без проблем
Timur
Просто в role2 включи role1
Anonymous
в котором я и хочу. инклю из первого сделать
Anonymous
через импорт роли ?
Timur
При чем тут роли?
Timur
Речь о группах
Anonymous
опечатался, понял о чем вы
Timur
Почитайте о том, как организуется инвентарь в ансибле
Timur
Что такое хосты, группы и групповые переменные
Anonymous
еще вопрос, если я буду делать через meta/main.yml типа такого --- dependencies: - role: 0100-role1
Anonymous
то могу я потом в group_vars/role2/vars.yml переопределить часть переменных что берутьс из group_vars/role1/vars.yml
Timur
то могу я потом в group_vars/role2/vars.yml переопределить часть переменных что берутьс из group_vars/role1/vars.yml
Я бы посоветовал вам пересмотреть подход к организации структуры проекта
Timur
Во-первых
Timur
не нужно путать группы с ролями
Timur
Во-вторых, определитесь с тем, какие переменные откуда у вас должны подтягиваться и по каким группам группироваться
Timur
В третьих, не нужно использовать зависимости из meta, если не очень хорошо понимаете - что это такое и для чего вы это делаете
Anonymous
ладно ладно - убедили. Пока перенесу в all
inqfen
привет честному народу
inqfen
- name: add masters to sans set_fact: sans: "{{ sans }} + [hostvars[item]['external_address']]" with_list: groups['master'] как эту фигню корректно написать?
inqfen
я подобное писал, но чот не помню уже
Timur
Что хочешь сделать?
inqfen
groups['master'] лист из хостов, нужно в цикле взять переменную хоста external_address и добавить в лист sans
inqfen
Я подобное вроде через for jinja врода правда писал\
Timur
with_inventory_hostname
inqfen
"sans": "['example.com'] + [hostvars[item]['external_address']]" тот же результат
Timur
Что ты хочешь получить на выходе?
Timur
Покажи пример
inqfen
["example.com", "1.1.1.1","2.2.2.2"]
inqfen
аналог list = ["example.com"] for host in hosts: list = list.append(host['external_address'])
Timur
Минутку
Timur
vars: sans: - example.com tasks: - name: test debug: msg: "{{ sans + groups['master'] }}"
Timur
Так не устраивает?
inqfen
Так нужно не лист добавить
inqfen
А для каждого элемента листа хостов взять переменную хоста и ее добавить
inqfen
Вот так взлетело - name: list for masters set_fact: masters: "{{ groups['master'] }}" - name: add masters to sans set_fact: sans: "{{ sans + [hostvars[item]['external_address']] }}" with_list: "{{ masters }}"
inqfen
надо как оказалось groups['master'] сначала в переменную вынести отдельную и все работает
Timur
Это лишний шаг
inqfen
Действительно
inqfen
Странно, почему падало
inqfen
Видимо я где-то тогда накосячил с синтаксисом, поправил и не заметил
Никита
разъясните как передаются переменные, есть плейбук, допустим в корневой папке, в папке ./roles лежат роли в ./roles/role1/vars/main.yml настройки этой роли в ./vars/all_vars.yml содержатся все переменные из всех ролей почему не подхватываются переменные из ./vars/all_vars.yml или и не должны?
George
Или у тебя есть хост или переменные групв
George
И ещё. Я был уверен, что не all_vars.yaml, а надо так /vars/all/vars.yaml
Никита
ок спасибо
George
Чего думаешь ? Калека помогает калеке :-)
Никита
ну я all_vars прямо указываю ansible-playbook master.yml -e vars/all_vars.yml -i hosts/hosts
Никита
там еще изначально собака была типа -e @vars/all_vars.yml но я хз что это значит
George
А зачем так ?
Никита
я хз как надо) мой первый плейбук
George
я хз как надо) мой первый плейбук
Прочитай про структуру vars, и выкинь -e ...
Никита
ок
Никита
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html вот это?
George
Необходимое условие для запуска плейбука : 1. Указать инвентори через -i 2. Указать файл плейбука
Никита
group_vars/all.yml у меня тоже есть но там другие переменные
Никита
оттуда хватается нормально
George
group_vars/all.yml у меня тоже есть но там другие переменные
Вот они и подкидываются наверное...
Никита
https://github.com/stancel/add-server-to-bareos-backups я вот эту штуку урезаю до необходимого функционала
Никита
я уже начал вкуривать, что проще с нуля написать)
John
Парни, а как в таске получить значение переменной? system_accounts: - login: LOGINT publickeys: - keyname: KEYNAMET key: "AAA" keytype: RSA Сам таск - debug: msg: "{{ item.publickeys.keyname }} and {{ item.publickeys.keyname.key }} " with_items: "{{ system_accounts }}" tags: userlist