mirror of
https://github.com/ansible-collections/ansible.posix.git
synced 2026-05-12 04:22:00 +00:00
Compare commits
45 Commits
stable-2
...
6835e71770
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6835e71770 | ||
|
|
b96fad5e5b | ||
|
|
2d350e6073 | ||
|
|
c4ff0545f1 | ||
|
|
ea6ef5c775 | ||
|
|
9007e20b2f | ||
|
|
508e3d920f | ||
|
|
18e023dd77 | ||
|
|
d3204df536 | ||
|
|
162e72182f | ||
|
|
1c1dd005c8 | ||
|
|
40c27e2bee | ||
|
|
c273ac2a01 | ||
|
|
f978998521 | ||
|
|
c319c856ed | ||
|
|
cdb442ea48 | ||
|
|
f977bffff2 | ||
|
|
dabaca4b70 | ||
|
|
26b9b1438d | ||
|
|
1994b2cf1c | ||
|
|
2f224e6a6a | ||
|
|
96ec2097cc | ||
|
|
7b9b1f4957 | ||
|
|
f0b5f039d3 | ||
|
|
5ceb40b600 | ||
|
|
2cec8cbed5 | ||
|
|
1b8aeb03cb | ||
|
|
eead50b287 | ||
|
|
4ff0e3aa13 | ||
|
|
979f00ce75 | ||
|
|
ed3d322fd5 | ||
|
|
d9f54eb9d4 | ||
|
|
7d8da00f79 | ||
|
|
f087d58cbe | ||
|
|
eb740e97d4 | ||
|
|
44a2151dbf | ||
|
|
83288b9020 | ||
|
|
4c6898ee6e | ||
|
|
f5eae12146 | ||
|
|
f632fad9d4 | ||
|
|
74edb72249 | ||
|
|
91129ed381 | ||
|
|
7b8d627552 | ||
|
|
6175a5028b | ||
|
|
8e34860d6c |
@@ -4,8 +4,7 @@
|
||||
# SPDX-FileCopyrightText: 2024, Ansible Project
|
||||
|
||||
skip_list:
|
||||
- meta-runtime[unsupported-version] # This rule doesn't make any sense
|
||||
- meta-runtime[unsupported-version] # Tis rule doesn't make any sense
|
||||
- fqcn[deep] # This rule produces false positives for files in tests/unit/plugins/action/fixtures/
|
||||
- sanity[cannot-ignore] # This rule is skipped to keep backward compatibility with Python 2
|
||||
exclude_paths:
|
||||
- changelogs/
|
||||
|
||||
@@ -43,7 +43,7 @@ pool: Standard
|
||||
|
||||
stages:
|
||||
- stage: Sanity_devel
|
||||
displayName: Ansible devel Sanity & Units & Lint
|
||||
displayName: Ansible devel sanity
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
@@ -57,23 +57,8 @@ stages:
|
||||
test: units
|
||||
- name: Lint
|
||||
test: lint
|
||||
- stage: Sanity_2_20
|
||||
displayName: Ansible 2.20 Sanity & Units & Lint
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: "{0}"
|
||||
testFormat: 2.20/{0}
|
||||
targets:
|
||||
- name: Sanity
|
||||
test: sanity
|
||||
- name: Units
|
||||
test: units
|
||||
- name: Lint
|
||||
test: lint
|
||||
- stage: Sanity_2_19
|
||||
displayName: Ansible 2.19 Sanity & Units & Lint
|
||||
displayName: Ansible 2.19 sanitay & Units & Lint
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
@@ -88,7 +73,7 @@ stages:
|
||||
- name: Lint
|
||||
test: lint
|
||||
- stage: Sanity_2_18
|
||||
displayName: Ansible 2.18 Sanity & Units & Lint
|
||||
displayName: Ansible 2.18 sanity & Units & Lint
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
@@ -103,7 +88,7 @@ stages:
|
||||
- name: Lint
|
||||
test: lint
|
||||
- stage: Sanity_2_17
|
||||
displayName: Ansible 2.17 Sanity & Units & Lint
|
||||
displayName: Ansible 2.17 sanity & Units & Lint
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
@@ -118,7 +103,7 @@ stages:
|
||||
- name: Lint
|
||||
test: lint
|
||||
- stage: Sanity_2_16
|
||||
displayName: Ansible 2.16 Sanity & Units & Lint
|
||||
displayName: Ansible 2.16 sanity & Units & Lint
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
@@ -130,8 +115,6 @@ stages:
|
||||
test: sanity
|
||||
- name: Units
|
||||
test: units
|
||||
- name: Lint
|
||||
test: lint
|
||||
## Docker
|
||||
- stage: Docker_devel
|
||||
displayName: Docker devel
|
||||
@@ -147,20 +130,6 @@ stages:
|
||||
test: ubuntu2204
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu2404
|
||||
- stage: Docker_2_20
|
||||
displayName: Docker 2.20
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: 2.20/linux/{0}/1
|
||||
targets:
|
||||
- name: Fedora 42
|
||||
test: fedora42
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu2204
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu2404
|
||||
- stage: Docker_2_19
|
||||
displayName: Docker 2.19
|
||||
dependsOn: []
|
||||
@@ -233,22 +202,6 @@ stages:
|
||||
test: freebsd/14.3
|
||||
- name: FreeBSD 13.5
|
||||
test: freebsd/13.5
|
||||
- stage: Remote_2_20
|
||||
displayName: Remote 2.20
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: 2.20/{0}/1
|
||||
targets:
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: RHEL 9.6
|
||||
test: rhel/9.6
|
||||
- name: FreeBSD 14.3
|
||||
test: freebsd/14.3
|
||||
- name: FreeBSD 13.5
|
||||
test: freebsd/13.5
|
||||
- stage: Remote_2_19
|
||||
displayName: Remote 2.19
|
||||
dependsOn: []
|
||||
@@ -273,8 +226,6 @@ stages:
|
||||
parameters:
|
||||
testFormat: 2.18/{0}/1
|
||||
targets:
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: RHEL 9.4
|
||||
test: rhel/9.4
|
||||
- name: FreeBSD 13.5
|
||||
@@ -287,9 +238,8 @@ stages:
|
||||
parameters:
|
||||
testFormat: 2.17/{0}/1
|
||||
targets:
|
||||
# 2.17 remote target doesn't have RHEL 9 image
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: RHEL 9.3
|
||||
test: rhel/9.3
|
||||
- name: FreeBSD 13.5
|
||||
test: freebsd/13.5
|
||||
- stage: Remote_2_16
|
||||
@@ -300,9 +250,10 @@ stages:
|
||||
parameters:
|
||||
testFormat: 2.16/{0}/1
|
||||
targets:
|
||||
# 2.16 remote target only has RHEL 9.6 image
|
||||
- name: RHEL 9.6
|
||||
test: rhel/9.6
|
||||
- name: RHEL 8.8
|
||||
test: rhel/8.8
|
||||
- name: RHEL 9.2
|
||||
test: rhel/9.2
|
||||
|
||||
## Finally
|
||||
|
||||
@@ -321,9 +272,6 @@ stages:
|
||||
- Sanity_2_19
|
||||
- Remote_2_19
|
||||
- Docker_2_19
|
||||
- Sanity_2_20
|
||||
- Remote_2_20
|
||||
- Docker_2_20
|
||||
- Sanity_devel
|
||||
- Remote_devel
|
||||
- Docker_devel
|
||||
|
||||
@@ -4,27 +4,6 @@ ansible.posix Release Notes
|
||||
|
||||
.. contents:: Topics
|
||||
|
||||
v2.1.0
|
||||
======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
This is the minor release of the ``ansible.posix`` collection.
|
||||
This changelog contains all changes to the modules and plugins
|
||||
in the stable-2 branch that have been added after the release of
|
||||
``ansible.posix`` 2.0.0
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- profile_tasks and profile_roles callback plugins - avoid deleted/deprecated callback functions, instead use modern interface that was introduced a longer time ago (https://github.com/ansible-collections/ansible.posix/issues/650).
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- ansible.posix.cgroup_perf_recap - fixes json module load path (https://github.com/ansible-collections/ansible.posix/issues/630).
|
||||
|
||||
v2.0.0
|
||||
======
|
||||
|
||||
|
||||
@@ -490,25 +490,3 @@ releases:
|
||||
- 597_remove_fstab_comment_on_updating.yml
|
||||
- 598_icmp_block_inversion.yml
|
||||
release_date: '2024-12-04'
|
||||
2.1.0:
|
||||
changes:
|
||||
bugfixes:
|
||||
- ansible.posix.cgroup_perf_recap - fixes json module load path (https://github.com/ansible-collections/ansible.posix/issues/630).
|
||||
minor_changes:
|
||||
- profile_tasks and profile_roles callback plugins - avoid deleted/deprecated
|
||||
callback functions, instead use modern interface that was introduced a longer
|
||||
time ago (https://github.com/ansible-collections/ansible.posix/issues/650).
|
||||
release_summary: 'This is the minor release of the ``ansible.posix`` collection.
|
||||
|
||||
This changelog contains all changes to the modules and plugins
|
||||
|
||||
in the stable-2 branch that have been added after the release of
|
||||
|
||||
``ansible.posix`` 2.0.0'
|
||||
fragments:
|
||||
- 2.1.0.yml
|
||||
- 631_fixes_module_path.yml
|
||||
- 642_ci_add_rhel10.yml
|
||||
- 650-profile_tasks_roles.yml
|
||||
- 654_ci_bump_core_version.yml
|
||||
release_date: '2025-07-16'
|
||||
|
||||
2
changelogs/fragments/603_bump_version_3.yml
Normal file
2
changelogs/fragments/603_bump_version_3.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
trivial:
|
||||
- Bump version to 3.0.0 for the next release (https://github.com/ansible-collections/ansible.posix/issues/603).
|
||||
2
changelogs/fragments/618_ci_remove_ubuntu2004.yml
Normal file
2
changelogs/fragments/618_ci_remove_ubuntu2004.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
trivial:
|
||||
- Remove ubuntu20.04 from CI tests (https://github.com/ansible-collections/ansible.posix/issues/612).
|
||||
@@ -0,0 +1,3 @@
|
||||
---
|
||||
minor_changes:
|
||||
- profile_tasks - Add option to provide a different date/time format (https://github.com/ansible-collections/ansible.posix/issues/279).
|
||||
6
changelogs/fragments/631_fixes_module_path.yml
Normal file
6
changelogs/fragments/631_fixes_module_path.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
bugfixes:
|
||||
- ansible.posix.cgroup_perf_recap - fixes json module load path (https://github.com/ansible-collections/ansible.posix/issues/630).
|
||||
trivial:
|
||||
- ansible.posix.seboolean - remove unnecessary condition from seboolean integration tests (https://github.com/ansible-collections/ansible.posix/issues/630).
|
||||
- ansible.posix.selinux - optimize conditions for selinux integration tests (https://github.com/ansible-collections/ansible.posix/issues/630).
|
||||
2
changelogs/fragments/642_ci_add_rhel10.yml
Normal file
2
changelogs/fragments/642_ci_add_rhel10.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
trivial:
|
||||
- Add Red Hat Enterprise Linux 10.0 to the CI matrix (https://github.com/ansible-collections/ansible.posix/issues/642).
|
||||
2
changelogs/fragments/650-profile_tasks_roles.yml
Normal file
2
changelogs/fragments/650-profile_tasks_roles.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- "profile_tasks and profile_roles callback plugins - avoid deleted/deprecated callback functions, instead use modern interface that was introduced a longer time ago (https://github.com/ansible-collections/ansible.posix/issues/650)."
|
||||
3
changelogs/fragments/654_ci_bump_core_version.yml
Normal file
3
changelogs/fragments/654_ci_bump_core_version.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
trivial:
|
||||
- Bump ansible-core version to 2.20 of devel branch and add 2.19 to CI
|
||||
@@ -1,4 +0,0 @@
|
||||
trivial:
|
||||
- Updatng AZP CI matrix to ignore ansible-bad-import-from on six(https://github.com/ansible-collections/ansible.posix/pull/682).
|
||||
- Skipped sanity[cannot-ignore] to keep backward compatibility with Python2.
|
||||
- Consolidate all ansible-lint option locations into .ansible-lint file.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
trivial:
|
||||
- AZP - Update AZP matrix to follow ansible-test changes.
|
||||
- Add ignore file for Ansible Core 2.21.
|
||||
- Remove ignore lines for ansible-bad-import-from in 2.20 sanity tests.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
namespace: ansible
|
||||
name: posix
|
||||
version: 2.1.0
|
||||
version: 3.0.0
|
||||
readme: README.md
|
||||
authors:
|
||||
- Ansible (github.com/ansible)
|
||||
|
||||
@@ -52,6 +52,17 @@ DOCUMENTATION = '''
|
||||
- section: callback_profile_tasks
|
||||
key: summary_only
|
||||
version_added: 1.5.0
|
||||
datetime_format:
|
||||
description:
|
||||
- Datetime format, as expected by the C(strftime) and C(strptime) methods.
|
||||
An C(iso8601) alias will be translated to C('%Y-%m-%dT%H:%M:%S.%f') if that datetime standard wants to be used.
|
||||
default: '%A %d %B %Y %H:%M:%S %z'
|
||||
env:
|
||||
- name: PROFILE_TASKS_DATETIME_FORMAT
|
||||
ini:
|
||||
- section: callback_profile_tasks
|
||||
key: datetime_format
|
||||
version_added: 3.0.0
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
@@ -72,14 +83,15 @@ sample output: >
|
||||
'''
|
||||
|
||||
import collections
|
||||
import time
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from ansible.module_utils.six.moves import reduce
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
|
||||
|
||||
# define start time
|
||||
t0 = tn = time.time()
|
||||
dt0 = dtn = datetime.now().astimezone()
|
||||
|
||||
|
||||
def secondsToStr(t):
|
||||
@@ -104,17 +116,18 @@ def filled(msg, fchar="*"):
|
||||
|
||||
def timestamp(self):
|
||||
if self.current is not None:
|
||||
elapsed = time.time() - self.stats[self.current]['started']
|
||||
elapsed = (datetime.now().astimezone() - self.stats[self.current]['started']).total_seconds()
|
||||
self.stats[self.current]['elapsed'] += elapsed
|
||||
|
||||
|
||||
def tasktime():
|
||||
global tn
|
||||
time_current = time.strftime('%A %d %B %Y %H:%M:%S %z')
|
||||
time_elapsed = secondsToStr(time.time() - tn)
|
||||
time_total_elapsed = secondsToStr(time.time() - t0)
|
||||
tn = time.time()
|
||||
return filled('%s (%s)%s%s' % (time_current, time_elapsed, ' ' * 7, time_total_elapsed))
|
||||
def tasktime(self):
|
||||
global dtn
|
||||
cdtn = datetime.now().astimezone()
|
||||
datetime_current = cdtn.strftime(self.datetime_format)
|
||||
time_elapsed = secondsToStr((cdtn - dtn).total_seconds())
|
||||
time_total_elapsed = secondsToStr((cdtn - dt0).total_seconds())
|
||||
dtn = cdtn
|
||||
return filled('%s (%s)%s%s' % (datetime_current, time_elapsed, ' ' * 7, time_total_elapsed))
|
||||
|
||||
|
||||
class CallbackModule(CallbackBase):
|
||||
@@ -134,6 +147,7 @@ class CallbackModule(CallbackBase):
|
||||
self.sort_order = None
|
||||
self.summary_only = None
|
||||
self.task_output_limit = None
|
||||
self.datetime_format = None
|
||||
|
||||
super(CallbackModule, self).__init__()
|
||||
|
||||
@@ -159,9 +173,14 @@ class CallbackModule(CallbackBase):
|
||||
else:
|
||||
self.task_output_limit = int(self.task_output_limit)
|
||||
|
||||
self.datetime_format = self.get_option('datetime_format')
|
||||
if self.datetime_format is not None:
|
||||
if self.datetime_format == 'iso8601':
|
||||
self.datetime_format = '%Y-%m-%dT%H:%M:%S.%f'
|
||||
|
||||
def _display_tasktime(self):
|
||||
if not self.summary_only:
|
||||
self._display.display(tasktime())
|
||||
self._display.display(tasktime(self))
|
||||
|
||||
def _record_task(self, task):
|
||||
"""
|
||||
@@ -176,10 +195,11 @@ class CallbackModule(CallbackBase):
|
||||
# with the same UUID is executed when `serial` is specified in a playbook.
|
||||
# elapsed: Elapsed time since the first serialized task was started
|
||||
self.current = task._uuid
|
||||
dtn = datetime.now().astimezone()
|
||||
if self.current not in self.stats:
|
||||
self.stats[self.current] = {'started': time.time(), 'elapsed': 0.0, 'name': task.get_name()}
|
||||
self.stats[self.current] = {'started': dtn, 'elapsed': 0.0, 'name': task.get_name()}
|
||||
else:
|
||||
self.stats[self.current]['started'] = time.time()
|
||||
self.stats[self.current]['started'] = dtn
|
||||
if self._display.verbosity >= 2:
|
||||
self.stats[self.current]['path'] = task.get_path()
|
||||
|
||||
@@ -193,7 +213,7 @@ class CallbackModule(CallbackBase):
|
||||
# Align summary report header with other callback plugin summary
|
||||
self._display.banner("TASKS RECAP")
|
||||
|
||||
self._display.display(tasktime())
|
||||
self._display.display(tasktime(self))
|
||||
self._display.display(filled("", fchar="="))
|
||||
|
||||
timestamp(self)
|
||||
|
||||
@@ -28,6 +28,11 @@ options:
|
||||
- Name of a port or port range to add/remove to/from firewalld.
|
||||
- Must be in the form PORT/PROTOCOL or PORT-PORT/PROTOCOL for port ranges.
|
||||
type: str
|
||||
source_port:
|
||||
description:
|
||||
- Name of a source port or port range to add/remove to/from firewalld.
|
||||
- Must be in the form PORT/PROTOCOL or PORT-PORT/PROTOCOL for port ranges.
|
||||
type: str
|
||||
port_forward:
|
||||
description:
|
||||
- Port and protocol to forward using firewalld.
|
||||
@@ -185,6 +190,13 @@ EXAMPLES = r'''
|
||||
permanent: true
|
||||
state: enabled
|
||||
|
||||
- name: Permit traffic in home zone from port 20561/udp
|
||||
ansible.posix.firewalld:
|
||||
source_port: 20561/udp
|
||||
zone: home
|
||||
permanent: true
|
||||
state: enabled
|
||||
|
||||
- name: Permit traffic in dmz zone on http service
|
||||
ansible.posix.firewalld:
|
||||
zone: dmz
|
||||
@@ -552,6 +564,43 @@ class PortTransaction(FirewallTransaction):
|
||||
self.update_fw_settings(fw_zone, fw_settings)
|
||||
|
||||
|
||||
class SourcePortTransaction(FirewallTransaction):
|
||||
"""
|
||||
SourcePortTransaction
|
||||
"""
|
||||
|
||||
def __init__(self, module, action_args=None, zone=None, desired_state=None, permanent=False, immediate=False):
|
||||
super(SourcePortTransaction, self).__init__(
|
||||
module, action_args=action_args, desired_state=desired_state, zone=zone, permanent=permanent, immediate=immediate
|
||||
)
|
||||
|
||||
def get_enabled_immediate(self, port, protocol, timeout):
|
||||
if self.fw_offline:
|
||||
dummy, fw_settings = self.get_fw_zone_settings()
|
||||
return fw_settings.querySourcePort(port=port, protocol=protocol)
|
||||
return self.fw.querySourcePort(zone=self.zone, port=port, protocol=protocol)
|
||||
|
||||
def get_enabled_permanent(self, port, protocol, timeout):
|
||||
dummy, fw_settings = self.get_fw_zone_settings()
|
||||
return fw_settings.querySourcePort(port=port, protocol=protocol)
|
||||
|
||||
def set_enabled_immediate(self, port, protocol, timeout):
|
||||
self.fw.addSourcePort(zone=self.zone, port=port, protocol=protocol, timeout=timeout)
|
||||
|
||||
def set_enabled_permanent(self, port, protocol, timeout):
|
||||
fw_zone, fw_settings = self.get_fw_zone_settings()
|
||||
fw_settings.addSourcePort(port=port, protocol=protocol)
|
||||
self.update_fw_settings(fw_zone, fw_settings)
|
||||
|
||||
def set_disabled_immediate(self, port, protocol, timeout):
|
||||
self.fw.removeSourcePort(zone=self.zone, port=port, protocol=protocol)
|
||||
|
||||
def set_disabled_permanent(self, port, protocol, timeout):
|
||||
fw_zone, fw_settings = self.get_fw_zone_settings()
|
||||
fw_settings.removeSourcePort(port=port, protocol=protocol)
|
||||
self.update_fw_settings(fw_zone, fw_settings)
|
||||
|
||||
|
||||
class InterfaceTransaction(FirewallTransaction):
|
||||
"""
|
||||
InterfaceTransaction
|
||||
@@ -879,6 +928,7 @@ def main():
|
||||
service=dict(type='str'),
|
||||
protocol=dict(type='str'),
|
||||
port=dict(type='str'),
|
||||
source_port=dict(type='str'),
|
||||
port_forward=dict(type='list', elements='dict'),
|
||||
rich_rule=dict(type='str'),
|
||||
zone=dict(type='str'),
|
||||
@@ -900,8 +950,8 @@ def main():
|
||||
source=('permanent',),
|
||||
),
|
||||
mutually_exclusive=[
|
||||
['icmp_block', 'icmp_block_inversion', 'service', 'protocol', 'port', 'port_forward', 'rich_rule',
|
||||
'interface', 'forward', 'masquerade', 'source', 'target']
|
||||
['icmp_block', 'icmp_block_inversion', 'service', 'protocol', 'port', 'source_port', 'port_forward',
|
||||
'rich_rule', 'interface', 'forward', 'masquerade', 'source', 'target']
|
||||
],
|
||||
)
|
||||
|
||||
@@ -957,6 +1007,17 @@ def main():
|
||||
else:
|
||||
port_protocol = None
|
||||
|
||||
source_port = None
|
||||
if module.params['source_port'] is not None:
|
||||
if '/' in module.params['source_port']:
|
||||
source_port, source_port_protocol = module.params['source_port'].strip().split('/')
|
||||
else:
|
||||
source_port_protocol = None
|
||||
if not source_port_protocol:
|
||||
module.fail_json(msg='improper source_port format (missing protocol?)')
|
||||
else:
|
||||
source_port_protocol = None
|
||||
|
||||
port_forward_toaddr = ''
|
||||
port_forward = None
|
||||
if module.params['port_forward'] is not None:
|
||||
@@ -973,7 +1034,7 @@ def main():
|
||||
port_forward_toaddr = port_forward['toaddr']
|
||||
|
||||
modification = False
|
||||
if any([icmp_block, icmp_block_inversion, service, protocol, port, port_forward, rich_rule,
|
||||
if any([icmp_block, icmp_block_inversion, service, protocol, port, source_port, port_forward, rich_rule,
|
||||
interface, forward, masquerade, source, target]):
|
||||
modification = True
|
||||
if modification and desired_state in ['absent', 'present'] and target is None:
|
||||
@@ -1079,6 +1140,26 @@ def main():
|
||||
)
|
||||
)
|
||||
|
||||
if source_port is not None:
|
||||
|
||||
transaction = SourcePortTransaction(
|
||||
module,
|
||||
action_args=(source_port, source_port_protocol, timeout),
|
||||
zone=zone,
|
||||
desired_state=desired_state,
|
||||
permanent=permanent,
|
||||
immediate=immediate,
|
||||
)
|
||||
|
||||
changed, transaction_msgs = transaction.run()
|
||||
msgs = msgs + transaction_msgs
|
||||
if changed is True:
|
||||
msgs.append(
|
||||
"Changed source_port %s to %s" % (
|
||||
"%s/%s" % (source_port, source_port_protocol), desired_state
|
||||
)
|
||||
)
|
||||
|
||||
if port_forward is not None:
|
||||
transaction = ForwardPortTransaction(
|
||||
module,
|
||||
|
||||
@@ -80,6 +80,13 @@ EXAMPLES = r'''
|
||||
sysctl_file: /tmp/test_sysctl.conf
|
||||
reload: false
|
||||
|
||||
# Enable resource limits management in FreeBSD
|
||||
- ansible.posix.sysctl:
|
||||
name: kern.racct.enable
|
||||
value: '1'
|
||||
sysctl_file: /boot/loader.conf
|
||||
reload: false
|
||||
|
||||
# Set ip forwarding on in /proc and verify token value with the sysctl command
|
||||
- ansible.posix.sysctl:
|
||||
name: net.ipv4.ip_forward
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
- name: Include port test cases for firewalld module
|
||||
ansible.builtin.include_tasks: port_test_cases.yml
|
||||
|
||||
# firewalld source_port operation test cases
|
||||
- name: Include source_port test cases for firewalld module
|
||||
ansible.builtin.include_tasks: source_port_test_cases.yml
|
||||
|
||||
# firewalld source operation test cases
|
||||
- name: Include source test cases for firewalld module
|
||||
ansible.builtin.include_tasks: source_test_cases.yml
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
---
|
||||
# Test playbook for the firewalld module - source_port operations
|
||||
|
||||
- name: Firewalld source_port range test permanent enabled
|
||||
ansible.posix.firewalld:
|
||||
source_port: 5500-6850/tcp
|
||||
permanent: true
|
||||
state: enabled
|
||||
register: result
|
||||
|
||||
- name: Assert firewalld source_port range test permanent enabled worked
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Firewalld source_port range test permanent enabled rerun (verify not changed)
|
||||
ansible.posix.firewalld:
|
||||
source_port: 5500-6850/tcp
|
||||
permanent: true
|
||||
state: enabled
|
||||
register: result
|
||||
|
||||
- name: Assert firewalld source_port range test permanent enabled rerun worked (verify not changed)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Firewalld source_port test permanent enabled
|
||||
ansible.posix.firewalld:
|
||||
source_port: 6900/tcp
|
||||
permanent: true
|
||||
state: enabled
|
||||
register: result
|
||||
|
||||
- name: Assert firewalld source_port test permanent enabled worked
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Firewalld source_port test permanent enabled
|
||||
ansible.posix.firewalld:
|
||||
source_port: 6900/tcp
|
||||
permanent: true
|
||||
state: enabled
|
||||
register: result
|
||||
|
||||
- name: Assert firewalld source_port test permanent enabled worked
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Firewalld source_port test disabled
|
||||
ansible.posix.firewalld:
|
||||
source_port: "{{ item }}"
|
||||
permanent: true
|
||||
state: disabled
|
||||
loop:
|
||||
- 6900/tcp
|
||||
- 5500-6850/tcp
|
||||
|
||||
- name: Firewalld source_port test permanent enabled
|
||||
ansible.posix.firewalld:
|
||||
source_port: 8081/tcp
|
||||
permanent: true
|
||||
state: enabled
|
||||
register: result
|
||||
|
||||
- name: Assert firewalld source_port test permanent enabled worked
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Firewalld source_port test permanent enabled rerun (verify not changed)
|
||||
ansible.posix.firewalld:
|
||||
source_port: 8081/tcp
|
||||
permanent: true
|
||||
state: enabled
|
||||
register: result
|
||||
|
||||
- name: Assert firewalld source_port test permanent enabled rerun worked (verify not changed)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Firewalld source_port test permanent disabled
|
||||
ansible.posix.firewalld:
|
||||
source_port: 8081/tcp
|
||||
permanent: true
|
||||
state: disabled
|
||||
register: result
|
||||
|
||||
- name: Assert firewalld source_port test permanent disabled worked
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Firewalld source_port test permanent disabled rerun (verify not changed)
|
||||
ansible.posix.firewalld:
|
||||
source_port: 8081/tcp
|
||||
permanent: true
|
||||
state: disabled
|
||||
register: result
|
||||
|
||||
- name: Assert firewalld source_port test permanent disabled rerun worked (verify not changed)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
@@ -85,4 +85,4 @@
|
||||
- result is not changed
|
||||
- >
|
||||
result.msg == 'parameters are mutually exclusive:
|
||||
icmp_block|icmp_block_inversion|service|protocol|port|port_forward|rich_rule|interface|forward|masquerade|source|target'
|
||||
icmp_block|icmp_block_inversion|service|protocol|port|source_port|port_forward|rich_rule|interface|forward|masquerade|source|target'
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
tests/utils/shippable/timing.py shebang
|
||||
plugins/action/synchronize.py pylint:ansible-bad-import-from
|
||||
plugins/callback/cgroup_perf_recap.py pylint:ansible-bad-import-from
|
||||
plugins/modules/mount.py pylint:ansible-bad-import-from
|
||||
plugins/modules/sysctl.py pylint:ansible-bad-import-from
|
||||
plugins/shell/csh.py pylint:ansible-bad-import-from
|
||||
plugins/shell/fish.py pylint:ansible-bad-import-from
|
||||
tests/unit/mock/procenv.py pylint:ansible-bad-import-from
|
||||
tests/unit/mock/yaml_helper.py pylint:ansible-bad-import-from
|
||||
tests/unit/modules/conftest.py pylint:ansible-bad-import-from
|
||||
@@ -9,5 +9,6 @@ command -v ansible
|
||||
pip install --upgrade --user pip
|
||||
pip install --upgrade --user ansible-lint
|
||||
|
||||
# To specify additional options, you can specify them into .ansible-lint file.
|
||||
PATH="${PATH/\~/${HOME}}" ansible-lint
|
||||
PATH="${PATH/\~/${HOME}}" ansible-lint \
|
||||
--exclude changelogs/ \
|
||||
--profile=production
|
||||
|
||||
Reference in New Issue
Block a user