diff --git a/map.jinja b/map.jinja --- a/map.jinja +++ b/map.jinja @@ -22,9 +22,15 @@ {% set services = salt['grains.filter_by']({ 'Debian': { 'manager': 'systemd', + 'firewall': 'iptables', + }, + 'RedHat': { + 'manager': 'systemd', + 'firewall': 'firewalld', }, 'FreeBSD' : { 'manager': 'rc', + 'firewall': 'pf', }, }, default='Debian') %} diff --git a/roles/paas-docker/docker/files/firewalld-zones-public.xml.jinja b/roles/paas-docker/docker/files/firewalld-zones-public.xml.jinja new file mode 100644 --- /dev/null +++ b/roles/paas-docker/docker/files/firewalld-zones-public.xml.jinja @@ -0,0 +1,15 @@ + + + Public + For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted. + + + + +{% for subnet in subnets %} + + + + +{% endfor %} + diff --git a/roles/paas-docker/docker/firewall.sls b/roles/paas-docker/docker/firewall.sls --- a/roles/paas-docker/docker/firewall.sls +++ b/roles/paas-docker/docker/firewall.sls @@ -0,0 +1,24 @@ +# ------------------------------------------------------------- +# Salt — Provision Docker engine +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Project: Nasqueron +# Created: 2017-05-24 +# License: Trivial work, not eligible to copyright +# ------------------------------------------------------------- + +{% from "map.jinja" import dirs, services with context %} + +# ------------------------------------------------------------- +# Firewalld +# ------------------------------------------------------------- + +{% if services['firewall'] == 'firewalld' %} + +{{ dirs.etc }}/firewalld/zones/public.xml: + file.managed: + - source: salt://roles/paas-docker/docker/files/firewalld-zones-public.xml.jinja + - template: jinja + - context: + subnets: {{ salt['paas_docker.get_subnets']() }} + +{% endif %} diff --git a/roles/paas-docker/docker/init.sls b/roles/paas-docker/docker/init.sls --- a/roles/paas-docker/docker/init.sls +++ b/roles/paas-docker/docker/init.sls @@ -11,4 +11,5 @@ - .storage - .config - .images + - .firewall - .networks