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?

2 ответа

Решение

К сожалению, модуль 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 Команду отдельно, тогда вам, вероятно, не повезло, поскольку, проверяя исходный код модуля, вы можете увидеть, что он не содержит кода для создания новых зон.

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

По состоянию на 2017-12-12, специально совершать 8475171f67f модуль firewalld поддерживает создание (и удаление) зон.

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

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

Заметки из исходного кода

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