Compare commits

...

27 Commits

Author SHA1 Message Date
Santosh Mahale
114e582cda filetree lookup: document RETURN value state (#11997)
* Clarify 'state' parameter description in filetree.py

Updated the description for the 'state' parameter to clarify entry types and their meanings.

* Apply suggestion from felixfontein related to description

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 240ff65311)
2026-05-07 05:38:30 +00:00
patchback[bot]
6eb8ccd1ea [PR #11992/2232f8bc backport][stable-11] saltstack connection plugin: add documentation (#12005)
saltstack connection plugin: add documentation (#11992)

docs(saltstack): add requirements, options and notes to connection plugin

Fixes #2463


(cherry picked from commit 2232f8bcc3)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 07:21:20 +02:00
patchback[bot]
9e9d1b637e [PR #11959/d87a8a16 backport][stable-11] xml: fail for non-string values (#12000)
* xml: fail for non-string `value`s (#11959)

* fix(xml): coerce boolean values to string with a warning

Fixes #7171

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test(xml): add integration tests for boolean value handling

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* changelog: add fragment for PR 11959

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* adjustments from review

* test(xml): update boolean-value integration tests to expect failure

Now that xml fails on non-string values, replace the old success-path
tests with failure assertions and add a positive test for quoted strings.
Remove the no-longer-needed result XML fixtures.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* adjustments from review

* fix(xml): correct boolean test assertions to match actual error message format

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit d87a8a167f)

* Make Python 2.7 compatible.

Co-authored-by: Felix Fontein <felix@fontein.de>

* Fix typo.

* One more.

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-05-06 20:24:55 +02:00
patchback[bot]
b2a1249412 [PR #11972/d7f248fb backport][stable-11] odbc: fetch rows before commit to fix HY010 function sequence error (#11982)
odbc: fetch rows before commit to fix HY010 function sequence error (#11972)

* fix(odbc): fetch rows before committing to fix HY010 function sequence error

Fixes #5395



* chore(odbc): add changelog fragment for PR #11972



---------


(cherry picked from commit d7f248fb01)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 12:07:18 +02:00
patchback[bot]
d4324999da [PR #11975/2e29b320 backport][stable-11] Docs: ohai examples are not YAML (#11977)
Docs: ohai examples are not YAML (#11975)

ohai examples are not YAML.

(cherry picked from commit 2e29b3204d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-05-02 21:10:55 +02:00
patchback[bot]
51d4bec698 [PR #11946/72bc48fe backport][stable-11] iso_customize: remove note about pycdlib constraints (#11962)
iso_customize: remove note about pycdlib constraints (#11946)

(cherry picked from commit 72bc48fed4)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-05-01 21:47:19 +02:00
patchback[bot]
de5f65105d [PR #11932/00cff7fe backport][stable-11] lmdb_kv lookup: fix docs (#11938)
lmdb_kv lookup: fix docs (#11932)

(cherry picked from commit 00cff7feb4)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-04-29 21:43:00 +02:00
Felix Fontein
607c1ce085 Prepare 11.4.8. 2026-04-22 20:51:54 +02:00
Felix Fontein
ac0c24637a [stable-11] Replace default favicon URL again (#11909) (#11914)
Replace default favicon URL again (#11909)

* replace default favicon URL

* add changelog fragment for PR 11909

* fix syntax for change fragment



* use higher res favicon by default

---------



(cherry picked from commit d57a667274)

Co-authored-by: Lars Krahl <57526005+mmslkr@users.noreply.github.com>
Co-authored-by: Lars Krahl <lars.krahl@telekom.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-04-22 20:17:10 +02:00
Felix Fontein
d7d7395fa0 [stable-11] Move ansible-core 2.18 to EOL CI (#11901) (#11905)
Move ansible-core 2.18 to EOL CI (#11901)

Move ansible-core 2.18 to EOL CI.

(cherry picked from commit 9ef1dbb6d5)
2026-04-20 17:04:26 +02:00
patchback[bot]
4689cc307e [PR #11898/6b5bf0a0 backport][stable-11] Fix FQCNs in examples (#11900)
Fix FQCNs in examples (#11898)

Fix FQCNs in examples.

(cherry picked from commit 6b5bf0a0bc)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-04-20 15:17:50 +02:00
Felix Fontein
5da7b7d509 The next release will be 11.4.8. 2026-04-20 13:56:38 +02:00
Felix Fontein
334f8d3708 Release 11.4.7. 2026-04-20 12:33:14 +02:00
patchback[bot]
485b8b9f23 [PR #11812/e2a7dc46 backport][stable-11] sefcontext: flush in-process matchpathcon cache (#11853)
sefcontext: flush in-process matchpathcon cache (#11812)

* fix sefcontext: flush in-process matchpathcon cache after changes

Fixes https://github.com/ansible-collections/community.general/issues/888



* update changelog fragment with PR number and URL



---------


(cherry picked from commit e2a7dc467d)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 18:31:47 +02:00
patchback[bot]
865c96e66c [PR #11850/f8869af6 backport][stable-11] homebrew_cask: fix sudo_password failing with special characters (#11866)
* homebrew_cask: fix sudo_password failing with special characters (#11850)

* homebrew_cask: fix sudo_password with special characters in password

The SUDO_ASKPASS script embedded the password inside single quotes, which
breaks shell parsing whenever the password contains a single quote. Use a
quoted heredoc (cat <<'SUDO_PASS') instead, which treats the content
completely literally regardless of special characters.

Also replace .file.close() with .flush() (correct semantics — flushes
the write buffer without leaving the NamedTemporaryFile in a half-closed
state) and remove the redundant add_cleanup_file() call (the context
manager already deletes the file on exit).

Fixes #4957

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* homebrew_cask: add changelog fragment for #11850

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* homebrew_cask: fix sudo_password example and clarify ansible_become_password

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* homebrew_cask: use shlex.quote() for sudo_password instead of heredoc

shlex.quote() is the standard Python approach for shell-safe quoting
and handles all special characters without the edge cases of heredocs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit f8869af65f)

* Make Python 2 compatible.

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-04-17 18:31:36 +02:00
patchback[bot]
14498b7ad1 [PR #11862/342a76d5 backport][stable-11] Remove unstable CI target (#11869)
Remove unstable CI target (#11862)

Remove unstable CI target.

(cherry picked from commit 342a76d5dd)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-04-17 18:31:23 +02:00
Felix Fontein
76372a8975 [stable-11] Fix flatpak module for Fedora 44 (#11847)
CI: Replace Fedora 43 with 44 for devel (#11836)

* Replace Fedora 43 with 44 for devel in CI.

* Adjust tests.

* Adjust flatpak module to Fedora 44.

(cherry picked from commit ef656cb9b6)
2026-04-17 07:03:28 +02:00
Felix Fontein
1fa6d37c0b [stable-11] CI: Temporarily skip failing callback unit tests for ansible-core 2.21+ (#11845)
CI: Temporarily skip failing callback unit tests for ansible-core 2.21+ (#11842)

Temporarily skip failing unit tests.

(cherry picked from commit 7884a3f2a2)
2026-04-16 21:44:57 +02:00
patchback[bot]
07704d22fa [PR #11826/7dcd3c1c backport][stable-11] lxd_container: document that config values must be strings (#11828)
lxd_container: document that config values must be strings (#11826)

Fixes #8307


(cherry picked from commit 7dcd3c1c45)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 22:01:53 +02:00
patchback[bot]
9343652086 [PR #11823/71723268 backport][stable-11] lvol: fix LVM version regex to handle date formats without dashes (#11830)
lvol: fix LVM version regex to handle date formats without dashes (#11823)

* lvol: fix LVM version regex to handle date formats without dashes

Fixes #5445



* lvol: add changelog fragment for issue 5445



---------


(cherry picked from commit 7172326868)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 22:01:44 +02:00
patchback[bot]
62c026968a [PR #11815/78d004d9 backport][stable-11] lvg: clarify desired-state semantics of pvs parameter in docs (#11822)
lvg: clarify desired-state semantics of pvs parameter in docs (#11815)

lvg: doc adjustment
(cherry picked from commit 78d004d96e)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-04-14 22:03:03 +02:00
Felix Fontein
a15260f85f Prepare 11.4.7. 2026-04-08 20:14:29 +02:00
patchback[bot]
bc13d83a64 [PR #11754/b780224d backport][stable-11] mssql_script: only pass params to cursor.execute() when provided (#11759)
mssql_script: only pass params to cursor.execute() when provided (#11754)

* mssql_script: only pass params to cursor.execute() when provided

Fixes #11699



* mssql_script: add changelog fragment for PR #11754



---------


(cherry picked from commit b780224d6d)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 20:06:04 +02:00
Felix Fontein
b9e5db4373 [stable-11] Change devel to stable-2.21 in CI (#11744)
Change devel to stable-2.21 in CI.
2026-04-07 08:43:44 +02:00
patchback[bot]
2e5d3a0e1f [PR #11720/982f9472 backport][stable-11] test(integration): fix for ansible-core devel changes in register (#11723)
test(integration): fix for ansible-core devel changes in register (#11720)

(cherry picked from commit 982f9472c5)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-04-03 07:34:50 +02:00
patchback[bot]
dabdc16010 [PR #11685/909458a6 backport][stable-11] docs: improve timezone module examples and add hwclock usage (#11695)
docs: improve timezone module examples and add hwclock usage (#11685)

* docs: add variable-based example for timezone module

### Summary
Added a variable-based example to the EXAMPLES section of the timezone module.

### Changes
- Added an example demonstrating how to set timezone dynamically using a variable

### Motivation
Using variables is a common practice in Ansible playbooks. This example helps users understand how to make the module usage more flexible and reusable.

* docs: improve timezone module examples with hwclock usage

### Summary
Improved the EXAMPLES section of the timezone module by adding a more meaningful, module-specific example.

### Changes
- Added an example demonstrating usage of the `hwclock` parameter
- Simplified examples to avoid redundancy
- Fixed formatting issues causing CI failures (invalid YAML, lint errors)

### Motivation
The previous examples were minimal and did not demonstrate module-specific features. This update adds a more practical use case and ensures the examples follow proper formatting and validation rules.

(cherry picked from commit 909458a661)

Co-authored-by: Anshjeet Mahir <anshjeetmahir123@gmail.com>
2026-03-27 12:45:07 +01:00
Felix Fontein
bd56572025 The next release will be 11.4.7. 2026-03-23 21:39:54 +01:00
37 changed files with 377 additions and 193 deletions

View File

@@ -57,14 +57,14 @@ pool: Standard
stages:
### Sanity
- stage: Sanity_devel
displayName: Sanity devel
- stage: Sanity_2_21
displayName: Sanity 2.21
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Test {0}
testFormat: devel/sanity/{0}
testFormat: 2.21/sanity/{0}
targets:
- test: 1
- test: 2
@@ -96,28 +96,15 @@ stages:
- test: 2
- test: 3
- test: 4
- stage: Sanity_2_18
displayName: Sanity 2.18
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Test {0}
testFormat: 2.18/sanity/{0}
targets:
- test: 1
- test: 2
- test: 3
- test: 4
### Units
- stage: Units_devel
displayName: Units devel
- stage: Units_2_21
displayName: Units 2.21
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: devel/units/{0}/1
testFormat: 2.21/units/{0}/1
targets:
- test: 3.9
- test: '3.10'
@@ -149,27 +136,15 @@ stages:
- test: 3.8
- test: "3.11"
- test: "3.13"
- stage: Units_2_18
displayName: Units 2.18
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: 2.18/units/{0}/1
targets:
- test: 3.8
- test: "3.11"
- test: "3.13"
## Remote
- stage: Remote_devel_extra_vms
displayName: Remote devel extra VMs
- stage: Remote_2_21_extra_vms
displayName: Remote 2.21 extra VMs
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/{0}
testFormat: 2.21/{0}
targets:
- name: Alpine 3.23
test: alpine/3.23
@@ -181,13 +156,13 @@ stages:
test: ubuntu/24.04
groups:
- vm
- stage: Remote_devel
displayName: Remote devel
- stage: Remote_2_21
displayName: Remote 2.21
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/{0}
testFormat: 2.21/{0}
targets:
- name: macOS 26.3
test: macos/26.3
@@ -239,31 +214,15 @@ stages:
- 1
- 2
- 3
- stage: Remote_2_18
displayName: Remote 2.18
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.18/{0}
targets:
- name: macOS 14.3
test: macos/14.3
- name: FreeBSD 14.1
test: freebsd/14.1
groups:
- 1
- 2
- 3
### Docker
- stage: Docker_devel
displayName: Docker devel
- stage: Docker_2_21
displayName: Docker 2.21
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/linux/{0}
testFormat: 2.21/linux/{0}
targets:
- name: Fedora 43
test: fedora43
@@ -309,33 +268,15 @@ stages:
- 1
- 2
- 3
- stage: Docker_2_18
displayName: Docker 2.18
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.18/linux/{0}
targets:
- name: Fedora 40
test: fedora40
- name: Alpine 3.20
test: alpine320
- name: Ubuntu 24.04
test: ubuntu2404
groups:
- 1
- 2
- 3
### Community Docker
- stage: Docker_community_devel
displayName: Docker (community images) devel
- stage: Docker_community_2_21
displayName: Docker (community images) 2.21
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/linux-community/{0}
testFormat: 2.21/linux-community/{0}
targets:
- name: Debian 11 Bullseye
test: debian-bullseye/3.9
@@ -352,14 +293,14 @@ stages:
### Generic
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
# - stage: Generic_devel
# displayName: Generic devel
# - stage: Generic_2_21
# displayName: Generic 2.21
# dependsOn: []
# jobs:
# - template: templates/matrix.yml
# parameters:
# nameFormat: Python {0}
# testFormat: devel/generic/{0}/1
# testFormat: 2.21/generic/{0}/1
# targets:
# - test: '3.9'
# - test: '3.12'
@@ -385,44 +326,28 @@ stages:
# testFormat: 2.19/generic/{0}/1
# targets:
# - test: '3.9'
# - test: '3.13'
# - stage: Generic_2_18
# displayName: Generic 2.18
# dependsOn: []
# jobs:
# - template: templates/matrix.yml
# parameters:
# nameFormat: Python {0}
# testFormat: 2.18/generic/{0}/1
# targets:
# - test: '3.8'
# - test: '3.13'
- stage: Summary
condition: succeededOrFailed()
dependsOn:
- Sanity_devel
- Sanity_2_21
- Sanity_2_20
- Sanity_2_19
- Sanity_2_18
- Units_devel
- Units_2_21
- Units_2_20
- Units_2_19
- Units_2_18
- Remote_devel_extra_vms
- Remote_devel
- Remote_2_21_extra_vms
- Remote_2_21
- Remote_2_20
- Remote_2_19
- Remote_2_18
- Docker_devel
- Docker_2_21
- Docker_2_20
- Docker_2_19
- Docker_2_18
- Docker_community_devel
- Docker_community_2_21
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
# - Generic_devel
# - Generic_2_21
# - Generic_2_20
# - Generic_2_19
# - Generic_2_18
jobs:
- template: templates/coverage.yml

View File

@@ -31,6 +31,7 @@ jobs:
ansible:
- '2.16'
- '2.17'
- '2.18'
runs-on: ubuntu-latest
steps:
- name: Perform sanity testing
@@ -70,6 +71,12 @@ jobs:
python: '3.10'
- ansible: '2.17'
python: '3.12'
- ansible: '2.18'
python: '3.8'
- ansible: '2.18'
python: '3.11'
- ansible: '2.18'
python: '3.13'
steps:
- name: >-
@@ -180,6 +187,43 @@ jobs:
docker: ubuntu2004
python: ''
target: azp/posix/3/
# 2.18
- ansible: '2.18'
docker: fedora40
python: ''
target: azp/posix/1/
- ansible: '2.18'
docker: fedora40
python: ''
target: azp/posix/2/
- ansible: '2.18'
docker: fedora40
python: ''
target: azp/posix/3/
- ansible: '2.18'
docker: ubuntu2404
python: ''
target: azp/posix/1/
- ansible: '2.18'
docker: ubuntu2404
python: ''
target: azp/posix/2/
- ansible: '2.18'
docker: ubuntu2404
python: ''
target: azp/posix/3/
- ansible: '2.18'
docker: alpine320
python: ''
target: azp/posix/1/
- ansible: '2.18'
docker: alpine320
python: ''
target: azp/posix/2/
- ansible: '2.18'
docker: alpine320
python: ''
target: azp/posix/3/
steps:
- name: >-

View File

@@ -2,73 +2,76 @@
**Topics**
- <a href="#v11-4-6">v11\.4\.6</a>
- <a href="#v11-4-7">v11\.4\.7</a>
- <a href="#release-summary">Release Summary</a>
- <a href="#bugfixes">Bugfixes</a>
- <a href="#v11-4-5">v11\.4\.5</a>
- <a href="#v11-4-6">v11\.4\.6</a>
- <a href="#release-summary-1">Release Summary</a>
- <a href="#bugfixes-1">Bugfixes</a>
- <a href="#v11-4-4">v11\.4\.4</a>
- <a href="#v11-4-5">v11\.4\.5</a>
- <a href="#release-summary-2">Release Summary</a>
- <a href="#bugfixes-2">Bugfixes</a>
- <a href="#v11-4-3">v11\.4\.3</a>
- <a href="#v11-4-4">v11\.4\.4</a>
- <a href="#release-summary-3">Release Summary</a>
- <a href="#bugfixes-3">Bugfixes</a>
- <a href="#v11-4-2">v11\.4\.2</a>
- <a href="#v11-4-3">v11\.4\.3</a>
- <a href="#release-summary-4">Release Summary</a>
- <a href="#minor-changes">Minor Changes</a>
- <a href="#bugfixes-4">Bugfixes</a>
- <a href="#v11-4-1">v11\.4\.1</a>
- <a href="#v11-4-2">v11\.4\.2</a>
- <a href="#release-summary-5">Release Summary</a>
- <a href="#minor-changes">Minor Changes</a>
- <a href="#bugfixes-5">Bugfixes</a>
- <a href="#v11-4-1">v11\.4\.1</a>
- <a href="#release-summary-6">Release Summary</a>
- <a href="#minor-changes-1">Minor Changes</a>
- <a href="#security-fixes">Security Fixes</a>
- <a href="#bugfixes-5">Bugfixes</a>
- <a href="#v11-4-0">v11\.4\.0</a>
- <a href="#release-summary-6">Release Summary</a>
- <a href="#minor-changes-2">Minor Changes</a>
- <a href="#bugfixes-6">Bugfixes</a>
- <a href="#v11-3-0">v11\.3\.0</a>
- <a href="#v11-4-0">v11\.4\.0</a>
- <a href="#release-summary-7">Release Summary</a>
- <a href="#minor-changes-2">Minor Changes</a>
- <a href="#bugfixes-7">Bugfixes</a>
- <a href="#v11-3-0">v11\.3\.0</a>
- <a href="#release-summary-8">Release Summary</a>
- <a href="#minor-changes-3">Minor Changes</a>
- <a href="#deprecated-features">Deprecated Features</a>
- <a href="#bugfixes-7">Bugfixes</a>
- <a href="#bugfixes-8">Bugfixes</a>
- <a href="#new-plugins">New Plugins</a>
- <a href="#filter">Filter</a>
- <a href="#new-modules">New Modules</a>
- <a href="#v11-2-1">v11\.2\.1</a>
- <a href="#release-summary-8">Release Summary</a>
- <a href="#bugfixes-8">Bugfixes</a>
- <a href="#v11-2-0">v11\.2\.0</a>
- <a href="#release-summary-9">Release Summary</a>
- <a href="#bugfixes-9">Bugfixes</a>
- <a href="#v11-2-0">v11\.2\.0</a>
- <a href="#release-summary-10">Release Summary</a>
- <a href="#minor-changes-4">Minor Changes</a>
- <a href="#deprecated-features-1">Deprecated Features</a>
- <a href="#bugfixes-9">Bugfixes</a>
- <a href="#bugfixes-10">Bugfixes</a>
- <a href="#new-plugins-1">New Plugins</a>
- <a href="#lookup">Lookup</a>
- <a href="#new-modules-1">New Modules</a>
- <a href="#v11-1-2">v11\.1\.2</a>
- <a href="#release-summary-10">Release Summary</a>
- <a href="#minor-changes-5">Minor Changes</a>
- <a href="#bugfixes-10">Bugfixes</a>
- <a href="#v11-1-1">v11\.1\.1</a>
- <a href="#release-summary-11">Release Summary</a>
- <a href="#minor-changes-6">Minor Changes</a>
- <a href="#minor-changes-5">Minor Changes</a>
- <a href="#bugfixes-11">Bugfixes</a>
- <a href="#v11-1-0">v11\.1\.0</a>
- <a href="#v11-1-1">v11\.1\.1</a>
- <a href="#release-summary-12">Release Summary</a>
- <a href="#minor-changes-6">Minor Changes</a>
- <a href="#bugfixes-12">Bugfixes</a>
- <a href="#v11-1-0">v11\.1\.0</a>
- <a href="#release-summary-13">Release Summary</a>
- <a href="#minor-changes-7">Minor Changes</a>
- <a href="#deprecated-features-2">Deprecated Features</a>
- <a href="#bugfixes-12">Bugfixes</a>
- <a href="#bugfixes-13">Bugfixes</a>
- <a href="#new-plugins-2">New Plugins</a>
- <a href="#callback">Callback</a>
- <a href="#new-modules-2">New Modules</a>
- <a href="#v11-0-0">v11\.0\.0</a>
- <a href="#release-summary-13">Release Summary</a>
- <a href="#release-summary-14">Release Summary</a>
- <a href="#minor-changes-8">Minor Changes</a>
- <a href="#deprecated-features-3">Deprecated Features</a>
- <a href="#removed-features-previously-deprecated">Removed Features \(previously deprecated\)</a>
- <a href="#security-fixes-1">Security Fixes</a>
- <a href="#bugfixes-13">Bugfixes</a>
- <a href="#bugfixes-14">Bugfixes</a>
- <a href="#known-issues">Known Issues</a>
- <a href="#new-plugins-3">New Plugins</a>
- <a href="#callback-1">Callback</a>
@@ -79,8 +82,8 @@
- <a href="#new-modules-3">New Modules</a>
This changelog describes changes after version 10\.0\.0\.
<a id="v11-4-6"></a>
## v11\.4\.6
<a id="v11-4-7"></a>
## v11\.4\.7
<a id="release-summary"></a>
### Release Summary
@@ -90,12 +93,14 @@ Regular bugfix release\.
<a id="bugfixes"></a>
### Bugfixes
* counter\_enabled callback plugin \- fix plugin not observing <code>display\_ok\_hosts</code> option \([https\://github\.com/ansible\-collections/community\.general/issues/3978](https\://github\.com/ansible\-collections/community\.general/issues/3978)\, [https\://github\.com/ansible\-collections/community\.general/pull/11656](https\://github\.com/ansible\-collections/community\.general/pull/11656)\)\.
* keycloak\_authentication \- fix <code>TypeError</code> crash when a flow is defined without <code>authenticationExecutions</code> \([https\://github\.com/ansible\-collections/community\.general/issues/11547](https\://github\.com/ansible\-collections/community\.general/issues/11547)\, [https\://github\.com/ansible\-collections/community\.general/pull/11548](https\://github\.com/ansible\-collections/community\.general/pull/11548)\)\.
* xfconf \- representation of boolean properties was not consistent between Python and <code>xfconf\-query</code>\, leading to broken idempotency \([https\://github\.com/ansible\-collections/community\.general/pull/11645](https\://github\.com/ansible\-collections/community\.general/pull/11645)\)\.
* flatpak \- support new output message when an update resulted in no action that appears on Fedora 44 \([https\://github\.com/ansible\-collections/community\.general/pull/11836](https\://github\.com/ansible\-collections/community\.general/pull/11836)\)\.
* homebrew\_cask \- fix <code>sudo\_password</code> failing when the password contains single quotes or other special shell characters \([https\://github\.com/ansible\-collections/community\.general/issues/4957](https\://github\.com/ansible\-collections/community\.general/issues/4957)\, [https\://github\.com/ansible\-collections/community\.general/pull/11850](https\://github\.com/ansible\-collections/community\.general/pull/11850)\)\.
* lvol \- fix LVM version parsing \([https\://github\.com/ansible\-collections/community\.general/issues/5445](https\://github\.com/ansible\-collections/community\.general/issues/5445)\, [https\://github\.com/ansible\-collections/community\.general/pull/11823](https\://github\.com/ansible\-collections/community\.general/pull/11823)\)\.
* mssql\_script \- only passes <code>params</code> to <code>cursor\.execute\(\)</code> when the user actually provides them \([https\://github\.com/ansible\-collections/community\.general/issues/11699](https\://github\.com/ansible\-collections/community\.general/issues/11699)\, [https\://github\.com/ansible\-collections/community\.general/pull/11754](https\://github\.com/ansible\-collections/community\.general/pull/11754)\)\.
* sefcontext \- flush the in\-process <code>matchpathcon</code> cache after applying changes\, so subsequent tasks running in the same process \(for example via the Mitogen connection plugin\) see the updated SELinux file context rules instead of stale cached data \([https\://github\.com/ansible\-collections/community\.general/issues/888](https\://github\.com/ansible\-collections/community\.general/issues/888)\, [https\://github\.com/ansible\-collections/community\.general/pull/11812](https\://github\.com/ansible\-collections/community\.general/pull/11812)\)\.
<a id="v11-4-5"></a>
## v11\.4\.5
<a id="v11-4-6"></a>
## v11\.4\.6
<a id="release-summary-1"></a>
### Release Summary
@@ -105,10 +110,12 @@ Regular bugfix release\.
<a id="bugfixes-1"></a>
### Bugfixes
* python\_requirements\_info \- use <code>importlib\.metadata</code> if <code>pkg\_resources</code> from <code>setuptools</code> cannot be imported\. That module has been removed from setuptools 82\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/11491](https\://github\.com/ansible\-collections/community\.general/issues/11491)\, [https\://github\.com/ansible\-collections/community\.general/pull/11492](https\://github\.com/ansible\-collections/community\.general/pull/11492)\)\.
* counter\_enabled callback plugin \- fix plugin not observing <code>display\_ok\_hosts</code> option \([https\://github\.com/ansible\-collections/community\.general/issues/3978](https\://github\.com/ansible\-collections/community\.general/issues/3978)\, [https\://github\.com/ansible\-collections/community\.general/pull/11656](https\://github\.com/ansible\-collections/community\.general/pull/11656)\)\.
* keycloak\_authentication \- fix <code>TypeError</code> crash when a flow is defined without <code>authenticationExecutions</code> \([https\://github\.com/ansible\-collections/community\.general/issues/11547](https\://github\.com/ansible\-collections/community\.general/issues/11547)\, [https\://github\.com/ansible\-collections/community\.general/pull/11548](https\://github\.com/ansible\-collections/community\.general/pull/11548)\)\.
* xfconf \- representation of boolean properties was not consistent between Python and <code>xfconf\-query</code>\, leading to broken idempotency \([https\://github\.com/ansible\-collections/community\.general/pull/11645](https\://github\.com/ansible\-collections/community\.general/pull/11645)\)\.
<a id="v11-4-4"></a>
## v11\.4\.4
<a id="v11-4-5"></a>
## v11\.4\.5
<a id="release-summary-2"></a>
### Release Summary
@@ -118,11 +125,10 @@ Regular bugfix release\.
<a id="bugfixes-2"></a>
### Bugfixes
* cloudflare\_dns \- also allow <code>flag\=128</code> for CAA records \([https\://github\.com/ansible\-collections/community\.general/issues/11355](https\://github\.com/ansible\-collections/community\.general/issues/11355)\, [https\://github\.com/ansible\-collections/community\.general/pull/11377](https\://github\.com/ansible\-collections/community\.general/pull/11377)\)\.
* logstash\_plugin \- fix argument order when using <code>version</code> parameter\. The plugin name must come after options like <code>\-\-version</code> for the <code>logstash\-plugin</code> CLI to work correctly \([https\://github\.com/ansible\-collections/community\.general/issues/10745](https\://github\.com/ansible\-collections/community\.general/issues/10745)\, [https\://github\.com/ansible\-collections/community\.general/pull/11440](https\://github\.com/ansible\-collections/community\.general/pull/11440)\)\.
* python\_requirements\_info \- use <code>importlib\.metadata</code> if <code>pkg\_resources</code> from <code>setuptools</code> cannot be imported\. That module has been removed from setuptools 82\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/11491](https\://github\.com/ansible\-collections/community\.general/issues/11491)\, [https\://github\.com/ansible\-collections/community\.general/pull/11492](https\://github\.com/ansible\-collections/community\.general/pull/11492)\)\.
<a id="v11-4-3"></a>
## v11\.4\.3
<a id="v11-4-4"></a>
## v11\.4\.4
<a id="release-summary-3"></a>
### Release Summary
@@ -132,6 +138,20 @@ Regular bugfix release\.
<a id="bugfixes-3"></a>
### Bugfixes
* cloudflare\_dns \- also allow <code>flag\=128</code> for CAA records \([https\://github\.com/ansible\-collections/community\.general/issues/11355](https\://github\.com/ansible\-collections/community\.general/issues/11355)\, [https\://github\.com/ansible\-collections/community\.general/pull/11377](https\://github\.com/ansible\-collections/community\.general/pull/11377)\)\.
* logstash\_plugin \- fix argument order when using <code>version</code> parameter\. The plugin name must come after options like <code>\-\-version</code> for the <code>logstash\-plugin</code> CLI to work correctly \([https\://github\.com/ansible\-collections/community\.general/issues/10745](https\://github\.com/ansible\-collections/community\.general/issues/10745)\, [https\://github\.com/ansible\-collections/community\.general/pull/11440](https\://github\.com/ansible\-collections/community\.general/pull/11440)\)\.
<a id="v11-4-3"></a>
## v11\.4\.3
<a id="release-summary-4"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes-4"></a>
### Bugfixes
* keycloak\_realm \- fixed crash in <code>sanitize\_cr\(\)</code> when <code>realmrep</code> was <code>None</code> \([https\://github\.com/ansible\-collections/community\.general/pull/11260](https\://github\.com/ansible\-collections/community\.general/pull/11260)\)\.
* listen\_ports\_facts \- fix handling of empty PID lists when <code>command\=ss</code> \([https\://github\.com/ansible\-collections/community\.general/pull/11332](https\://github\.com/ansible\-collections/community\.general/pull/11332)\)\.
* monit \- add delay of 0\.5 seconds after state change and check for status \([https\://github\.com/ansible\-collections/community\.general/pull/11255](https\://github\.com/ansible\-collections/community\.general/pull/11255)\)\.
@@ -140,7 +160,7 @@ Regular bugfix release\.
<a id="v11-4-2"></a>
## v11\.4\.2
<a id="release-summary-4"></a>
<a id="release-summary-5"></a>
### Release Summary
Regular bugfix release\.
@@ -150,7 +170,7 @@ Regular bugfix release\.
* tss lookup plugin \- fixed <code>AccessTokenAuthorizer</code> initialization to include <code>base\_url</code> parameter for proper token authentication \([https\://github\.com/ansible\-collections/community\.general/pull/11031](https\://github\.com/ansible\-collections/community\.general/pull/11031)\)\.
<a id="bugfixes-4"></a>
<a id="bugfixes-5"></a>
### Bugfixes
* cobbler\_system \- compare the version as a float which is the type returned by the Cobbler API \([https\://github\.com/ansible\-collections/community\.general/issues/11044](https\://github\.com/ansible\-collections/community\.general/issues/11044)\)\.
@@ -163,7 +183,7 @@ Regular bugfix release\.
<a id="v11-4-1"></a>
## v11\.4\.1
<a id="release-summary-5"></a>
<a id="release-summary-6"></a>
### Release Summary
Regular bugfix release\.
@@ -182,7 +202,7 @@ Regular bugfix release\.
* keycloak\_user \- the parameter <code>credentials\[\]\.value</code> is now marked as <code>no\_log\=true</code>\. Before it was logged by Ansible\, unless the task was marked as <code>no\_log\: true</code>\. Since this parameter can be used for passwords\, this resulted in credential leaking \([https\://github\.com/ansible\-collections/community\.general/issues/11000](https\://github\.com/ansible\-collections/community\.general/issues/11000)\, [https\://github\.com/ansible\-collections/community\.general/pull/11005](https\://github\.com/ansible\-collections/community\.general/pull/11005)\)\.
<a id="bugfixes-5"></a>
<a id="bugfixes-6"></a>
### Bugfixes
* cloudflare\_dns \- roll back changes to CAA record validation \([https\://github\.com/ansible\-collections/community\.general/issues/10934](https\://github\.com/ansible\-collections/community\.general/issues/10934)\, [https\://github\.com/ansible\-collections/community\.general/pull/10956](https\://github\.com/ansible\-collections/community\.general/pull/10956)\)\.
@@ -198,7 +218,7 @@ Regular bugfix release\.
<a id="v11-4-0"></a>
## v11\.4\.0
<a id="release-summary-6"></a>
<a id="release-summary-7"></a>
### Release Summary
Regular bugfix and feature release\.
@@ -213,7 +233,7 @@ Regular bugfix and feature release\.
* keycloak\_client \- add idempotent support for <code>optional\_client\_scopes</code> and <code>optional\_client\_scopes</code>\, and ensure consistent change detection between check mode and live run \([https\://github\.com/ansible\-collections/community\.general/issues/5495](https\://github\.com/ansible\-collections/community\.general/issues/5495)\, [https\://github\.com/ansible\-collections/community\.general/pull/10842](https\://github\.com/ansible\-collections/community\.general/pull/10842)\)\.
* pipx module\_utils \- use <code>PIPX\_USE\_EMOJI</code> to disable emojis in the output of <code>pipx</code> 1\.8\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10874](https\://github\.com/ansible\-collections/community\.general/pull/10874)\)\.
<a id="bugfixes-6"></a>
<a id="bugfixes-7"></a>
### Bugfixes
* Avoid usage of deprecated <code>ansible\.module\_utils\.six</code> in all code that does not have to support Python 2 \([https\://github\.com/ansible\-collections/community\.general/pull/10873](https\://github\.com/ansible\-collections/community\.general/pull/10873)\)\.
@@ -230,7 +250,7 @@ Regular bugfix and feature release\.
<a id="v11-3-0"></a>
## v11\.3\.0
<a id="release-summary-7"></a>
<a id="release-summary-8"></a>
### Release Summary
Regular bugfix and feature release\.
@@ -291,7 +311,7 @@ Regular bugfix and feature release\.
* oci\_vcn \- module is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/10318](https\://github\.com/ansible\-collections/community\.general/issues/10318)\, [https\://github\.com/ansible\-collections/community\.general/pull/10652](https\://github\.com/ansible\-collections/community\.general/pull/10652)\)\.
* oracle\* doc fragments \- fragments are deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/10318](https\://github\.com/ansible\-collections/community\.general/issues/10318)\, [https\://github\.com/ansible\-collections/community\.general/pull/10652](https\://github\.com/ansible\-collections/community\.general/pull/10652)\)\.
<a id="bugfixes-7"></a>
<a id="bugfixes-8"></a>
### Bugfixes
* kdeconfig \- <code>kwriteconfig</code> executable could not be discovered automatically on systems with only <code>kwriteconfig6</code> installed\. <code>kwriteconfig6</code> can now be discovered by Ansible \([https\://github\.com/ansible\-collections/community\.general/issues/10746](https\://github\.com/ansible\-collections/community\.general/issues/10746)\, [https\://github\.com/ansible\-collections/community\.general/pull/10751](https\://github\.com/ansible\-collections/community\.general/pull/10751)\)\.
@@ -318,12 +338,12 @@ Regular bugfix and feature release\.
<a id="v11-2-1"></a>
## v11\.2\.1
<a id="release-summary-8"></a>
<a id="release-summary-9"></a>
### Release Summary
Bugfix release\.
<a id="bugfixes-8"></a>
<a id="bugfixes-9"></a>
### Bugfixes
* Avoid deprecated functionality in ansible\-core 2\.20 \([https\://github\.com/ansible\-collections/community\.general/pull/10687](https\://github\.com/ansible\-collections/community\.general/pull/10687)\)\.
@@ -335,7 +355,7 @@ Bugfix release\.
<a id="v11-2-0"></a>
## v11\.2\.0
<a id="release-summary-9"></a>
<a id="release-summary-10"></a>
### Release Summary
Regular bugfix and features release\.
@@ -378,7 +398,7 @@ Regular bugfix and features release\.
* github\_repo \- deprecate <code>force\_defaults\=true</code> \([https\://github\.com/ansible\-collections/community\.general/pull/10435](https\://github\.com/ansible\-collections/community\.general/pull/10435)\)\.
* rocketchat \- the default value for <code>is\_pre740</code>\, currently <code>true</code>\, is deprecated and will change to <code>false</code> in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10490](https\://github\.com/ansible\-collections/community\.general/pull/10490)\)\.
<a id="bugfixes-9"></a>
<a id="bugfixes-10"></a>
### Bugfixes
* jenkins\_plugin \- install latest compatible version instead of latest \([https\://github\.com/ansible\-collections/community\.general/issues/854](https\://github\.com/ansible\-collections/community\.general/issues/854)\, [https\://github\.com/ansible\-collections/community\.general/pull/10346](https\://github\.com/ansible\-collections/community\.general/pull/10346)\)\.
@@ -402,7 +422,7 @@ Regular bugfix and features release\.
<a id="v11-1-2"></a>
## v11\.1\.2
<a id="release-summary-10"></a>
<a id="release-summary-11"></a>
### Release Summary
Bugfix release\.
@@ -541,7 +561,7 @@ Bugfix release\.
* zypper \- remove redundant constructs from argument specs \([https\://github\.com/ansible\-collections/community\.general/pull/10513](https\://github\.com/ansible\-collections/community\.general/pull/10513)\)\.
* zypper\_repository \- remove redundant constructs from argument specs \([https\://github\.com/ansible\-collections/community\.general/pull/10513](https\://github\.com/ansible\-collections/community\.general/pull/10513)\)\.
<a id="bugfixes-10"></a>
<a id="bugfixes-11"></a>
### Bugfixes
* apk \- fix check for empty/whitespace\-only package names \([https\://github\.com/ansible\-collections/community\.general/pull/10532](https\://github\.com/ansible\-collections/community\.general/pull/10532)\)\.
@@ -555,7 +575,7 @@ Bugfix release\.
<a id="v11-1-1"></a>
## v11\.1\.1
<a id="release-summary-11"></a>
<a id="release-summary-12"></a>
### Release Summary
Bugfix release for the next Ansible 12 pre\-release\.
@@ -591,7 +611,7 @@ Bugfix release for the next Ansible 12 pre\-release\.
* filesystem \- remove redundant constructs from argument specs \([https\://github\.com/ansible\-collections/community\.general/pull/10494](https\://github\.com/ansible\-collections/community\.general/pull/10494)\)\.
* sysrc \- adjustments to the code \([https\://github\.com/ansible\-collections/community\.general/pull/10417](https\://github\.com/ansible\-collections/community\.general/pull/10417)\)\.
<a id="bugfixes-11"></a>
<a id="bugfixes-12"></a>
### Bugfixes
* apache2\_module \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\.
@@ -609,7 +629,7 @@ Bugfix release for the next Ansible 12 pre\-release\.
<a id="v11-1-0"></a>
## v11\.1\.0
<a id="release-summary-12"></a>
<a id="release-summary-13"></a>
### Release Summary
Regular bugfix and feature release\.
@@ -669,7 +689,7 @@ Regular bugfix and feature release\.
* catapult \- module is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/10318](https\://github\.com/ansible\-collections/community\.general/issues/10318)\, [https\://github\.com/ansible\-collections/community\.general/pull/10329](https\://github\.com/ansible\-collections/community\.general/pull/10329)\)\.
* pacemaker\_cluster \- the parameter <code>state</code> will become a required parameter in community\.general 12\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10227](https\://github\.com/ansible\-collections/community\.general/pull/10227)\)\.
<a id="bugfixes-12"></a>
<a id="bugfixes-13"></a>
### Bugfixes
* dependent lookup plugin \- avoid deprecated ansible\-core 2\.19 functionality \([https\://github\.com/ansible\-collections/community\.general/pull/10359](https\://github\.com/ansible\-collections/community\.general/pull/10359)\)\.
@@ -695,7 +715,7 @@ Regular bugfix and feature release\.
<a id="v11-0-0"></a>
## v11\.0\.0
<a id="release-summary-13"></a>
<a id="release-summary-14"></a>
### Release Summary
This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-06\-16\.
@@ -1094,7 +1114,7 @@ This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-
* keycloak\_authentication \- API calls did not properly set the <code>priority</code> during update resulting in incorrectly sorted authentication flows\. This apparently only affects Keycloak 25 or newer \([https\://github\.com/ansible\-collections/community\.general/pull/9263](https\://github\.com/ansible\-collections/community\.general/pull/9263)\)\.
* keycloak\_client \- Sanitize <code>saml\.encryption\.private\.key</code> so it does not show in the logs \([https\://github\.com/ansible\-collections/community\.general/pull/9621](https\://github\.com/ansible\-collections/community\.general/pull/9621)\)\.
<a id="bugfixes-13"></a>
<a id="bugfixes-14"></a>
### Bugfixes
* apache2\_mod\_proxy \- make compatible with Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9762](https\://github\.com/ansible\-collections/community\.general/pull/9762)\)\.

View File

@@ -6,6 +6,23 @@ Community General Release Notes
This changelog describes changes after version 10.0.0.
v11.4.7
=======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- flatpak - support new output message when an update resulted in no action that appears on Fedora 44 (https://github.com/ansible-collections/community.general/pull/11836).
- homebrew_cask - fix ``sudo_password`` failing when the password contains single quotes or other special shell characters (https://github.com/ansible-collections/community.general/issues/4957, https://github.com/ansible-collections/community.general/pull/11850).
- lvol - fix LVM version parsing (https://github.com/ansible-collections/community.general/issues/5445, https://github.com/ansible-collections/community.general/pull/11823).
- mssql_script - only passes ``params`` to ``cursor.execute()`` when the user actually provides them (https://github.com/ansible-collections/community.general/issues/11699, https://github.com/ansible-collections/community.general/pull/11754).
- sefcontext - flush the in-process ``matchpathcon`` cache after applying changes, so subsequent tasks running in the same process (for example via the Mitogen connection plugin) see the updated SELinux file context rules instead of stale cached data (https://github.com/ansible-collections/community.general/issues/888, https://github.com/ansible-collections/community.general/pull/11812).
v11.4.6
=======

View File

@@ -39,7 +39,7 @@ For more information about communication, see the [Ansible communication guide](
## Tested with Ansible
Tested with the current ansible-core 2.16, ansible-core 2.17, ansible-core 2.18, ansible-core 2.19, ansible-core 2.20 releases and the current development version of ansible-core. Ansible-core versions before 2.16.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
Tested with the current ansible-core 2.16, ansible-core 2.17, ansible-core 2.18, ansible-core 2.19, ansible-core 2.20, and ansible-core 2.21 releases. Ansible-core versions before 2.16.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
## External requirements

View File

@@ -1947,3 +1947,30 @@ releases:
- 11656-counter_enabled-display_ok_hosts.yml
- keycloak-authentication-none-executions.yml
release_date: '2026-03-23'
11.4.7:
changes:
bugfixes:
- flatpak - support new output message when an update resulted in no action
that appears on Fedora 44 (https://github.com/ansible-collections/community.general/pull/11836).
- homebrew_cask - fix ``sudo_password`` failing when the password contains
single quotes or other special shell characters (https://github.com/ansible-collections/community.general/issues/4957,
https://github.com/ansible-collections/community.general/pull/11850).
- lvol - fix LVM version parsing (https://github.com/ansible-collections/community.general/issues/5445,
https://github.com/ansible-collections/community.general/pull/11823).
- mssql_script - only passes ``params`` to ``cursor.execute()`` when the user
actually provides them (https://github.com/ansible-collections/community.general/issues/11699,
https://github.com/ansible-collections/community.general/pull/11754).
- sefcontext - flush the in-process ``matchpathcon`` cache after applying
changes, so subsequent tasks running in the same process (for example via
the Mitogen connection plugin) see the updated SELinux file context rules
instead of stale cached data (https://github.com/ansible-collections/community.general/issues/888,
https://github.com/ansible-collections/community.general/pull/11812).
release_summary: Regular bugfix release.
fragments:
- 11.4.7.yml
- 11754-mssql-script-params-substitution.yml
- 11812-sefcontext-matchpathcon-cache-flush.yml
- 11823-lvol-lvm-version-regex.yml
- 11836-fixes.yml
- 11850-homebrew-cask-sudo-password.yml
release_date: '2026-04-20'

View File

@@ -0,0 +1 @@
release_summary: Bugfix release.

View File

@@ -0,0 +1,2 @@
minor_changes:
- "mattermost, rocketchat, slack - update default ``icon_url`` to ansible favicon (https://github.com/ansible-collections/community.general/pull/11909)."

View File

@@ -0,0 +1,4 @@
bugfixes:
- "xml - emit an error when ``value`` is not a string, pointing to the offending xpath
(https://github.com/ansible-collections/community.general/issues/7171,
https://github.com/ansible-collections/community.general/pull/11959)."

View File

@@ -0,0 +1,2 @@
bugfixes:
- odbc - fetch rows before committing to fix ``HY010`` function sequence error (https://github.com/ansible-collections/community.general/issues/5395, https://github.com/ansible-collections/community.general/pull/11972).

View File

@@ -5,7 +5,7 @@
namespace: community
name: general
version: 11.4.6
version: 11.4.8
readme: README.md
authors:
- Ansible (https://github.com/ansible)

View File

@@ -14,7 +14,29 @@ author: Michael Scherer (@mscherer) <misc@zarb.org>
name: saltstack
short_description: Allow ansible to piggyback on salt minions
description:
- This allows you to use existing Saltstack infrastructure to connect to targets.
- Run commands or put/fetch files to Salt minions by using the local Salt master as transport.
- Ansible must run directly on the Salt master; this plugin uses C(salt.client.LocalClient)
and does not support connecting to a remote Salt master.
requirements:
- the C(salt) Python package must be installed on the Salt master (the Ansible controller)
options:
remote_addr:
description:
- The Salt minion ID to target.
type: string
default: inventory_hostname
vars:
- name: inventory_hostname
- name: ansible_host
notes:
- Ansible must be run from the Salt master host; the plugin cannot reach a remote Salt master.
- The inventory hostname (or O(remote_addr)) is treated as the Salt minion ID, not as a DNS
name or IP address.
- The Salt master and its minion keys must already be configured and accepted before using
this connection plugin.
- File transfer via P(community.general.saltstack#connection) uses C(hashutil.base64_decodefile)
(put) and C(cp.get_file_str) (fetch); these Salt execution modules must be available on
the targeted minions.
"""
import os

View File

@@ -80,8 +80,12 @@ _raw:
description: The permissions the resulting file or directory.
type: str
state:
description: TODO.
description:
- Type of the resulting file or directory.
- V(directory) for a directory, V(file) for a regular file, V(link) for a symbolic link.
- Other file types are skipped and not returned.
type: str
choices: [directory, file, link]
owner:
description: Name of the user that owns the file/directory.
type: raw

View File

@@ -15,7 +15,7 @@ short_description: Fetch data from LMDB
description:
- This lookup returns a list of results from an LMDB DB corresponding to a list of items given to it.
requirements:
- lmdb (Python library U(https://lmdb.readthedocs.io/en/release/))
- lmdb (Python library U(https://lmdb.readthedocs.io/en/latest/))
options:
_terms:
description: List of keys to query.
@@ -46,8 +46,8 @@ EXAMPLES = r"""
ansible.builtin.assert:
that:
- item == 'Belgium'
vars:
- lmdb_kv_db: jp.mdb
vars:
- lmdb_kv_db: jp.mdb
with_community.general.lmdb_kv:
- be
"""

View File

@@ -226,7 +226,7 @@ def update_flat(module, binary, names, method, no_dependencies):
command += installed_flat_names
stdout = _flatpak_command(module, module.check_mode, command)
result["changed"] = (
True if module.check_mode else stdout.find("Nothing to do.") == -1
True if module.check_mode else (stdout.find("Nothing to do.") == -1 and stdout.find("Nothing to update.") == -1)
)

View File

@@ -145,14 +145,16 @@ EXAMPLES = r"""
greedy: true
- name: Using sudo password for installing cask
# ansible_become_password must be set in inventory or group_vars; it is not populated by -K
community.general.homebrew_cask:
name: wireshark
state: present
sudo_password: "{{ ansible_become_pass }}"
sudo_password: "{{ ansible_become_password }}"
"""
import os
import re
import shlex
import tempfile
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
@@ -469,17 +471,15 @@ class HomebrewCask(object):
rc, out, err = '', '', ''
with tempfile.NamedTemporaryFile() as sudo_askpass_file:
sudo_askpass_file.write(b"#!/bin/sh\n\necho '%s'\n" % to_bytes(self.sudo_password))
sudo_askpass_file.write(b"#!/bin/sh\necho %s\n" % to_bytes(shlex.quote(self.sudo_password)))
sudo_askpass_file.flush()
os.chmod(sudo_askpass_file.name, 0o700)
sudo_askpass_file.file.close()
rc, out, err = self.module.run_command(
cmd,
environ_update={'SUDO_ASKPASS': sudo_askpass_file.name}
)
self.module.add_cleanup_file(sudo_askpass_file.name)
return (rc, out, err)
# /sudo_password fix --------------------- }}}

View File

@@ -68,7 +68,6 @@ options:
type: str
required: true
notes:
- The C(pycdlib) library states it supports Python 2.7 and 3.4+.
- The function C(add_file) in pycdlib is designed to overwrite the existing file in ISO with type ISO9660 / Rock Ridge 1.12
/ Joliet / UDF. But it does not overwrite the existing file in ISO with Rock Ridge 1.09 / 1.10. So we take workaround
"delete the existing file and then add file for ISO with Rock Ridge".

View File

@@ -34,7 +34,9 @@ options:
- List of comma-separated devices to use as physical devices in this volume group.
- Required when creating or resizing volume group.
- The module runs C(pvcreate) if needed.
- O(remove_extra_pvs) controls whether or not unspecified physical devices are removed from the volume group.
- This parameter defines the B(desired state) of the physical volumes in the volume group.
When the volume group already exists, physical volumes not listed here are removed from it by default.
To add physical volumes without removing existing unlisted ones, set O(remove_extra_pvs=false).
type: list
elements: str
pesize:

View File

@@ -284,7 +284,7 @@ def get_lvm_version(module):
rc, out, err = module.run_command([ver_cmd, "version"])
if rc != 0:
return None
m = re.search(r"LVM version:\s+(\d+)\.(\d+)\.(\d+).*(\d{4}-\d{2}-\d{2})", out)
m = re.search(r"LVM version:\s+(\d+)\.(\d+)\.(\d+)", out)
if not m:
return None
return mkversion(m.group(1), m.group(2), m.group(3))

View File

@@ -46,6 +46,9 @@ options:
config:
description:
- 'The config for the instance (for example V({"limits.cpu": "2"})).'
- All values in O(config) must be strings, as required by the LXD/Incus API.
Using non-string values (such as integers or booleans) will cause an API error.
Make sure to quote numeric and boolean values in YAML (for example, use V("2") instead of V(2)).
- See U(https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get).
- If the instance already exists and its "config" values in metadata obtained from the LXD API
U(https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get)

View File

@@ -66,7 +66,7 @@ options:
type: str
description:
- URL for the message sender's icon.
default: https://docs.ansible.com/favicon.ico
default: https://docs.ansible.com/favicon/favicon.ico
priority:
type: str
description:
@@ -139,7 +139,7 @@ def main():
text=dict(type='str'),
channel=dict(type='str'),
username=dict(type='str', default='Ansible'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon/favicon.ico'),
priority=dict(type='str', choices=['important', 'urgent']),
validate_certs=dict(default=True, type='bool'),
attachments=dict(type='list', elements='dict'),

View File

@@ -370,7 +370,10 @@ def run_module():
for query in queries:
# Catch and exit on any bad query errors
try:
cursor.execute(query, sql_params)
if sql_params:
cursor.execute(query, sql_params)
else:
cursor.execute(query)
qry_result = []
rows = cursor.fetchall()
while rows:

View File

@@ -134,8 +134,6 @@ def main():
cursor.execute(query, params)
else:
cursor.execute(query)
if commit:
cursor.commit()
try:
# Get the rows out into an 2d array
for row in cursor.fetchall():
@@ -162,6 +160,8 @@ def main():
except Exception as e:
module.fail_json(msg="Exception while reading rows: {0}".format(to_native(e)))
if commit:
cursor.commit()
cursor.close()
except Exception as e:
module.fail_json(msg="Failed to execute query: {0}".format(to_native(e)))

View File

@@ -31,6 +31,8 @@ author:
"""
EXAMPLES = r"""
# fmt: console
ansible webservers -m ohai --tree=/tmp/ohaidata
...
"""

View File

@@ -86,7 +86,7 @@ EXAMPLES = r"""
tasks:
- name: Create volume
packet_volume:
community.general.packet_volume:
description: "{{ volname }}"
project_id: "{{ project_id }}"
facility: ewr1
@@ -98,7 +98,7 @@ EXAMPLES = r"""
snapshot_frequency: 1day
- name: Create a device
packet_device:
community.general.packet_device:
project_id: "{{ project_id }}"
hostnames: "{{ devname }}"
operating_system: ubuntu_16_04

View File

@@ -63,7 +63,7 @@ options:
type: str
description:
- URL for the message sender's icon.
default: "https://docs.ansible.com/favicon.ico"
default: "https://docs.ansible.com/favicon/favicon.ico"
icon_emoji:
type: str
description:
@@ -226,7 +226,7 @@ def main():
msg=dict(type='str'),
channel=dict(type='str'),
username=dict(type='str', default='Ansible'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon/favicon.ico'),
icon_emoji=dict(type='str'),
link_names=dict(type='int', default=1, choices=[0, 1]),
validate_certs=dict(default=True, type='bool'),

View File

@@ -279,6 +279,10 @@ def semanage_fcontext_modify(module, result, target, ftype, setype, substitute,
if module._diff and prepared_diff:
result['diff'] = dict(prepared=prepared_diff)
if changed and not module.check_mode:
# Flush the in-process matchpathcon cache
selinux.matchpathcon_fini()
module.exit_json(changed=changed, seuser=seuser, serange=serange, **result)
@@ -322,6 +326,10 @@ def semanage_fcontext_delete(module, result, target, ftype, setype, substitute,
if module._diff and prepared_diff:
result['diff'] = dict(prepared=prepared_diff)
if changed and not module.check_mode:
# Flush the in-process matchpathcon cache
selinux.matchpathcon_fini()
module.exit_json(changed=changed, **result)

View File

@@ -87,7 +87,7 @@ options:
type: str
description:
- URL for the message sender's icon.
default: https://docs.ansible.com/favicon.ico
default: https://docs.ansible.com/favicon/favicon.ico
icon_emoji:
type: str
description:
@@ -457,7 +457,7 @@ def main():
channel=dict(type='str'),
thread_id=dict(type='str'),
username=dict(type='str', default='Ansible'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon/favicon.ico'),
icon_emoji=dict(type='str'),
link_names=dict(type='int', default=1, choices=[0, 1]),
parse=dict(type='str', choices=['none', 'full']),

View File

@@ -62,6 +62,11 @@ EXAMPLES = r"""
become: true
community.general.timezone:
name: Asia/Tokyo
- name: Set timezone and hardware clock to UTC
community.general.timezone:
name: UTC
hwclock: UTC
"""
import errno

View File

@@ -689,6 +689,16 @@ def set_target_inner(module, tree, xpath, namespaces, attribute, value):
module.fail_json(msg="Xpath %s does not reference a node! tree is %s" %
(xpath, etree.tostring(tree, pretty_print=True)))
if not isinstance(value, str):
target = ("attribute '{attribute}' at xpath '{xpath}'" if attribute else "element text at xpath '{xpath}'").format(attribute=attribute, xpath=xpath)
module.fail_json(
msg=(
"A non-string value {value!r} was parsed for {target}. ".format(value=value, target=target) +
"YAML values for booleans, octals, floats may not yield the string you intended. "
"""Quote the value to be explicit, like `value: "yes"`."""
)
)
for element in tree.xpath(xpath, namespaces=namespaces):
if not attribute:
changed = changed or (element.text != value)

View File

@@ -111,9 +111,9 @@ cmd_echo_tests:
check_mode: true
expect_error: true # because if result contains rc != 0, ansible assumes error
assertions:
- test_result.rc == None
- test_result.out == None
- test_result.err == None
- test_result.rc | default(None) == None
- test_result.out | default(None) == None
- test_result.err | default(None) == None
- name: set aa and tt value
arg_formats:

View File

@@ -60,6 +60,7 @@
- include_tasks: test-remove-element.yml
- include_tasks: test-remove-element-nochange.yml
- include_tasks: test-set-attribute-value.yml
- include_tasks: test-set-attribute-value-boolean.yml
- include_tasks: test-set-children-elements.yml
- include_tasks: test-set-children-elements-level.yml
- include_tasks: test-set-children-elements-value.yml

View File

@@ -0,0 +1,59 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# Regression test for https://github.com/ansible-collections/community.general/issues/7171
# Passing an unquoted YAML boolean as `value` must now fail with an explicit error.
- name: Setup test fixture
copy:
src: fixtures/ansible-xml-beers.xml
dest: /tmp/ansible-xml-beers.xml
- name: "Set '/business/rating/@subjective' to boolean false (unquoted YAML boolean) - must fail"
xml:
path: /tmp/ansible-xml-beers.xml
xpath: /business/rating
attribute: subjective
value: false
register: set_attribute_boolean_false
ignore_errors: true
- name: Assert that passing a boolean attribute value raises an error
assert:
that:
- set_attribute_boolean_false is failed
- "'was parsed for' in set_attribute_boolean_false.msg"
- "'attribute' in set_attribute_boolean_false.msg"
- name: "Set '/business/rating' text content to boolean true (unquoted YAML boolean) - must fail"
xml:
path: /tmp/ansible-xml-beers.xml
xpath: /business/rating
value: true
register: set_element_boolean_true
ignore_errors: true
- name: Assert that passing a boolean element value raises an error
assert:
that:
- set_element_boolean_true is failed
- "'was parsed for' in set_element_boolean_true.msg"
- "'element text' in set_element_boolean_true.msg"
- name: "Set '/business/rating/@subjective' to quoted string 'false' - must succeed"
xml:
path: /tmp/ansible-xml-beers.xml
xpath: /business/rating
attribute: subjective
value: "false"
register: set_attribute_string_false
- name: Assert that passing a quoted string attribute value succeeds
assert:
that:
- set_attribute_string_false is changed

View File

@@ -7,14 +7,20 @@ __metaclass__ = type
from ansible.playbook.task import Task
from ansible.executor.task_result import TaskResult
from ansible.release import __version__ as ansible_release
from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest
from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, MagicMock, Mock
from ansible_collections.community.general.plugins.callback.elastic import ElasticSource, TaskData
from collections import OrderedDict
import sys
import pytest
ELASTIC_MINIMUM_PYTHON_VERSION = (3, 6)
if tuple(int(x) for x in ansible_release.split(".")[:2]) >= (2, 21):
# https://github.com/ansible/ansible/issues/86761
pytest.skip("Temporarily skipping callback tests for ansible-core >= 2.21", allow_module_level=True)
class TestOpentelemetry(unittest.TestCase):
@patch('ansible_collections.community.general.plugins.callback.elastic.socket')

View File

@@ -5,7 +5,9 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import pytest
from ansible.executor.task_result import TaskResult
from ansible.release import __version__ as ansible_release
from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest
from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, Mock
from ansible_collections.community.general.plugins.callback.loganalytics import AzureLogAnalyticsSource
@@ -13,6 +15,10 @@ from ansible_collections.community.general.plugins.callback.loganalytics import
from datetime import datetime
import json
if tuple(int(x) for x in ansible_release.split(".")[:2]) >= (2, 21):
# https://github.com/ansible/ansible/issues/86761
pytest.skip("Temporarily skipping callback tests for ansible-core >= 2.21", allow_module_level=True)
class TestAzureLogAnalytics(unittest.TestCase):
@patch('ansible_collections.community.general.plugins.callback.loganalytics.socket')

View File

@@ -8,14 +8,20 @@ __metaclass__ = type
from ansible.playbook.task import Task
from ansible.executor.task_result import TaskResult
from ansible.release import __version__ as ansible_release
from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest
from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, MagicMock, Mock
from ansible_collections.community.general.plugins.callback.opentelemetry import OpenTelemetrySource, TaskData
from collections import OrderedDict
import sys
import pytest
OPENTELEMETRY_MINIMUM_PYTHON_VERSION = (3, 7)
if tuple(int(x) for x in ansible_release.split(".")[:2]) >= (2, 21):
# https://github.com/ansible/ansible/issues/86761
pytest.skip("Temporarily skipping callback tests for ansible-core >= 2.21", allow_module_level=True)
class TestOpentelemetry(unittest.TestCase):
@patch('ansible_collections.community.general.plugins.callback.opentelemetry.socket')

View File

@@ -5,7 +5,9 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import pytest
from ansible.executor.task_result import TaskResult
from ansible.release import __version__ as ansible_release
from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest
from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, Mock
from ansible_collections.community.general.plugins.callback.splunk import SplunkHTTPCollectorSource
@@ -13,6 +15,10 @@ from datetime import datetime
import json
if tuple(int(x) for x in ansible_release.split(".")[:2]) >= (2, 21):
# https://github.com/ansible/ansible/issues/86761
pytest.skip("Temporarily skipping callback tests for ansible-core >= 2.21", allow_module_level=True)
class TestSplunkClient(unittest.TestCase):
@patch('ansible_collections.community.general.plugins.callback.splunk.socket')