{# pf ~~ templates/pf.conf.j2 #} # pf ~~ /etc/pf.conf # * # common config. by Ansible # * set block-policy drop set loginterface egress set skip on { lo tun0 } block all {% for service in services %} pass in quick on egress proto {{ service["proto"] }} to port {{ service["port"] }} {% endfor %} # redirection {% for h in groups["all"] %} {% set h = hostvars[h] %} {##} {% if h.services is defined %} {% for service in h.services if h.ansible_host != "dcontroller" and service.public is defined and service.public%} pass in on egress proto { {{ service.proto }} } from any to any port {{ service.port }} rdr-to {{ h.ip.in }} {% endfor %} {% endif %} {##} {% endfor %} # * # sub-config. by Ansible # * {% if hypervisor is defined and vms is defined %} # hypervisor network passthrough {% for i in range(vms | length + 5) %} set skip on tap{{ i }} {% endfor %} {% endif %} {% include "templates/" + inventory_hostname + "/etc/pf.conf.j2" ignore missing %} # * # out. interface by Ansible # * pass out quick inet pass in proto { icmp, icmp6 } all