Note
This module is part of the community.general collection (version 10.7.3).
You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install community.general. You need further requirements to be able to use this module, see Requirements for details.
To use it in a playbook, specify: community.general.iptables_state.
New in community.general 1.1.0
iptables is used to set up, maintain, and inspect the tables of IP packet filter rules in the Linux kernel.iptables-save and iptables-restore (or ip6tables-save and ip6tables-restore for IPv6) commands which this module uses internally.Note
This module has a corresponding action plugin.
The below requirements are needed on the host that executes this module.
Parameter | Comments |
|---|---|
counters boolean | Save or restore the values of all packet and byte counters. When Choices:
|
ip_version string | Which version of the IP protocol this module should apply to. Choices:
|
modprobe path | Specify the path to the By default, |
noflush boolean | For If Choices:
|
path path / required | The file the iptables state should be saved to. The file the iptables state should be restored from. |
state string / required | Whether the firewall state should be saved (into a file) or restored (from a file). Choices:
|
table string | When When Choices:
|
wait integer | Wait N seconds for the xtables lock to prevent instant failure in case multiple instances of the program are running concurrently. |
Attribute | Support | Description |
|---|---|---|
action | Support: full | Indicates this has a corresponding action plugin so some parts of the options can be executed on the controller. |
async | Support: full | Supports being used with the |
check_mode | Support: full | Can run in |
diff_mode | Support: none | Will return details on what has changed (or possibly needs changing in |
Note
poll to 0, and async to a value less or equal to ANSIBLE_TIMEOUT. If async is greater, the rollback still happens when needed, but you experience a connection timeout instead of more relevant info returned by the module after its failure.# This will apply to all loaded/active IPv4 tables.
- name: Save current state of the firewall in system file
community.general.iptables_state:
state: saved
path: /etc/sysconfig/iptables
# This will apply only to IPv6 filter table.
- name: save current state of the firewall in system file
community.general.iptables_state:
ip_version: ipv6
table: filter
state: saved
path: /etc/iptables/rules.v6
# This will load a state from a file, with a rollback in case of access loss
- name: restore firewall state from a file
community.general.iptables_state:
state: restored
path: /run/iptables.apply
async: "{{ ansible_timeout }}"
poll: 0
# This will load new rules by appending them to the current ones
- name: restore firewall state from a file
community.general.iptables_state:
state: restored
path: /run/iptables.apply
noflush: true
async: "{{ ansible_timeout }}"
poll: 0
# This will only retrieve information
- name: get current state of the firewall
community.general.iptables_state:
state: saved
path: /tmp/iptables
check_mode: true
changed_when: false
register: iptables_state
- name: show current state of the firewall
ansible.builtin.debug:
var: iptables_state.initial_state
Common return values are documented here, the following are the fields unique to this module:
Key | Description |
|---|---|
applied boolean | Whether or not the wanted state has been successfully restored. Returned: always Sample: |
initial_state list / elements=string | The current state of the firewall when module starts. Returned: always Sample: |
restored list / elements=string | The state the module restored, whenever it is finally applied or not. Returned: always Sample: |
saved list / elements=string | The iptables state the module saved. Returned: always Sample: |
tables dictionary | The iptables on the system before the module has run, separated by table. If the option Returned: always Sample: |
|
table list / elements=string |
Policies and rules for all chains of the named table. Returned: success |
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/general/iptables_state_module.html