1mexanikivan
@1mexanikivan
System administrator

Как настроить ansible для Firewalld?

Делаю автоматизацию для HaProxy что бы удобно управлять конфигурацией через GitLab.
Для конфигурации хапрокси уже всё автоматизировал, добавляю что то в гите автоматом обновляется конфиг на сервере, тестируется и делает reload либо rollback если есть ошибки.
Хочу прикрутить автоматическое открытие порта в firewalld который добавил в конфиг haproxy.

К примеру из конфига имеющиеся порты можем достать в таком формате :
grep -Po '^\s+bind \*:\K(\d{4})' /etc/haproxy/haproxy.cfg
4005
4006
4007
4008

для firewalld у ансибль уже есть модули и добавление портов выглядит примерно так :

---
- name: Firewalld Rules
host: localhost
become: true

tasks:
- name: Add Port
firewalld:
zone: public
port: 8081/tcp
permanent: yes
state: enable

- name: Reload firewalld
service:
name: firewalld
state: reload

Но тут в основном уже задан порт который нужно открыть
либо он подкладывается из какого то уже имеющегося итема в гите - 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).
  • Вопрос задан
  • 723 просмотра
Решения вопроса 1
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Не должны Ансибл волновать никакие "уже существующие порты". Всё необходимое для использования в модуле фаерволла должно быть перечислено в инвентори, а не добываться через задний проход башизмами с регулярками.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы