iptables_{{ chain_name }}_{{ rule_name }}: | |
{%- if rule.position is defined %} | |
iptables.insert: | |
- position: {{ rule.position }} | |
{%- else %} | |
iptables.append: | |
- require: | |
{%- if loop.index != 1 %} | |
- iptables: iptables_{{ chain_name }}_{% if service_name is defined %}{{ service_name }}_{% endif %}{{ loop.index - 1 }} | |
{%- else %} | |
{%- for chain in chains %} | |
- iptables: iptables_{{ chain }} | |
{%- endfor %} | |
{%- endif %} | |
{%- endif %} | |
- table: {{ rule.get('table', 'filter') }} | |
- chain: {{ chain_name }} | |
{%- if rule.family is defined %} | |
- family: {{ rule.family }} | |
{%- endif %} | |
{%- if rule.jump is defined %} | |
- jump: {{ rule.jump }} | |
{%- endif %} | |
{%- if rule.match is defined %} | |
- match: {{ rule.match }} | |
{%- endif %} | |
{%- if rule.comment is defined %} | |
- comment: {{ rule.comment }} | |
{%- endif %} | |
{%- if rule.connection_state is defined %} | |
- connstate: {{ rule.connection_state }} | |
{%- endif %} | |
{%- if rule.protocol is defined %} | |
- proto: {{ rule.protocol }} | |
{%- endif %} | |
{%- if rule.destination_port is defined %} | |
- dport: {{ rule.destination_port }} | |
{%- endif %} | |
{%- if rule.destination_ports is defined %} | |
- dports: | |
{%- for port in rule.destination_ports %} | |
- {{ port }} | |
{% endfor %} | |
{%- endif %} | |
{%- if rule.source_port is defined %} | |
- sport: {{ rule.source_port }} | |
{%- endif %} | |
{%- if rule.in_interface is defined %} | |
- in-interface: {{ rule.in_interface }} | |
{%- endif %} | |
{%- if rule.out_interface is defined %} | |
- out-interface: {{ rule.out_interface }} | |
{%- endif %} | |
{%- if rule.to_destination is defined %} | |
- to-destination: {{ rule.to_destination }} | |
{%- endif %} | |
{%- if rule.to_port is defined %} | |
- to-port: {{ rule.to_port }} | |
{%- endif %} | |
{%- if rule.to_source is defined %} | |
- to-source: {{ rule.to_source }} | |
{%- endif %} | |
{%- if rule.source_network is defined %} | |
- source: {{ rule.source_network }} | |
{%- endif %} | |
{%- if rule.destination_network is defined %} | |
- destination: {{ rule.destination_network }} | |
{%- endif %} | |
{%- if rule.log_prefix is defined %} | |
- log-prefix: '{{ rule.log_prefix }}' | |
{%- endif %} | |
{%- if rule.log_level is defined %} | |
- log-level: {{ rule.log_level }} | |
{%- endif %} | |
{%- if rule.limit is defined %} | |
- limit: '{{ rule.limit }}' | |
{%- endif %} | |
{%- if chain.policy is defined %} | |
- require_in: | |
- iptables: iptables_{{ chain_name }}_policy | |
{%- endif %} | |
{%- if grains.get('virtual_subtype', None) not in ['Docker', 'LXC'] %} | |
- require: | |
- iptables: iptables_{{ chain_name }}{% if rule.family is defined %}_{{ rule.family }}{% endif %} | |
{%- endif %} | |
- save: True |