Sergey
Можно для сесурности на специальный хост там в сети лить и там все делать
Да. И, скорее всего, раз там есть хоть какие-то возможности для скачивания файлов и закачивания, есть смысл написать свою горсть модулей.
inqfen
Ну можно плагин сделать да, который будет где-то внутри ходить на железку и забирать что надо
inqfen
А потом обратно класть
inqfen
А выполняться соответственно на самом контроллере
Sergey
Энтерпрайз же, там все годами измеряется
Иногда энтерпрайзы вынужденно расширяют свои штаты разработчиков просто потому, что вендоры ваще не алё - ни в борщ, ни в Красную Армию.
Sergey
Какой уж там Ансибл - Linux + Python завести не могут....
A
Ну можно плагин сделать да, который будет где-то внутри ходить на железку и забирать что надо
Хорошая идея, но главный вопрос-то остался: что за шаблонную магию надо провернуть, чтобы так поправить конфиг? :)
inqfen
Так забираешь файл на контроллер, там lineinfile
inqfen
Потом на место кладешь
inqfen
Можешь хоть свой модуль сделать, в нем обработать как тебе угодно, потом опять же обратно положить
inqfen
Никто не не запрещает модули на контроллере выполнять
Sergey
Хорошая идея, но главный вопрос-то остался: что за шаблонную магию надо провернуть, чтобы так поправить конфиг? :)
Не "поправить". Ты изначально хочешь запилить отстойный процесс. Есть такое выражение - golden source. Так вот, твоим golden source должен стать репозиторий, где лежит ансибловый проект. Оттуда всё должно катиться. Нужно поправить - сделал коммит в репу. Нет в репе - не существует. Долго? Долго. Хотите быстро? Купите нормальную железку, или терпите эту. Иначе ты обречён на полумеры, и на "там опять не прошла правка, иди разберись".
inqfen
Пока вендор не пришлет обновление на железо - нельзя ставить ядро версии выше какой-то там. Но нужна фича из более нового ядра. Но со старым она просто так несовместима, поэтому нужно патчить старое чтобы бэкпортнуть фичу из нового
inqfen
Собственно работал в провайдере и наблюдал этот процесс
inqfen
Ну, положим, вариант "страдать" всегда к твоим услугам.
Ага, страдаешь и параллельно организуешь IaC
inqfen
Все через это потихоньку проходят
inqfen
А, ну я про страдаешь про деплой на железо
Sergey
Я же только поэтому всегда набрасываю на тех сетевиков, которые не давят вендоров: пока вы страдаете и принимаете вендородиктатуру - всё так и останется. Как только до вендора через бабки дойдёт, что его чёрные ящики никому не интересны - он зачешется. Бабло - самый мощный стимул.
Sergey
И задания на тендеры, внезапно, пишут обычные люди. И именно они забывают прописать требования вроде "управляемость с помощью Ansible/<younameit>.
inqfen
Но менять вендора - уже очень больно
Sergey
Ну, тут такое дело, даже если у тебя например 10 маршрутизаторов циски и несколько сотен коммутаторов - ты для них мелочь
Ну пока 10 - да. А если ты какой-нить лютый провайдер - внезапно не пофиг. Ну и цикл обновления оборудования не такой длинный, как считают некоторые вендоры - особенно если посчитать в TCO потери на отсутствующий софт.
A
Это вообще возможно с j2 шаблоном?
Sergey
конечно
Сам по себе шаблон же не будет искать нужные строчки и на что-то их менять, он тупо рендерится в файл.
A
конечно
Я примерно понимаю, как конструировать конфиги с помощью джинджи, а вот заменять куски?
inqfen
Я так понимаю, что файл можно из шаблона сделать
inqfen
А, тебе именно заменять
inqfen
Тогда это не то
inqfen
Из шаблона генерируется файл, а не редактируется
inqfen
редактировать базово через lininfile как я выше написал
A
Если несколько строк, то, видимо, уже blockinfile. А как сделать матч по регэкспу сразу на нескольких строках?
inqfen
ага
inqfen
>А как сделать матч по регэкспу сразу на нескольких строках? в смысле?
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
@tnt4brain Может запинишь ? https://events.redhat.com/profile/form/index.cfm
Бессмысленно: там логин нужен и прочее.
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 и цикл
Hankey
To_nice_yaml и цикл
т.е. убрать цикл и 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 постоянно едут. И я пока не представляю как победить прооблему разъезжающихся адресов. Текущий подход с выносом логики в шаблон мне совсем не нравится. Может у кого есть идеи?
Konstantin
Если честно, не очень понял задачу. Что вы хотите получить в итоге?
очень груо говоря, dhcp сервер на ansible с фиксированными ip 🙂
Konstantin
то есть, у меня в var1 добавились хосты, мне надо эту разницу добавить в конец суммарного списка var1+var2
Timur
Понятнее не стало
Timur
Что именно вы хотите сделать?
Timur
На high level
Konstantin
Что именно вы хотите сделать?
openvpn сервер. к нему есть клиенты нескольких подрядчиков. клиенты постоянно добавляются, и очень редко удаляются. я отдаю подрядчикам (переодически) списки соотвествия ip - клиент. Сейчас идет активное добавление клиентов, поэтому список постоянно меняется. так как я делаю var1+var2 , для второго подрядчика список регудярно утекает на количество добавленное в var1. Это вызывает достаточно большие проблемы у монтажников, так как при монтаже оборуудования для второго подрядчика (var2) адреса уже могли уехать.
Konstantin
соотв клиенты все должны иметь статический ip
EndLessCat
то есть, у меня в var1 добавились хосты, мне надо эту разницу добавить в конец суммарного списка var1+var2
если все описано правильно, то простое вычитание (var1+var2).0 - var1.1 даст дельту, которую нужно просто потом прибавить к var1.0
EndLessCat
соотв клиенты все должны иметь статический ip
IMHO прикрутить туда консул и не заморачиваться будет правильнее
Konstantin
IMHO прикрутить туда консул и не заморачиваться будет правильнее
увы, это не возможно. Все корпоративно и энтерпрайзно. И консул over будет.
EndLessCat
увы, это не возможно. Все корпоративно и энтерпрайзно. И консул over будет.
вполне возможно, я не знаю деталей, в моем случае это помогло (Ынтерпрайз тоже, был )
EndLessCat
у меня не вариант в ближайшее время.
понял, тогда то что я написал про вычитание и сложение немного решит проблемы, нужно только аккуратно алгоритм проверить на параллельность по времени событий
Aleksey
Коллеги поделитесь опытом ansible-pull ? статьи за/против приветствуются
Full
соотв клиенты все должны иметь статический ip
Может, мимо, конечно, но openvpn умеет в статические ip. Ну, т.е. ты же можешь управлять, кто какие адреса получит. Ничто не мешает сделать так, чтоб адреса не смешивались.
Konstantin
Может, мимо, конечно, но openvpn умеет в статические ip. Ну, т.е. ты же можешь управлять, кто какие адреса получит. Ничто не мешает сделать так, чтоб адреса не смешивались.
Умеет. client-config-dir /etc/openvpn/ccd ifconfig-push {{ vpn_network | ipmath(myidx+2) }} {{ vpn_netmask }} Это содержимое файла в ccd. Имя файла равно имени клиента.
Evgenii
Подскажите как правильней поступить с ролью? У меня есть роль к которой относятся много хостов. Можно ли сделать отдельную таску в которой идет SELECT к базке WHERE ... IN (все хосты)? Что бы не на каждом хосте такой селект делать, а 1 раз перед остальными тасками(плейбуками). Соответственно дальше будет идти работа с host_vars ну или с переменной что сам определил
Timur
Роль никак не должна зависеть от хостов
Timur
Слились в протяжный вой