Compare commits

...

4 commits

Author SHA1 Message Date
David K.
03f066660d
Merge 3fe65ff1b1 into f632fad9d4 2024-12-03 09:33:29 +09:00
softwarefactory-project-zuul[bot]
f632fad9d4
Merge pull request #598 from saito-hideki/issue/586
[Breaking Change] [firewalld] Change type of icmp_block_inversion option from str to bool

SUMMARY
Changed the type of icmp_block_inversion option from str to bool

Fixes #586

ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME

ansible.posix.firewalld

ADDITIONAL INFORMATION
Related  #582 and #584

Reviewed-by: Adam Miller <admiller@redhat.com>
Reviewed-by: Andrew Klychkov <aklychko@redhat.com>
2024-12-02 23:50:26 +00:00
Hideki Saito
6175a5028b
Change type of icmp_block_inversion option from str to bool
* Fixes #586

Signed-off-by: Hideki Saito <saito@fgrep.org>
2024-11-28 14:19:20 +09:00
David K
3fe65ff1b1 Add ansible_ssh_password as alias for ansible_ssh_pass variable
ssh connection reads password from variables ansible_password, ansible_ssh_pass and ansible_ssh_password. In synchronize ansible_ssh_password was missing.
2024-10-11 21:42:08 +02:00
4 changed files with 39 additions and 87 deletions

View file

@ -0,0 +1,3 @@
---
breaking_changes:
- firewalld - Changed the type of icmp_block_inversion option from str to bool (https://github.com/ansible-collections/ansible.posix/issues/586).

View file

@ -342,7 +342,9 @@ class ActionModule(ActionBase):
# Determine if we need a user@ and a password # Determine if we need a user@ and a password
user = None user = None
password = task_vars.get('ansible_ssh_pass', None) or task_vars.get('ansible_password', None) password = (task_vars.get('ansible_ssh_password', None)
or task_vars.get('ansible_ssh_pass', None)
or task_vars.get('ansible_password', None))
if not dest_is_local: if not dest_is_local:
# Src and dest rsync "path" handling # Src and dest rsync "path" handling
if boolean(_tmp_args.get('set_remote_user', 'yes'), strict=False): if boolean(_tmp_args.get('set_remote_user', 'yes'), strict=False):
@ -372,7 +374,9 @@ class ActionModule(ActionBase):
src = self._process_origin(src_host, src, user) src = self._process_origin(src_host, src, user)
dest = self._process_remote(_tmp_args, dest_host, dest, user, inv_port in localhost_ports) dest = self._process_remote(_tmp_args, dest_host, dest, user, inv_port in localhost_ports)
password = dest_host_inventory_vars.get('ansible_ssh_pass', None) or dest_host_inventory_vars.get('ansible_password', None) password = (dest_host_inventory_vars.get('ansible_ssh_password', None)
or dest_host_inventory_vars.get('ansible_ssh_pass', None)
or dest_host_inventory_vars.get('ansible_password', None))
if self._templar is not None: if self._templar is not None:
password = self._templar.template(password) password = self._templar.template(password)
else: else:

View file

@ -74,7 +74,8 @@ options:
icmp_block_inversion: icmp_block_inversion:
description: description:
- Enable/Disable inversion of ICMP blocks for a zone in firewalld. - Enable/Disable inversion of ICMP blocks for a zone in firewalld.
type: str - Note that the option type is changed to bool in ansible.posix version 2.0.0 and later.
type: bool
zone: zone:
description: description:
- The firewalld zone to add/remove to/from. - The firewalld zone to add/remove to/from.
@ -152,7 +153,7 @@ author:
''' '''
EXAMPLES = r''' EXAMPLES = r'''
- name: permanently enable https service, also enable it immediately if possible - name: Permanently enable https service, also enable it immediately if possible
ansible.posix.firewalld: ansible.posix.firewalld:
service: https service: https
state: enabled state: enabled
@ -160,81 +161,92 @@ EXAMPLES = r'''
immediate: true immediate: true
offline: true offline: true
- name: permit traffic in default zone for https service - name: Permit traffic in default zone for https service
ansible.posix.firewalld: ansible.posix.firewalld:
service: https service: https
permanent: true permanent: true
state: enabled state: enabled
- name: permit ospf traffic - name: Permit ospf traffic
ansible.posix.firewalld: ansible.posix.firewalld:
protocol: ospf protocol: ospf
permanent: true permanent: true
state: enabled state: enabled
- name: do not permit traffic in default zone on port 8081/tcp - name: Do not permit traffic in default zone on port 8081/tcp
ansible.posix.firewalld: ansible.posix.firewalld:
port: 8081/tcp port: 8081/tcp
permanent: true permanent: true
state: disabled state: disabled
- ansible.posix.firewalld: - name: Permit traffic in default zone on port 161-162/ucp
ansible.posix.firewalld:
port: 161-162/udp port: 161-162/udp
permanent: true permanent: true
state: enabled state: enabled
- ansible.posix.firewalld: - name: Permit traffic in dmz zone on http service
ansible.posix.firewalld:
zone: dmz zone: dmz
service: http service: http
permanent: true permanent: true
state: enabled state: enabled
- ansible.posix.firewalld: - name: Enable FTP service with rate limiting using firewalld rich rule
ansible.posix.firewalld:
rich_rule: rule service name="ftp" audit limit value="1/m" accept rich_rule: rule service name="ftp" audit limit value="1/m" accept
permanent: true permanent: true
state: enabled state: enabled
- ansible.posix.firewalld: - name: Allow traffic from 192.0.2.0/24 in internal zone
ansible.posix.firewalld:
source: 192.0.2.0/24 source: 192.0.2.0/24
zone: internal zone: internal
state: enabled state: enabled
- ansible.posix.firewalld: - name: Assign eth2 interface to trusted zone
ansible.posix.firewalld:
zone: trusted zone: trusted
interface: eth2 interface: eth2
permanent: true permanent: true
state: enabled state: enabled
- ansible.posix.firewalld: - name: Enable forwarding in internal zone
ansible.posix.firewalld:
forward: true forward: true
state: enabled state: enabled
permanent: true permanent: true
zone: internal zone: internal
- ansible.posix.firewalld: - name: Enable masquerade in dmz zone
ansible.posix.firewalld:
masquerade: true masquerade: true
state: enabled state: enabled
permanent: true permanent: true
zone: dmz zone: dmz
- ansible.posix.firewalld: - name: Create custom zone if not already present
ansible.posix.firewalld:
zone: custom zone: custom
state: present state: present
permanent: true permanent: true
- ansible.posix.firewalld: - name: Enable ICMP block inversion in drop zone
ansible.posix.firewalld:
zone: drop zone: drop
state: enabled state: enabled
permanent: true permanent: true
icmp_block_inversion: true icmp_block_inversion: true
- ansible.posix.firewalld: - name: Block ICMP echo requests in drop zone
ansible.posix.firewalld:
zone: drop zone: drop
state: enabled state: enabled
permanent: true permanent: true
icmp_block: echo-request icmp_block: echo-request
- ansible.posix.firewalld: - name: Set internal zone target to ACCEPT
ansible.posix.firewalld:
zone: internal zone: internal
state: present state: present
permanent: true permanent: true
@ -250,7 +262,6 @@ EXAMPLES = r'''
''' '''
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.parsing.convert_bool import boolean
from ansible_collections.ansible.posix.plugins.module_utils.firewalld import FirewallTransaction, fw_offline from ansible_collections.ansible.posix.plugins.module_utils.firewalld import FirewallTransaction, fw_offline
try: try:
@ -864,7 +875,7 @@ def main():
module = AnsibleModule( module = AnsibleModule(
argument_spec=dict( argument_spec=dict(
icmp_block=dict(type='str'), icmp_block=dict(type='str'),
icmp_block_inversion=dict(type='str'), icmp_block_inversion=dict(type='bool'),
service=dict(type='str'), service=dict(type='str'),
protocol=dict(type='str'), protocol=dict(type='str'),
port=dict(type='str'), port=dict(type='str'),
@ -987,16 +998,7 @@ def main():
msgs.append("Changed icmp-block %s to %s" % (icmp_block, desired_state)) msgs.append("Changed icmp-block %s to %s" % (icmp_block, desired_state))
if icmp_block_inversion is not None: if icmp_block_inversion is not None:
# Type of icmp_block_inversion will be changed to boolean in a future release. expected_state = 'enabled' if (desired_state == 'enabled') == icmp_block_inversion else 'disabled'
icmp_block_inversion_status = True
try:
icmp_block_inversion_status = boolean(icmp_block_inversion, True)
except TypeError:
module.warn('The value of the icmp_block_inversion option is "%s". '
'The type of the option will be changed from string to boolean in a future release. '
'To avoid unexpected behavior, please change the value to boolean.' % icmp_block_inversion)
expected_state = 'enabled' if (desired_state == 'enabled') == icmp_block_inversion_status else 'disabled'
transaction = IcmpBlockInversionTransaction( transaction = IcmpBlockInversionTransaction(
module, module,
action_args=(), action_args=(),

View file

@ -114,60 +114,3 @@
ansible.builtin.assert: ansible.builtin.assert:
that: that:
- result is not changed - result is not changed
# Validate backwards compatible behavior until icmp block inversion is switched from string to boolean type
- name: Icmp block inversion enabled when icmp block inversion is non-boolean string and state is enabled
block:
- name: Testing enable icmp block inversion
ansible.posix.firewalld:
zone: trusted
icmp_block_inversion: some string
permanent: true
state: enabled
register: result
- name: Assert icmp block inversion is enabled
ansible.builtin.assert:
that:
- result is changed
- name: Testing enable icmp block inversion (verify not changed)
ansible.posix.firewalld:
zone: trusted
icmp_block_inversion: some string
permanent: true
state: enabled
register: result
- name: Assert icmp block inversion is enabled (verify not changed)
ansible.builtin.assert:
that:
- result is not changed
- name: Icmp block inversion disabled when icmp block inversion is non-boolean string and state is disabled
block:
- name: Testing disable icmp block inversion
ansible.posix.firewalld:
zone: trusted
icmp_block_inversion: some string
permanent: true
state: disabled
register: result
- name: Assert icmp block inversion is disabled
ansible.builtin.assert:
that:
- result is changed
- name: Testing disable icmp block inversion (verify not changed)
ansible.posix.firewalld:
zone: trusted
icmp_block_inversion: some string
permanent: true
state: disabled
register: result
- name: Assert icmp block inversion is disabled (verify not changed)
ansible.builtin.assert:
that:
- result is not changed