|
- ---
- - name: Ensure iptables is present
- apt:
- name: 'iptables'
- update_cache: true
- state: present
- when: ansible_facts.os_family == "Debian"
- - name: Ensure iptables is present
- yum:
- name: 'iptables'
- update_cache: true
- state: present
- when: ansible_facts.os_family == "RedHat"
-
- - name: Save current iptable config if exist
- copy:
- dest: "{{ iptables_config_file }}.fallback"
- src: "{{ iptables_config_file }}"
- remote_src: yes
- failed_when: false
-
- - name: Apply rules
- iptables:
- ip_version: "{{ item.ip_version | default('ipv4', true) }}"
- action: "{{ item.action | default(omit, true) }}"
- rule_num: "{{ item.rule_num | default(omit, true) }}"
- chain: "{{ item.chain | default('INPUT', true) }}"
- flush: "{{ item.flush | default(omit, true) }}"
- policy: "{{ item.policy | default(omit, true) }}"
- table: "{{ item.table | default('filter', true) }}"
- source: "{{ item.source | default(omit, true) }}"
- destination: "{{ item.destination | default(omit, true) }}"
- src_range: "{{ item.src_range | default(omit, true) }}"
- dst_range: "{{ item.dst_range | default(omit, true) }}"
- source_port: "{{ item.source_port | default(omit, true) }}"
- destination_port: "{{ item.destination_port | default(omit, true) }}"
- protocol: "{{ item.protocol | default(omit, true) }}"
- icmp_type: "{{ item.icmp_type | default(omit, true) }}"
- in_interface: "{{ item.in_interface | default(omit, true) }}"
- out_interface: "{{ item.out_interface | default(omit, true) }}"
- goto: "{{ item.goto | default(omit, true) }}"
- jump: "{{ item.jump | default(omit, true) }}"
- cstate: "{{ item.cstate | default(omit, true) }}"
- fragment: "{{ item.fragment | default(omit, true) }}"
- gateway: "{{ item.gateway | default(omit, true) }}"
- gid_owner: "{{ item.gid_owner | default(omit, true) }}"
- uid_owner: "{{ item.uid_owner | default(omit, true) }}"
- limit: "{{ item.limit | default(omit, true) }}"
- limit_burst: "{{ item.limit_burst | default(omit, true) }}"
- log_level: "{{ item.log_level | default(omit, true) }}"
- log_prefix: "{{ item.log_prefix | default(omit, true) }}"
- match: "{{ item.match | default(omit, true) }}"
- reject_with: "{{ item.reject_with | default(omit, true) }}"
- set_counters: "{{ item.set_counters | default(omit, true) }}"
- set_dscp_mark: "{{ item.set_dscp_mark | default(omit, true) }}"
- set_dscp_mark_class: "{{ item.set_dscp_mark_class | default(omit, true) }}"
- syn: "{{ item.syn | default('ignore', true) }}"
- tcp_flags: "{{ item.tcp_flags | default(omit, true) }}"
- to_source: "{{ item.to_source | default(omit, true) }}"
- to_destination: "{{ item.to_destination | default(omit, true) }}"
- to_ports: "{{ item.to_ports | default(omit, true) }}"
- state: "{{ item.state | default('present', true) }}"
- with_items: "{{ iptables_rules }}"
-
-
- - name: Ensure iptables service is running
- service:
- name: iptables
- state: started
- enabled: yes
-
- - name: Save current iptables rules
- shell: "iptables-save > {{ iptables_config_file }} >> {{ iptables_config_file }}"
-
- - name: Reload saved iptables rules
- service:
- name: iptables
- state: reloaded
- ...
|