Ansible: firewalld и добавление новой зоны

Я пытаюсь добавить в Ansible playbook следующее:

firewall-cmd --permanent --new-zone dockerc
firewall-cmd --permanent --zone dockerc --add-source 172.17.0.0/16
firewall-cmd --permanent --zone dockerc --add-port 8443/tcp
firewall-cmd --permanent --zone dockerc --add-port 53/udp

Но согласно зонам http://docs.ansible.com/ansible/firewalld_module.html нет возможности добавить новую зону.

Кто-нибудь знает, можно ли добавить dockerc в качестве новой зоны с помощью Ansible?


person Magick    schedule 17.02.2017    source источник
comment
Вы всегда можете просто запустить firewall-cmd с помощью командной строки или модулей оболочки.   -  person SztupY    schedule 17.02.2017
comment
@Magick Не могли бы вы изменить принятый ответ? Текущий принятый больше недействителен. Теперь модуль может создавать новые зоны. Я только что проверил это (второй ответ). Спасибо :)   -  person Lukas Kalbertodt    schedule 21.09.2020


Ответы (2)


По состоянию на 12 декабря 2017 года специально фиксируйте модуль 8475171f67f поддерживает создание (и удаление) зон.

- firewalld:
    zone: custom
    state: present
    permanent: true

Установите state на present или absent и убедитесь, что zone, state и permanent являются единственными ключами в задаче.

Примечания из исходного кода

  • Транзакции зоны (создание, удаление) могут быть выполнены с использованием только зоны и параметров состояния «присутствует» или «отсутствует». Обратите внимание, что транзакции зоны должны быть явно постоянными. Это ограничение в firewalld. Это также означает, что вам придется перезагрузить firewalld после добавления зоны, над которой вы хотите выполнить немедленные действия. Модуль не позаботится об этом за вас неявно, потому что это отменит любые ранее выполненные немедленные действия, которые не были постоянными. Поэтому, если вам требуется немедленный доступ к вновь созданной зоне, рекомендуется перезагрузить firewalld сразу же после того, как создание зоны вернется с измененным состоянием, и до того, как вы выполните какие-либо другие немедленные непостоянные действия в этой зоне.
person sbaildon    schedule 27.06.2018

К сожалению, модуль firewalld не подходит для создания новых зон. Если firewall-cmd доступен на вашем хосте, вы можете просто запустить его отдельно:

- command: firewall-cmd --permanent --new-zone dockerc

После настройки зоны вы можете использовать модуль как обычно:

- firewalld:
    zone: dockerc
    permanent: true
    source: 172.17.0.0/16
    state: enabled

Если вы не можете использовать команду firewall-cmd отдельно, то вам, вероятно, не повезло, так как проверка исходный код модуля видно, что он не содержит кода для создания новых зон.

Обратите внимание, однако, что этот модуль является курируемым модулем внутри ansible, что означает, что он не получает полной поддержки Core. Если вы знаете Python, вы можете отправить запрос на включение, чтобы этот модуль мог создавать новые зоны.

person SztupY    schedule 17.02.2017