Oleg
Anonymous
Коллеги подскажите, как правильно подключать vars написанные для одной роли, в другой. Например имееются в group_vars/role1/vars.yml. нужные мне данные я в плейбу role2 хочу использовать ихже, использовать. include ? или еще что то есть
Sergey
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
но не совсем то
Timur
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
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
Timur
Это лишний шаг
inqfen
Действительно
inqfen
Странно, почему падало
inqfen
Видимо я где-то тогда накосячил с синтаксисом, поправил и не заметил
Никита
разъясните как передаются переменные, есть плейбук, допустим в корневой папке,
в папке ./roles лежат роли
в ./roles/role1/vars/main.yml настройки этой роли
в ./vars/all_vars.yml содержатся все переменные из всех ролей
почему не подхватываются переменные из ./vars/all_vars.yml
или и не должны?
George
George
Или у тебя есть хост или переменные групв
George
И ещё. Я был уверен, что не all_vars.yaml, а надо так /vars/all/vars.yaml
Никита
ок спасибо
George
Чего думаешь ? Калека помогает калеке :-)
Никита
ну я all_vars прямо указываю
ansible-playbook master.yml -e vars/all_vars.yml -i hosts/hosts
George
Никита
там еще изначально собака была типа -e @vars/all_vars.yml
но я хз что это значит
George
А зачем так ?
Никита
я хз как надо) мой первый плейбук
Sergey
Никита
ок
Никита
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html
вот это?
George
Необходимое условие для запуска плейбука :
1. Указать инвентори через -i
2. Указать файл плейбука
George
Никита
group_vars/all.yml у меня тоже есть но там другие переменные
Никита
оттуда хватается нормально
George
Никита
https://github.com/stancel/add-server-to-bareos-backups
я вот эту штуку урезаю до необходимого функционала
Timur
Никита
я уже начал вкуривать, что проще с нуля написать)
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