Max
я знаю, эти способности приходят с огромным 30тилетним опытом....
inqfen
зри в код. или покажи код.
я там сам лоханулся
inqfen
принт забыл в коде, который еще при написании нужен был
inqfen
а ансибл, если где-то в процессе выполнения получает stdout рассматривает это как fail
Антон
Народ, подскажите пожалуйста про when. У меня есть задача делать/не делать определенный шаг в зависимости от пройденной проверки. Я сделал, но у меня при не прохождении проверки скипаются все остальные шаги. Что я делаю не так? Ансибл 2.8
inqfen
Причём ночью я полчаса проблему искал после того как модуль написал, сейчас сел за комп и нашёл после 2х минут просмотра кода
inqfen
When применяется только к тому таску, где он описан
inqfen
Если ты там с meta не накрутил что-то
Антон
Ага, спасибо, буду курить дальше. Спасибо :)
Отделение Bereke Bank
подскажите по openssl модулям. как поведет себя ансибл, если файл, указанный в path с нужными параметрами уже есть? Он пересоздаст его или выдаст ok и оставит как есть? Переделываю башсибл, в свое время порожденный этим https://github.com/ansible/ansible/issues/34054
Отделение Bereke Bank
Окей, спасибо 👍🏽
Anonymous
@haxxor1337 будет жить. Поприветствуем!
Anonymous
@mysabien будет жить. Поприветствуем!
V
ребят подскажите как можно решить так мне нужно указать переменную version а дальше эту перменную использовать в других переменных (url так формируется) подскажите как это правильно сделать ?
Alex
А в чем проблема?
Alex
Объявляй в vars или через set_facts
Vladislav 👻
version: "12.34.56" link: "https://example.org/{{version}}/omg.tar.gz
Timur
Конкретно в этом случае да - "http://my.cool.url/somepackage-{{ version }}.tar.gz"
V
version: 1.0 url: helloworld/{{ version}}
V
я так думал сделать
Timur
да но мне это надо сделать в vars/main.yml
Ок --- version: "1.0.0" url: "http://site/pkg-{{version}}.tar.gz"
Timur
Угу. Не работает?
Timur
Должно вроде
V
Ок --- version: "1.0.0" url: "http://site/pkg-{{version}}.tar.gz"
у меня почему-то в первый не сработало
V
в самом tasks работает а в vars
V
нет
Timur
version: 1.0 url: helloworld/{{ version}}
Шаблонизатор включается для строк в кавычках
Timur
Я с телефона сейчас, не смогу проверить, но по идее работать должно. Или мое представление об ansible отличается от реальности, такое тоже возможно :)
Timur
V
Вау спвсибо за сайт, окей я ещё раз пересмотрю
Timur
Я просто его нагуглил, я не ручаюсь за его правильность :)
V
а инклюды надеюсь можно с when statement в vars?
V
чтобы разный набор для раной os
Sergey
а инклюды надеюсь можно с when statement в vars?
Ну такое себе..... Прям в руководстве есть демка для first_found.
Sergey
V
Ну такое себе..... Прям в руководстве есть демка для first_found.
version: 1.0 include_if_ubuntu: debian.yml include_if_redhat: redhat.yml я имел ввиду такое в файле vars/main.yml там ведь немного по другому оформляется и не понятно как там include работает вместе с when
simplemice.eth
Ansible треннинги - https://github.com/ansible/workshops Доступны и презентации, и непосредственно лабы для разных платформ. #ansible #redhat #github
Alex
> я имел ввиду такое в файле vars/main.yml а зачем такое делать именно в vars? Что мешает подключать нужный набор переменных из main.yml ? Например - include_tasks: "{{ ansible_distribution | lower }}.yml"
Alex
ну или include_vars, если чисто переменные подключить
Alex
в самих vars никто не запрещает использовать jinja2, но если переменных много, то будет неудобно, имхо var1: "{% if db_version is version_compare(10, '>=') %}{{ var2 }}{% else %}{{ var3 }}{% endif %}" var2: new_engine var3: old_engine
simplemice.eth
а еще есть функция в ТГ - Ответить/Reply
Sergey
version: 1.0 include_if_ubuntu: debian.yml include_if_redhat: redhat.yml я имел ввиду такое в файле vars/main.yml там ведь немного по другому оформляется и не понятно как там include работает вместе с when
Нету такой функциональности в Ansible. <rolename>/vars/main.yml - это просто YaML, он загружается в словарь верхнего уровня. Jinja2 там работает по общим правилам, директивы - нет.
Oleg
Комрадз! Необходимо удалить из файла строку которая начинается с опр значения, это значение является в плэйбуке переменной, делаю так: ` lineinfile: path: '/path_/to_/file' state: absent regexp: "^'{{host}}'" `но результата нет. Как правильно оформить regexp? Спасибо!
Vladislav 👻
Одинарные кавычки не нужны
Vladislav 👻
Уже все в двойных
Alex
а кто то использует https://github.com/ansible/molecule для тестирования плейбуков? Как оно?
inqfen
Оно норм
time
куча проектов
Lev
а кто то использует https://github.com/ansible/molecule для тестирования плейбуков? Как оно?
до кучи тогда: * 2019 что я узнал протестировав 200 000 строк инфраструктурного кода * 2018 5 Lessons Learned From Writing Over 300,000 Lines of Infrastructure Code * 2018 Integrating Infrastructure as Code into a Continuous Delivery Pipeline * 2018 Эффективная разработка и сопровождение Ansible-ролей * 2018 Ansible — это вам не bash! * 2015 Тестируем инфраструктуру как код
Lev
отличные ссылки! добавить бы в фак
http://www.goncharov.xyz/iac я тут схораниваю(там же ссылки на текстовые версии), но все руки не дойдут написать рассшифровку своего выступления..
Timur
а кто то использует https://github.com/ansible/molecule для тестирования плейбуков? Как оно?
Отличная вещь. Только совместимость с Ansible 2.8 пока не допилили до конца
Timur
На 2.7 работает стабильно
Артём
А для чего брать в кавычки переменные, в которых не происходит никаких подстановок? platforms: - name: "Ubuntu" versions: - "trusty"
Артём
И в каком случае это может помешать? В частности, в файле meta?
Alex
И в каком случае это может помешать? В частности, в файле meta?
конкретно за мета не скажу, но например в таких случаях when: var1 == 10 результат в обоих случаях будет разный
Anonymous
@dburm будет жить. Поприветствуем!
Dmitry
Всем привет. Такой вопрос ansible v2.8.2, пустая вмка с ubuntu trusty Плейбук: ставим docker, ставим python-pip, делаем pip install docker, делаем pip freeze (видим строку docker==4.0.2), пытаемся применить модуль docker_container - получаем фейл "Failed to import the required Python library (Docker SDK for Python...) При повторном прогоне плейбука контейнер успешно стартует. Пробовал заменить pip install docker на apt install python-docker - результат аналогичный Собственно, вопрос - как заставить ансибл увидеть python-docker с первого раза?
Dmitry
там дофига... попробую скомпоновать в один ямл
Dmitry
да. фриз я воткнул, просто чтобы убедиться, что модуль на самом деле есть
Dmitry
https://pastebin.com/PNrApq5N плейбук да, ubuntu xenial но, думаю, это не очень принципиально
Dmitry
это вариант с apt install python-docker могу накидать вариант с пипом проблема не в этом
Dmitry
в обоих случаях плейбук проходит только со второго раза
Timur
Покажите вариант с pip. И выхлоп при первом запуске
Dmitry
Так, вопрос снимается. Когда заменил роль geerlingguy.pip на прямое использование pip - всё запустилось с первого раза. Всем спасибо и прошу прощения за беспокойство