community.general.iptables_state 模块 – 将 iptables 状态保存到文件或从文件恢复状态
注意
此模块是 community.general 集合 (版本 10.1.0) 的一部分。
如果您使用的是 ansible
包,则可能已安装此集合。它不包含在 ansible-core
中。要检查是否已安装它,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.general
。您需要其他要求才能使用此模块,有关详细信息,请参见 要求。
要在 playbook 中使用它,请指定:community.general.iptables_state
。
community.general 1.1.0 中的新增功能
概要
iptables
用于设置、维护和检查 Linux 内核中 IP 数据包过滤器规则表的规则。此模块处理规则的保存和/或加载。这与
iptables-save
和iptables-restore
(或 IPv6 的ip6tables-save
和ip6tables-restore
)命令的行为相同,此模块在内部使用这些命令。远程修改防火墙状态可能会导致在新的规则集中出现错误时主机访问权限松散。此模块嵌入了一个回滚功能来避免这种情况,方法是告诉主机如果在给定的延迟后 cookie 仍然存在,则恢复之前的规则,并且在此期间一直告诉控制器尝试通过新的连接从主机上删除此 cookie。
注意
此模块具有相应的 action 插件。
要求
以下要求是在执行此模块的主机上所需的。
iptables
ip6tables
参数
参数 |
注释 |
---|---|
保存或恢复所有数据包和字节计数器的值。 当 选项
|
|
此模块应应用到的 IP 协议版本。 选项
|
|
指定iptables相关命令内部用来加载内核模块的 默认情况下,检查 |
|
对于 如果 选项
|
|
应将 iptables 状态保存到的文件。 应从中恢复 iptables 状态的文件。 |
|
防火墙状态是应该保存(到文件)还是恢复(从文件)。 选项
|
|
当 当 选项
|
|
等待 N 秒,直到 xtables 锁释放,以防止在多个程序实例同时运行时立即失败。 |
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全支持 |
表示此模块具有相应的 action 插件,因此可以在控制器上执行部分选项。 |
|
支持:完全支持 |
支持与 |
|
支持:完全支持 |
可以在 |
|
支持:不支持 |
在 diff 模式下,将返回有关已更改内容(或可能需要在 |
备注
注意
回滚功能不是模块选项,而是取决于任务的属性。要启用它,必须异步运行模块,即通过将任务属性
poll
设置为0
,并将async
设置为小于或等于ANSIBLE_TIMEOUT
的值。如果async
值更大,则回滚仍然会发生(如果应该发生),但您会遇到连接超时,而不是模块失败后返回的更相关信息。
示例
# 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
返回值
常见的返回值已在 此处 记录,以下是此模块特有的字段
键 |
描述 |
---|---|
是否已成功恢复所需状态。 返回值:始终返回 示例: |
|
模块启动时防火墙的当前状态。 返回值:始终返回 示例: |
|
模块恢复的状态,无论最终是否应用。 返回值:始终返回 示例: |
|
模块保存的 iptables 状态。 返回值:始终返回 示例: |
|
模块运行前系统上的 iptables,按表分隔。 如果使用了选项 返回值:始终返回 示例: |
|
指定表的全部链的策略和规则。 返回值:成功 |