Grek 🇺🇦
потому что handlers должен быть на уровне tasks
Lex
Всем привет! А пользуется кто-нибудь https://docs.ansible.com/ansible/latest/plugins/inventory/tower.html вот этим плагином = динамик инвентори from tower/awx? Вопрос - как правильно достать сразу несколько инвентори из awx-а?
inqfen
Несколько раз указать
Anonymous
несколькими playbook?
Lex
если в одном файле - то берет только последнее пробовал inventory_id: 3 inventory_id: 9 если файл называется не tower_inventory.yml то ругается переназовите файл (пробовал несколько файлов)
Anonymous
в рамках одного playbook плагин будет работать только с одной "гранулой"
Lex
в рамках одного playbook плагин будет работать только с одной "гранулой"
переведу на свой язык. запустить один плэйбук на 2 динамик инвентори из одного плагина - не реально?
inqfen
Так можно inventory 2 раза задать и он в итоге в один это мерджит
Lex
Так можно inventory 2 раза задать и он в итоге в один это мерджит
2 раза... 2 разных файла? или в одном файле 2 набора переменных?
Anonymous
Так можно inventory 2 раза задать и он в итоге в один это мерджит
ну, это зависит от плагина. раз может то хорошо
inqfen
-i invetory1 -i inventory2
Anonymous
-i invetory1 -i inventory2
что-то я сомневаюсь
Dmitry
Есть модуль docker_container и не нужно костылять
Выше уже закрыли тред, что нельзя с помощью него такое сделать.
inqfen
что-то я сомневаюсь
Ну проверь с tower, это зависит от того как плагин написан
Anonymous
Ну проверь с tower, это зависит от того как плагин написан
это я уже и написал выше. может ок. не может увы
Lex
-i invetory1 -i inventory2
Failed to parse tower_inventory1.yml with auto plugin: inventory config 'tower_inventory1.yml' could not be verified by plugin 'tower'
Sergey
Звучит как какая-то хрень
По duck typing, кстати. и является хренью
Lex
Звучит как какая-то хрень
ну да - я предупредил что наркомания
Lex
а вообще поменялся конфиг - релиз, пересборка контейнера, перезапуска...зачем изобретать?
Lex
Ну значит конфиг для плагина не подходит
ага, переименовываешь в tower_inventory.yml и работает...он ждет определенное имя файла (
inqfen
ec2 плагин например ждет определенное окончание названия
inqfen
А не все название
inqfen
Посмотри в доках плагина
Dmitry
а вообще поменялся конфиг - релиз, пересборка контейнера, перезапуска...зачем изобретать?
>перезапуск Этого и нужно избежать, чтобы не отвалить висящих юзеров. Этот вопрос уже решен.
Anonymous
If reading from the YAML file, the file name must end with tower.(yml|yaml) or tower_inventory.(yml|yaml), the path in the command would be /path/to/tower_inventory.(yml|yaml)
Lex
да!
Anonymous
Хорошо
Lex
RTFM )) спасибо большое @inqfen
inqfen
Вообще как я понимаю, плагин должен уметь в инвентори несколько раз, чтобы его в доках опубликовали
inqfen
If the location given to -i in Ansible is a directory (or as so configured in ansible.cfg), Ansible can use multiple inventory sources at the same time.
inqfen
Потому что если он так не умеет - нарушает логику из документации, которую я выше привел
Anonymous
спасибо, я думал это чуток иначе работает
inqfen
А inventory -i 1 -i 2 - по сути мердж ямлов из нескольких каталогов, для ансибла нет разницы, два каталога с 1 файлом или 1 с двумя
Lex
Вообще отлично, это все еще можно и в ansible.cfg запихнуть и он все хавает...ммм шикарно
inqfen
А то, все для людей
Александр
Lev
https://habr.com/en/post/500058/ люди добрые, расскажите что я не так делаю в тестирование ansible?
Rainbow
Привет. В ansible можно в плейбуке при первом запуске генераторе токен, как-то сохранить локально и при последующих использовать? Вроде генерации var файла если его нет локально
Iwan
https://habr.com/en/post/500058/ люди добрые, расскажите что я не так делаю в тестирование ansible?
Подскажите пожалуйста, у вас везде используется плоская структура переменных? Т.е нигде нет hash/dictionary? BAD: Использовать hash/dictionary. --- user: name: admin group: admin GOOD: Использовать плоскую структуру переменных. --- user_name: admin user_group: "{{ user_name }}"
Lev
Подскажите пожалуйста, у вас везде используется плоская структура переменных? Т.е нигде нет hash/dictionary? BAD: Использовать hash/dictionary. --- user: name: admin group: admin GOOD: Использовать плоскую структуру переменных. --- user_name: admin user_group: "{{ user_name }}"
никогда не говори никогда. естесвенно есть сложные конструкции. Но как правило они находятся в vars, это как правило какие-то константы которые не должны переопределяться при вызове ролей
Anonymous
https://stackoverflow.com/questions/27733511/how-to-set-linux-environment-variables-with-ansible
Rainbow
Через переменные окружения подойдет?
Значение не известно пока половина плейбука не отработает. Схема запустить половину, посмотреть значение и потом засунуть в переменные не очень.
Sergey
Ну это если в общем и вкратце.
Rainbow
Igor
local_action же
Sergey
Я поглядываю на template: ... deletegate_to: localhost 😁
А толку-то? В гите всё равно будет без этого токена.
Sergey
Если есть подобная схема работы - что-то в консерватории не так.
Rainbow
Да так хоть тесты можно прогнать
Sergey
Ну это вопрос к тем, кто решил, что тестировать роли с завязками на внешний компонент/систему/API - замечательная идея.
Rainbow
Конкретно у меня ситуация, что я хочу написать роль для бустрапа consul+vault сгенерить конфиг включить консул consul acl bootstrap -> получи токен (один раз) consul create policy -> получи токен выполни команды с токеном на каждом хосте и так далее
Rainbow
Ну ок, в тестах будет мок. Дальше нужно развернуть 5 окружений
Rainbow
consul acl bootstrap одноразовая операция, но делать это руками 🤮
Sergey
Я бы написал модуль - и не парился.
Sergey
Мне на Python всякие хитрые случаи обработать намного проще, чем говнокодить на Ansible
Rainbow
тут смысл что кто-то локально должен сделать data > vars/tokens.yml может зашифровать, чтобы лежал в гите.
Rainbow
В общем спрашивал есть ли прямой путь. Кажется нет
Anonymous
уже предложил "permanent environment variables"
Anonymous
ссылку дал :)
Sergey
Нет, прямого нет. Как раз потому, что коллеги либо вообще это не делают, либо говнокодят, либо всё лежит в тридесятом репозитории за тридевятым файрволом.
Rainbow
Или забутстрапить 5 окружений раз в 5 лет РУКАМИ не зашквар 😁
Anonymous
обычно токены и прочии креды передают, через переменные окружения. тебе ничего не мешает написать генерирование токена и закинуть в переменную окружения(permanent environment variables)