Damir
По сути я тот же баш вынесу в модуль написанный на питоне, или воспользуюсь нативным средством питона, что бы проверять пароль для mysql
Damir
Тогда в чем принципиальная разница, если команда баша появится в самой роли
Алексей
я думаю это как раз те 20% башсибла про которые Сергей указывал в докладе
Damir
Согласен, при oneline баше, выносить в отдельный модуль нет смысла
Алексей
тут просто нужно проверить, зарегистрировать вывод и на его основе запускать таски. Я тоже не вижу смысла выносить это всё в модуль.
Oleksandr
Есть шанс, что он попадет в релиз 2.8
кстати вопрос. а когда попадет (уже попал?) модуль по работе с Netbox, который IPAM/DCIM от DO? а то все devel...
Sergey
тут просто нужно проверить, зарегистрировать вывод и на его основе запускать таски. Я тоже не вижу смысла выносить это всё в модуль.
Это императивный стиль. Декларативный предполагает приведение ресурса к заданному состоянию.
Damir
Ну в модули можно засунуть любую логику, но когда нужно проверить только один конкретный вывод команды, нужнен ли модуль в этом случаи
Sergey
Нужна декларативность. Разработка на YaML - путь в ад.
Sergey
Причём в персональный :-D
Алексей
Нужна декларативность. Разработка на YaML - путь в ад.
ты лучше приведи пример как правильно это сделать. Мы уже поняли, что декларативность это серебрянная пуля.
Anonymous
Подскажите пожалуйста такой момент. Что-то я не понимаю - как можно выставить limit выполнения Workflow template в AWX по хостам/группам хостов? Или я концептуально что-то не понял?
Andrey
Привет всем, подскажите что я не правильно оформил? https://gist.github.com/panov-andy/7396b6d028b866574db8c1910db01e09 там 5 строк буквально
Timur
Только я бы become в роль перенес
Timur
А, не
Timur
Там же роль
Timur
tasks не нужны тогда
Timur
--- - hosts: dexx2 roles: - role: geerlingguy.docker become: yes
Oleksandr
убрать таскс, да
Timur
Я выше исправил как правильно
Andrey
спасибо, работет А есть какая-то фиксированная схема, что и где должно быть? Или как это вообще работает?
Timur
спасибо, работет А есть какая-то фиксированная схема, что и где должно быть? Или как это вообще работает?
Работает так, что плейбука должна содержать корректный yaml с нужным контентом
Timur
Роли и таски - это два отдельных списка
Timur
В одном плее их совмещать нельзя
Timur
Есть исключения вроде pre_tasks и post_tasks, но это специфические кейсы
Timur
А так - на один плей в плейбуке вешается либо набор тасков, либо набор ролей
Timur
Если нужно и то, и другое, то роли выносятся в таски посредством import_role или include_role
Andrey
так... а вот так нельзя? (но работает) https://gist.github.com/panov-andy/e17157bcc8c4b6eb802d7498b48b3f49
Timur
так... а вот так нельзя? (но работает) https://gist.github.com/panov-andy/e17157bcc8c4b6eb802d7498b48b3f49
Можно, только так последовательность не гарантируется правильная, плюс с хендлерами возможны сюрпризы
Timur
Если нужно таски после роли выполнить, лучше делать post_tasks
Timur
Ну и выполнять все таски и роли с become: yes - это плохой фэншуй
Andrey
Ну и выполнять все таски и роли с become: yes - это плохой фэншуй
запомню... но пока столько нервов... что хочется пока без красоты.
Andrey
Есть
А где посмотреть? Или как отвалидировать?
ℭ𝔞𝔯𝔯𝔬𝔩
А где посмотреть? Или как отвалидировать?
Ansible galaxy init строит структуру-скелет роли: https://galaxy.ansible.com/docs/contributing/creating_role.html
Timur
the order of execution for your playbook is as follows: - Any pre_tasks defined in the play. - Any handlers triggered so far will be run. - Each role listed in roles will execute in turn. Any role dependencies defined in the roles meta/main.yml will be run first, subject to tag filtering and conditionals. - Any tasks defined in the play. - Any handlers triggered so far will be run. - Any post_tasks defined in the play. - Any handlers triggered so far will be run.
Oleg
коллеги, подскажите: есть джоба кторая отробатывает на ура, когда все переменные имеются, в разных ситуациях переменныхх может быть меньше или больше, ставлю ignore_errors: true что бы пропустить отсутствующие, ансибл пишет ...ignoring и останавливается, как сделать так что бы он игнорил отсутствующие данные и продолжал работать со стальными?
Timur
О каких отсутствующих данных идет речь?
Oleg
О каких отсутствующих данных идет речь?
Группа хостов меняется, и парой одна группа отсутствует в with_items
Timur
Какой парой?
Anton
да все понятно, он подставляет в цикл переменные в виде хостов которые не всегда статичны
Timur
Зачем группа хостов в with_items?
Oleg
Парой=иногда)
Oleg
Нуда) сорян
Timur
Код дайте просто
Anton
именно!)
ну раз у тебя хосты как перменные идут, то видимо ты их поделил уже на items, и если ты жестко задал список items то может быть есть смысл передавать словарь с нужными хостами, тогда не важно будет сколько у тебя в нем записей и ругани на отсутствующую переменную не будет
Anton
ты можешь тогда завязать вообще на 1. пустая переменная или нет (если группы нет), 2. на значение переменной.
nett00n
привет чат. Я сломал весь мозг и угуглился уже, потому пришёл к вам [app_app1] host1 [app_new_app2] host2 ... [something_else] host3 как сделать, чтоб инклюдящаяся таска запускалась, только если host входит в любую из групп app_* - таких групп много и их список растёт. in и is superset требуют полное соответствие, в маску не умеют.
Timur
И на нее натравливайте таск
Timur
Все просто
Oleksandr
nett00n
Включайте все группы app* в одну общую группу
К сожалению такое простое решение увеличит шансы на ошибку при раскатке нового компонента
Oleksandr
подозреваю что с --limit сработает
nett00n
внутри плэйбука вместе с when не помогло. похоже, единственное для этого плейбука гуманное решение, это ansible-playbook site.yml -e is_app=true если есть ещё какие-то идеи - буду рад выслушать
Oleksandr
не
Oleksandr
я про --limit
Bird
Всем привет! Если можно, начну с дурацкого вопроса. Как плейбуком обработать строку с командой, содержащей решётку '#'?
nett00n
shell -a "echo \# " shell -a "echo '#'" гугл://экранирование
Павел П.
https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html пара примеров
Bird
shell -a "echo \# " shell -a "echo '#'" гугл://экранирование
Гугл сказал, что с бэкслешем есть какие-то проблемы, в более ранних версиях точно, в свежих неточно. Вот и решил поинтересоваться
Oleg
есть группа хостов в переменной, как можно фильтронуть кол-во серваков в группе?
Timur
И не нужно лохматить бабушку
AlexK
привет, может подскажете, как мне вынести с модуля script параметры для скрипта (ip address, etc) куда-то отдельно или использовать при запуске плейбука. Заранее спасибо script: /path/install_auto.sh -d 192.168.102.186 -i 192.168.102.186 -p 443