Ib2828
есть
inqfen
- { apps_conf_tree: 'web-ap', inventory_hostname: 'app-01' }
покажи пальцем
Ib2828
- { apps_conf_tree: 'web-ap', inventory_hostname: 'app-01' }
вот эту консрукцию как правильно написать то
Sergey
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
Sergey
Соответственно, ты:
1. указываешь имя ключа
2. указываешь номер элемента списка
3. указываешь имя ключа.
Sergey
Никакой магии - достаточно прочитать спеку на YaML.
Ib2828
есть несколько jar файлов
Ib2828
их надо раскидать по нескольким серверам
Ib2828
и соответсвенно конфиги ssystemd файлы для них
Ib2828
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
Чат тут не вместо них
Ib2828
честно читал с обеда
Ib2828
и всяко пробовал
inqfen
Ну хуй знает
Ib2828
как бы проблемы не было бы не обратился бь в чат
inqfen
Должен был дочитать до инвентори
inqfen
И парам пам пам, там именно то, что тебе надо
inqfen
7 хостгрупп, каждая для хостов с определенным набором приложений
inqfen
В каждой свои переменные
inqfen
Хосты входят в эти хостгруппы
Sergey
и всяко пробовал
1. Забудь про циклы
2. Сделай параметризуемую роль, которая единообразно ставит приложения, получая на вход список джарников.
3. Разбей хосты на группы одинакового назначения.
4. Привяжи к каждой группе компоненты (как вариант, 1 компонент - 1 джарник).
5. Набор сервисов для каждой группы = список (их можно складывать, получаешь бесплатно гибкость)
6. Все настройки сервисов храни большим словарём (если надо - с повторениями) по ключам - названиям сервисов.
7....
N. PROFIT!
Ib2828
Denis
json_query возращает мне значение месте с квадратными скобками как их убрать!?
help
Denis
help
Logan
jsonfilter. скобки - это массив, нужен первый элемент
Logan
гугл по словам jinja jsonfilter подскажет, что делать дальше
A
Есть такая задача: на каждом хосте посмотреть файл конфигурации, найти там все секции вида
rule <number> {
action accept
blabla
blabla
blabla
port <number(s)>
}
и строку с port удалить. Как собрать такую таску? Питона на хостах нет.
Sergey
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
То есть заходишь на железку - говоришь ей слей конфиг вон туда (а это контроллер), делаешь с ним что надо - отправляешь обратно
inqfen
Можно для сесурности на специальный хост там в сети лить и там все делать
inqfen
inqfen
Энтерпрайз же, там все годами измеряется
inqfen
Как время жизни версии, так и выполнение issue