Делаю автоматизацию для HaProxy что бы удобно управлять конфигурацией через GitLab.
Для конфигурации хапрокси уже всё автоматизировал, добавляю что то в гите автоматом обновляется конфиг на сервере, тестируется и делает reload либо rollback если есть ошибки.
Хочу прикрутить автоматическое открытие порта в firewalld который добавил в конфиг haproxy.
К примеру из конфига имеющиеся порты можем достать в таком формате : grep -Po '^\s+bind \*:\K(\d{4})' /etc/haproxy/haproxy.cfg
4005
4006
4007
4008
для firewalld у ансибль уже есть модули и добавление портов выглядит примерно так :
Но тут в основном уже задан порт который нужно открыть
либо он подкладывается из какого то уже имеющегося итема в гите - port: "{{ item }}/tcp"
Вопрос вот в чем, как можно реализовать автоматически открытие порта в firewalld на основании того, который мы добавили последним в конфигу haproxy?
структура что бы было понятнее :
Делаем изменение в гит haproxy.cfg
1. Добавляется новое правило в haproxy.cfg
2. Тестируется на валидность
3. Применение либо откат
4. Проверяет используемые порты в haproxy.cfg grep -Po '^\s+bind \*:\K(\d{4})' /etc/haproxy/haproxy.cfg
5. Списком из пункта 4 проверяет каких портов не хватает в правилах firewalld
6. Открывает нужный порт в соответствии пункта 5
7. применение конфига фаервола (reload firewalld).
Сейчас у меня реализация простая, но в целом удобная. В гите лежит конфиг фаервола, правлю его и запускаю пайплаин руками он просто подкидывает все правила в /etc/firewalld/zones/public.xml
Не должны Ансибл волновать никакие "уже существующие порты". Всё необходимое для использования в модуле фаерволла должно быть перечислено в инвентори, а не добываться через задний проход башизмами с регулярками.