Max
Господа. Простой вопрос. Как идеологически правильно обрабатывать jinja2-шаблоны конфигов, которые находятся на удаленном хранилище артефактов? То есть хочется в идеале в template задании src указать урл и все, но так не бывает насколько понимаю
модуль template работает с локальными файлами шаблонов. если источник поддерживается модулем (uri, etc.), то шаблоны бы я скачал в таске в какой-то локальный каталог. но идеологическая проблема в следующем: роль наполняет шаблон данными. разносишь код роли и шаблонов - получаешь рецепт нестыкуемых кусков: - разработчик роли переименовал переменную - сдох шаблон. - разработчик шаблона переименовал переменную - сдох шаблон
Oleksandr
если источник поддерживается модулем (uri, etc.), то шаблоны бы я скачал в таске в какой-то локальный каталог.
Oleksandr
так и делаю
Oleksandr
- разработчик роли переименовал переменную - сдох шаблон. - разработчик шаблона переименовал переменную - сдох шаблон
Oleksandr
и это хорошо
Max
и это хорошо
это implicit.
Oleksandr
в etcd
Sergey
Max
в консуле ж
вот именно.
Sergey
в консуле ж
Ямл искаропки.
Oleksandr
Max
Есть какие-то плагины интеракции с консулом. lookup точно.
Timur
Переносимость и переиспользуемость близка к нулю. Отличное решение.
Чойта? Кладешь в директорию library и переносишь куда угодно вместе с ролью
Oleksandr
как мне объяснить, что для поднятия веб-сервера надо еще и консул-кластер поднять?
Max
может шаблоны загружать из консула, кормить template переменной content
Max
я не в курсе.
Sergey
как мне объяснить, что для поднятия веб-сервера надо еще и консул-кластер поднять?
А причём тут консул тогда? Арач кстати генерится из ямла, если что.
Oleksandr
А причём тут консул тогда? Арач кстати генерится из ямла, если что.
как мне сгенерить конфиг апача из ямла из коробки без шаблонов?
Sergey
Чойта? Кладешь в директорию library и переносишь куда угодно вместе с ролью
Эм. Ты меня удивил. Будет подхватываться? Ну а если в новой версии обнова какая-то для этого файла?
Oleksandr
Макросами Jinja
вынести конфиг в шаблон и генерировать его для окружения?
Timur
Т.е. пока ты не уберешь эту папку или модуль оттуда, он будет юзаться вместе с ролью при любом запуске
Sergey
вынести конфиг в шаблон и генерировать его для окружения?
Да нет шаблона, вернее - он один для всех апачеконфигов. Содержимое полностью определяется ямлом на входе.
Kirill
Спасибо
Когда я смотрел сам модуль гитлаб, несколько недель назад, в релизе он был нерабочий, но его в дев ветке вроде исправили. Когда будет релиз - хз.
Алексей
Да я видел что в 2.8 обещают поправить
Oleksandr
В роли, канеш.
с шаблоном для апача разобрались. где хранить шаблон конфига к примеру для JS-приложения. обычный config.js к примеру
Oleksandr
разработчик пилит его постоянно и добавляет переменные
Oleksandr
что в таком случае делать?
Oleksandr
сейчас просто разработчик меняет шаблон и все
Oleksandr
я его тяну и генерю
Oleksandr
в случае рядом с ролью надо или разрабу приложения давать доступ в репу - этого не будет
Oleksandr
или каждый раз после допиливания разрабом самому допиливать шаблон - что-то здесь не то
Oleksandr
тогда без буратин как правиьно построить процесс?
Sergey
Разраб свои изменения коммитит в репу, возможно - через PR.
Oleksandr
что у нас не так? есть репа у разраба с приложением. есть репа с настройками окружения, есть репа с плейбуками
Oleksandr
в CI добавить пуш шаблона в деплой репу?
Sergey
Мдя. Бест практис - не разрывать это по десятку реп.
Sergey
Но это детади. Разработчик должен владеть и деплоем тоже.
Sergey
DevOps же ж.
Kirill
Мдя. Бест практис - не разрывать это по десятку реп.
Почему? Отдельно инфра, отдельно приложение же.
NS 🇷🇺
Приподниму вопросик =)
NS 🇷🇺
Всем привет. Есть вопрос по тегам
NS 🇷🇺
у меня есть некая роль с таском name: блаблабла copy: блаблабла tags: - driver - never
NS 🇷🇺
если руками вызвать и передать тег driver то она выполняется, не передать не выполняется логично
NS 🇷🇺
а вот автоматом не работает - name: Deploy блаблабла become: yes hosts: хосты gather_facts: yes roles: - role: one - role: two tags: - driver
NS 🇷🇺
кто может подсказать, что я делаю не так
NS 🇷🇺
А через import_role/include_role?
к сожалению аналогично... таск пропускается
Kirill
к сожалению аналогично... таск пропускается
Обязательно тэгами? Есть в import_role что-то типа from_tasks и запустить отдельные файлы из роли
NS 🇷🇺
Обязательно тэгами? Есть в import_role что-то типа from_tasks и запустить отдельные файлы из роли
не обязательно, цель выделить часть тасков из роли на первичный деплой. И не запускать при актуализации конфигов
Vadik
Всем привет Нужен совет , а еще лучше хоть какой то пример Есть конфиг сети для контейнеров , там около 4 сетей , нужно сделать следующее если переменная заданная через extra-vars не пустая а с данными то тогда скопировать содержимое в файл, если значение пустое то ничего не делать пропустить этот конфиг сети То что в google нашел что можно делать через if else но такого не разу не делал Может кто-то с таким сталкивался
Kirill
не обязательно, цель выделить часть тасков из роли на первичный деплой. И не запускать при актуализации конфигов
Документация говорит, что так надо делать: roles: - role: webserver vars: port: 5000 tags: [ 'web', 'foo' ]
Kirill
В скопированном примере другой синтаксис, не так как у тебя.
NS 🇷🇺
В скопированном примере другой синтаксис, не так как у тебя.
если ты про передачу списка не через - а через [] то монописуально ... пробывал
George
в нормальных продуктах есть опция treat warnings as errors и точка
George
а лучше бы - сагрегировать все ворнинги. визуализировать, чтобы за одну итерацию починитть
NS 🇷🇺
не летит...т.к. это одно и тоже
[Timansky]Timur Kumakbayev
А запускаешь как?
NS 🇷🇺
ansible-playbook deploy.yml -l HOST -u USER
NS 🇷🇺
А запускаешь как?
никакой магии =)
Kirill
ansible-playbook deploy.yml -l HOST -u USER
На самом деле вот те tags, что в roles, это мы так же как и внутри роли прописываем тэг
Kirill
и похоже надо тэг при выполнении плэйбука юзать Либо tasks_from
NS 🇷🇺
и похоже надо тэг при выполнении плэйбука юзать Либо tasks_from
есть еще параметр apply для include_role его тоже пробывал, игнорит
[Timansky]Timur Kumakbayev
Если ты хочешь покинуть тег внутрь то поидее apply, но он не работает