Ib2828
есть
inqfen
- { apps_conf_tree: 'web-ap', inventory_hostname: 'app-01' } покажи пальцем
Ib2828
- { apps_conf_tree: 'web-ap', inventory_hostname: 'app-01' } вот эту консрукцию как правильно написать то
Ib2828
apps_conf_tree: - app_name: web-app java_xms: 256m java_xmx: 256m server_port: 9090 management_server_port: 8090 context_path: '/' has_ui: true
inqfen
рукалицо
Sergey
есть такая задача - name: '{{ playbook_name }} - create apps folders' file: path="/opt/softi/{{ item.app_name }}" state=directory owner=app group=app mode=0755 with_items: - { apps_conf_tree: 'web-ap', inventory_hostname: 'app-01' } как правильно создать папки по хостам в зависимости от имени хоста?
Причём тут имя хоста? Слушай, ну я понимаю - всем нужно "позавчера", но, может, ты хотя бы основы прочтёшь? У тебя тут словарь, в словаре лежит список из одного элемента, а в этом элементе списка лежит другой словарь.
Sergey
Соответственно, ты: 1. указываешь имя ключа 2. указываешь номер элемента списка 3. указываешь имя ключа.
Sergey
Никакой магии - достаточно прочитать спеку на YaML.
Ib2828
есть несколько jar файлов
Ib2828
их надо раскидать по нескольким серверам
Ib2828
и соответсвенно конфиги ssystemd файлы для них
Sergey
Ты мой прод прямо описал. В чём у тебя возникают сложности?
Ib2828
приложение 1 со всеми его конфигами логами и прочими на сервер 1 приложение 2 со всеми его конфигами логами и прочими на сервер 2 конфиги скрипты имена директорий формируются из словаря
Ib2828
у меня таких приложений 7 штук
inqfen
А проблема в чем?
Ib2828
можно конечно семь ролей написать
Ib2828
но это дубль
Sergey
inqfen
Семь хост групп
inqfen
В каждой свои переменные
inqfen
Общие в all
inqfen
В чем проблема-то?
Denis
ребята есть в переменой item.path полный путь к файлу а как отрезать имя файла
Denis
типо basedir
inqfen
фильтр dirname
inqfen
емнип
inqfen
Да, dirname https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#id8
Ib2828
- name: '{{ playbook_name }} - create apps folders' file: path="/opt/soft/{{ item.app_name }}" state=directory owner=app group=app mode=0755 with_items: - "{{ apps_conf_tree }}" - name: '{{ playbook_name }} - generate application properties' template: src: 'opt/soft/apps/application.properties' dest: '/opt/soft/{{ item.app_name }}/application.properties' owner: app group: app mode: '644' with_items: - "{{ apps_conf_tree }}"
Ib2828
есть такая роль
Ib2828
вернее пара задач
Ib2828
как сделать на сервере 1 например web-app на сервере 2 например api-app
inqfen
еще раз
inqfen
еще раз
inqfen
В каждой свои переменные
inqfen
Общие в all
inqfen
В чем проблема-то?
Ib2828
как натравить на хосты?
Ib2828
вот тут у меея нету понимания
inqfen
через инвентори
inqfen
как натравить на хосты?
Ну почитай ты доки, там это написано все
inqfen
Чат тут не вместо них
Ib2828
честно читал с обеда
Ib2828
и всяко пробовал
inqfen
Ну хуй знает
Ib2828
как бы проблемы не было бы не обратился бь в чат
inqfen
Должен был дочитать до инвентори
inqfen
И парам пам пам, там именно то, что тебе надо
inqfen
7 хостгрупп, каждая для хостов с определенным набором приложений
inqfen
В каждой свои переменные
inqfen
Хосты входят в эти хостгруппы
Sergey
и всяко пробовал
1. Забудь про циклы 2. Сделай параметризуемую роль, которая единообразно ставит приложения, получая на вход список джарников. 3. Разбей хосты на группы одинакового назначения. 4. Привяжи к каждой группе компоненты (как вариант, 1 компонент - 1 джарник). 5. Набор сервисов для каждой группы = список (их можно складывать, получаешь бесплатно гибкость) 6. Все настройки сервисов храни большим словарём (если надо - с повторениями) по ключам - названиям сервисов. 7.... N. PROFIT!
Denis
json_query возращает мне значение месте с квадратными скобками как их убрать!? help
Denis
help
Logan
jsonfilter. скобки - это массив, нужен первый элемент
Logan
гугл по словам jinja jsonfilter подскажет, что делать дальше
A
Есть такая задача: на каждом хосте посмотреть файл конфигурации, найти там все секции вида rule <number> { action accept blabla blabla blabla port <number(s)> } и строку с port удалить. Как собрать такую таску? Питона на хостах нет.
inqfen
Может там какой-то обрезок системы сетевой
A
Это сетевые железки, специфические
inqfen
Ну тогда от железки зависит
inqfen
А так где-то видел извращение, что с кучи железок забрались конфиги на контроллер - переделывались - уходили обратно
inqfen
И удалялись с контроллера
A
То есть template без питона не могёт? Ну пусть на контроллере, но как такую замену кусков файла организовать?
Отделение Bereke Bank
Написать свой модуль 😏
inqfen
Написать свой модуль 😏
Дык он не выполнится
inqfen
Питона-то нет
Отделение Bereke Bank
А
A
Не, я понял, ок, конфиги на контроллер и так дампятся по крону, буду их на контроллере править, отсылать обратно и применять. На контроллере питон есть :) Что надо сделать с template'ом (или каким-то другим модулем?), чтобы реализовать такую правку? 🤔
Sergey
Не, я понял, ок, конфиги на контроллер и так дампятся по крону, буду их на контроллере править, отсылать обратно и применять. На контроллере питон есть :) Что надо сделать с template'ом (или каким-то другим модулем?), чтобы реализовать такую правку? 🤔
Модуль template на деле является плагином, и фактически у него под капотом есть рабочая лошадка - модуль copy. Без Питона не получится. Поэтому остаётся два варианта: 1. Страдать. 2. Ну или в письмах в поддержку вендора недешёвой сетевой балалайки изливать свои страдания без нормального API/embedded Linux. Дело в том, что вендоры бы, может, и шевелились, но основная масса сетевиков принимает всё как должное (в частности, то, что на их хотелки насчёт управляемости железок вендоры кладут с прибором). Поэтому-то в дорогих сетевых балалайках чаще всего нет ничего, что помогло бы хоть как-то управлять ими с помощью того же Ансибла.
Sergey
Помнишь про "NVidia, fuck you!!!" ? А ведь сработало!
inqfen
Ну вот поэтому извращением мной выше описанным и занимались
inqfen
То есть заходишь на железку - говоришь ей слей конфиг вон туда (а это контроллер), делаешь с ним что надо - отправляешь обратно
Sergey
Ну вот поэтому извращением мной выше описанным и занимались
Ну да - вместо того, чтобы подпись в контракте на поставку и обязательную поддержку поменять на помахивание средним пальцем в воздухе.
inqfen
Можно для сесурности на специальный хост там в сети лить и там все делать
inqfen
Ну да - вместо того, чтобы подпись в контракте на поставку и обязательную поддержку поменять на помахивание средним пальцем в воздухе.
Проблема в том, что и с контрактом твой запрос на "мне надо вотэта" может решаться годами
inqfen
Энтерпрайз же, там все годами измеряется
inqfen
Как время жизни версии, так и выполнение issue