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