inqfen
Ну можно плагин сделать да, который будет где-то внутри ходить на железку и забирать что надо
inqfen
А потом обратно класть
inqfen
А выполняться соответственно на самом контроллере
Sergey
Какой уж там Ансибл - Linux + Python завести не могут....
A
inqfen
Так забираешь файл на контроллер, там lineinfile
inqfen
Потом на место кладешь
inqfen
Можешь хоть свой модуль сделать, в нем обработать как тебе угодно, потом опять же обратно положить
inqfen
Никто не не запрещает модули на контроллере выполнять
inqfen
Sergey
Хорошая идея, но главный вопрос-то остался: что за шаблонную магию надо провернуть, чтобы так поправить конфиг? :)
Не "поправить". Ты изначально хочешь запилить отстойный процесс. Есть такое выражение - golden source. Так вот, твоим golden source должен стать репозиторий, где лежит ансибловый проект. Оттуда всё должно катиться. Нужно поправить - сделал коммит в репу. Нет в репе - не существует. Долго? Долго. Хотите быстро? Купите нормальную железку, или терпите эту.
Иначе ты обречён на полумеры, и на "там опять не прошла правка, иди разберись".
inqfen
Пока вендор не пришлет обновление на железо - нельзя ставить ядро версии выше какой-то там. Но нужна фича из более нового ядра. Но со старым она просто так несовместима, поэтому нужно патчить старое чтобы бэкпортнуть фичу из нового
inqfen
inqfen
Собственно работал в провайдере и наблюдал этот процесс
Sergey
inqfen
inqfen
Все через это потихоньку проходят
inqfen
А, ну я про страдаешь про деплой на железо
Sergey
Я же только поэтому всегда набрасываю на тех сетевиков, которые не давят вендоров: пока вы страдаете и принимаете вендородиктатуру - всё так и останется. Как только до вендора через бабки дойдёт, что его чёрные ящики никому не интересны - он зачешется. Бабло - самый мощный стимул.
Sergey
И задания на тендеры, внезапно, пишут обычные люди. И именно они забывают прописать требования вроде "управляемость с помощью Ansible/<younameit>.
inqfen
A
Не "поправить". Ты изначально хочешь запилить отстойный процесс. Есть такое выражение - golden source. Так вот, твоим golden source должен стать репозиторий, где лежит ансибловый проект. Оттуда всё должно катиться. Нужно поправить - сделал коммит в репу. Нет в репе - не существует. Долго? Долго. Хотите быстро? Купите нормальную железку, или терпите эту.
Иначе ты обречён на полумеры, и на "там опять не прошла правка, иди разберись".
Я это понимаю, но хорошо сделать тут не получится, надо быстро, pick one :) Потом можно стремиться к идеалам, а пока надо просто поправить конфиг на всех железках. Тут вообще основной вопрос, схерали к ним не поставляют ЦУС, но повлиять я ни на что не могу.
inqfen
Но менять вендора - уже очень больно
A
Это вообще возможно с j2 шаблоном?
Sergey
inqfen
Sergey
конечно
Сам по себе шаблон же не будет искать нужные строчки и на что-то их менять, он тупо рендерится в файл.
A
конечно
Я примерно понимаю, как конструировать конфиги с помощью джинджи, а вот заменять куски?
inqfen
Я так понимаю, что файл можно из шаблона сделать
inqfen
А, тебе именно заменять
inqfen
Тогда это не то
inqfen
Из шаблона генерируется файл, а не редактируется
inqfen
редактировать базово через lininfile как я выше написал
A
Если несколько строк, то, видимо, уже blockinfile. А как сделать матч по регэкспу сразу на нескольких строках?
inqfen
ага
inqfen
>А как сделать матч по регэкспу сразу на нескольких строках?
в смысле?
Sebor▂▅▇█▓▒░
A
Ну вот у меня в файле условно десяток секций вида
rule <number> {
action accept
blabla
blabla
blabla
port <number(s)>
}
Значит, нужно найти каждый блок, в котором в первой строке rule, во второй action accept, а в предпоследней port, и заменить его на такой же блок, но без предпоследней строки...
Или можно использовать lineinfile, но в "строку" вписать \n ? Однако, количество строк в блоке может быть произвольным...
manefesto
@tnt4brain Может запинишь ? https://events.redhat.com/profile/form/index.cfm
manefesto
там кстати есть ссылки на предыдущие выступления
Anton
Кто-нибудь знает куда переместили https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/openstack_inventory.py ?
Sergey
manefesto
Вот блин, я забыл что зареган там
Hankey
Доброе утро!
Товарищи, может кто разворачивал алертменеджер при помощи ансибла?
Проблема в следующем:
Есть словарь
alertmanager_http_config:
proxy_url: 'http://proxy01.example.com'
И есть шаблон конфига, в который он подставляется, а именно сюда:
{% if alertmanager_http_config | length %}
http_config:
{{ alertmanager_http_config | to_nice_yaml(indent=2) | indent(4, False)}}
{% endif %}
{% for key, value in alertmanager_http_config.items() %}
{{ key }}: {{ value | quote }}
{% endfor %}
И на выходе я получаю в конфиге два раза строчку proxy_url, от чего фейлится. Подскажите пожалуйста, как убрать задвоение строки?
Vladislav 👻
To_nice_yaml и цикл
Vladislav 👻
Одно из
Hankey
manefesto
как посчитать количество нод в группе ?
manefesto
я нашелЪ
manefesto
vars:
HOST_COUNT: "{{ groups['maingroup'] | length }}"
Konstantin
Коллеги, добрый день.
Попался на любимю проблему обработки списоков.
Суть такая:
есть var1 - список хостов получаемых их одного api
есть var2 - список хостов получаемых их второго api
(есть 3 и 4 api, но это не суть)
Есть подсетка на 4096 адресов.
Есть список полученный из json, где проставлены текущие соответсвия host - ip
Проблема: списки var1 и var2 динамические, и растут. Соответсвенно сейчас ip для var2 постоянно едут.
И я пока не представляю как победить прооблему разъезжающихся адресов. Текущий подход с выносом логики в шаблон мне совсем не нравится. Может у кого есть идеи?
Timur
Konstantin
Konstantin
то есть, у меня в var1 добавились хосты, мне надо эту разницу добавить в конец суммарного списка var1+var2
Timur
Понятнее не стало
Timur
Что именно вы хотите сделать?
Timur
На high level
Konstantin
Что именно вы хотите сделать?
openvpn сервер. к нему есть клиенты нескольких подрядчиков. клиенты постоянно добавляются, и очень редко удаляются.
я отдаю подрядчикам (переодически) списки соотвествия ip - клиент.
Сейчас идет активное добавление клиентов, поэтому список постоянно меняется. так как я делаю var1+var2 , для второго подрядчика список регудярно утекает на количество добавленное в var1. Это вызывает достаточно большие проблемы у монтажников, так как при монтаже оборуудования для второго подрядчика (var2) адреса уже могли уехать.
Konstantin
соотв клиенты все должны иметь статический ip
Konstantin
EndLessCat
у меня не вариант в ближайшее время.
понял, тогда то что я написал про вычитание и сложение немного решит проблемы, нужно только аккуратно алгоритм проверить на параллельность по времени событий
Konstantin
A
Ну вот у меня в файле условно десяток секций вида
rule <number> {
action accept
blabla
blabla
blabla
port <number(s)>
}
Значит, нужно найти каждый блок, в котором в первой строке rule, во второй action accept, а в предпоследней port, и заменить его на такой же блок, но без предпоследней строки...
Или можно использовать lineinfile, но в "строку" вписать \n ? Однако, количество строк в блоке может быть произвольным...
Так и не разобрался, спрошу ещё раз :) Кто-нибудь делал такое?
upd.: строка port <number(s)> может быть внутри ещё одного блока, обрамлённого { }
Aleksey
Коллеги поделитесь опытом ansible-pull ? статьи за/против приветствуются
Konstantin
Evgenii
Подскажите как правильней поступить с ролью? У меня есть роль к которой относятся много хостов. Можно ли сделать отдельную таску в которой идет SELECT к базке WHERE ... IN (все хосты)?
Что бы не на каждом хосте такой селект делать, а 1 раз перед остальными тасками(плейбуками).
Соответственно дальше будет идти работа с host_vars ну или с переменной что сам определил
Timur
Timur
Роль никак не должна зависеть от хостов
Timur
Timur
Слились в протяжный вой