Compare commits

..

192 Commits

Author SHA1 Message Date
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
Felix Fontein
2b22a3c60b Release 11.4.6. 2026-03-23 21:15:32 +01:00
patchback[bot]
4f418ce747 [PR #11656/4dad53ab backport][stable-11] counter_enabled callback: honor display_ok_hosts setting (#11666)
counter_enabled callback: honor display_ok_hosts setting (#11656)

* fix(callback/counter_enabled): honor display_ok_hosts setting

* add changelog frag

* Update changelogs/fragments/11656-counter_enabled-display_ok_hosts.yml

(cherry picked from commit 4dad53abac)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-03-23 20:34:32 +01:00
Felix Fontein
fb26dbfa31 Prepare 11.4.6. 2026-03-22 20:34:40 +01:00
patchback[bot]
4bd1bb8c2a [PR #11645/a09e879f backport][stable-11] xfconf: fix boolean return values (#11649)
xfconf: fix boolean return values (#11645)

* xfconf: fix boolean return values

* add changelog frag

(cherry picked from commit a09e879ff2)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-03-22 20:33:24 +01:00
patchback[bot]
a742525c89 [PR #11631/b4336659 backport][stable-11] CI: Remove FreeBSD 14.3 for devel, and replace macOS 15.3 with 26.3 (#11633)
CI: Remove FreeBSD 14.3 for devel, and replace macOS 15.3 with 26.3 (#11631)

* Replace FreeBSD 14.3 with 14.4, and macOS 15.3 with 26.3.

* FreeBSD 14.4 seems to have the same problem as FreeBSD 15.0, disabling for now.

(cherry picked from commit b4336659f6)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-03-21 21:13:53 +01:00
Felix Fontein
badfef8070 [stable-11] CI: Replace apt_repository and apt_key with deb822_repository (#11625) (#11628)
CI: Replace apt_repository and apt_key with deb822_repository (#11625)

Replace apt_repository and apt_key with deb822_repository.

(cherry picked from commit bc22fbcaa0)
2026-03-20 08:06:15 +01:00
patchback[bot]
33ed69bc93 [PR #11612/5e4fbfee backport][stable-11] Update BOTMETA.yml (#11615)
Update BOTMETA.yml (#11612)

remove myself from teams

(cherry picked from commit 5e4fbfeee0)

Co-authored-by: Anatoly Pugachev <matorola@gmail.com>
2026-03-18 07:05:02 +01:00
patchback[bot]
8736ff46f2 [PR #11541/4cd91ba4 backport][stable-11] Fix templating bug in iptables_state tests (#11571)
Fix templating bug in iptables_state tests (#11541)

* Fix templating bug in iptables_state tests.

* Try to install older packages on RHEL.

(cherry picked from commit 4cd91ba4d4)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-03-11 22:15:49 +01:00
patchback[bot]
543a292f4b [PR #11548/2f33ff10 backport][stable-11] keycloak_authentication: fix TypeError when flow has no authenticationExecutions (#11564)
keycloak_authentication: fix TypeError when flow has no authenticationExecutions (#11548)

* TIAAS-12174: fix(keycloak_authentication): handle None authenticationExecutions

When a flow is defined without authenticationExecutions, module.params.get()
returns None but the key still exists in the config dict. The 'in' check
passes but iterating over None raises TypeError.

Guard the iteration with an explicit None check.

* keycloak_authentication: add changelog fragment for NoneType fix

* keycloak_authentication: update changelog fragment with PR link

* Update plugins/modules/keycloak_authentication.py



* Changelog polishing

---------



(cherry picked from commit 2f33ff1041)

Co-authored-by: Ivan Kokalovic <67540157+koke1997@users.noreply.github.com>
Co-authored-by: Ivan Kokalovic <ivan.kokalovic@example.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-03-10 06:57:43 +01:00
patchback[bot]
a93ae0c1ae [PR #11552/aaef821f backport][stable-11] Update links to iocage. Current iocage documentation is at freebsd.gi… (#11553)
Update links to iocage. Current iocage documentation is at freebsd.gi… (#11552)

Update links to iocage. Current iocage documentation is at freebsd.github.io/iocage/

(cherry picked from commit aaef821f60)

Co-authored-by: Vladimir Botka <vbotka@gmail.com>
2026-03-06 05:49:49 +00:00
Felix Fontein
b247603961 [stable-11] Update tests to pass on macOS arm64 (#11544) (#11546)
Update tests to pass on macOS arm64 (#11544)

(cherry picked from commit 9b9d8eac09)

Co-authored-by: Matt Clay <matt@mystile.com>
2026-02-27 19:29:50 +01:00
Felix Fontein
d91ff5c282 The next release will be 11.4.6. 2026-02-23 18:23:41 +01:00
Felix Fontein
c66a43aa27 Release 11.4.5. 2026-02-23 17:48:41 +01:00
Felix Fontein
30ac14bfc1 Prepare 11.4.5. 2026-02-22 16:40:03 +01:00
Felix Fontein
d9e48f0488 [stable-11] python_requirements_info: use importlib.metadata when available (#11495) (#11497)
python_requirements_info: use importlib.metadata when available (#11495)

Use importlib.metadata when available.

(cherry picked from commit 88adca3fb4)
2026-02-11 07:12:00 +01:00
patchback[bot]
80efe01bbf [PR #11484/63ddca7f backport][stable-11] supervisorctl: remove unstable tag from integration tests (#11492)
supervisorctl: remove unstable tag from integration tests (#11484)

(cherry picked from commit 63ddca7f21)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2026-02-10 21:51:15 +01:00
Felix Fontein
7bfdae02e9 The next release will be 11.4.5. 2026-01-26 18:45:47 +01:00
Felix Fontein
a552266120 Release 11.4.4. 2026-01-26 18:22:40 +01:00
patchback[bot]
2c16874370 [PR #11440/53e1e86b backport][stable-11] Logstash plugin version fix (#11449)
Logstash plugin version fix (#11440)

* logstash_plugin: fix argument order when using version parameter

* logstash_plugin: add integration tests

* logstash_plugin: add changelog fragment

(cherry picked from commit 53e1e86bcc)

Co-authored-by: Nicolas Boutet <amd3002@gmail.com>
2026-01-26 06:26:54 +01:00
Felix Fontein
275961b4ad Prepare 11.4.4. 2026-01-20 22:42:33 +01:00
Felix Fontein
c083b2fa6c [stable-11] Update ignore.txt (#11428)
Update ignore.txt.
2026-01-15 22:02:29 +01:00
Felix Fontein
cc32ee2889 Fix markup in changelog. 2026-01-11 14:28:14 +01:00
Felix Fontein
e677c46329 Make sure stable-12 CI runs in cron.
(cherry picked from commit 28b16eab66)
2026-01-11 00:43:16 +01:00
patchback[bot]
e90b6d0184 [PR #11417/a689bb8e backport][stable-11] CI: Arch Linux switched to Python 3.14 (#11419)
CI: Arch Linux switched to Python 3.14 (#11417)

Arch Linux switched to Python 3.14.

(cherry picked from commit a689bb8e8d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-01-11 00:41:07 +01:00
patchback[bot]
c398c6bb96 [PR #11401/0e6ba072 backport][stable-11] Update CI pipelines (#11404)
Update CI pipelines (#11401)

Update CI pipelines:
- Fedora 42 -> 43 for devel
- RHEL 10.0 -> 10.1 for all ansible-core branches
- FreeBSD 13.5 -> 15.0 for devel
- Alpine 3.22 -> 3.23 for devel

(cherry picked from commit 0e6ba07261)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-01-08 12:28:37 +01:00
patchback[bot]
6185f06f64 [PR #11387/d4089ca2 backport][stable-11] Update RHEL 9.x to 9.7 in CI (#11392)
Update RHEL 9.x to 9.7 in CI (#11387)

* Update RHEL 9.x to 9.7 in CI.

* Add skips.

(cherry picked from commit d4089ca29a)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-01-06 18:17:59 +01:00
Felix Fontein
91ba894643 [stable-11] cloudflare_dns: also allow 128 as a value for flag (#11377) (#11384)
cloudflare_dns: also allow 128 as a value for flag (#11377)

* Also allow 128 as a value for flag.

* Forgot to add changelog fragment.

(cherry picked from commit c00fb4fb5c)
2026-01-05 18:57:35 +01:00
patchback[bot]
5807791c80 [PR #11357/ddf05104 backport][stable-11] Add missing integration test aliases files (#11371)
Add missing integration test aliases files (#11357)

* Add missing aliases files.

* Fix directory name.

* Add another missing aliases file.

* Adjust test to also work with newer jsonpatch versions.

(cherry picked from commit ddf05104f3)

Co-authored-by: Felix Fontein <felix@fontein.de>
2026-01-02 15:03:05 +01:00
patchback[bot]
378c73a2a1 [PR #11369/20ba59cc backport][stable-11] Added "See Also" section (#11373)
Added "See Also" section (#11369)

* Added "See Also" section

* Corrected seealso documentation

* Update ini_file.py

Removed seealso descriptions

* Update to_ini.py

Removed seealso descriptions

* Update from_ini.py

Removed seealso descriptions

(cherry picked from commit 20ba59cce6)

Co-authored-by: daomah <129229601+daomah@users.noreply.github.com>
2026-01-02 15:02:54 +01:00
Felix Fontein
a8e60d0358 The next release will be 11.4.4. 2025-12-29 15:21:16 +01:00
Felix Fontein
f2d6ac54e9 Release 11.4.3. 2025-12-29 14:46:32 +01:00
patchback[bot]
9d7fe2f0ae [PR #11332/280d269d backport][stable-11] fix: listen_ports_facts return no facts when using with podman (#11334)
fix: listen_ports_facts return no facts when using with podman (#11332)

* fix: listen_ports_facts return no facts when using with podman

* Update changelogs/fragments/listen-ports-facts-return-no-facts.yml



---------


(cherry picked from commit 280d269d78)

Co-authored-by: Daniel Gonçalves <dangoncalves@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-12-28 21:15:32 +01:00
Felix Fontein
57b3ce9572 Prepare 11.4.3. 2025-12-23 21:39:27 +01:00
patchback[bot]
405435236f [PR #11316/3debc968 backport][stable-11] Fixing documentation for scaleway_private_network module. (#11318)
Fixing documentation for scaleway_private_network module. (#11316)

(cherry picked from commit 3debc968a4)

Co-authored-by: Greg Harvey <greg.harvey@gmail.com>
2025-12-23 14:19:57 +01:00
patchback[bot]
538a701f89 [PR #11295/a5aec7d6 backport][stable-11] Fix typo in auth_username in examples (#11298)
Fix typo in auth_username in examples (#11295)

(cherry picked from commit a5aec7d61a)

Co-authored-by: Ivan Kokalovic <67540157+koke1997@users.noreply.github.com>
2025-12-19 21:10:10 +01:00
patchback[bot]
5d3132cfe0 [PR #11284/df349459 backport][stable-11] keycloak_authentication_required_actions: fix examples (#11287)
keycloak_authentication_required_actions: fix examples (#11284)

The correct parameter name is "required_actions" (plural).

(cherry picked from commit df34945991)

Co-authored-by: Samuli Seppänen <samuli.seppanen@puppeteers.net>
2025-12-15 19:25:04 +01:00
patchback[bot]
41690c84a2 [PR #11277/1b15e595 backport][stable-11] use FQCN for extending docs with files and url (#11282)
use FQCN for extending docs with files and url (#11277)

* use FQCN for extending docs with files and url

* remove typo

(cherry picked from commit 1b15e595e0)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-12-14 12:16:23 +01:00
patchback[bot]
5d9f58b69d [PR #11276/a96a5c44 backport][stable-11] sysrc tests: skip FreeBSD 14.2 for ezjail tests (#11279)
sysrc tests: skip FreeBSD 14.2 for ezjail tests (#11276)

Looks like 14.2 no longer works.

(cherry picked from commit a96a5c44a5)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-12-14 12:06:01 +01:00
Alexei Znamensky
b2f16f184a test(integration): monit: backport of PR 11255 (#11273)
* test(integration): monit: backport of PR 11255

* add changelog frag
2025-12-12 07:25:09 +01:00
patchback[bot]
bc61b2d656 [PR #11260/a977c6f7 backport][stable-11] fix(sanitize_cr): avoid crash when realmrep is empty (#11267)
fix(sanitize_cr): avoid crash when realmrep is empty (#11260)

* fix(docs): missing info on id when creating realms

* fix(sanitize_cr): avoid crash when realmrep is empty

* remove unrelated change

* remove unrelated change

* added changlog

* correct: changelogs

* Update changelogs



---------



(cherry picked from commit a977c6f7c1)

Co-authored-by: Guillaume Dorschner <44686652+GuillaumeDorschner@users.noreply.github.com>
Co-authored-by: Guillaume Dorschner <guillaume.dorschner@thalesgroup.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-12-08 23:03:21 +01:00
Alexei Znamensky
364e491b7e [stable-11] monit: fix check for pending (#11253)
* monit: fix check for pending

* add changelog frag

* adjust testcases
2025-12-03 19:19:55 +13:00
Felix Fontein
df3898b08c Next release will be 11.4.3. 2025-12-01 21:30:31 +01:00
Felix Fontein
aeb672e809 Release 11.4.2. 2025-12-01 20:47:18 +01:00
Felix Fontein
3724b36934 Prepare 11.4.2. 2025-11-30 08:37:53 +01:00
patchback[bot]
d9c09095c4 [PR #11216/6b4100d7 backport][stable-11] CONTRIBUTING.md: fixes/improvements (#11220)
CONTRIBUTING.md: fixes/improvements (#11216)

* CONTRIBUTING.md: fixes/improvements

* Update CONTRIBUTING.md



---------


(cherry picked from commit 6b4100d70f)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-11-25 22:10:42 +01:00
Felix Fontein
43e709b9f2 [stable-11] Fix crash in module_utils.datetime.fromtimestamp() (#11206) (#11214)
Fix crash in module_utils.datetime.fromtimestamp() (#11206)

Fix crash in module_utils.datetime.fromtimestamp().

(cherry picked from commit cbf13ab6c9)
2025-11-25 21:41:49 +01:00
Michael Galati
a2042c9b93 [PR #11179/ebb53416 backport][stable-11] mas: Fix parsing on mas 3.0.0+. (#11211)
mas: Fix parsing on mas 3.0.0+. (#11179)

* mas: Fix parsing on mas 3.0.0+.

`mas` changed the formatting of `mas list` with version 3, which breaks
the parsing this module uses to determine which apps are installed.  In
particular, app IDs may now have leading space, which causes us to split
the string too early.

* Changelog fragment.

* Better format examples and changlog fragment.

(cherry picked from commit ebb534166e)
2025-11-25 06:46:29 +01:00
Felix Fontein
67bb94ae89 [stable-11] Bump actions/checkout from 5 to 6 in the ci group (#11200) (#11202)
Bump actions/checkout from 5 to 6 in the ci group (#11200)

Bumps the ci group with 1 update: [actions/checkout](https://github.com/actions/checkout).

Updates `actions/checkout` from 5 to 6
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: ci
...



(cherry picked from commit a803156277)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-24 18:44:00 +01:00
patchback[bot]
4298003ac8 [PR #11185/4517b86e backport][stable-11] snmp_facts: update docs with dependency constraint (#11188)
snmp_facts: update docs with dependency constraint (#11185)

(cherry picked from commit 4517b86ed4)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-11-22 22:44:05 +01:00
Felix Fontein
1b44e595a3 [stable-11] docs: migrate RTD URLs to docs.ansible.com (#11109) (#11176)
docs: migrate RTD URLs to docs.ansible.com (#11109)

* docs: update readthedocs.io URLs to docs.ansible.com equivalents

🤖 Generated with Claude Code
https://claude.ai/code



* Adjust favicon URL.



---------




(cherry picked from commit d98df2d3a5)

Co-authored-by: John Barker <john@johnrbarker.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Don Naro <dnaro@redhat.com>
2025-11-19 18:22:31 +01:00
patchback[bot]
d9f99fdf8d [PR #11159/6bf0780d backport][stable-11] xfconf: update state=absent doc (#11161)
xfconf: update state=absent doc (#11159)

(cherry picked from commit 6bf0780d23)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-11-15 21:11:01 +01:00
patchback[bot]
542772500b [PR #11150/32f0ad2f backport][stable-11] Fixed typo in decompress example documentation (#11152)
Fixed typo in decompress example documentation (#11150)

(cherry picked from commit 32f0ad2f97)

Co-authored-by: Thomas Löhr <tlhr@users.noreply.github.com>
2025-11-13 23:11:47 +01:00
patchback[bot]
b66b26259a [PR #11123/1a82e93c backport][stable-11] Re-enable Copr integration tests (#11125)
Re-enable Copr integration tests (#11123)

Fixes: https://github.com/ansible-collections/community.general/issues/10987
(cherry picked from commit 1a82e93c6d)

Co-authored-by: Maxwell G <maxwell@gtmx.me>
2025-11-12 19:46:16 +01:00
Felix Fontein
0567de50d8 [stable-11] Move ansible-core 2.17 to EOL CI (#11127)
Move ansible-core 2.17 to EOL CI.
2025-11-12 19:45:58 +01:00
Felix Fontein
147ffc6b48 [stable-11] Use Cobbler API version format to check version (#11045) (#11118)
Use Cobbler API version format to check version (#11045)

* Use Cobbler API version format to check version

Cobbler use the formula below to return the version:

float(format(int(elems[0]) + 0.1 * int(elems[1]) + 0.001 * int(elems[2]), '.3f'))

Which means that 3.3.7 is changed to 3.307 which is > 3.4.

* Compare Cobbler version as a float

* Remove LooseVersion import

(cherry picked from commit 6f11d75047)

Co-authored-by: Bruno Travouillon <devel@travouillon.fr>
2025-11-12 06:59:31 +01:00
Felix Fontein
4594f7cd18 [stable-11] Add ignore.txt entries for bad-return-value-key (#11111) (#11116)
Add ignore.txt entries for bad-return-value-key (#11111)

Add ignore.txt entries.

(cherry picked from commit 62492fe742)
2025-11-12 06:53:58 +01:00
patchback[bot]
008de3e245 [PR #11089/c26a4e61 backport][stable-11] consul_kv: adjust RV in docs (#11091)
consul_kv: adjust RV in docs (#11089)

(cherry picked from commit c26a4e613b)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-11-11 06:09:15 +01:00
Felix Fontein
943c021446 [stable-11] Migrate 1 RTD URLs to docs.ansible.com (#11081) (#11083)
Migrate 1 RTD URLs to docs.ansible.com (#11081)

Migrate RTD URLs to docs.ansible.com

Updated 1 ansible.readthedocs.io URLs to docs.ansible.com equivalents
as part of the Read the Docs migration.

🤖 Generated with Claude Code
https://claude.ai/code


(cherry picked from commit e8bdf46627)

Co-authored-by: John Barker <john@johnrbarker.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-10 20:35:15 +01:00
patchback[bot]
4ef7b7573b [PR #11031/3cbe44e2 backport][stable-11] Update TSS lookup plugin documentation and add Delinea Platform authentication examples (#11073)
Update TSS lookup plugin documentation and add Delinea Platform authentication examples (#11031)

* - Update documentation from Thycotic to Delinea branding
- Add comprehensive Platform authentication examples
- Enhance existing examples with clearer task names
- Improve RETURN section documentation
- Fix AccessTokenAuthorizer initialization with base_url parameter
- Add support for both Secret Server and Platform authentication methods

* Fixed lintitng issue and added changelog fragment file.

* Removed documentation changes from changelog file.

(cherry picked from commit 3cbe44e269)

Co-authored-by: delinea-sagar <131447653+delinea-sagar@users.noreply.github.com>
2025-11-10 06:47:40 +01:00
patchback[bot]
a0ae0a7c76 [PR #11057/0d8521c7 backport][stable-11] supervisorctl: investigate integration tests (#11064)
supervisorctl: investigate integration tests (#11057)

* supervisorctl: investigate integration tests

* wait for supervisord to complete stop

* adjust in module

(cherry picked from commit 0d8521c718)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-11-09 09:52:55 +01:00
patchback[bot]
4408972762 [PR #11053/ac4f657d backport][stable-11] opendj_backendprop: docs improvements (#11061)
opendj_backendprop: docs improvements (#11053)

(cherry picked from commit ac4f657d43)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-11-09 09:52:41 +01:00
Felix Fontein
dce8b507fd [stable-11] filesystem: xfs resize: minimal required increment (#11033) (#11042)
filesystem: xfs resize: minimal required increment (#11033)

Internally XFS uses allocation groups. Allocation groups have a maximum
size of 1 TiB - 1 block. For devices >= 4 TiB XFS uses max size
allocation groups. If a filesystem is extended and the last allocation
group is already at max size, a new allocation group is added. An
allocation group seems to require at least 64 4 KiB blocks.

For devices with integer TiB size (>4), this creates a filesystem that
has initially has 1 unused block per TiB size. The `resize` option
detects this unused space, and tries to resize the filesystem.  The
xfs_growfs call is successful (exit 0), but does not increase the file
system size. This is detected as repeated change in the task.

Test case:
```
- hosts: localhost
  tasks:
    - ansible.builtin.command:
        cmd: truncate -s 4T /media/xfs.img
        creates: /media/xfs.img
      notify: loopdev xfs

    - ansible.builtin.meta: flush_handlers

    - name: pickup xfs.img resize
      ansible.builtin.command:
        cmd: losetup -c /dev/loop0
      changed_when: false

    - community.general.filesystem:
        dev: "/dev/loop0"
        fstype: "xfs"

    - ansible.posix.mount:
        src: "/dev/loop0"
        fstype: "xfs"
        path: "/media/xfs"
        state: "mounted"

    # always shows a diff even for newly created filesystems
    - community.general.filesystem:
        dev: "/dev/loop0"
        fstype: "xfs"
        resizefs: true

  handlers:
    - name: loopdev xfs
      ansible.builtin.command:
        cmd: losetup /dev/loop0 /media/xfs.img
```

NB: If the last allocation group is not yet at max size, the filesystem
can be resized. Detecting this requires considering the XFS topology.
Other filesystems (at least ext4) also seem to require a minimum
increment after the initial device size, but seem to use the entire
device after initial creation.

Fun observation: creating a 64(+) TiB filesystem leaves a 64(+) block
gap at the end, that is allocated in a subsequent xfs_growfs call.


(cherry picked from commit f5943201b9)

Co-authored-by: jnaab <25617714+jnaab@users.noreply.github.com>
Co-authored-by: Johannes Naab <johannes.naab@hetzner-cloud.de>
2025-11-08 10:00:56 +01:00
Alexei Znamensky
40eec12c2c xfconf: fix existing empty array case (#11026) (#11027)
* xfconf: fix existing empty array case

* fix xfconf_info as well

* add changelog frag

(cherry picked from commit b28ac655fc)
2025-11-02 22:07:52 +01:00
Felix Fontein
cd4a02605e Adjust CI schedules: remove stable-9, move stable-10 to weekly.
(cherry picked from commit 09d8b2bb77)
2025-11-02 14:10:30 +01:00
Felix Fontein
0929d24077 The next release will be 11.4.2. 2025-11-02 14:10:15 +01:00
Felix Fontein
ac7b95e710 Release 11.4.1. 2025-11-02 13:04:47 +01:00
patchback[bot]
cd50836977 [PR #11001/eb6337c0 backport][stable-11] omapi_host: fix bytes vs. str confusion (#11022)
omapi_host: fix bytes vs. str confusion (#11001)

* omapi_host: fix bytes vs. str confusion

After an update of the control node from Debian
bookworm to trixie, the omapi_host module fails to
work with the error message:

Key of type 'bytes' is not JSON serializable by the
'module_legacy_m2c' profile.

https://github.com/ansible/ansible/issues/85937 had the
same error, but the fix is a bit more intricate here
because the result dict is dynamically generated from
an API response object.

This also fixes unpacking the MAC and IP address and
hardware type, which were broken for Python3.

* Merge suggestion for changelog fragment



* do not unpack_ip twice

Noticed by Felix Fontein <felix@fontein.de>

* mention py3k in changelog fragment, too

---------


(cherry picked from commit eb6337c0c9)

Co-authored-by: mirabilos <tg@mirbsd.org>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-30 20:30:00 +01:00
patchback[bot]
23cc57c9f6 [PR #11005/54af64ad backport][stable-11] keycloak_user: mark credentials[].value as no_log=True (#11012)
keycloak_user: mark credentials[].value as no_log=True (#11005)

Mark credentials[].value as no_log=True.

(cherry picked from commit 54af64ad36)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-29 17:15:36 +00:00
patchback[bot]
b9119335cd [PR #10955/e84f59a6 backport][stable-11] fix(pritunl_user): improve resilience to null or missing user parameters (#11014)
fix(pritunl_user): improve resilience to null or missing user parameters (#10955)

* fix(pritunl_user): improve resilience to null or missing user parameters

* added changelog fragment - 10955

* standardize 10955 changelog fragment content



* simplify user params comparison



* simplify list fetch



* simplify remote value retrieval



---------



(cherry picked from commit e84f59a62d)

Co-authored-by: David Jenkins <david.jenkins@twosixtech.com>
Co-authored-by: djenkins <djenkins@twosix.net>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-29 17:15:18 +00:00
patchback[bot]
e4e33e6824 [PR #10965/ce0d06b3 backport][stable-11] onepassword: extend CLI class initialization with additional parameters (#11007)
onepassword: extend CLI class initialization with additional parameters (#10965)

* onepassword: extend CLI class initialization with additional parameters

* add changelog fragment 10965-onepassword-bugfix.yml

* Update changelogs/fragments/10965-onepassword-bugfix.yml



---------


(cherry picked from commit ce0d06b306)

Co-authored-by: Matthew <mjmjelde@gmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-28 21:38:35 +01:00
Felix Fontein
9cb619ff6c [stable-11] terraform: Fix bug when None values aren't processed correctly (#10961) (#11003)
terraform: Fix bug when None values aren't processed correctly (#10961)

* terraform: Fix bug when None values aren't processed correctly

Just found that i can't pass null values as complex variables into terraform using this module, while i can do that with terraform itself. Fixed undesired behavior.

* chore: changelog fragment 10961-terraform-complexvars-null-bugfix.yaml

* Update changelogs/fragments/10961-terraform-complexvars-null-bugfix.yaml



* Update plugins/modules/terraform.py



* Update plugins/modules/terraform.py



* Fix condition to check for None type in terraform.py

---------


(cherry picked from commit af8c4fb95e)

Co-authored-by: nbragin4 <139489942+nbragin4@users.noreply.github.com>
2025-10-28 20:53:57 +01:00
Felix Fontein
47e808da51 Prepare 11.4.1. 2025-10-27 19:40:08 +01:00
patchback[bot]
01b25a8236 [PR #10988/f6781f65 backport][stable-11] CI: temporarily disable tests for copr (#10991)
CI: temporarily disable tests for copr (#10988)

Temporarily disable tests for copr.

(cherry picked from commit f6781f654e)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-26 21:59:52 +01:00
patchback[bot]
6cf8ce06ca [PR #10953/258e65f5 backport][stable-11] keycloak_user_rolemapping: docs fixes and examples about mapping realm roles in keycloak_user_rolemapping (#10963)
keycloak_user_rolemapping: docs fixes and examples about mapping realm roles in keycloak_user_rolemapping (#10953)

* Fix docs and add examples about mapping realm roles for keycloak_user_rolemapping.py module (#7149)

* fix sanity tests

(cherry picked from commit 258e65f5fc)

Co-authored-by: Stanislav Shamilov <shamilovstas@protonmail.com>
2025-10-23 21:37:47 +02:00
Felix Fontein
31f130a56f Add ignore.txt entries. 2025-10-23 21:32:04 +02:00
patchback[bot]
7ef0705984 [PR #10956/4c7be8f2 backport][stable-11] cloudflare_dns: rollback validation for CAA records (#10957)
cloudflare_dns: rollback validation for CAA records (#10956)

* cloudflare_dns: rollback validation for CAA records

* add changelog frag

(cherry picked from commit 4c7be8f268)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-10-23 07:05:39 +02:00
patchback[bot]
5e326a25a4 [PR #10948/7572b46c backport][stable-11] filesystem: docs adjustments (#10952)
filesystem: docs adjustments (#10948)

(cherry picked from commit 7572b46c7b)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-10-21 06:45:36 +02:00
patchback[bot]
6526e0196a [PR #10933/c850e209 backport][stable-11] Add support for client auth in Keycloak cllient secrets module (#10946)
Add support for client auth in Keycloak cllient secrets module (#10933)

* keycloak: add client authentication support for client_secret



* readd ['token', 'auth_realm']



---------


(cherry picked from commit c850e209ab)

Signed-off-by: Marius Bertram <marius@brtrm.de>
Co-authored-by: Marius Bertram <marius@brtrm.de>
2025-10-19 21:22:44 +02:00
patchback[bot]
e757adbfca [PR #10918/7e666a9c backport][stable-11] fix(modules/gitlab_runner): Fix exception in check mode on new runners (#10944)
fix(modules/gitlab_runner): Fix exception in check mode on new runners (#10918)

* fix(modules/gitlab_runner): Fix exception in check mode on new runners

When a new runner is added in check mode, the role used to throw an
exception. Fix this by returning a valid runner object instead of a
boolean.

Fixes #8854

* docs: Add changelog fragment

(cherry picked from commit 7e666a9c31)

Co-authored-by: carlfriedrich <carlfriedrich@posteo.de>
2025-10-19 09:31:24 +02:00
patchback[bot]
3a2ce4add5 [PR #10937/2bd44584 backport][stable-11] cloudflare_dns: rollback validation for SRV records (#10938)
cloudflare_dns: rollback validation for SRV records (#10937)

* cloudflare_dns: rollback validation for SRV records

* add changelog frag

(cherry picked from commit 2bd44584d3)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-10-18 09:47:57 +02:00
patchback[bot]
3868664046 [PR #10926/9dedd774 backport][stable-11] Add __init__.py to work around ansible-test/pylint bug (#10928)
Add __init__.py to work around ansible-test/pylint bug (#10926)

Add __init__.py to work around ansible-test/pylint bug.

(cherry picked from commit 9dedd77459)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-15 21:55:32 +02:00
Felix Fontein
476914013d [stable-11] Add stable-2.20 to CI, bump version of devel branch (#10923) (#10924)
Add stable-2.20 to CI, bump version of devel branch (#10923)

Add stable-2.20 to CI, bump version of devel branch.

(cherry picked from commit 8472dc22ea)
2025-10-15 12:57:20 +02:00
patchback[bot]
dcfaee08a0 [PR #10914/c5253c50 backport][stable-11] build(deps): bump github/codeql-action from 3 to 4 in the ci group (#10915)
build(deps): bump github/codeql-action from 3 to 4 in the ci group (#10914)

Bumps the ci group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).

Updates `github/codeql-action` from 3 to 4
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: ci
...



(cherry picked from commit c5253c5007)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-13 09:57:50 +02:00
patchback[bot]
78b61cc5cb [PR #10910/10bdd9c5 backport][stable-11] tests/unit/plugins/modules/test_composer.yaml: remove redundant lines (#10911)
tests/unit/plugins/modules/test_composer.yaml: remove redundant lines (#10910)

(cherry picked from commit 10bdd9c56b)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-10-12 11:05:00 +02:00
patchback[bot]
32438bdf80 [PR #10891/5f471b8e backport][stable-11] refactor dict from literal list (#10895)
refactor dict from literal list (#10891)

* refactor dict from literal list

* add changelog frag

(cherry picked from commit 5f471b8e5b)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-10-10 19:15:49 +02:00
patchback[bot]
8685d12996 [PR #10893/14a858fd backport][stable-11] random_string: replace random.SystemRandom() with secrets.SystemRandom() (#10894)
random_string: replace random.SystemRandom() with secrets.SystemRandom() (#10893)

* random_string: replace random.SystemRandom() with secrets.SystemRandom()



* add the forgotten blank line



* Update changelogs/fragments/replace-random-with-secrets.yml



* readd the description



* Update changelogs/fragments/replace-random-with-secrets.yml



---------



(cherry picked from commit 14a858fd9c)

Signed-off-by: Thomas Sjögren <konstruktoid@users.noreply.github.com>
Co-authored-by: Thomas Sjögren <konstruktoid@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-10 19:15:21 +02:00
patchback[bot]
f0c18ec730 [PR #10887/68b83451 backport][stable-11] pacman: link to yay bug report (#10890)
pacman: link to yay bug report (#10887)

Link to yay bug report.

(cherry picked from commit 68b8345199)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-10 08:10:22 +02:00
Felix Fontein
3d4dc21a68 The next release will be 11.4.1. 2025-10-06 19:04:32 +02:00
Felix Fontein
49e620cb6a Release 11.4.0. 2025-10-06 18:29:30 +02:00
patchback[bot]
e82c2ad80d [PR #10842/f34842b7 backport][stable-11] Keycloak client scope support (#10882)
Keycloak client scope support (#10842)

* first commit

* sanity

* fixe test

* trailing white space

* sanity

* Fragment

* test sanity

* Update changelogs/fragments/10842-keycloak-client-scope-support.yml



* Update plugins/modules/keycloak_client.py



* add client_scopes_behavior

* Sanity

* Sanity

* Update plugins/modules/keycloak_client.py



* Fix typo.



* Update plugins/modules/keycloak_client.py



* Update plugins/modules/keycloak_client.py



* Update plugins/modules/keycloak_client.py



* Update plugins/modules/keycloak_client.py



---------




(cherry picked from commit f34842b7b2)

Co-authored-by: desand01 <desrosiers.a@hotmail.com>
Co-authored-by: Andre Desrosiers <andre.desrosiers@ssss.gouv.qc.ca>
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-10-06 18:28:38 +02:00
patchback[bot]
74dfcae673 [PR #10880/30894f41 backport][stable-11] github_app_access_token: add support for GitHub Enterprise Server (#10881)
github_app_access_token: add support for GitHub Enterprise Server (#10880)

* github_app_access_token: add support for GitHub Enterprise Server (#10879)
Add option to specify api endpoint for a GitHub Enterprise Server.
If option is not specified, defaults to https://api.github.com.

* refactor: apply changes as suggested by felixfontein

* docs: fix nox check error and type-o

nox check: plugins/lookup/github_app_access_token.py:57:1: DOCUMENTATION: error: too many blank lines (1 > 0)  (empty-lines)

* refactor: apply changes as suggested by russoz

* refactor: apply changes as suggested by felixfontein

(cherry picked from commit 30894f4144)

Co-authored-by: Chris <chodonne@gmail.com>
2025-10-06 18:28:31 +02:00
patchback[bot]
1e01aeacb4 [PR #10873/6cd46654 backport][stable-11] Avoid six in plugin code (#10875)
Avoid six in plugin code (#10873)

Avoid six in plugin code.

(cherry picked from commit 6cd4665412)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-05 07:36:47 +02:00
patchback[bot]
3b207ba0fd [PR #10874/750adb43 backport][stable-11] pipx: adjustments for pipx 1.8.0 (#10876)
pipx: adjustments for pipx 1.8.0 (#10874)

* pipx: adjustments for pipx 1.8.0

* add changelog frag

* typo

(cherry picked from commit 750adb431a)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-10-05 07:23:57 +02:00
patchback[bot]
90850b3763 [PR #10689/cc41d9da backport][stable-11] gem: fix soundness issue when uninstalling default gems on Ubuntu (#10878)
gem: fix soundness issue when uninstalling default gems on Ubuntu (#10689)

* Attempt to fix gem soundness issue

* Return command execution

* Fix value error

* Attempt to fix failling tests

* Fix minor issues

* Update changelog

* Update tests/integration/targets/gem/tasks/main.yml



* Update changelogs/fragments/10689-gem-prevent-soundness-issue.yml



* Remove state and name from gem error message

* Improve gem uninstall check

* Make unit tests pass

* Fix linting issues

* gem: Remove length chenck and adapt unit tests

* Adapt gem unit tests

* gem: improve error msg

* Fix sanity error

* Fix linting issue

---------


(cherry picked from commit cc41d9da60)

Co-authored-by: Giorgos Drosos <56369797+gdrosos@users.noreply.github.com>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-10-05 07:23:48 +02:00
patchback[bot]
5af8d6132d [PR #10829/7c40c6b6 backport][stable-11] Keycloak role fix changed status (#10839)
Keycloak role fix changed status (#10829)

* Exclude aliases before comparison

* add test

* fragment

* Update changelogs/fragments/10829-fix-keycloak-role-changed-status.yml



---------



(cherry picked from commit 7c40c6b6b5)

Co-authored-by: desand01 <desrosiers.a@hotmail.com>
Co-authored-by: Andre Desrosiers <andre.desrosiers@ssss.gouv.qc.ca>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-10-05 07:08:09 +02:00
patchback[bot]
bce7efb866 [PR #10863/9d0150b2 backport][stable-11] [doc] update requirements for all consul modules/lookups (#10872)
[doc] update requirements for all consul modules/lookups (#10863)

* [doc] update requirements for consul_kv module

python-consul has been unmaintained for a while. It uses a legacy way of passing the Consul token when sending requests. This leads to warning messages in Consul log, and will eventually break communication. Using the maintained py-consul library ensures compatibility to newer Consul versions.

* [doc] replace all python-consul occurrences with py-consul

* [fix] tests and possible pip server errors

* [chore] remove referencce to python-consul in comment

---------


(cherry picked from commit 9d0150b2c3)

Co-authored-by: Sebastian Damm <SipSeb@users.noreply.github.com>
Co-authored-by: Sebastian Damm <sebastian.damm@pascom.net>
2025-10-03 07:53:16 +02:00
patchback[bot]
edd8981af6 [PR #10867/41b65161 backport][stable-11] Fix typos: s/the the/the/ (#10868)
Fix typos: s/the the/the/ (#10867)

(cherry picked from commit 41b65161bd)

Co-authored-by: Pierre Riteau <pierre@stackhpc.com>
2025-09-30 21:54:43 +02:00
patchback[bot]
c2adcfa51d [PR #10864/4b644ae4 backport][stable-11] docs: fix sphinx warnings in uthelper guide (#10865)
docs: fix sphinx warnings in uthelper guide (#10864)

(cherry picked from commit 4b644ae41b)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-09-28 12:42:23 +02:00
Felix Fontein
fd72e9b2a3 Add repository configuration to antsibull-nox.toml.
(cherry picked from commit e9b1788bb9)
2025-09-26 07:04:11 +02:00
patchback[bot]
96ed253c79 [PR #10861/8b5f4b05 backport][stable-11] Fix RST syntax error (#10862)
Fix RST syntax error (#10861)

Fix RST syntax error.

(cherry picked from commit 8b5f4b055f)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-25 21:13:55 +02:00
patchback[bot]
b21e6466c7 [PR #10857/68684a7a backport][stable-11] github_deploy_key: make sure variable exists before use (#10860)
github_deploy_key: make sure variable exists before use (#10857)

Make sure variable exists before use.

(cherry picked from commit 68684a7a4c)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-25 20:49:03 +02:00
patchback[bot]
de8d1760c4 [PR #10852/648ff7db backport][stable-11] yaml cache plugin: make compatible with ansible-core 2.19 (#10856)
yaml cache plugin: make compatible with ansible-core 2.19 (#10852)

Make compatible with ansible-core 2.19.

(cherry picked from commit 648ff7db02)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-25 20:34:42 +02:00
Felix Fontein
a098845a0f Prepare 11.4.0. 2025-09-21 20:46:10 +02:00
patchback[bot]
ff6735f0ce [PR #10840/b865bf57 backport][stable-11] Fix keycloak sub-group search (#10846)
Fix keycloak sub-group search (#10840)

* fix bug in missing realm argument when searching for groups

* MR change fragment

* 39+1=40

(cherry picked from commit b865bf5751)

Co-authored-by: Jakub Danek <danekja@users.noreply.github.com>
2025-09-21 20:44:22 +02:00
patchback[bot]
657268120c [PR #10832/0f23b9e3 backport][stable-11] Force Content-type header to application/json if is_pre740 is false (#10848)
Force Content-type header to application/json if is_pre740 is false (#10832)

* Force Content-type header to application/json if is_pre740 is false

* Remove response variable from fail_json module

* Add a missing blank line to match pep8 requirement

* Add changelog fragment of issue #10796

* Rename fragment section

* Improve fragment readability



---------



(cherry picked from commit 0f23b9e391)

Co-authored-by: X <2465124+broferek@users.noreply.github.com>
Co-authored-by: ludovic <ludovic.petetin@aleph-networks.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-21 20:44:12 +02:00
patchback[bot]
e541b5b709 [PR #10830/2bf8ae88 backport][stable-11] timezone: mention that Debian 13 also needs util-linux-extra (#10837)
timezone: mention that Debian 13 also needs util-linux-extra (#10830)

Mention that Debian 13 also needs util-linux-extra.

(cherry picked from commit 2bf8ae88be)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-18 22:14:58 +02:00
patchback[bot]
9a3fd8fabe [PR #10812/7a231a24 backport][stable-11] gitlab_*_variable: add description option (#10834)
gitlab_*_variable: add `description` option (#10812)

(cherry picked from commit 7a231a248e)

Co-authored-by: David Phillips <phillid@users.noreply.github.com>
2025-09-18 22:14:48 +02:00
patchback[bot]
baf124bc17 [PR #10805/833e6e36 backport][stable-11] homebrew: Support old_tokens and oldnames in homebrew package data (#10831)
homebrew: Support old_tokens and oldnames in homebrew package data (#10805)

* homebrew: Support old_tokens and oldnames in homebrew package data

Fixes #10804

Since brew info will accept old_tokens (for casks) and oldnames (for formulae) when provided by the homebrew module "name" argument, the module also needs to consider thes old names as valid for the given package.  This commit updates _extract_package_name to do that.

All existing package name tests, including existing tests for name aliases and tap prefixing, have been consolidated with new name tests into package_names.yml.

* Added changelog fragment.

* homebrew: replace non-py2 compliant f-string usage

* code formatting lint, and py2 compatibility fixes

* homebrew: added licenses to new files, nox lint

* Update plugins/modules/homebrew.py

use str.format() instead of string addition



* Update tests/integration/targets/homebrew/tasks/casks.yml



* Update tests/integration/targets/homebrew/tasks/package_names_item.yml



* Update tests/integration/targets/homebrew/tasks/formulae.yml



* Fixes for performance concerns on new homebrew tests.
1) tests for alternate package names are commented out in main.yml.
2) the "install via alternate name, uninstall via base name" test
   case was deemed duplicative, and has been deleted .
3) minor fixes to use jinja2 "~" for string concat instead of "+"

* Fix nox lint

---------


(cherry picked from commit 833e6e36de)

Co-authored-by: brad2014 <brad2014@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-15 19:39:57 +02:00
patchback[bot]
712bd5194d [PR #10810/c1e877d2 backport][stable-11] github_app_access_token: fix compatibility import of jwt (#10826)
github_app_access_token: fix compatibility import of jwt (#10810)

Fix compatibility import of jwt.

(cherry picked from commit c1e877d254)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-13 10:31:01 +02:00
patchback[bot]
0dfa80d386 [PR #10822/0911db45 backport][stable-11] pipx: review tests (#10824)
pipx: review tests (#10822)

(cherry picked from commit 0911db457e)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-09-13 10:30:52 +02:00
patchback[bot]
e1eb88def5 [PR #10823/562d2ae5 backport][stable-11] parted: join command list for fail_json message (#10827)
parted: join command list for fail_json message (#10823)

* parted: join command list for fail_json message

* add changelog frag

(cherry picked from commit 562d2ae5b1)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-09-13 10:30:42 +02:00
patchback[bot]
bdf0c4e0bf [PR #10818/d2e2395a backport][stable-11] Speed up tests in android_sdk module (#10821)
Speed up tests in android_sdk module (#10818)

changed the dependency that is used to test the functionality in android_sdk module. The previous dependency was ~100MB, the current one is ~6MB. This should speed up the tests a bit and reduce the traffic.

(cherry picked from commit d2e2395ae3)

Co-authored-by: Stanislav Shamilov <shamilovstas@protonmail.com>
2025-09-12 19:42:53 +02:00
patchback[bot]
0b2f50a3ed [PR #10813/a7e4cee4 backport][stable-11] Remove obsolete test conditions (#10815)
Remove obsolete test conditions (#10813)

* Fedora 31 and 32 are EOL, remove conditions related


(cherry picked from commit a7e4cee47d)

Signed-off-by: Abhijeet Kasurde <Akasurde@redhat.com>
Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com>
2025-09-12 06:41:19 +02:00
Felix Fontein
f9b7938cf6 Release 11.3.0. 2025-09-08 19:07:07 +02:00
patchback[bot]
053d0aec28 [PR #10795/f772bcda backport][stable-11] gitlab_protected_branch: refactor, add allow_force_push, code_owner_approval_required (#10803)
gitlab_protected_branch: refactor, add `allow_force_push`, `code_owner_approval_required` (#10795)

* gitlab_protected_branch: fix typo

* gitlab_protected_branch: lump parameters into options dictionary

Hardcoding parameter lists gets repetitive. Refactor this module to use
an options dictionary like many other gitlab_* modules. This makes it
cleaner to add new options.

* gitlab_protected_branch: update when possible

Until now, the module deletes and re-creates the protected branch if any
change is detected. This makes sense for the access level parameters, as
these are not easily mutated after creation.

However, in order to add further options which _can_ easily be updated,
we should support updating by default, unless known-immutable parameters
are changing.

* gitlab_protected_branch: add `allow_force_push` option

* gitlab_protected_branch: add `code_owner_approval_required` option

* gitlab_protected_branch: add issues to changelog

* Update changelog.

---------


(cherry picked from commit f772bcda88)

Co-authored-by: David Phillips <phillid@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-08 19:06:38 +02:00
Felix Fontein
f9baa999a8 Revert "Release 11.3.0."
This reverts commit ab10b6ba36.
2025-09-08 19:02:54 +02:00
Felix Fontein
ab10b6ba36 Release 11.3.0. 2025-09-08 18:58:07 +02:00
patchback[bot]
e8a6fabf4c [PR #10791/cb84a0e9 backport][stable-11] Add Option to configure webAuthnPolicies for Keycloak (#10800)
Add Option to configure webAuthnPolicies for Keycloak (#10791)

* Add Option to configure webAuthnPolicies for Keycloak

* Mark webauth properties as noLog false

* fix line length

* rename webauthn stuff to match api of keycloak

* rename webauthn stuff to match api of keycloak

* Update changelogs/fragments/keycloak-realm-webauthn-policies.yml



* add version for each type

* Update plugins/modules/keycloak_realm.py



---------




(cherry picked from commit cb84a0e99f)

Co-authored-by: Julian Thanner <62133932+Juoper@users.noreply.github.com>
Co-authored-by: Julian Thanner <julian.thanner@check24.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-08 18:54:56 +02:00
patchback[bot]
5fca1f641b [PR #10784/062b63bd backport][stable-11] Add filters to_yaml and to_nice_yaml (#10802)
Add filters to_yaml and to_nice_yaml (#10784)

* Add filters to_yaml and to_nice_yaml.

* Allow to redact sensitive values.

* Add basic tests.

* Work around https://github.com/ansible/ansible/issues/85783.

* Cleanup.

(cherry picked from commit 062b63bda5)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-08 18:54:47 +02:00
patchback[bot]
88f0a4c770 [PR #10787/3574b3fa backport][stable-11] gitlab_*_variable: support masked-and-hidden variables (#10801)
gitlab_*_variable: support masked-and-hidden variables (#10787)

* gitlab_*_variable: support masked-and-hidden variables

Support masking and hiding GitLab project and group variables. In the
GitLab API, variables that are hidden are also masked by implication.
Note gitlab_instance_variable is unmodified since instance variables
cannot be hidden.

* gitlab_*_variable: add `hidden` to legacy `vars` syntax

* gitlab_*_variable: address review comments in doc

(cherry picked from commit 3574b3fa93)

Co-authored-by: David Phillips <phillid@users.noreply.github.com>
2025-09-08 18:54:38 +02:00
patchback[bot]
9a565f356c [PR #10665/3baa13a3 backport][stable-11] pacemaker_resource: Add cloning support for resources and groups (#10798)
pacemaker_resource: Add cloning support for resources and groups (#10665)

* add clone state for pacemaker_resource

* add changelog fragment

* Additional description entry for comment header

* Apply suggestions from code review



* Update plugins/modules/pacemaker_resource.py



* fix formatting for yamllint

* Apply code review suggestions

* refactor state name to cloned

* Update plugins/modules/pacemaker_resource.py



* Apply suggestions from code review



* Apply suggestions from code review

---------



(cherry picked from commit 3baa13a3e4)

Co-authored-by: Dexter <45038532+munchtoast@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-09-07 21:36:35 +02:00
Felix Fontein
3c0a9d7826 Prepare 11.3.0. 2025-09-04 07:09:50 +02:00
patchback[bot]
12cf3dc19a [PR #10726/d0123a10 backport][stable-11] django_dumpdata, django_loaddata: new modules (#10790)
django_dumpdata, django_loaddata: new modules (#10726)

* django module, module_utils: adjustments

* more fixes

* more fixes

* further simplification

* django_dumpdata/django_loaddata: new modules

* Update plugins/modules/django_dumpdata.py



* add note about idempotency

---------


(cherry picked from commit d0123a1038)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-09-03 22:29:17 +02:00
patchback[bot]
6e98e3d3eb [PR #10785/aed763da backport][stable-11] gitlab_*_access_token: add missing scopes (#10789)
gitlab_*_access_token: add missing scopes (#10785)

Over time, GitLab added extra scopes to the API. I'm in here to add
self_rotate, but may as well add all other missing scopes while I'm
here.

(cherry picked from commit aed763dae7)

Co-authored-by: David Phillips <phillid@users.noreply.github.com>
2025-09-03 21:46:35 +02:00
patchback[bot]
716a1b924e [PR #10783/f1f167e3 backport][stable-11] dnf_versionlock: minor refactor (#10788)
dnf_versionlock: minor refactor (#10783)

* dnf_versionlock: minor refactor

* Python 2 does not appreciate clever syntax

* Update plugins/modules/dnf_versionlock.py

* Update plugins/modules/dnf_versionlock.py

* rollback raw patterns adjustment

(cherry picked from commit f1f167e3fc)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-09-03 21:46:21 +02:00
patchback[bot]
fa4bf56fed [PR #10638/07ce0041 backport][stable-11] CI: Add Debian 13 Trixie (#10782)
CI: Add Debian 13 Trixie (#10638)

* Add Debian 13 Trixie to CI.

* Add adjustments.

* Disable one apache2_module test for Debian 13.

* Disable ejabberd_user test on Debian 13.

* Fix paramiko install.

* Skip cloud_init_data_facts on Debian 13.

* Fix postgresql setup.

* Fix timezone tests.

(cherry picked from commit 07ce00417d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-31 16:53:54 +02:00
patchback[bot]
2c385cfab5 [PR #10779/4a70d409 backport][stable-11] Deprecate hiera lookup (#10781)
Deprecate hiera lookup (#10779)

Deprecate hiera lookup.

(cherry picked from commit 4a70d4091d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-31 16:51:55 +02:00
patchback[bot]
e44011ff94 [PR #10768/b4984350 backport][stable-11] zpool: fix broken example (#10772)
zpool: fix broken example (#10768)

Fix broken example.

(cherry picked from commit b498435066)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-31 12:11:34 +02:00
patchback[bot]
25ffe69b51 [PR #10727/6f40eff6 backport][stable-11] simplify string formatting in some modules (#10773)
simplify string formatting in some modules (#10727)

* simplify string formatting in some modules

* add changelog frag

(cherry picked from commit 6f40eff632)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-31 12:11:27 +02:00
patchback[bot]
144945894f [PR #10642/f6e1d908 backport][stable-11] parted: command args as list rather than string (#10774)
parted: command args as list rather than string (#10642)

* parted: command args as list rather than string

* add changelog frag

* add missing command line dash args

* make scripts as lists as well

* Apply suggestions from code review



---------


(cherry picked from commit f6e1d90870)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-31 12:11:16 +02:00
patchback[bot]
4c85efd807 [PR #10769/e6502a8e backport][stable-11] xenserver: remove required=false from arg spec (#10775)
xenserver: remove required=false from arg spec (#10769)

* xenserver: remove required=false from arg spec

* add changelog frag

(cherry picked from commit e6502a8e51)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-31 12:11:02 +02:00
patchback[bot]
cdadfa979e [PR #10770/3cc4f28f backport][stable-11] minor fixes in doc guides (#10777)
minor fixes in doc guides (#10770)

(cherry picked from commit 3cc4f28fd7)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-31 12:10:41 +02:00
patchback[bot]
e3a8d238a8 [PR #10752/f6003f61 backport][stable-11] selective: don't hard code ansible_loop_var 'item' (#10764)
selective: don't hard code ansible_loop_var 'item' (#10752)

* selective: don't hard code ansible_loop_var 'item'

* Add changelog fragment

* Update changelog message



---------


(cherry picked from commit f6003f61cc)

Co-authored-by: Hoang Nguyen <folliekazetani@protonmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-29 07:04:00 +02:00
patchback[bot]
93a1aa4e38 [PR #10751/d6ad9beb backport][stable-11] kdeconfig: add support for kwriteconfig6 (#10762)
kdeconfig: add support for kwriteconfig6 (#10751)

* kdeconfig: add support for kwriteconfig6

Rationale:
With a minimal install of KDE Plasma 6, the kdeconfig module would systematically fail with the following error: `kwriteconfig is not installed.`
In this configuration, kwriteconfig6 is the only version of kwriteconfig installed, and the kdeconfig module did not not find it.

Fixes #10746

* Add changelog fragment

* Update changelogs/fragments/10751-kdeconfig-support-kwriteconfig6.yml



---------


(cherry picked from commit d6ad9beb58)

Co-authored-by: Thibault Geoffroy <33561374+nebularnoise@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-29 06:59:58 +02:00
patchback[bot]
cf1b02c6b9 [PR #10705/b1c75339 backport][stable-11] openbsd_pkg: add support for removing unused dependencies (#10758)
openbsd_pkg: add support for removing unused dependencies (#10705)

* openbsd_pkg: add support for removing unused dependencies

Add new state 'rm_unused_deps' that uses 'pkg_delete -a' to remove
packages that are no longer required by any other packages.

Features:
- Requires name='*' to avoid accidental usage
- Supports check mode, diff mode, clean and quick flags
- Follows existing module patterns for error handling
- Integrates with existing package list comparison for change detection

* Update the PR number in the frgment link

* Fix the changelog fragment name to include the PR #

* Force non-interactive mode like most of the other modes

* Fix PEP8 E302: add missing blank line before function definition

* Ensure that no matter what, if the package list unchanged then there was no change

Also removed some unused vars from the original code.

* Standardize names in the PR

* Swap over from a new state to implementing an autoremove option

Added code to handle the case where you git a name or list of names as
pkg_delete will correctly filter what it autoremove by the names

* Update the fragment to match the new code

* typo in EXAMPLES

* Fix up a yamllint complaint.

I do note the following:

```
$ ansible-lint tests/test_openbsd_pkg.yml

Passed: 0 failure(s), 0 warning(s) on 1 files. Last profile that met the validation criteria was 'production'.
```

Although that could be due to local config

* While here add realistic examples of packages that might be autoinstalled

* Clean up docs.



* Autoremove is an option, work like the other package managers

* Update changelog for openbsd_pkg autoremove parameter

Clarified the behavior of the `autoremove` parameter to specify it removes autoinstalled packages. Removed flowery text that isn't needed.

* Cut the rest of the cruft out of the changelog fragment

Make it obvious how '*' can be used as a 'name:'
Be more pythonic in the package list comparison.

* Update changelogs/fragments/10705-openbsd-pkg-remove-unused.yml



---------


(cherry picked from commit b1c75339c0)

Co-authored-by: Allen Smith <lazlor@lotaris.org>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-28 22:18:07 +02:00
patchback[bot]
dda872c3e6 [PR #10743/469e557b backport][stable-11] monit: handle arbitrary error status (#10760)
monit: handle arbitrary error status (#10743)

* handle arbitrary error status

* add changelog fragment

* mock module in test

* Update changelogs/fragments/10743-monit-handle-unknown-status.yml



---------


(cherry picked from commit 469e557b95)

Co-authored-by: Simon Kelly <skelly@dimagi.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-28 22:17:56 +02:00
patchback[bot]
d90eb6444a [PR #10755/9d0866bf backport][stable-11] Add ignores necessary for ansible-core 2.20 (#10757)
Add ignores necessary for ansible-core 2.20 (#10755)

Add ignores necessary for ansible-core 2.20 if Python 2.7 is still supported by the collection.

(cherry picked from commit 9d0866bfb8)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-28 21:47:08 +02:00
patchback[bot]
93782ffb35 [PR #10684/ded43714 backport][stable-11] django module, module_utils: adjustments (#10747)
django module, module_utils: adjustments (#10684)

* django module, module_utils: adjustments

* fix name

* more fixes

* more fixes

* further simplification

* add changelog frag

(cherry picked from commit ded43714d3)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-27 22:09:53 +02:00
patchback[bot]
dac26d12bd [PR #10710/b5a2c581 backport][stable-11] random_string: Specify seed while generating random string (#10748)
random_string: Specify seed while generating random string (#10710)

* random_string: Specify seed while generating random string

* Allow user to specify seed to generate random string

Fixes: #5362



* Apply suggestions from code review



---------



(cherry picked from commit b5a2c5812c)

Signed-off-by: Abhijeet Kasurde <Akasurde@redhat.com>
Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-27 22:09:41 +02:00
patchback[bot]
22946365fc [PR #10413/3b09e9d9 backport][stable-11] pacemaker_resource: add cleanup state (#10750)
pacemaker_resource: add cleanup state (#10413)

* refactor(deprecate): Add cleanup deprecations for pacemaker_cluster

* Additional code review changes

* Add changelog fragment

(cherry picked from commit 3b09e9d9ed)

Co-authored-by: Dexter <45038532+munchtoast@users.noreply.github.com>
2025-08-27 22:09:33 +02:00
patchback[bot]
ddc546596e [PR #10707/63321754 backport][stable-11] pacemaker: Add regex checking for maintenance-mode (#10749)
pacemaker: Add regex checking for maintenance-mode (#10707)

* Add regex checking for maintenance-mode

* Add changelog fragment

* Apply suggestions from code review




---------



(cherry picked from commit 6332175493)

Co-authored-by: Dexter <45038532+munchtoast@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-27 22:09:23 +02:00
patchback[bot]
a618aa6b0a [PR #10732/5ee02297 backport][stable-11] ssh_config tests: remove paramiko version restriction (#10735)
ssh_config tests: remove paramiko version restriction (#10732)

Remove paramiko version restriction for ssh_config tests.

(cherry picked from commit 5ee02297b0)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-25 07:25:56 +02:00
patchback[bot]
49598ac93a [PR #10728/82b37bdb backport][stable-11] pacman: re-enable yay test (#10731)
pacman: re-enable yay test (#10728)

Re-enable yay test.

(cherry picked from commit 82b37bdb56)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-25 06:57:35 +02:00
patchback[bot]
de7afabe17 [PR #10661/177b385d backport][stable-11] Add support for gpg-auto-import-keys option to zypper (#10721)
Add support for gpg-auto-import-keys option to zypper (#10661)

* Add support for gpg-auto-import-keys option to zypper

* Add changelog fragment

* Add missing module argument_spec

* Improving documentation

* Improve changelog fragment

(cherry picked from commit 177b385dfb)

Co-authored-by: Marc Urben <aegnor@mittelerde.ch>
2025-08-23 19:45:11 +02:00
patchback[bot]
fafe6ef87b [PR #10664/65bc4706 backport][stable-11] GitHub app access token lookup: allow to use PyJWT + cryptography instead of jwt (#10720)
GitHub app access token lookup: allow to use PyJWT + cryptography instead of jwt (#10664)

* Fix issue #10299

* Fix issue #10299

* Fix blank lines

* Fix blank lines

* Add compatibility changes for jwt

* Bump to a higher magic number

* Update change log fragment

* Update changelogs/fragments/10299-github_app_access_token-lookup.yml



* Update changelogs/fragments/10299-github_app_access_token-lookup.yml



* Update changelogs/fragments/10299-github_app_access_token-lookup.yml



* Update plugins/lookup/github_app_access_token.py



* Update plugins/lookup/github_app_access_token.py



* Update requirement document

* Remove a whitespace

---------



(cherry picked from commit 65bc47068e)

Co-authored-by: weisheng-p <weisheng-p@users.noreply.github.com>
Co-authored-by: Bruno Lavoie <bruno.lavoie@dti.ulaval.ca>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-23 19:45:03 +02:00
patchback[bot]
148c133248 [PR #10195/e4373565 backport][stable-11] pacemaker_stonith: new module (#10719)
pacemaker_stonith: new module (#10195)

* feat(initial): Add pacemaker_stonith module and unit tests

* feat(initial): Add working changes to pacemaker_stonith

* refactor(review): Apply code review suggestions

* Apply suggestions from code review




* refactor(review): Additional code review items

* bug(cli_action): Add missing runner arguments

* Apply code review suggestions

* Apply suggestions from code review



* Apply suggestions from code review



* WIP

* Apply doc changes to pacemaker stonith

* Update plugins/modules/pacemaker_stonith.py

---------



(cherry picked from commit e43735659a)

Co-authored-by: Dexter <45038532+munchtoast@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-23 19:44:54 +02:00
patchback[bot]
3bf688be39 [PR #10646/09f11523 backport][stable-11] Add cpu limit argument to scaleway_container (#10718)
Add cpu limit argument to scaleway_container (#10646)

Add cpu limit arguments

And document the units used for memory_limit and cpu_limit.

(cherry picked from commit 09f11523d1)

Co-authored-by: mscherer <mscherer@users.noreply.github.com>
2025-08-23 19:44:45 +02:00
patchback[bot]
bc8721c37c [PR #10652/9e86d239 backport][stable-11] oci/oracle: deprecation (#10717)
oci/oracle: deprecation (#10652)

* oci/oracle: deprecation

* add changelog frag

* add doc frags to changelog frag

* Update changelogs/fragments/10652-oracle-deprecation.yml



---------


(cherry picked from commit 9e86d239d2)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-23 19:44:37 +02:00
patchback[bot]
579bd879c1 [PR #10679/1c0eb9dd backport][stable-11] gitlab_*_access_token: add planner access level (#10716)
gitlab_*_access_token: add `planner` access level (#10679)

The Planner role was introduced in December 2024 with GitLab 17.7 [1].
Allow its use in gitlab_project_access_token and
gitlab_group_access_token.

[1]: https://about.gitlab.com/releases/2024/12/19/gitlab-17-7-released/

(cherry picked from commit 1c0eb9ddf4)

Co-authored-by: David Phillips <phillid@users.noreply.github.com>
2025-08-23 19:44:29 +02:00
patchback[bot]
d83a835a3c [PR #10647/29b35022 backport][stable-11] Add a scaleway group to be able to use module_defaults (#10715)
Add a scaleway group to be able to use module_defaults (#10647)

(cherry picked from commit 29b35022cf)

Co-authored-by: mscherer <mscherer@users.noreply.github.com>
2025-08-23 19:44:19 +02:00
patchback[bot]
89e6e6c626 [PR #10696/db7757ed backport][stable-11] Update documentation (#10714)
Update documentation (#10696)

* Update documentation

Added to the description explaining the mode of operation and the protocol being used.
This would add to the user experience and saves time for the user.

* use single quotes around colon contained list element to satisfy linter

* Apply suggestions from code review



* documentation of nagios module - included all nagios configuration paths in plugins/modules/nagios.py

* used italic code I(...) for paths

* added trailing comma to nagios.cfg path listing



* added trailing period after icinga path listing.



---------



(cherry picked from commit db7757ed4b)

Co-authored-by: bofo540 <bjoern.foersterling@cpb-software.com>
Co-authored-by: bjt-user <bjoern.foersterling@web.de>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-23 19:44:09 +02:00
patchback[bot]
510a9228c0 [PR #10700/9f4bb3a7 backport][stable-11] django_check: rename database param, add alias (#10713)
django_check: rename database param, add alias (#10700)

* django_check: rename database param, add alias

* add changelog frag

* Update plugins/modules/django_check.py



---------


(cherry picked from commit 9f4bb3a788)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-23 19:44:00 +02:00
patchback[bot]
8a43df548c [PR #10706/5eab0f24 backport][stable-11] CI: Remove no longer necessary constraints (#10723)
CI: Remove no longer necessary constraints (#10706)

Remove no longer necessary constraints.

(cherry picked from commit 5eab0f2419)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-23 19:43:45 +02:00
patchback[bot]
491ba1b1a3 [PR #10711/62fa3e6f backport][stable-11] remove trailing comma in dict(parameters,) (#10724)
remove trailing comma in dict(parameters,) (#10711)

* remove trailing comma in dict(parameters,)

* add changelog frag

(cherry picked from commit 62fa3e6f2b)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-23 19:43:36 +02:00
patchback[bot]
4d6f4c82e2 [PR #10712/cb84fa74 backport][stable-11] remove extra brackets when params are a given by a comprehension (#10725)
remove extra brackets when params are a given by a comprehension (#10712)

* remove extra brackets when function params are a given by a comprehension

* add changelog frag

(cherry picked from commit cb84fa740a)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-23 19:43:27 +02:00
patchback[bot]
f5ad2cee8d [PR #10701/3b9acafc backport][stable-11] update requirements for Python versions currently used (#10703)
update requirements for Python versions currently used (#10701)

(cherry picked from commit 3b9acafc72)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-19 07:16:23 +02:00
Felix Fontein
5e6a7cab92 The next expected release is 11.2.2. 2025-08-18 21:45:19 +02:00
Felix Fontein
48c50fa335 Release 11.2.1. 2025-08-18 21:17:43 +02:00
patchback[bot]
a1e2ada993 [PR #10663/b9385d7f backport][stable-11] pacemaker_resource: Fix resource_type parameter (#10699)
pacemaker_resource: Fix resource_type parameter (#10663)

* Ensure resource standard, provider, and name are proper format

* Add changelog fragment

* Update changelogs/fragments/10663-pacemaker-resource-fix-resource-type.yml



---------


(cherry picked from commit b9385d7fe8)

Co-authored-by: Dexter <45038532+munchtoast@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-18 20:26:48 +02:00
patchback[bot]
d7eb5432f3 [PR #10695/6827680c backport][stable-11] build(deps): bump actions/checkout from 4 to 5 in the ci group (#10698)
build(deps): bump actions/checkout from 4 to 5 in the ci group (#10695)

Bumps the ci group with 1 update: [actions/checkout](https://github.com/actions/checkout).

Updates `actions/checkout` from 4 to 5
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: ci
...



(cherry picked from commit 6827680cda)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 18:34:01 +02:00
patchback[bot]
26f19db2f8 [PR #10687/47e8a3c1 backport][stable-11] ansible-core 2.20: avoid deprecated functionality (#10693)
ansible-core 2.20: avoid deprecated functionality (#10687)

Avoid deprecated functionality.

(cherry picked from commit 47e8a3c193)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-18 05:18:31 +00:00
patchback[bot]
8bc0c103ad [PR #10688/ceba0cbe backport][stable-11] pids: avoid type error if name is empty (#10692)
pids: avoid type error if name is empty (#10688)

Avoid type error if name is empty.

(cherry picked from commit ceba0cbedb)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-18 06:41:18 +02:00
Felix Fontein
0e495aae75 Add missing changelog fragment. 2025-08-17 22:35:33 +02:00
patchback[bot]
840b1b82ac [PR #10617/c84f16c5 backport][stable-11] scaleway_lb: fix RETURN docs (#10686)
scaleway_lb: fix RETURN docs (#10617)

* scaleway_lb: fix RETURN docs

* remove outer dict from sample content

(cherry picked from commit c84f16c5e9)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-17 17:28:39 +02:00
patchback[bot]
2b08a308bc [PR #10423/735a066d backport][stable-11] apache2_module: updated cgi action conditions (#10682)
apache2_module: updated cgi action conditions (#10423)

* apache2_module: updated cgi action conditions

Only the activation of the cgi module in threaded mode should be a
restriction due to apache2 limitations, not the deactivation.
Especially when the cgi module isn't enabled yet at all. Fixes #9140

* bug(fix): apache2_module fails to disable cgi module

* Update changelog fragment.

---------


(cherry picked from commit 735a066d92)

Co-authored-by: Daniel Hoffend <dh@dotlan.net>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-17 13:12:55 +02:00
patchback[bot]
04305e8d9d [PR #10669/13bd4b5d backport][stable-11] composer: fix command args as list rather than string (#10680)
composer: fix command args as list rather than string (#10669)

(cherry picked from commit 13bd4b5d82)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-17 12:53:22 +02:00
Felix Fontein
15109a26fd Prepare 11.2.1. 2025-08-17 12:45:16 +02:00
patchback[bot]
d1730adce0 [PR #10674/dfc2a54d backport][stable-11] pacman: temporary disable yay test (#10678)
pacman: temporary disable yay test (#10674)

Temporary disable pacman yay test.

(cherry picked from commit dfc2a54d16)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-15 21:03:35 +02:00
patchback[bot]
69d7cce55c [PR #10668/d84d2397 backport][stable-11] ipa_*: adjust common connection notes to modules (#10671)
ipa_*: adjust common connection notes to modules (#10668)

(cherry picked from commit d84d2397b9)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-15 20:14:13 +02:00
patchback[bot]
d80aca951c [PR #10657/3c0d6074 backport][stable-11] jc filter: remove skips for FreeBSD (#10659)
jc filter: remove skips for FreeBSD (#10657)

(cherry picked from commit 3c0d60740c)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2025-08-12 09:58:11 +02:00
patchback[bot]
6f5462fb27 [PR #10653/eb5708a1 backport][stable-11] CI: Make sure to install Java in Debian Bullseye (#10656)
CI: Make sure to install Java in Debian Bullseye (#10653)

Make sure to install Java in Debian Bullseye.

(cherry picked from commit eb5708a125)

Co-authored-by: Felix Fontein <felix@fontein.de>
2025-08-12 01:21:35 +02:00
Felix Fontein
1c5c622ae8 There might be a 11.2.1 coming up next. 2025-08-11 22:34:04 +02:00
343 changed files with 5996 additions and 1231 deletions

View File

@@ -29,14 +29,14 @@ schedules:
always: true
branches:
include:
- stable-12
- stable-11
- stable-10
- cron: 0 11 * * 0
displayName: Weekly (old stable branches)
always: true
branches:
include:
- stable-9
- stable-10
variables:
- name: checkoutPath
@@ -57,14 +57,27 @@ 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
- test: 3
- test: 4
- stage: Sanity_2_20
displayName: Sanity 2.20
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Test {0}
testFormat: 2.20/sanity/{0}
targets:
- test: 1
- test: 2
@@ -83,41 +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
- stage: Sanity_2_17
displayName: Sanity 2.17
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Test {0}
testFormat: 2.17/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'
@@ -125,6 +112,18 @@ stages:
- test: '3.12'
- test: '3.13'
- test: '3.14'
- stage: Units_2_20
displayName: Units 2.20
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: 2.20/units/{0}/1
targets:
- test: 3.9
- test: "3.12"
- test: "3.14"
- stage: Units_2_19
displayName: Units 2.19
dependsOn: []
@@ -137,68 +136,64 @@ 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"
- stage: Units_2_17
displayName: Units 2.17
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: 2.17/units/{0}/1
targets:
- test: 3.7
- test: "3.10"
- test: "3.12"
## 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.22
test: alpine/3.22
# - name: Fedora 42
# test: fedora/42
- name: Alpine 3.23
test: alpine/3.23
# - name: Fedora 43
# test: fedora/43
- name: Ubuntu 22.04
test: ubuntu/22.04
- name: Ubuntu 24.04
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
- name: RHEL 10.1
test: rhel/10.1
- name: RHEL 9.7
test: rhel/9.7
# TODO: enable this ASAP!
# - name: FreeBSD 15.0
# test: freebsd/15.0
# TODO: enable this ASAP!
# - name: FreeBSD 14.4
# test: freebsd/14.4
groups:
- 1
- 2
- 3
- stage: Remote_2_20
displayName: Remote 2.20
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.20/{0}
targets:
- name: macOS 15.3
test: macos/15.3
- name: RHEL 10.0
test: rhel/10.0
- name: RHEL 9.6
test: rhel/9.6
- name: RHEL 10.1
test: rhel/10.1
- name: FreeBSD 14.3
test: freebsd/14.3
- name: FreeBSD 13.5
test: freebsd/13.5
groups:
- 1
- 2
@@ -211,68 +206,48 @@ stages:
parameters:
testFormat: 2.19/{0}
targets:
- name: RHEL 9.5
test: rhel/9.5
- name: RHEL 10.0
test: rhel/10.0
- name: RHEL 10.1
test: rhel/10.1
- name: FreeBSD 14.2
test: freebsd/14.2
groups:
- 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: RHEL 9.4
test: rhel/9.4
- name: FreeBSD 14.1
test: freebsd/14.1
groups:
- 1
- 2
- 3
- stage: Remote_2_17
displayName: Remote 2.17
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.17/{0}
targets:
- name: FreeBSD 13.5
test: freebsd/13.5
- name: RHEL 9.3
test: rhel/9.3
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
- name: Alpine 3.23
test: alpine323
- name: Ubuntu 22.04
test: ubuntu2204
- name: Ubuntu 24.04
test: ubuntu2404
groups:
- 1
- 2
- 3
- stage: Docker_2_20
displayName: Docker 2.20
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.20/linux/{0}
targets:
- name: Fedora 42
test: fedora42
- name: Alpine 3.22
test: alpine322
- name: Ubuntu 22.04
test: ubuntu2204
- name: Ubuntu 24.04
test: ubuntu2404
groups:
- 1
- 2
@@ -293,58 +268,24 @@ 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
- stage: Docker_2_17
displayName: Docker 2.17
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.17/linux/{0}
targets:
- name: Fedora 39
test: fedora39
- name: Alpine 3.19
test: alpine319
- name: Ubuntu 20.04
test: ubuntu2004
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 Bullseye
- name: Debian 11 Bullseye
test: debian-bullseye/3.9
- name: Debian Bookworm
- name: Debian 12 Bookworm
test: debian-bookworm/3.11
- name: Debian 13 Trixie
test: debian-13-trixie/3.13
- name: ArchLinux
test: archlinux/3.13
test: archlinux/3.14
groups:
- 1
- 2
@@ -352,18 +293,29 @@ 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'
# - test: '3.14'
# - stage: Generic_2_20
# displayName: Generic 2.20
# dependsOn: []
# jobs:
# - template: templates/matrix.yml
# parameters:
# nameFormat: Python {0}
# testFormat: 2.20/generic/{0}/1
# targets:
# - test: '3.10'
# - test: '3.14'
# - stage: Generic_2_19
# displayName: Generic 2.19
# dependsOn: []
@@ -375,54 +327,27 @@ stages:
# 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: Generic_2_17
# displayName: Generic 2.17
# dependsOn: []
# jobs:
# - template: templates/matrix.yml
# parameters:
# nameFormat: Python {0}
# testFormat: 2.17/generic/{0}/1
# targets:
# - test: '3.7'
# - test: '3.12'
- stage: Summary
condition: succeededOrFailed()
dependsOn:
- Sanity_devel
- Sanity_2_21
- Sanity_2_20
- Sanity_2_19
- Sanity_2_18
- Sanity_2_17
- Units_devel
- Units_2_21
- Units_2_20
- Units_2_19
- Units_2_18
- Units_2_17
- Remote_devel_extra_vms
- Remote_devel
- Remote_2_21_extra_vms
- Remote_2_21
- Remote_2_20
- Remote_2_19
- Remote_2_18
- Remote_2_17
- Docker_devel
- Docker_2_21
- Docker_2_20
- Docker_2_19
- Docker_2_18
- Docker_2_17
- 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
# - Generic_2_17
jobs:
- template: templates/coverage.yml

18
.github/BOTMETA.yml vendored
View File

@@ -209,6 +209,8 @@ files:
maintainers: resmo
$filters/to_months.yml:
maintainers: resmo
$filters/to_nice_yaml.yml:
maintainers: felixfontein
$filters/to_prettytable.py:
maintainers: tgadiev
$filters/to_seconds.yml:
@@ -217,6 +219,10 @@ files:
maintainers: resmo
$filters/to_weeks.yml:
maintainers: resmo
$filters/to_yaml.py:
maintainers: felixfontein
$filters/to_yaml.yml:
maintainers: felixfontein
$filters/to_years.yml:
maintainers: resmo
$filters/unicode_normalize.py:
@@ -287,7 +293,7 @@ files:
maintainers: dagwieers
$lookups/flattened.py: {}
$lookups/github_app_access_token.py:
maintainers: weisheng-p
maintainers: weisheng-p blavoie
$lookups/hiera.py:
maintainers: jparrill
$lookups/keyring.py: {}
@@ -550,6 +556,10 @@ files:
maintainers: russoz
$modules/django_createcachetable.py:
maintainers: russoz
$modules/django_dumpdata.py:
maintainers: russoz
$modules/django_loaddata.py:
maintainers: russoz
$modules/django_manage.py:
ignore: scottanderson42 tastychutney
labels: django_manage
@@ -1066,6 +1076,8 @@ files:
maintainers: munchtoast
$modules/pacemaker_resource.py:
maintainers: munchtoast
$modules/pacemaker_stonith.py:
maintainers: munchtoast
$modules/packet_:
maintainers: nurfet-becirevic t0mk
$modules/packet_device.py:
@@ -1580,7 +1592,7 @@ macros:
plugin_utils: plugins/plugin_utils
tests: plugins/test
team_ansible_core:
team_aix: MorrisA bcoca d-little flynn1973 gforster kairoaraujo marvin-sinister mator molekuul ramooncamacho wtcross
team_aix: MorrisA bcoca d-little flynn1973 gforster kairoaraujo marvin-sinister molekuul ramooncamacho wtcross
team_bsd: JoergFiedler MacLemon bcoca dch jasperla mekanix opoplawski overhacked tuxillo
team_consul: sgargan apollo13 Ilgmi
team_cyberark_conjur: jvanderhoof ryanprior
@@ -1602,7 +1614,7 @@ macros:
team_redfish: mraineri tomasg2012 xmadsen renxulei rajeevkallur bhavya06 jyundt
team_rhsm: cnsnyder ptoscano
team_scaleway: remyleone abarbare
team_solaris: bcoca fishman jasperla jpdasma mator scathatheworm troy2914 xen0l
team_solaris: bcoca fishman jasperla jpdasma scathatheworm troy2914 xen0l
team_suse: commel evrardjp lrupp AnderEnder alxgu andytom sealor
team_virt: joshainglis karmab Thulium-Drake Ajpantuso
team_wdc: mikemoerk

View File

@@ -146,7 +146,7 @@ body:
attributes:
label: Code of Conduct
description: |
Read the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
Read the [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
options:
- label: I agree to follow the Ansible Code of Conduct
required: true

View File

@@ -7,7 +7,7 @@
blank_issues_enabled: false # default: true
contact_links:
- name: Security bug report
url: https://docs.ansible.com/ansible-core/devel/community/reporting_bugs_and_features.html?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
url: https://docs.ansible.com/projects/ansible-core/devel/community/reporting_bugs_and_features.html?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
about: |
Please learn how to report security vulnerabilities here.
@@ -16,12 +16,12 @@ contact_links:
a prompt response.
For more information, see
https://docs.ansible.com/ansible/latest/community/reporting_bugs_and_features.html
https://docs.ansible.com/projects/ansible/latest/community/reporting_bugs_and_features.html
- name: Ansible Code of Conduct
url: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
url: https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
about: Be nice to other members of the community.
- name: Talks to the community
url: https://docs.ansible.com/ansible/latest/community/communication.html?utm_medium=github&utm_source=issue_template_chooser#mailing-list-information
url: https://docs.ansible.com/projects/ansible/latest/community/communication.html?utm_medium=github&utm_source=issue_template_chooser#mailing-list-information
about: Please ask and answer usage questions here
- name: Working groups
url: https://github.com/ansible/community/wiki

View File

@@ -122,7 +122,7 @@ body:
attributes:
label: Code of Conduct
description: |
Read the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
Read the [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
options:
- label: I agree to follow the Ansible Code of Conduct
required: true

View File

@@ -66,7 +66,7 @@ body:
attributes:
label: Code of Conduct
description: |
Read the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
Read the [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
options:
- label: I agree to follow the Ansible Code of Conduct
required: true

View File

@@ -4,7 +4,7 @@
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
<!--- Please do not forget to include a changelog fragment:
https://docs.ansible.com/ansible/devel/community/collection_development_process.html#creating-changelog-fragments
https://docs.ansible.com/projects/ansible/devel/community/collection_development_process.html#creating-changelog-fragments
No need to include one for docs-only or test-only PR, and for new plugin/module PRs.
Read about more details in CONTRIBUTING.md.
-->

View File

@@ -30,6 +30,8 @@ jobs:
matrix:
ansible:
- '2.16'
- '2.17'
- '2.18'
runs-on: ubuntu-latest
steps:
- name: Perform sanity testing
@@ -63,6 +65,18 @@ jobs:
python: '3.6'
- ansible: '2.16'
python: '3.11'
- ansible: '2.17'
python: '3.7'
- ansible: '2.17'
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: >-
@@ -136,19 +150,80 @@ jobs:
docker: alpine3
python: ''
target: azp/posix/3/
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
# - ansible: '2.16'
# docker: default
# python: '2.7'
# target: azp/generic/1/
# - ansible: '2.16'
# docker: default
# python: '3.6'
# target: azp/generic/1/
# - ansible: '2.16'
# docker: default
# python: '3.11'
# target: azp/generic/1/
# 2.17
- ansible: '2.17'
docker: fedora39
python: ''
target: azp/posix/1/
- ansible: '2.17'
docker: fedora39
python: ''
target: azp/posix/2/
- ansible: '2.17'
docker: fedora39
python: ''
target: azp/posix/3/
- ansible: '2.17'
docker: alpine319
python: ''
target: azp/posix/1/
- ansible: '2.17'
docker: alpine319
python: ''
target: azp/posix/2/
- ansible: '2.17'
docker: alpine319
python: ''
target: azp/posix/3/
- ansible: '2.17'
docker: ubuntu2004
python: ''
target: azp/posix/1/
- ansible: '2.17'
docker: ubuntu2004
python: ''
target: azp/posix/2/
- ansible: '2.17'
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

@@ -24,15 +24,15 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: python
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4

View File

@@ -21,7 +21,7 @@ jobs:
name: "Run extra sanity tests"
steps:
- name: Check out collection
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Run nox

View File

@@ -2,58 +2,367 @@
**Topics**
- <a href="#v11-2-0">v11\.2\.0</a>
- <a href="#v11-4-7">v11\.4\.7</a>
- <a href="#release-summary">Release Summary</a>
- <a href="#minor-changes">Minor Changes</a>
- <a href="#deprecated-features">Deprecated Features</a>
- <a href="#bugfixes">Bugfixes</a>
- <a href="#new-plugins">New Plugins</a>
- <a href="#lookup">Lookup</a>
- <a href="#new-modules">New Modules</a>
- <a href="#v11-1-2">v11\.1\.2</a>
- <a href="#v11-4-6">v11\.4\.6</a>
- <a href="#release-summary-1">Release Summary</a>
- <a href="#minor-changes-1">Minor Changes</a>
- <a href="#bugfixes-1">Bugfixes</a>
- <a href="#v11-1-1">v11\.1\.1</a>
- <a href="#v11-4-5">v11\.4\.5</a>
- <a href="#release-summary-2">Release Summary</a>
- <a href="#minor-changes-2">Minor Changes</a>
- <a href="#bugfixes-2">Bugfixes</a>
- <a href="#v11-1-0">v11\.1\.0</a>
- <a href="#v11-4-4">v11\.4\.4</a>
- <a href="#release-summary-3">Release Summary</a>
- <a href="#minor-changes-3">Minor Changes</a>
- <a href="#deprecated-features-1">Deprecated Features</a>
- <a href="#bugfixes-3">Bugfixes</a>
- <a href="#new-plugins-1">New Plugins</a>
- <a href="#callback">Callback</a>
- <a href="#new-modules-1">New Modules</a>
- <a href="#v11-0-0">v11\.0\.0</a>
- <a href="#v11-4-3">v11\.4\.3</a>
- <a href="#release-summary-4">Release Summary</a>
- <a href="#minor-changes-4">Minor Changes</a>
- <a href="#deprecated-features-2">Deprecated Features</a>
- <a href="#removed-features-previously-deprecated">Removed Features \(previously deprecated\)</a>
- <a href="#security-fixes">Security Fixes</a>
- <a href="#bugfixes-4">Bugfixes</a>
- <a href="#known-issues">Known Issues</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-6">Bugfixes</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-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-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-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-11">Release Summary</a>
- <a href="#minor-changes-5">Minor Changes</a>
- <a href="#bugfixes-11">Bugfixes</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-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-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-14">Bugfixes</a>
- <a href="#known-issues">Known Issues</a>
- <a href="#new-plugins-3">New Plugins</a>
- <a href="#callback-1">Callback</a>
- <a href="#connection">Connection</a>
- <a href="#filter">Filter</a>
- <a href="#filter-1">Filter</a>
- <a href="#inventory">Inventory</a>
- <a href="#lookup-1">Lookup</a>
- <a href="#new-modules-2">New Modules</a>
- <a href="#new-modules-3">New Modules</a>
This changelog describes changes after version 10\.0\.0\.
<a id="v11-2-0"></a>
## v11\.2\.0
<a id="v11-4-7"></a>
## v11\.4\.7
<a id="release-summary"></a>
### Release Summary
Regular bugfix and features release\.
Regular bugfix release\.
<a id="bugfixes"></a>
### 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](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-6"></a>
## v11\.4\.6
<a id="release-summary-1"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes-1"></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)\)\.
<a id="v11-4-5"></a>
## v11\.4\.5
<a id="release-summary-2"></a>
### Release Summary
Regular bugfix release\.
<a id="bugfixes-2"></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)\)\.
<a id="v11-4-4"></a>
## v11\.4\.4
<a id="release-summary-3"></a>
### Release Summary
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)\)\.
* monit \- internal state was not reflecting when operation is \"pending\" in <code>monit</code> \([https\://github\.com/ansible\-collections/community\.general/pull/11245](https\://github\.com/ansible\-collections/community\.general/pull/11245)\)\.
<a id="v11-4-2"></a>
## v11\.4\.2
<a id="release-summary-5"></a>
### Release Summary
Regular bugfix release\.
<a id="minor-changes"></a>
### Minor Changes
* 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-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)\)\.
* datetime module utils \- fix bug in <code>fromtimestamp\(\)</code> that caused the function to crash\. This function is not used in community\.general \([https\://github\.com/ansible\-collections/community\.general/pull/11206](https\://github\.com/ansible\-collections/community\.general/pull/11206)\)\.
* filesystem \- avoid false positive change detection on XFS resize due to unusable slack space \([https\://github\.com/ansible\-collections/community\.general/pull/11033](https\://github\.com/ansible\-collections/community\.general/pull/11033)\)\.
* mas \- parse CLI output correctly when listing installed apps with mas 3\.0\.0\+ \([https\://github\.com/ansible\-collections/community\.general/pull/11179](https\://github\.com/ansible\-collections/community\.general/pull/11179)\)\.
* xfconf \- fix handling of empty array properties \([https\://github\.com/ansible\-collections/community\.general/pull/11026](https\://github\.com/ansible\-collections/community\.general/pull/11026)\)\.
* xfconf\_info \- fix handling of empty array properties \([https\://github\.com/ansible\-collections/community\.general/pull/11026](https\://github\.com/ansible\-collections/community\.general/pull/11026)\)\.
<a id="v11-4-1"></a>
## v11\.4\.1
<a id="release-summary-6"></a>
### Release Summary
Regular bugfix release\.
<a id="minor-changes-1"></a>
### Minor Changes
* dependent lookup plugin \- refactor dict initialization\, no impact to users \([https\://github\.com/ansible\-collections/community\.general/pull/10891](https\://github\.com/ansible\-collections/community\.general/pull/10891)\)\.
* pacemaker\_cluster\.py \- refactor dict initialization\, no impact to users \([https\://github\.com/ansible\-collections/community\.general/pull/10891](https\://github\.com/ansible\-collections/community\.general/pull/10891)\)\.
* pacemaker\_resource\.py \- refactor dict initialization\, no impact to users \([https\://github\.com/ansible\-collections/community\.general/pull/10891](https\://github\.com/ansible\-collections/community\.general/pull/10891)\)\.
* pacemaker\_stonith\.py \- refactor dict initialization\, no impact to users \([https\://github\.com/ansible\-collections/community\.general/pull/10891](https\://github\.com/ansible\-collections/community\.general/pull/10891)\)\.
* scaleway module\_utils \- improve code readability\, no impact to users \([https\://github\.com/ansible\-collections/community\.general/pull/10891](https\://github\.com/ansible\-collections/community\.general/pull/10891)\)\.
<a id="security-fixes"></a>
### Security Fixes
* 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-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)\)\.
* cloudflare\_dns \- roll back changes to SRV 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/10937](https\://github\.com/ansible\-collections/community\.general/pull/10937)\)\.
* gitlab\_runner \- fix exception in check mode when a new runner is created \([https\://github\.com/ansible\-collections/community\.general/issues/8854](https\://github\.com/ansible\-collections/community\.general/issues/8854)\)\.
* keycloak\_clientsecret\, keycloak\_clientsecret\_info \- make <code>client\_auth</code> work \([https\://github\.com/ansible\-collections/community\.general/issues/10932](https\://github\.com/ansible\-collections/community\.general/issues/10932)\, [https\://github\.com/ansible\-collections/community\.general/pull/10933](https\://github\.com/ansible\-collections/community\.general/pull/10933)\)\.
* omapi\_host \- make return values compatible with ansible\-core 2\.19 and Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/11001](https\://github\.com/ansible\-collections/community\.general/pull/11001)\)\.
* onepassword\_doc and onepassword\_ssh\_key lookup plugins \- ensure that all connection parameters are passed to CLI class \([https\://github\.com/ansible\-collections/community\.general/pull/10965](https\://github\.com/ansible\-collections/community\.general/pull/10965)\)\.
* pritunl\_user \- improve resilience when comparing user parameters if remote fields are <code>null</code> or missing\. List parameters \(<code>groups</code>\, <code>mac\_addresses</code>\) now safely default to empty lists for comparison and avoids <code>KeyError</code> issues \([https\://github\.com/ansible\-collections/community\.general/issues/10954](https\://github\.com/ansible\-collections/community\.general/issues/10954)\, [https\://github\.com/ansible\-collections/community\.general/pull/10955](https\://github\.com/ansible\-collections/community\.general/pull/10955)\)\.
* random\_string lookup plugin \- replace <code>random\.SystemRandom\(\)</code> with <code>secrets\.SystemRandom\(\)</code> when generating strings\. This has no practical effect\, as both are the same \([https\://github\.com/ansible\-collections/community\.general/pull/10893](https\://github\.com/ansible\-collections/community\.general/pull/10893)\)\.
* terraform \- fix bug when <code>null</code> values inside complex vars are throwing error instead of being passed to terraform\. Now terraform can handle <code>null\`\`s in \`\`complex\_vars</code> itself \([https\://github\.com/ansible\-collections/community\.general/pull/10961](https\://github\.com/ansible\-collections/community\.general/pull/10961)\)\.
<a id="v11-4-0"></a>
## v11\.4\.0
<a id="release-summary-7"></a>
### Release Summary
Regular bugfix and feature release\.
<a id="minor-changes-2"></a>
### Minor Changes
* github\_app\_access\_token lookup plugin \- add support for GitHub Enterprise Server \([https\://github\.com/ansible\-collections/community\.general/issues/10879](https\://github\.com/ansible\-collections/community\.general/issues/10879)\, [https\://github\.com/ansible\-collections/community\.general/pull/10880](https\://github\.com/ansible\-collections/community\.general/pull/10880)\)\.
* gitlab\_group\_variable \- add <code>description</code> option \([https\://github\.com/ansible\-collections/community\.general/pull/10812](https\://github\.com/ansible\-collections/community\.general/pull/10812)\)\.
* gitlab\_instance\_variable \- add <code>description</code> option \([https\://github\.com/ansible\-collections/community\.general/pull/10812](https\://github\.com/ansible\-collections/community\.general/pull/10812)\)\.
* gitlab\_project\_variable \- add <code>description</code> option \([https\://github\.com/ansible\-collections/community\.general/pull/10812](https\://github\.com/ansible\-collections/community\.general/pull/10812)\, [https\://github\.com/ansible\-collections/community\.general/issues/8584](https\://github\.com/ansible\-collections/community\.general/issues/8584)\, [https\://github\.com/ansible\-collections/community\.general/issues/10809](https\://github\.com/ansible\-collections/community\.general/issues/10809)\)\.
* 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-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)\)\.
* gem \- fix soundness issue when uninstalling default gems on Ubuntu \([https\://github\.com/ansible\-collections/community\.general/issues/10451](https\://github\.com/ansible\-collections/community\.general/issues/10451)\, [https\://github\.com/ansible\-collections/community\.general/pull/10689](https\://github\.com/ansible\-collections/community\.general/pull/10689)\)\.
* github\_app\_access\_token lookup plugin \- fix compatibility imports for using jwt \([https\://github\.com/ansible\-collections/community\.general/issues/10807](https\://github\.com/ansible\-collections/community\.general/issues/10807)\, [https\://github\.com/ansible\-collections/community\.general/pull/10810](https\://github\.com/ansible\-collections/community\.general/pull/10810)\)\.
* github\_deploy\_key \- fix bug during error handling if no body was present in the result \([https\://github\.com/ansible\-collections/community\.general/issues/10853](https\://github\.com/ansible\-collections/community\.general/issues/10853)\, [https\://github\.com/ansible\-collections/community\.general/pull/10857](https\://github\.com/ansible\-collections/community\.general/pull/10857)\)\.
* homebrew \- do not fail when cask or formula name has changed in homebrew repo \([https\://github\.com/ansible\-collections/community\.general/issues/10804](https\://github\.com/ansible\-collections/community\.general/issues/10804)\, [https\://github\.com/ansible\-collections/community\.general/pull/10805](https\://github\.com/ansible\-collections/community\.general/pull/10805)\)\.
* keycloak\_group \- fixes an issue where module ignores realm when searching subgroups by name \([https\://github\.com/ansible\-collections/community\.general/pull/10840](https\://github\.com/ansible\-collections/community\.general/pull/10840)\)\.
* keycloak\_role \- fixes an issue where the module incorrectly returns <code>changed\=true</code> when using the alias <code>clientId</code> in composite roles \([https\://github\.com/ansible\-collections/community\.general/pull/10829](https\://github\.com/ansible\-collections/community\.general/pull/10829)\)\.
* parted \- variable is a list\, not text \([https\://github\.com/ansible\-collections/community\.general/pull/10823](https\://github\.com/ansible\-collections/community\.general/pull/10823)\, [https\://github\.com/ansible\-collections/community\.general/issues/10817](https\://github\.com/ansible\-collections/community\.general/issues/10817)\)\.
* rocketchat \- fix message delivery in Rocket Chat \>\= 7\.5\.3 by forcing <code>Content\-Type</code> header to <code>application/json</code> instead of the default <code>application/x\-www\-form\-urlencoded</code> \([https\://github\.com/ansible\-collections/community\.general/issues/10796](https\://github\.com/ansible\-collections/community\.general/issues/10796)\, [https\://github\.com/ansible\-collections/community\.general/pull/10796](https\://github\.com/ansible\-collections/community\.general/pull/10796)\)\.
* yaml cache plugin \- make compatible with ansible\-core 2\.19 \([https\://github\.com/ansible\-collections/community\.general/issues/10849](https\://github\.com/ansible\-collections/community\.general/issues/10849)\, [https\://github\.com/ansible\-collections/community\.general/issues/10852](https\://github\.com/ansible\-collections/community\.general/issues/10852)\)\.
<a id="v11-3-0"></a>
## v11\.3\.0
<a id="release-summary-8"></a>
### Release Summary
Regular bugfix and feature release\.
<a id="minor-changes-3"></a>
### Minor Changes
* android\_sdk \- minor refactor to improve readability \([https\://github\.com/ansible\-collections/community\.general/pull/10712](https\://github\.com/ansible\-collections/community\.general/pull/10712)\)\.
* django module utils \- simplify/consolidate the common settings for the command line \([https\://github\.com/ansible\-collections/community\.general/pull/10684](https\://github\.com/ansible\-collections/community\.general/pull/10684)\)\.
* django\_check \- rename parameter <code>database</code> to <code>databases</code>\, add alias for compatibility \([https\://github\.com/ansible\-collections/community\.general/pull/10700](https\://github\.com/ansible\-collections/community\.general/pull/10700)\)\.
* django\_check \- simplify/consolidate the common settings for the command line \([https\://github\.com/ansible\-collections/community\.general/pull/10684](https\://github\.com/ansible\-collections/community\.general/pull/10684)\)\.
* django\_createcachetable \- simplify/consolidate the common settings for the command line \([https\://github\.com/ansible\-collections/community\.general/pull/10684](https\://github\.com/ansible\-collections/community\.general/pull/10684)\)\.
* elasticsearch\_plugin \- minor refactor to improve readability \([https\://github\.com/ansible\-collections/community\.general/pull/10712](https\://github\.com/ansible\-collections/community\.general/pull/10712)\)\.
* filesize \- minor refactor to simplify string formatting \([https\://github\.com/ansible\-collections/community\.general/pull/10727](https\://github\.com/ansible\-collections/community\.general/pull/10727)\)\.
* github\_app\_access\_token lookup plugin \- support both <code>jwt</code> and <code>pyjwt</code> to avoid conflict with other modules requirements \([https\://github\.com/ansible\-collections/community\.general/issues/10299](https\://github\.com/ansible\-collections/community\.general/issues/10299)\)\.
* gitlab\_group\_access\_token \- add <code>planner</code> access level \([https\://github\.com/ansible\-collections/community\.general/pull/10679](https\://github\.com/ansible\-collections/community\.general/pull/10679)\)\.
* gitlab\_group\_access\_token \- add missing scopes \([https\://github\.com/ansible\-collections/community\.general/pull/10785](https\://github\.com/ansible\-collections/community\.general/pull/10785)\)\.
* gitlab\_group\_variable \- support masked\-and\-hidden variables \([https\://github\.com/ansible\-collections/community\.general/pull/10787](https\://github\.com/ansible\-collections/community\.general/pull/10787)\)\.
* gitlab\_label \- minor refactor to improve readability \([https\://github\.com/ansible\-collections/community\.general/pull/10711](https\://github\.com/ansible\-collections/community\.general/pull/10711)\)\.
* gitlab\_milestone \- minor refactor to improve readability \([https\://github\.com/ansible\-collections/community\.general/pull/10711](https\://github\.com/ansible\-collections/community\.general/pull/10711)\)\.
* gitlab\_project\_access\_token \- add <code>planner</code> access level \([https\://github\.com/ansible\-collections/community\.general/pull/10679](https\://github\.com/ansible\-collections/community\.general/pull/10679)\)\.
* gitlab\_project\_access\_token \- add missing scopes \([https\://github\.com/ansible\-collections/community\.general/pull/10785](https\://github\.com/ansible\-collections/community\.general/pull/10785)\)\.
* gitlab\_project\_variable \- support masked\-and\-hidden variables \([https\://github\.com/ansible\-collections/community\.general/pull/10787](https\://github\.com/ansible\-collections/community\.general/pull/10787)\)\.
* gitlab\_protected\_branch \- add <code>allow\_force\_push</code>\, <code>code\_owner\_approval\_required</code> \([https\://github\.com/ansible\-collections/community\.general/pull/10795](https\://github\.com/ansible\-collections/community\.general/pull/10795)\, [https\://github\.com/ansible\-collections/community\.general/issues/6432](https\://github\.com/ansible\-collections/community\.general/issues/6432)\, [https\://github\.com/ansible\-collections/community\.general/issues/10289](https\://github\.com/ansible\-collections/community\.general/issues/10289)\, [https\://github\.com/ansible\-collections/community\.general/issues/10765](https\://github\.com/ansible\-collections/community\.general/issues/10765)\)\.
* gitlab\_protected\_branch \- update protected branches if possible instead of recreating them \([https\://github\.com/ansible\-collections/community\.general/pull/10795](https\://github\.com/ansible\-collections/community\.general/pull/10795)\)\.
* iocage inventory plugin \- minor refactor to improve readability \([https\://github\.com/ansible\-collections/community\.general/pull/10712](https\://github\.com/ansible\-collections/community\.general/pull/10712)\)\.
* ipa\_host \- minor refactor to improve readability \([https\://github\.com/ansible\-collections/community\.general/pull/10711](https\://github\.com/ansible\-collections/community\.general/pull/10711)\)\.
* iptables\_state \- minor refactor to simplify string formatting \([https\://github\.com/ansible\-collections/community\.general/pull/10727](https\://github\.com/ansible\-collections/community\.general/pull/10727)\)\.
* keycloak\_realm \- add support for WebAuthn policy configuration options\, including both regular and passwordless WebAuthn policies \([https\://github\.com/ansible\-collections/community\.general/pull/10791](https\://github\.com/ansible\-collections/community\.general/pull/10791)\)\.
* lvg\_rename \- minor refactor to improve readability \([https\://github\.com/ansible\-collections/community\.general/pull/10711](https\://github\.com/ansible\-collections/community\.general/pull/10711)\)\.
* manageiq \- minor refactor to improve readability \([https\://github\.com/ansible\-collections/community\.general/pull/10712](https\://github\.com/ansible\-collections/community\.general/pull/10712)\)\.
* manageiq\_alert\_profiles \- minor refactor to improve readability \([https\://github\.com/ansible\-collections/community\.general/pull/10712](https\://github\.com/ansible\-collections/community\.general/pull/10712)\)\.
* manageiq\_group \- minor refactor to simplify string formatting \([https\://github\.com/ansible\-collections/community\.general/pull/10727](https\://github\.com/ansible\-collections/community\.general/pull/10727)\)\.
* manageiq\_tenant \- minor refactor to simplify string formatting \([https\://github\.com/ansible\-collections/community\.general/pull/10727](https\://github\.com/ansible\-collections/community\.general/pull/10727)\)\.
* mssql\_db \- minor refactor to simplify string formatting \([https\://github\.com/ansible\-collections/community\.general/pull/10727](https\://github\.com/ansible\-collections/community\.general/pull/10727)\)\.
* one\_vm \- minor refactor to improve readability \([https\://github\.com/ansible\-collections/community\.general/pull/10712](https\://github\.com/ansible\-collections/community\.general/pull/10712)\)\.
* openbsd\_pkg \- add <code>autoremove</code> parameter to remove unused dependencies \([https\://github\.com/ansible\-collections/community\.general/pull/10705](https\://github\.com/ansible\-collections/community\.general/pull/10705)\)\.
* openbsd\_pkg \- minor refactor to simplify string formatting \([https\://github\.com/ansible\-collections/community\.general/pull/10727](https\://github\.com/ansible\-collections/community\.general/pull/10727)\)\.
* pacemaker\_resource \- add <code>state\=cleanup</code> for cleaning up pacemaker resources \([https\://github\.com/ansible\-collections/community\.general/pull/10413](https\://github\.com/ansible\-collections/community\.general/pull/10413)\)
* pacemaker\_resource \- add <code>state\=cloned</code> for cloning pacemaker resources or groups \([https\://github\.com/ansible\-collections/community\.general/issues/10322](https\://github\.com/ansible\-collections/community\.general/issues/10322)\, [https\://github\.com/ansible\-collections/community\.general/pull/10665](https\://github\.com/ansible\-collections/community\.general/pull/10665)\)\.
* pacemaker\_resource \- the parameter <code>name</code> is no longer a required parameter in community\.general 11\.3\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10413](https\://github\.com/ansible\-collections/community\.general/pull/10413)\)
* parted \- using safer mechanism to run external command \([https\://github\.com/ansible\-collections/community\.general/pull/10642](https\://github\.com/ansible\-collections/community\.general/pull/10642)\)\.
* random\_string lookup plugin \- allow to specify seed while generating random string \([https\://github\.com/ansible\-collections/community\.general/issues/5362](https\://github\.com/ansible\-collections/community\.general/issues/5362)\, [https\://github\.com/ansible\-collections/community\.general/pull/10710](https\://github\.com/ansible\-collections/community\.general/pull/10710)\)\.
* scaleway modules \- add a <code>scaleway</code> group to use <code>module\_defaults</code> \([https\://github\.com/ansible\-collections/community\.general/pull/10647](https\://github\.com/ansible\-collections/community\.general/pull/10647)\)\.
* scaleway\_container \- add a <code>cpu\_limit</code> argument \([https\://github\.com/ansible\-collections/community\.general/pull/10646](https\://github\.com/ansible\-collections/community\.general/pull/10646)\)\.
* terraform \- minor refactor to improve readability \([https\://github\.com/ansible\-collections/community\.general/pull/10711](https\://github\.com/ansible\-collections/community\.general/pull/10711)\)\.
* ufw \- minor refactor to simplify string formatting \([https\://github\.com/ansible\-collections/community\.general/pull/10727](https\://github\.com/ansible\-collections/community\.general/pull/10727)\)\.
* xenserver module utils \- remove redundant constructs from argument specs \([https\://github\.com/ansible\-collections/community\.general/pull/10769](https\://github\.com/ansible\-collections/community\.general/pull/10769)\)\.
* xenserver\_facts \- minor refactor to simplify string formatting \([https\://github\.com/ansible\-collections/community\.general/pull/10727](https\://github\.com/ansible\-collections/community\.general/pull/10727)\)\.
* zfs\_facts \- minor refactor to simplify string formatting \([https\://github\.com/ansible\-collections/community\.general/pull/10727](https\://github\.com/ansible\-collections/community\.general/pull/10727)\)\.
* zypper \- support the <code>\-\-gpg\-auto\-import\-keys</code> option in zypper \([https\://github\.com/ansible\-collections/community\.general/issues/10660](https\://github\.com/ansible\-collections/community\.general/issues/10660)\, [https\://github\.com/ansible\-collections/community\.general/pull/10661](https\://github\.com/ansible\-collections/community\.general/pull/10661)\)\.
<a id="deprecated-features"></a>
### Deprecated Features
* hiera lookup plugin \- retrieving data with Hiera has been deprecated a long time ago\; because of that this plugin will be removed from community\.general 13\.0\.0\. If you disagree with this deprecation\, please create an issue in the community\.general repository \([https\://github\.com/ansible\-collections/community\.general/issues/4462](https\://github\.com/ansible\-collections/community\.general/issues/4462)\, [https\://github\.com/ansible\-collections/community\.general/pull/10779](https\://github\.com/ansible\-collections/community\.general/pull/10779)\)\.
* oci\_utils module utils \- utils 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)\)\.
* 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-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)\)\.
* monit \- fix crash caused by an unknown status value returned from the monit service \([https\://github\.com/ansible\-collections/community\.general/issues/10742](https\://github\.com/ansible\-collections/community\.general/issues/10742)\, [https\://github\.com/ansible\-collections/community\.general/pull/10743](https\://github\.com/ansible\-collections/community\.general/pull/10743)\)\.
* pacemaker \- use regex for matching <code>maintenance\-mode</code> output to determine cluster maintenance status \([https\://github\.com/ansible\-collections/community\.general/issues/10426](https\://github\.com/ansible\-collections/community\.general/issues/10426)\, [https\://github\.com/ansible\-collections/community\.general/pull/10707](https\://github\.com/ansible\-collections/community\.general/pull/10707)\)\.
* selective callback plugin \- specify <code>ansible\_loop\_var</code> instead of the explicit value <code>item</code> when printing task result \([https\://github\.com/ansible\-collections/community\.general/pull/10752](https\://github\.com/ansible\-collections/community\.general/pull/10752)\)\.
<a id="new-plugins"></a>
### New Plugins
<a id="filter"></a>
#### Filter
* community\.general\.to\_nice\_yaml \- Convert variable to YAML string\.
* community\.general\.to\_yaml \- Convert variable to YAML string\.
<a id="new-modules"></a>
### New Modules
* community\.general\.django\_dumpdata \- Wrapper for <code>django\-admin dumpdata</code>\.
* community\.general\.django\_loaddata \- Wrapper for <code>django\-admin loaddata</code>\.
* community\.general\.pacemaker\_stonith \- Manage Pacemaker STONITH\.
<a id="v11-2-1"></a>
## v11\.2\.1
<a id="release-summary-9"></a>
### Release Summary
Bugfix release\.
<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)\)\.
* apache2\_module \- check the <code>cgi</code> module restrictions only during activation \([https\://github\.com/ansible\-collections/community\.general/pull/10423](https\://github\.com/ansible\-collections/community\.general/pull/10423)\)\.
* composer \- fix broken command lines \([https\://github\.com/ansible\-collections/community\.general/issues/10662](https\://github\.com/ansible\-collections/community\.general/issues/10662)\, [https\://github\.com/ansible\-collections/community\.general/pull/10669](https\://github\.com/ansible\-collections/community\.general/pull/10669)\)\.
* pacemaker\_resource \- fix <code>resource\_type</code> parameter formatting \([https\://github\.com/ansible\-collections/community\.general/issues/10426](https\://github\.com/ansible\-collections/community\.general/issues/10426)\, [https\://github\.com/ansible\-collections/community\.general/pull/10663](https\://github\.com/ansible\-collections/community\.general/pull/10663)\)\.
* pids \- prevent error when an empty string is provided for <code>name</code> \([https\://github\.com/ansible\-collections/community\.general/issues/10672](https\://github\.com/ansible\-collections/community\.general/issues/10672)\, [https\://github\.com/ansible\-collections/community\.general/pull/10688](https\://github\.com/ansible\-collections/community\.general/pull/10688)\)\.
<a id="v11-2-0"></a>
## v11\.2\.0
<a id="release-summary-10"></a>
### Release Summary
Regular bugfix and features release\.
<a id="minor-changes-4"></a>
### Minor Changes
* apk \- using safer mechanism to run external command \([https\://github\.com/ansible\-collections/community\.general/issues/10479](https\://github\.com/ansible\-collections/community\.general/issues/10479)\, [https\://github\.com/ansible\-collections/community\.general/pull/10520](https\://github\.com/ansible\-collections/community\.general/pull/10520)\)\.
* bzr \- using safer mechanism to run external command \([https\://github\.com/ansible\-collections/community\.general/pull/10523](https\://github\.com/ansible\-collections/community\.general/pull/10523)\)\.
* capabilities \- using safer mechanism to run external command \([https\://github\.com/ansible\-collections/community\.general/pull/10524](https\://github\.com/ansible\-collections/community\.general/pull/10524)\)\.
@@ -81,7 +390,7 @@ Regular bugfix and features release\.
* xbps \- using safer mechanism to run external command \([https\://github\.com/ansible\-collections/community\.general/pull/10608](https\://github\.com/ansible\-collections/community\.general/pull/10608)\)\.
* xfs\_quota \- using safer mechanism to run external command \([https\://github\.com/ansible\-collections/community\.general/pull/10609](https\://github\.com/ansible\-collections/community\.general/pull/10609)\)\.
<a id="deprecated-features"></a>
<a id="deprecated-features-1"></a>
### Deprecated Features
* bearychat \- module is deprecated and will be removed in community\.general 12\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/10514](https\://github\.com/ansible\-collections/community\.general/issues/10514)\)\.
@@ -89,14 +398,14 @@ 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"></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)\)\.
* jenkins\_plugin \- separate Jenkins and external URL credentials \([https\://github\.com/ansible\-collections/community\.general/issues/4419](https\://github\.com/ansible\-collections/community\.general/issues/4419)\, [https\://github\.com/ansible\-collections/community\.general/pull/10346](https\://github\.com/ansible\-collections/community\.general/pull/10346)\)\.
* lvm\_pv \- properly detect SCSI or NVMe devices to rescan \([https\://github\.com/ansible\-collections/community\.general/issues/10444](https\://github\.com/ansible\-collections/community\.general/issues/10444)\, [https\://github\.com/ansible\-collections/community\.general/pull/10596](https\://github\.com/ansible\-collections/community\.general/pull/10596)\)\.
<a id="new-plugins"></a>
<a id="new-plugins-1"></a>
### New Plugins
<a id="lookup"></a>
@@ -104,7 +413,7 @@ Regular bugfix and features release\.
* community\.general\.binary\_file \- Read binary file and return it Base64 encoded\.
<a id="new-modules"></a>
<a id="new-modules-1"></a>
### New Modules
* community\.general\.lvm\_pv\_move\_data \- Move data between LVM Physical Volumes \(PVs\)\.
@@ -113,12 +422,12 @@ Regular bugfix and features release\.
<a id="v11-1-2"></a>
## v11\.1\.2
<a id="release-summary-1"></a>
<a id="release-summary-11"></a>
### Release Summary
Bugfix release\.
<a id="minor-changes-1"></a>
<a id="minor-changes-5"></a>
### Minor Changes
* gem \- remove redundant constructs from argument specs \([https\://github\.com/ansible\-collections/community\.general/pull/10505](https\://github\.com/ansible\-collections/community\.general/pull/10505)\)\.
@@ -252,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-1"></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)\)\.
@@ -266,12 +575,12 @@ Bugfix release\.
<a id="v11-1-1"></a>
## v11\.1\.1
<a id="release-summary-2"></a>
<a id="release-summary-12"></a>
### Release Summary
Bugfix release for the next Ansible 12 pre\-release\.
<a id="minor-changes-2"></a>
<a id="minor-changes-6"></a>
### Minor Changes
* aerospike\_migrations \- remove redundant constructs from argument specs \([https\://github\.com/ansible\-collections/community\.general/pull/10494](https\://github\.com/ansible\-collections/community\.general/pull/10494)\)\.
@@ -302,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-2"></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)\)\.
@@ -320,12 +629,12 @@ Bugfix release for the next Ansible 12 pre\-release\.
<a id="v11-1-0"></a>
## v11\.1\.0
<a id="release-summary-3"></a>
<a id="release-summary-13"></a>
### Release Summary
Regular bugfix and feature release\.
<a id="minor-changes-3"></a>
<a id="minor-changes-7"></a>
### Minor Changes
* cloudflare\_dns \- adds support for PTR records \([https\://github\.com/ansible\-collections/community\.general/pull/10267](https\://github\.com/ansible\-collections/community\.general/pull/10267)\)\.
@@ -374,13 +683,13 @@ Regular bugfix and feature release\.
* xfconf \- minor adjustments the the code \([https\://github\.com/ansible\-collections/community\.general/pull/10311](https\://github\.com/ansible\-collections/community\.general/pull/10311)\)\.
* xml \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\.
<a id="deprecated-features-1"></a>
<a id="deprecated-features-2"></a>
### Deprecated Features
* 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-3"></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)\)\.
@@ -390,7 +699,7 @@ Regular bugfix and feature release\.
* linode inventory plugin \- avoid using deprecated option when templating options \([https\://github\.com/ansible\-collections/community\.general/pull/10271](https\://github\.com/ansible\-collections/community\.general/pull/10271)\)\.
* logstash callback plugin \- remove reference to Python 2 library \([https\://github\.com/ansible\-collections/community\.general/pull/10345](https\://github\.com/ansible\-collections/community\.general/pull/10345)\)\.
<a id="new-plugins-1"></a>
<a id="new-plugins-2"></a>
### New Plugins
<a id="callback"></a>
@@ -398,7 +707,7 @@ Regular bugfix and feature release\.
* community\.general\.tasks\_only \- Only show tasks\.
<a id="new-modules-1"></a>
<a id="new-modules-2"></a>
### New Modules
* community\.general\.jenkins\_credential \- Manage Jenkins credentials and domains via API\.
@@ -406,12 +715,12 @@ Regular bugfix and feature release\.
<a id="v11-0-0"></a>
## v11\.0\.0
<a id="release-summary-4"></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\.
<a id="minor-changes-4"></a>
<a id="minor-changes-8"></a>
### Minor Changes
* CmdRunner module utils \- the convenience method <code>cmd\_runner\_fmt\.as\_fixed\(\)</code> now accepts multiple arguments as a list \([https\://github\.com/ansible\-collections/community\.general/pull/9893](https\://github\.com/ansible\-collections/community\.general/pull/9893)\)\.
@@ -520,7 +829,7 @@ This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-
* iocage inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\.
* iocage inventory plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\.
* iocage inventory plugin \- the new parameter <code>hooks\_results</code> of the plugin is a list of files inside a jail that provide configuration parameters for the inventory\. The inventory plugin reads the files from the jails and put the contents into the items of created variable <code>iocage\_hooks</code> \([https\://github\.com/ansible\-collections/community\.general/issues/9650](https\://github\.com/ansible\-collections/community\.general/issues/9650)\, [https\://github\.com/ansible\-collections/community\.general/pull/9651](https\://github\.com/ansible\-collections/community\.general/pull/9651)\)\.
* iocage inventory plugin \- the new parameter <code>inventory\_hostname\_tag</code> of the plugin provides the name of the tag in the C\(iocage properties notes\) that contains the jails alias\. The new parameter <code>inventory\_hostname\_required</code>\, if enabled\, makes the tag mandatory \([https\://github\.com/ansible\-collections/community\.general/issues/10206](https\://github\.com/ansible\-collections/community\.general/issues/10206)\, [https\://github\.com/ansible\-collections/community\.general/pull/10207](https\://github\.com/ansible\-collections/community\.general/pull/10207)\)\.
* iocage inventory plugin \- the new parameter <code>inventory\_hostname\_tag</code> of the plugin provides the name of the tag in the <code>iocage properties notes</code> that contains the jails alias\. The new parameter <code>inventory\_hostname\_required</code>\, if enabled\, makes the tag mandatory \([https\://github\.com/ansible\-collections/community\.general/issues/10206](https\://github\.com/ansible\-collections/community\.general/issues/10206)\, [https\://github\.com/ansible\-collections/community\.general/pull/10207](https\://github\.com/ansible\-collections/community\.general/pull/10207)\)\.
* iocage inventory plugin \- the new parameter <code>sudo</code> of the plugin lets the command <code>iocage list \-l</code> to run as root on the iocage host\. This is needed to get the IPv4 of a running DHCP jail \([https\://github\.com/ansible\-collections/community\.general/issues/9572](https\://github\.com/ansible\-collections/community\.general/issues/9572)\, [https\://github\.com/ansible\-collections/community\.general/pull/9573](https\://github\.com/ansible\-collections/community\.general/pull/9573)\)\.
* iptables\_state action plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\.
* iptables\_state action plugin \- use f\-strings instead of interpolations or <code>format</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9318](https\://github\.com/ansible\-collections/community\.general/pull/9318)\)\.
@@ -745,7 +1054,7 @@ This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-
* zypper \- add <code>simple\_errors</code> option \([https\://github\.com/ansible\-collections/community\.general/pull/9270](https\://github\.com/ansible\-collections/community\.general/pull/9270)\)\.
* zypper \- adds <code>skip\_post\_errors</code> that allows to skip RPM post\-install errors \(Zypper return code 107\) \([https\://github\.com/ansible\-collections/community\.general/issues/9972](https\://github\.com/ansible\-collections/community\.general/issues/9972)\)\.
<a id="deprecated-features-2"></a>
<a id="deprecated-features-3"></a>
### Deprecated Features
* MH module utils \- attribute <code>debug</code> definition in subclasses of MH is now deprecated\, as that name will become a delegation to <code>AnsibleModule</code> in community\.general 12\.0\.0\, and any such attribute will be overridden by that delegation in that version \([https\://github\.com/ansible\-collections/community\.general/pull/9577](https\://github\.com/ansible\-collections/community\.general/pull/9577)\)\.
@@ -799,13 +1108,13 @@ This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-
* redfish\_utils module utils \- the <code>\_init\_session</code> method has been removed \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\.
* stackpath\_compute inventory plugin \- the plugin was removed since the company and the service were sunset in June 2024 \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\.
<a id="security-fixes"></a>
<a id="security-fixes-1"></a>
### Security Fixes
* 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-4"></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)\)\.
@@ -888,7 +1197,7 @@ This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-
* reveal\_ansible\_type filter plugin and ansible\_type test plugin \- note that ansible\-core\'s Data Tagging feature implements new aliases\, such as <code>\_AnsibleTaggedStr</code> for <code>str</code>\, <code>\_AnsibleTaggedInt</code> for <code>int</code>\, and <code>\_AnsibleTaggedFloat</code> for <code>float</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9833](https\://github\.com/ansible\-collections/community\.general/pull/9833)\)\.
<a id="new-plugins-2"></a>
<a id="new-plugins-3"></a>
### New Plugins
<a id="callback-1"></a>
@@ -901,7 +1210,7 @@ This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-
* community\.general\.wsl \- Run tasks in WSL distribution using wsl\.exe CLI via SSH\.
<a id="filter"></a>
<a id="filter-1"></a>
#### Filter
* community\.general\.accumulate \- Produce a list of accumulated sums of the input list contents\.
@@ -920,7 +1229,7 @@ This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-
* community\.general\.onepassword\_ssh\_key \- Fetch SSH keys stored in 1Password\.
<a id="new-modules-2"></a>
<a id="new-modules-3"></a>
### New Modules
* community\.general\.android\_sdk \- Manages Android SDK packages\.
@@ -928,8 +1237,8 @@ This is release 11\.0\.0 of <code>community\.general</code>\, released on 2025\-
* community\.general\.ldap\_inc \- Use the Modify\-Increment LDAP V3 feature to increment an attribute value\.
* community\.general\.lvm\_pv \- Manage LVM Physical Volumes\.
* community\.general\.pacemaker\_resource \- Manage pacemaker resources\.
* community\.general\.systemd\_creds\_decrypt \- C\(systemd\)\'s C\(systemd\-creds decrypt\) plugin\.
* community\.general\.systemd\_creds\_encrypt \- C\(systemd\)\'s C\(systemd\-creds encrypt\) plugin\.
* community\.general\.systemd\_info \- Gather C\(systemd\) unit info\.
* community\.general\.systemd\_creds\_decrypt \- <code>systemd</code>\'s <code>systemd\-creds decrypt</code> plugin\.
* community\.general\.systemd\_creds\_encrypt \- <code>systemd</code>\'s <code>systemd\-creds encrypt</code> plugin\.
* community\.general\.systemd\_info \- Gather <code>systemd</code> unit info\.
* community\.general\.xdg\_mime \- Set default handler for MIME types\, for applications using XDG tools\.
* community\.general\.zpool \- Manage ZFS zpools\.

View File

@@ -6,6 +6,276 @@ 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
=======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- counter_enabled callback plugin - fix plugin not observing ``display_ok_hosts`` option (https://github.com/ansible-collections/community.general/issues/3978, https://github.com/ansible-collections/community.general/pull/11656).
- keycloak_authentication - fix ``TypeError`` crash when a flow is defined without ``authenticationExecutions`` (https://github.com/ansible-collections/community.general/issues/11547, https://github.com/ansible-collections/community.general/pull/11548).
- xfconf - representation of boolean properties was not consistent between Python and ``xfconf-query``, leading to broken idempotency (https://github.com/ansible-collections/community.general/pull/11645).
v11.4.5
=======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- python_requirements_info - use ``importlib.metadata`` if ``pkg_resources`` from ``setuptools`` 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/pull/11492).
v11.4.4
=======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- cloudflare_dns - also allow ``flag=128`` for CAA records (https://github.com/ansible-collections/community.general/issues/11355, https://github.com/ansible-collections/community.general/pull/11377).
- logstash_plugin - fix argument order when using ``version`` parameter. The plugin name must come after options like ``--version`` for the ``logstash-plugin`` CLI to work correctly (https://github.com/ansible-collections/community.general/issues/10745, https://github.com/ansible-collections/community.general/pull/11440).
v11.4.3
=======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- keycloak_realm - fixed crash in ``sanitize_cr()`` when ``realmrep`` was ``None`` (https://github.com/ansible-collections/community.general/pull/11260).
- listen_ports_facts - fix handling of empty PID lists when ``command=ss`` (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).
- monit - internal state was not reflecting when operation is "pending" in ``monit`` (https://github.com/ansible-collections/community.general/pull/11245).
v11.4.2
=======
Release Summary
---------------
Regular bugfix release.
Minor Changes
-------------
- tss lookup plugin - fixed ``AccessTokenAuthorizer`` initialization to include ``base_url`` parameter for proper token authentication (https://github.com/ansible-collections/community.general/pull/11031).
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).
- datetime module utils - fix bug in ``fromtimestamp()`` that caused the function to crash. This function is not used in community.general (https://github.com/ansible-collections/community.general/pull/11206).
- filesystem - avoid false positive change detection on XFS resize due to unusable slack space (https://github.com/ansible-collections/community.general/pull/11033).
- mas - parse CLI output correctly when listing installed apps with mas 3.0.0+ (https://github.com/ansible-collections/community.general/pull/11179).
- xfconf - fix handling of empty array properties (https://github.com/ansible-collections/community.general/pull/11026).
- xfconf_info - fix handling of empty array properties (https://github.com/ansible-collections/community.general/pull/11026).
v11.4.1
=======
Release Summary
---------------
Regular bugfix release.
Minor Changes
-------------
- dependent lookup plugin - refactor dict initialization, no impact to users (https://github.com/ansible-collections/community.general/pull/10891).
- pacemaker_cluster.py - refactor dict initialization, no impact to users (https://github.com/ansible-collections/community.general/pull/10891).
- pacemaker_resource.py - refactor dict initialization, no impact to users (https://github.com/ansible-collections/community.general/pull/10891).
- pacemaker_stonith.py - refactor dict initialization, no impact to users (https://github.com/ansible-collections/community.general/pull/10891).
- scaleway module_utils - improve code readability, no impact to users (https://github.com/ansible-collections/community.general/pull/10891).
Security Fixes
--------------
- keycloak_user - the parameter ``credentials[].value`` is now marked as ``no_log=true``. Before it was logged by Ansible, unless the task was marked as ``no_log: true``. 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/pull/11005).
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/pull/10956).
- cloudflare_dns - roll back changes to SRV record validation (https://github.com/ansible-collections/community.general/issues/10934, https://github.com/ansible-collections/community.general/pull/10937).
- gitlab_runner - fix exception in check mode when a new runner is created (https://github.com/ansible-collections/community.general/issues/8854).
- keycloak_clientsecret, keycloak_clientsecret_info - make ``client_auth`` work (https://github.com/ansible-collections/community.general/issues/10932, https://github.com/ansible-collections/community.general/pull/10933).
- omapi_host - make return values compatible with ansible-core 2.19 and Python 3 (https://github.com/ansible-collections/community.general/pull/11001).
- onepassword_doc and onepassword_ssh_key lookup plugins - ensure that all connection parameters are passed to CLI class (https://github.com/ansible-collections/community.general/pull/10965).
- pritunl_user - improve resilience when comparing user parameters if remote fields are ``null`` or missing. List parameters (``groups``, ``mac_addresses``) now safely default to empty lists for comparison and avoids ``KeyError`` issues (https://github.com/ansible-collections/community.general/issues/10954, https://github.com/ansible-collections/community.general/pull/10955).
- random_string lookup plugin - replace ``random.SystemRandom()`` with ``secrets.SystemRandom()`` when generating strings. This has no practical effect, as both are the same (https://github.com/ansible-collections/community.general/pull/10893).
- terraform - fix bug when ``null`` values inside complex vars are throwing error instead of being passed to terraform. Now terraform can handle ``null``s in ``complex_vars`` itself (https://github.com/ansible-collections/community.general/pull/10961).
v11.4.0
=======
Release Summary
---------------
Regular bugfix and feature release.
Minor Changes
-------------
- github_app_access_token lookup plugin - add support for GitHub Enterprise Server (https://github.com/ansible-collections/community.general/issues/10879, https://github.com/ansible-collections/community.general/pull/10880).
- gitlab_group_variable - add ``description`` option (https://github.com/ansible-collections/community.general/pull/10812).
- gitlab_instance_variable - add ``description`` option (https://github.com/ansible-collections/community.general/pull/10812).
- gitlab_project_variable - add ``description`` option (https://github.com/ansible-collections/community.general/pull/10812, https://github.com/ansible-collections/community.general/issues/8584, https://github.com/ansible-collections/community.general/issues/10809).
- keycloak_client - add idempotent support for ``optional_client_scopes`` and ``optional_client_scopes``, 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/pull/10842).
- pipx module_utils - use ``PIPX_USE_EMOJI`` to disable emojis in the output of ``pipx`` 1.8.0 (https://github.com/ansible-collections/community.general/pull/10874).
Bugfixes
--------
- Avoid usage of deprecated ``ansible.module_utils.six`` in all code that does not have to support Python 2 (https://github.com/ansible-collections/community.general/pull/10873).
- gem - fix soundness issue when uninstalling default gems on Ubuntu (https://github.com/ansible-collections/community.general/issues/10451, https://github.com/ansible-collections/community.general/pull/10689).
- github_app_access_token lookup plugin - fix compatibility imports for using jwt (https://github.com/ansible-collections/community.general/issues/10807, https://github.com/ansible-collections/community.general/pull/10810).
- github_deploy_key - fix bug during error handling if no body was present in the result (https://github.com/ansible-collections/community.general/issues/10853, https://github.com/ansible-collections/community.general/pull/10857).
- homebrew - do not fail when cask or formula name has changed in homebrew repo (https://github.com/ansible-collections/community.general/issues/10804, https://github.com/ansible-collections/community.general/pull/10805).
- keycloak_group - fixes an issue where module ignores realm when searching subgroups by name (https://github.com/ansible-collections/community.general/pull/10840).
- keycloak_role - fixes an issue where the module incorrectly returns ``changed=true`` when using the alias ``clientId`` in composite roles (https://github.com/ansible-collections/community.general/pull/10829).
- parted - variable is a list, not text (https://github.com/ansible-collections/community.general/pull/10823, https://github.com/ansible-collections/community.general/issues/10817).
- rocketchat - fix message delivery in Rocket Chat >= 7.5.3 by forcing ``Content-Type`` header to ``application/json`` instead of the default ``application/x-www-form-urlencoded`` (https://github.com/ansible-collections/community.general/issues/10796, https://github.com/ansible-collections/community.general/pull/10796).
- yaml cache plugin - make compatible with ansible-core 2.19 (https://github.com/ansible-collections/community.general/issues/10849, https://github.com/ansible-collections/community.general/issues/10852).
v11.3.0
=======
Release Summary
---------------
Regular bugfix and feature release.
Minor Changes
-------------
- android_sdk - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10712).
- django module utils - simplify/consolidate the common settings for the command line (https://github.com/ansible-collections/community.general/pull/10684).
- django_check - rename parameter ``database`` to ``databases``, add alias for compatibility (https://github.com/ansible-collections/community.general/pull/10700).
- django_check - simplify/consolidate the common settings for the command line (https://github.com/ansible-collections/community.general/pull/10684).
- django_createcachetable - simplify/consolidate the common settings for the command line (https://github.com/ansible-collections/community.general/pull/10684).
- elasticsearch_plugin - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10712).
- filesize - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- github_app_access_token lookup plugin - support both ``jwt`` and ``pyjwt`` to avoid conflict with other modules requirements (https://github.com/ansible-collections/community.general/issues/10299).
- gitlab_group_access_token - add ``planner`` access level (https://github.com/ansible-collections/community.general/pull/10679).
- gitlab_group_access_token - add missing scopes (https://github.com/ansible-collections/community.general/pull/10785).
- gitlab_group_variable - support masked-and-hidden variables (https://github.com/ansible-collections/community.general/pull/10787).
- gitlab_label - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10711).
- gitlab_milestone - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10711).
- gitlab_project_access_token - add ``planner`` access level (https://github.com/ansible-collections/community.general/pull/10679).
- gitlab_project_access_token - add missing scopes (https://github.com/ansible-collections/community.general/pull/10785).
- gitlab_project_variable - support masked-and-hidden variables (https://github.com/ansible-collections/community.general/pull/10787).
- gitlab_protected_branch - add ``allow_force_push``, ``code_owner_approval_required`` (https://github.com/ansible-collections/community.general/pull/10795, https://github.com/ansible-collections/community.general/issues/6432, https://github.com/ansible-collections/community.general/issues/10289, https://github.com/ansible-collections/community.general/issues/10765).
- gitlab_protected_branch - update protected branches if possible instead of recreating them (https://github.com/ansible-collections/community.general/pull/10795).
- iocage inventory plugin - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10712).
- ipa_host - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10711).
- iptables_state - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- keycloak_realm - add support for WebAuthn policy configuration options, including both regular and passwordless WebAuthn policies (https://github.com/ansible-collections/community.general/pull/10791).
- lvg_rename - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10711).
- manageiq - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10712).
- manageiq_alert_profiles - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10712).
- manageiq_group - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- manageiq_tenant - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- mssql_db - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- one_vm - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10712).
- openbsd_pkg - add ``autoremove`` parameter to remove unused dependencies (https://github.com/ansible-collections/community.general/pull/10705).
- openbsd_pkg - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- pacemaker_resource - add ``state=cleanup`` for cleaning up pacemaker resources (https://github.com/ansible-collections/community.general/pull/10413)
- pacemaker_resource - add ``state=cloned`` for cloning pacemaker resources or groups (https://github.com/ansible-collections/community.general/issues/10322, https://github.com/ansible-collections/community.general/pull/10665).
- pacemaker_resource - the parameter ``name`` is no longer a required parameter in community.general 11.3.0 (https://github.com/ansible-collections/community.general/pull/10413)
- parted - using safer mechanism to run external command (https://github.com/ansible-collections/community.general/pull/10642).
- random_string lookup plugin - allow to specify seed while generating random string (https://github.com/ansible-collections/community.general/issues/5362, https://github.com/ansible-collections/community.general/pull/10710).
- scaleway modules - add a ``scaleway`` group to use ``module_defaults`` (https://github.com/ansible-collections/community.general/pull/10647).
- scaleway_container - add a ``cpu_limit`` argument (https://github.com/ansible-collections/community.general/pull/10646).
- terraform - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10711).
- ufw - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- xenserver module utils - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10769).
- xenserver_facts - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- zfs_facts - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- zypper - support the ``--gpg-auto-import-keys`` option in zypper (https://github.com/ansible-collections/community.general/issues/10660, https://github.com/ansible-collections/community.general/pull/10661).
Deprecated Features
-------------------
- hiera lookup plugin - retrieving data with Hiera has been deprecated a long time ago; because of that this plugin will be removed from community.general 13.0.0. If you disagree with this deprecation, please create an issue in the community.general repository (https://github.com/ansible-collections/community.general/issues/4462, https://github.com/ansible-collections/community.general/pull/10779).
- oci_utils module utils - utils 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/pull/10652).
- 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/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/pull/10652).
Bugfixes
--------
- kdeconfig - ``kwriteconfig`` executable could not be discovered automatically on systems with only ``kwriteconfig6`` installed. ``kwriteconfig6`` can now be discovered by Ansible (https://github.com/ansible-collections/community.general/issues/10746, https://github.com/ansible-collections/community.general/pull/10751).
- monit - fix crash caused by an unknown status value returned from the monit service (https://github.com/ansible-collections/community.general/issues/10742, https://github.com/ansible-collections/community.general/pull/10743).
- pacemaker - use regex for matching ``maintenance-mode`` output to determine cluster maintenance status (https://github.com/ansible-collections/community.general/issues/10426, https://github.com/ansible-collections/community.general/pull/10707).
- selective callback plugin - specify ``ansible_loop_var`` instead of the explicit value ``item`` when printing task result (https://github.com/ansible-collections/community.general/pull/10752).
New Plugins
-----------
Filter
~~~~~~
- community.general.to_nice_yaml - Convert variable to YAML string.
- community.general.to_yaml - Convert variable to YAML string.
New Modules
-----------
- community.general.django_dumpdata - Wrapper for ``django-admin dumpdata``.
- community.general.django_loaddata - Wrapper for ``django-admin loaddata``.
- community.general.pacemaker_stonith - Manage Pacemaker STONITH.
v11.2.1
=======
Release Summary
---------------
Bugfix release.
Bugfixes
--------
- Avoid deprecated functionality in ansible-core 2.20 (https://github.com/ansible-collections/community.general/pull/10687).
- apache2_module - check the ``cgi`` module restrictions only during activation (https://github.com/ansible-collections/community.general/pull/10423).
- composer - fix broken command lines (https://github.com/ansible-collections/community.general/issues/10662, https://github.com/ansible-collections/community.general/pull/10669).
- pacemaker_resource - fix ``resource_type`` parameter formatting (https://github.com/ansible-collections/community.general/issues/10426, https://github.com/ansible-collections/community.general/pull/10663).
- pids - prevent error when an empty string is provided for ``name`` (https://github.com/ansible-collections/community.general/issues/10672, https://github.com/ansible-collections/community.general/pull/10688).
v11.2.0
=======
@@ -483,7 +753,7 @@ Minor Changes
- iocage inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584).
- iocage inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379).
- iocage inventory plugin - the new parameter ``hooks_results`` of the plugin is a list of files inside a jail that provide configuration parameters for the inventory. The inventory plugin reads the files from the jails and put the contents into the items of created variable ``iocage_hooks`` (https://github.com/ansible-collections/community.general/issues/9650, https://github.com/ansible-collections/community.general/pull/9651).
- iocage inventory plugin - the new parameter ``inventory_hostname_tag`` of the plugin provides the name of the tag in the C(iocage properties notes) that contains the jails alias. The new parameter ``inventory_hostname_required``, if enabled, makes the tag mandatory (https://github.com/ansible-collections/community.general/issues/10206, https://github.com/ansible-collections/community.general/pull/10207).
- iocage inventory plugin - the new parameter ``inventory_hostname_tag`` of the plugin provides the name of the tag in the ``iocage properties notes`` that contains the jails alias. The new parameter ``inventory_hostname_required``, if enabled, makes the tag mandatory (https://github.com/ansible-collections/community.general/issues/10206, https://github.com/ansible-collections/community.general/pull/10207).
- iocage inventory plugin - the new parameter ``sudo`` of the plugin lets the command ``iocage list -l`` to run as root on the iocage host. This is needed to get the IPv4 of a running DHCP jail (https://github.com/ansible-collections/community.general/issues/9572, https://github.com/ansible-collections/community.general/pull/9573).
- iptables_state action plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583).
- iptables_state action plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9318).
@@ -891,8 +1161,8 @@ New Modules
- community.general.ldap_inc - Use the Modify-Increment LDAP V3 feature to increment an attribute value.
- community.general.lvm_pv - Manage LVM Physical Volumes.
- community.general.pacemaker_resource - Manage pacemaker resources.
- community.general.systemd_creds_decrypt - C(systemd)'s C(systemd-creds decrypt) plugin.
- community.general.systemd_creds_encrypt - C(systemd)'s C(systemd-creds encrypt) plugin.
- community.general.systemd_info - Gather C(systemd) unit info.
- community.general.systemd_creds_decrypt - ``systemd``'s ``systemd-creds decrypt`` plugin.
- community.general.systemd_creds_encrypt - ``systemd``'s ``systemd-creds encrypt`` plugin.
- community.general.systemd_info - Gather ``systemd`` unit info.
- community.general.xdg_mime - Set default handler for MIME types, for applications using XDG tools.
- community.general.zpool - Manage ZFS zpools.

View File

@@ -6,7 +6,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
# Contributing
We follow [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html) in all our contributions and interactions within this repository.
We follow [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html) in all our contributions and interactions within this repository.
If you are a committer, also refer to the [collection's committer guidelines](https://github.com/ansible-collections/community.general/blob/main/commit-rights.md).
@@ -20,33 +20,38 @@ so you can cooperate to create a better solution together.
* If you are interested in starting with an easy issue, look for [issues with an `easyfix` label](https://github.com/ansible-collections/community.general/labels/easyfix).
* Often issues that are waiting for contributors to pick up have [the `waiting_on_contributor` label](https://github.com/ansible-collections/community.general/labels/waiting_on_contributor).
## Open pull requests
## Review pull requests
Look through currently [open pull requests](https://github.com/ansible-collections/community.general/pulls).
You can help by reviewing them. Reviews help move pull requests to merge state. Some good pull requests cannot be merged only due to a lack of reviews. And it is always worth saying that good reviews are often more valuable than pull requests themselves.
Note that reviewing does not only mean code review, but also offering comments on new interfaces added to existing plugins/modules, interfaces of new plugins/modules, improving language (not everyone is a native english speaker), or testing bugfixes and new features!
Note that reviewing does not only mean code review, but also offering comments on new interfaces added to existing plugins/modules, interfaces of new plugins/modules, improving language (not everyone is a native English speaker), or testing bugfixes and new features!
Also, consider taking up a valuable, reviewed, but abandoned pull request which you could politely ask the original authors to complete yourself.
## Open pull requests
Please read our ['Contributing to collections'](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_collections_contributing.html#contributing-to-a-collection-community-general) guide.
* Try committing your changes with an informative but short commit message.
* Do not squash your commits and force-push to your branch if not needed. Reviews of your pull request are much easier with individual commits to comprehend the pull request history. All commits of your pull request branch will be squashed into one commit by GitHub upon merge.
* Do not add merge commits to your PR. The bot will complain and you will have to rebase ([instructions for rebasing](https://docs.ansible.com/ansible/latest/dev_guide/developing_rebasing.html)) to remove them before your PR can be merged. To avoid that git automatically does merges during pulls, you can configure it to do rebases instead by running `git config pull.rebase true` inside the repository checkout.
* Make sure your PR includes a [changelog fragment](https://docs.ansible.com/ansible/devel/community/collection_development_process.html#creating-a-changelog-fragment).
* Do not add merge commits to your PR. The bot will complain and you will have to rebase ([instructions for rebasing](https://docs.ansible.com/projects/ansible/latest/dev_guide/developing_rebasing.html)) to remove them before your PR can be merged. To avoid that git automatically does merges during pulls, you can configure it to do rebases instead by running `git config pull.rebase true` inside the repository checkout.
* Make sure your PR includes a [changelog fragment](https://docs.ansible.com/projects/ansible/devel/community/collection_development_process.html#creating-a-changelog-fragment).
* You must not include a fragment for new modules or new plugins. Also you shouldn't include one for docs-only changes. (If you're not sure, simply don't include one, we'll tell you whether one is needed or not :) )
* Please always include a link to the pull request itself, and if the PR is about an issue, also a link to the issue. Also make sure the fragment ends with a period, and begins with a lower-case letter after `-`. (Again, if you don't do this, we'll add suggestions to fix it, so don't worry too much :) )
* Avoid reformatting unrelated parts of the codebase in your PR. These types of changes will likely be requested for reversion, create additional work for reviewers, and may cause approval to be delayed.
You can also read [our Quick-start development guide](https://github.com/ansible/community-docs/blob/main/create_pr_quick_start_guide.rst).
You can also read the Ansible community's [Quick-start development guide](https://docs.ansible.com/projects/ansible/devel/community/create_pr_quick_start.html).
## Test pull requests
If you want to test a PR locally, refer to [our testing guide](https://github.com/ansible/community-docs/blob/main/test_pr_locally_guide.rst) for instructions on how do it quickly.
If you want to test a PR locally, refer to [our testing guide](https://docs.ansible.com/projects/ansible/devel/community/collection_contributors/collection_test_pr_locally.html) for instructions on how do it quickly.
If you find any inconsistencies or places in this document which can be improved, feel free to raise an issue or pull request to fix it.
## Run sanity or unit locally (with antsibull-nox)
The easiest way to run sanity and unit tests locally is to use [antsibull-nox](https://ansible.readthedocs.io/projects/antsibull-nox/).
The easiest way to run sanity and unit tests locally is to use [antsibull-nox](https://docs.ansible.com/projects/antsibull-nox/).
(If you have [nox](https://nox.thea.codes/en/stable/) installed, it will automatically install antsibull-nox in a virtual environment for you.)
### Sanity tests
@@ -88,7 +93,7 @@ If you replace `-Re` with `-e`, then the virtual environments will be re-created
Instead of using antsibull-nox, you can also run sanity and unit tests with ansible-test directly.
This also allows you to run integration tests.
You have to check out the repository into a specific path structure to be able to run `ansible-test`. The path to the git checkout must end with `.../ansible_collections/community/general`. Please see [our testing guide](https://github.com/ansible/community-docs/blob/main/test_pr_locally_guide.rst) for instructions on how to check out the repository into a correct path structure. The short version of these instructions is:
You have to check out the repository into a specific path structure to be able to run `ansible-test`. The path to the git checkout must end with `.../ansible_collections/community/general`. Please see [our testing guide](https://docs.ansible.com/projects/ansible/devel/community/collection_contributors/collection_test_pr_locally.html) for instructions on how to check out the repository into a correct path structure. The short version of these instructions is:
```.bash
mkdir -p ~/dev/ansible_collections/community
@@ -188,9 +193,9 @@ Creating new modules and plugins requires a bit more work than other Pull Reques
3. When creating a new module or plugin, please make sure that you follow various guidelines:
- Follow [development conventions](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_best_practices.html);
- Follow [documentation standards](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_documenting.html) and
the [Ansible style guide](https://docs.ansible.com/ansible/devel/dev_guide/style_guide/index.html#style-guide);
- Follow [development conventions](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_modules_best_practices.html);
- Follow [documentation standards](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_modules_documenting.html) and
the [Ansible style guide](https://docs.ansible.com/projects/ansible/devel/dev_guide/style_guide/index.html#style-guide);
- Make sure your modules and plugins are [GPL-3.0-or-later](https://www.gnu.org/licenses/gpl-3.0-standalone.html) licensed
(new module_utils can also be [BSD-2-clause](https://opensource.org/licenses/BSD-2-Clause) licensed);
- Make sure that new plugins and modules have tests (unit tests, integration tests, or both); it is preferable to have some tests

View File

@@ -6,7 +6,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
# Community General Collection
[![Documentation](https://img.shields.io/badge/docs-brightgreen.svg)](https://docs.ansible.com/ansible/devel/collections/community/general/)
[![Documentation](https://img.shields.io/badge/docs-brightgreen.svg)](https://docs.ansible.com/projects/ansible/devel/collections/community/general/)
[![Build Status](https://dev.azure.com/ansible/community.general/_apis/build/status/CI?branchName=stable-11)](https://dev.azure.com/ansible/community.general/_build?definitionId=31)
[![EOL CI](https://github.com/ansible-collections/community.general/actions/workflows/ansible-test.yml/badge.svg?branch=stable-11)](https://github.com/ansible-collections/community.general/actions)
[![Nox CI](https://github.com/ansible-collections/community.general/actions/workflows/nox.yml/badge.svg?branch=stable-11)](https://github.com/ansible-collections/community.general/actions)
@@ -15,15 +15,15 @@ SPDX-License-Identifier: GPL-3.0-or-later
This repository contains the `community.general` Ansible Collection. The collection is a part of the Ansible package and includes many modules and plugins supported by Ansible community which are not part of more specialized community collections.
You can find [documentation for this collection on the Ansible docs site](https://docs.ansible.com/ansible/latest/collections/community/general/).
You can find [documentation for this collection on the Ansible docs site](https://docs.ansible.com/projects/ansible/latest/collections/community/general/).
Please note that this collection does **not** support Windows targets. Only connection plugins included in this collection might support Windows targets, and will explicitly mention that in their documentation if they do so.
## Code of Conduct
We follow [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html) in all our interactions within this project.
We follow [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html) in all our interactions within this project.
If you encounter abusive behavior violating the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html), please refer to the [policy violations](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html#policy-violations) section of the Code of Conduct for information on how to raise a complaint.
If you encounter abusive behavior violating the [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html), please refer to the [policy violations](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html#policy-violations) section of the Code of Conduct for information on how to raise a complaint.
## Communication
@@ -33,13 +33,13 @@ If you encounter abusive behavior violating the [Ansible Code of Conduct](https:
* [Social Spaces](https://forum.ansible.com/c/chat/4): gather and interact with fellow enthusiasts.
* [News & Announcements](https://forum.ansible.com/c/news/5): track project-wide announcements including social events.
* The Ansible [Bullhorn newsletter](https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn): used to announce releases and important changes.
* The Ansible [Bullhorn newsletter](https://docs.ansible.com/projects/ansible/devel/community/communication.html#the-bullhorn): used to announce releases and important changes.
For more information about communication, see the [Ansible communication guide](https://docs.ansible.com/ansible/devel/community/communication.html).
For more information about communication, see the [Ansible communication guide](https://docs.ansible.com/projects/ansible/devel/community/communication.html).
## Tested with Ansible
Tested with the current ansible-core 2.16, ansible-core 2.17, ansible-core 2.18, ansible-core 2.19 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
@@ -47,7 +47,7 @@ Some modules and plugins require external libraries. Please check the requiremen
## Included content
Please check the included content on the [Ansible Galaxy page for this collection](https://galaxy.ansible.com/ui/repo/published/community/general/) or the [documentation on the Ansible docs site](https://docs.ansible.com/ansible/latest/collections/community/general/).
Please check the included content on the [Ansible Galaxy page for this collection](https://galaxy.ansible.com/ui/repo/published/community/general/) or the [documentation on the Ansible docs site](https://docs.ansible.com/projects/ansible/latest/collections/community/general/).
## Using this collection
@@ -76,7 +76,7 @@ You can also install a specific version of the collection, for example, if you n
ansible-galaxy collection install community.general:==X.Y.Z
```
See [Ansible Using collections](https://docs.ansible.com/ansible/latest/user_guide/collections_using.html) for more details.
See [Ansible Using collections](https://docs.ansible.com/projects/ansible/latest/user_guide/collections_using.html) for more details.
## Contributing to this collection
@@ -90,13 +90,13 @@ You don't know how to start? Refer to our [contribution guide](https://github.co
The current maintainers are listed in the [commit-rights.md](https://github.com/ansible-collections/community.general/blob/main/commit-rights.md#people) file. If you have questions or need help, feel free to mention them in the proposals.
You can find more information in the [developer guide for collections](https://docs.ansible.com/ansible/devel/dev_guide/developing_collections.html#contributing-to-collections), and in the [Ansible Community Guide](https://docs.ansible.com/ansible/latest/community/index.html).
You can find more information in the [developer guide for collections](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_collections.html#contributing-to-collections), and in the [Ansible Community Guide](https://docs.ansible.com/projects/ansible/latest/community/index.html).
Also for some notes specific to this collection see [our CONTRIBUTING documentation](https://github.com/ansible-collections/community.general/blob/main/CONTRIBUTING.md).
### Running tests
See [here](https://docs.ansible.com/ansible/devel/dev_guide/developing_collections.html#testing-collections).
See [here](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_collections.html#testing-collections).
## Collection maintenance
@@ -110,7 +110,7 @@ It is necessary for maintainers of this collection to be subscribed to:
* The collection itself (the `Watch` button → `All Activity` in the upper right corner of the repository's homepage).
* The "Changes Impacting Collection Contributors and Maintainers" [issue](https://github.com/ansible-collections/overview/issues/45).
They also should be subscribed to Ansible's [The Bullhorn newsletter](https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn).
They also should be subscribed to Ansible's [The Bullhorn newsletter](https://docs.ansible.com/projects/ansible/devel/community/communication.html#the-bullhorn).
## Publishing New Version
@@ -129,9 +129,9 @@ See [this issue](https://github.com/ansible-collections/community.general/issues
## More information
- [Ansible Collection overview](https://github.com/ansible-collections/overview)
- [Ansible User guide](https://docs.ansible.com/ansible/latest/user_guide/index.html)
- [Ansible Developer guide](https://docs.ansible.com/ansible/latest/dev_guide/index.html)
- [Ansible Community code of conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html)
- [Ansible User guide](https://docs.ansible.com/projects/ansible/latest/user_guide/index.html)
- [Ansible Developer guide](https://docs.ansible.com/projects/ansible/latest/dev_guide/index.html)
- [Ansible Community code of conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html)
## Licensing

View File

@@ -12,6 +12,11 @@
# community.crypto's main branch needs ansible-core >= 2.17
"community.crypto" = "git+https://github.com/ansible-collections/community.crypto.git,stable-2"
[vcs]
vcs = "git"
development_branch = "main"
stable_branches = [ "stable-*" ]
[sessions]
[sessions.lint]
@@ -79,6 +84,11 @@ exclusions = [
]
doc_fragment = "community.general.keycloak.actiongroup_keycloak"
[[sessions.extra_checks.action_groups_config]]
name = "scaleway"
pattern = "^scaleway_.*$"
doc_fragment = "community.general.scaleway.actiongroup_scaleway"
[sessions.build_import_check]
run_galaxy_importer = true

View File

@@ -422,7 +422,7 @@ releases:
the contents into the items of created variable ``iocage_hooks`` (https://github.com/ansible-collections/community.general/issues/9650,
https://github.com/ansible-collections/community.general/pull/9651).
- iocage inventory plugin - the new parameter ``inventory_hostname_tag`` of
the plugin provides the name of the tag in the C(iocage properties notes)
the plugin provides the name of the tag in the ``iocage properties notes``
that contains the jails alias. The new parameter ``inventory_hostname_required``,
if enabled, makes the tag mandatory (https://github.com/ansible-collections/community.general/issues/10206,
https://github.com/ansible-collections/community.general/pull/10207).
@@ -1048,13 +1048,13 @@ releases:
- description: Manage pacemaker resources.
name: pacemaker_resource
namespace: ''
- description: C(systemd)'s C(systemd-creds decrypt) plugin.
- description: '``systemd``''s ``systemd-creds decrypt`` plugin.'
name: systemd_creds_decrypt
namespace: ''
- description: C(systemd)'s C(systemd-creds encrypt) plugin.
- description: '``systemd``''s ``systemd-creds encrypt`` plugin.'
name: systemd_creds_encrypt
namespace: ''
- description: Gather C(systemd) unit info.
- description: Gather ``systemd`` unit info.
name: systemd_info
namespace: ''
- description: Set default handler for MIME types, for applications using XDG
@@ -1577,3 +1577,400 @@ releases:
name: binary_file
namespace: null
release_date: '2025-08-11'
11.2.1:
changes:
bugfixes:
- Avoid deprecated functionality in ansible-core 2.20 (https://github.com/ansible-collections/community.general/pull/10687).
- apache2_module - check the ``cgi`` module restrictions only during activation
(https://github.com/ansible-collections/community.general/pull/10423).
- composer - fix broken command lines (https://github.com/ansible-collections/community.general/issues/10662,
https://github.com/ansible-collections/community.general/pull/10669).
- pacemaker_resource - fix ``resource_type`` parameter formatting (https://github.com/ansible-collections/community.general/issues/10426,
https://github.com/ansible-collections/community.general/pull/10663).
- pids - prevent error when an empty string is provided for ``name`` (https://github.com/ansible-collections/community.general/issues/10672,
https://github.com/ansible-collections/community.general/pull/10688).
release_summary: Bugfix release.
fragments:
- 10423-apache_module-condition.yml
- 10663-pacemaker-resource-fix-resource-type.yml
- 10680-composer.yml
- 10687-deprecations.yml
- 10688-pids.yml
- 11.2.1.yml
release_date: '2025-08-18'
11.3.0:
changes:
bugfixes:
- kdeconfig - ``kwriteconfig`` executable could not be discovered automatically
on systems with only ``kwriteconfig6`` installed. ``kwriteconfig6`` can
now be discovered by Ansible (https://github.com/ansible-collections/community.general/issues/10746,
https://github.com/ansible-collections/community.general/pull/10751).
- monit - fix crash caused by an unknown status value returned from the monit
service (https://github.com/ansible-collections/community.general/issues/10742,
https://github.com/ansible-collections/community.general/pull/10743).
- pacemaker - use regex for matching ``maintenance-mode`` output to determine
cluster maintenance status (https://github.com/ansible-collections/community.general/issues/10426,
https://github.com/ansible-collections/community.general/pull/10707).
- selective callback plugin - specify ``ansible_loop_var`` instead of the
explicit value ``item`` when printing task result (https://github.com/ansible-collections/community.general/pull/10752).
deprecated_features:
- hiera lookup plugin - retrieving data with Hiera has been deprecated a long
time ago; because of that this plugin will be removed from community.general
13.0.0. If you disagree with this deprecation, please create an issue in
the community.general repository (https://github.com/ansible-collections/community.general/issues/4462,
https://github.com/ansible-collections/community.general/pull/10779).
- oci_utils module utils - utils 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/pull/10652).
- 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/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/pull/10652).
minor_changes:
- android_sdk - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10712).
- django module utils - simplify/consolidate the common settings for the command
line (https://github.com/ansible-collections/community.general/pull/10684).
- django_check - rename parameter ``database`` to ``databases``, add alias
for compatibility (https://github.com/ansible-collections/community.general/pull/10700).
- django_check - simplify/consolidate the common settings for the command
line (https://github.com/ansible-collections/community.general/pull/10684).
- django_createcachetable - simplify/consolidate the common settings for the
command line (https://github.com/ansible-collections/community.general/pull/10684).
- elasticsearch_plugin - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10712).
- filesize - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- github_app_access_token lookup plugin - support both ``jwt`` and ``pyjwt``
to avoid conflict with other modules requirements (https://github.com/ansible-collections/community.general/issues/10299).
- gitlab_group_access_token - add ``planner`` access level (https://github.com/ansible-collections/community.general/pull/10679).
- gitlab_group_access_token - add missing scopes (https://github.com/ansible-collections/community.general/pull/10785).
- gitlab_group_variable - support masked-and-hidden variables (https://github.com/ansible-collections/community.general/pull/10787).
- gitlab_label - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10711).
- gitlab_milestone - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10711).
- gitlab_project_access_token - add ``planner`` access level (https://github.com/ansible-collections/community.general/pull/10679).
- gitlab_project_access_token - add missing scopes (https://github.com/ansible-collections/community.general/pull/10785).
- gitlab_project_variable - support masked-and-hidden variables (https://github.com/ansible-collections/community.general/pull/10787).
- gitlab_protected_branch - add ``allow_force_push``, ``code_owner_approval_required``
(https://github.com/ansible-collections/community.general/pull/10795, https://github.com/ansible-collections/community.general/issues/6432,
https://github.com/ansible-collections/community.general/issues/10289, https://github.com/ansible-collections/community.general/issues/10765).
- gitlab_protected_branch - update protected branches if possible instead
of recreating them (https://github.com/ansible-collections/community.general/pull/10795).
- iocage inventory plugin - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10712).
- ipa_host - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10711).
- iptables_state - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- keycloak_realm - add support for WebAuthn policy configuration options,
including both regular and passwordless WebAuthn policies (https://github.com/ansible-collections/community.general/pull/10791).
- lvg_rename - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10711).
- manageiq - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10712).
- manageiq_alert_profiles - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10712).
- manageiq_group - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- manageiq_tenant - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- mssql_db - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- one_vm - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10712).
- openbsd_pkg - add ``autoremove`` parameter to remove unused dependencies
(https://github.com/ansible-collections/community.general/pull/10705).
- openbsd_pkg - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- pacemaker_resource - add ``state=cleanup`` for cleaning up pacemaker resources
(https://github.com/ansible-collections/community.general/pull/10413)
- pacemaker_resource - add ``state=cloned`` for cloning pacemaker resources
or groups (https://github.com/ansible-collections/community.general/issues/10322,
https://github.com/ansible-collections/community.general/pull/10665).
- pacemaker_resource - the parameter ``name`` is no longer a required parameter
in community.general 11.3.0 (https://github.com/ansible-collections/community.general/pull/10413)
- parted - using safer mechanism to run external command (https://github.com/ansible-collections/community.general/pull/10642).
- random_string lookup plugin - allow to specify seed while generating random
string (https://github.com/ansible-collections/community.general/issues/5362,
https://github.com/ansible-collections/community.general/pull/10710).
- scaleway modules - add a ``scaleway`` group to use ``module_defaults`` (https://github.com/ansible-collections/community.general/pull/10647).
- scaleway_container - add a ``cpu_limit`` argument (https://github.com/ansible-collections/community.general/pull/10646).
- terraform - minor refactor to improve readability (https://github.com/ansible-collections/community.general/pull/10711).
- ufw - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- xenserver module utils - remove redundant constructs from argument specs
(https://github.com/ansible-collections/community.general/pull/10769).
- xenserver_facts - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- zfs_facts - minor refactor to simplify string formatting (https://github.com/ansible-collections/community.general/pull/10727).
- zypper - support the ``--gpg-auto-import-keys`` option in zypper (https://github.com/ansible-collections/community.general/issues/10660,
https://github.com/ansible-collections/community.general/pull/10661).
release_summary: Regular bugfix and feature release.
fragments:
- 10299-github_app_access_token-lookup.yml
- 10413-pacemaker-resource-cleanup.yml
- 10642-parted-cmd-list.yml
- 10646-scaleway_container_cpu_limit.yml
- 10647-scaleway-module-defaults.yml
- 10652-oracle-deprecation.yml
- 10661-support-gpg-auto-impor-keys-in-zypper.yml
- 10665-pacemaker-resource-clone.yml
- 10679-gitlab-access-token-add-planner-role.yml
- 10684-django-improvements.yml
- 10700-django-check-databases.yml
- 10705-openbsd-pkg-remove-unused.yml
- 10707-pacemaker-maintenance-mode-regex.yml
- 10711-pytohn-idioms-1.yml
- 10712-python-idioms-2.yml
- 10727-python-idioms-3.yml
- 10743-monit-handle-unknown-status.yml
- 10751-kdeconfig-support-kwriteconfig6.yml
- 10752-selective-hardcoded-loop-var.yml
- 10769-xenserver-rf.yml
- 10785-gitlab-token-add-missing-scopes.yml
- 10787-gitlab-variable-support-masked-and-hidden-variables.yml
- 10795-gitlab_protected_branch-add-allow_force_push-code_owner_approval_required.yml
- 11.3.0.yml
- hiera.yml
- keycloak-realm-webauthn-policies.yml
- random_string_seed.yml
modules:
- description: Wrapper for ``django-admin dumpdata``.
name: django_dumpdata
namespace: ''
- description: Wrapper for ``django-admin loaddata``.
name: django_loaddata
namespace: ''
- description: Manage Pacemaker STONITH.
name: pacemaker_stonith
namespace: ''
plugins:
filter:
- description: Convert variable to YAML string.
name: to_nice_yaml
namespace: null
- description: Convert variable to YAML string.
name: to_yaml
namespace: null
release_date: '2025-09-08'
11.4.0:
changes:
bugfixes:
- Avoid usage of deprecated ``ansible.module_utils.six`` in all code that
does not have to support Python 2 (https://github.com/ansible-collections/community.general/pull/10873).
- gem - fix soundness issue when uninstalling default gems on Ubuntu (https://github.com/ansible-collections/community.general/issues/10451,
https://github.com/ansible-collections/community.general/pull/10689).
- github_app_access_token lookup plugin - fix compatibility imports for using
jwt (https://github.com/ansible-collections/community.general/issues/10807,
https://github.com/ansible-collections/community.general/pull/10810).
- github_deploy_key - fix bug during error handling if no body was present
in the result (https://github.com/ansible-collections/community.general/issues/10853,
https://github.com/ansible-collections/community.general/pull/10857).
- homebrew - do not fail when cask or formula name has changed in homebrew
repo (https://github.com/ansible-collections/community.general/issues/10804,
https://github.com/ansible-collections/community.general/pull/10805).
- keycloak_group - fixes an issue where module ignores realm when searching
subgroups by name (https://github.com/ansible-collections/community.general/pull/10840).
- keycloak_role - fixes an issue where the module incorrectly returns ``changed=true``
when using the alias ``clientId`` in composite roles (https://github.com/ansible-collections/community.general/pull/10829).
- parted - variable is a list, not text (https://github.com/ansible-collections/community.general/pull/10823,
https://github.com/ansible-collections/community.general/issues/10817).
- rocketchat - fix message delivery in Rocket Chat >= 7.5.3 by forcing ``Content-Type``
header to ``application/json`` instead of the default ``application/x-www-form-urlencoded``
(https://github.com/ansible-collections/community.general/issues/10796,
https://github.com/ansible-collections/community.general/pull/10796).
- yaml cache plugin - make compatible with ansible-core 2.19 (https://github.com/ansible-collections/community.general/issues/10849,
https://github.com/ansible-collections/community.general/issues/10852).
minor_changes:
- github_app_access_token lookup plugin - add support for GitHub Enterprise
Server (https://github.com/ansible-collections/community.general/issues/10879,
https://github.com/ansible-collections/community.general/pull/10880).
- gitlab_group_variable - add ``description`` option (https://github.com/ansible-collections/community.general/pull/10812).
- gitlab_instance_variable - add ``description`` option (https://github.com/ansible-collections/community.general/pull/10812).
- gitlab_project_variable - add ``description`` option (https://github.com/ansible-collections/community.general/pull/10812,
https://github.com/ansible-collections/community.general/issues/8584, https://github.com/ansible-collections/community.general/issues/10809).
- keycloak_client - add idempotent support for ``optional_client_scopes``
and ``optional_client_scopes``, 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/pull/10842).
- pipx module_utils - use ``PIPX_USE_EMOJI`` to disable emojis in the output
of ``pipx`` 1.8.0 (https://github.com/ansible-collections/community.general/pull/10874).
release_summary: Regular bugfix and feature release.
fragments:
- 10689-gem-prevent-soundness-issue.yml
- 10796-rocketchat-force-content-type.yml
- 10805-homebrew-support-old-names.yml
- 10810-github_app_access_token-jwt.yml
- 10812-gitlab-variable-add-description.yml
- 10823-parted-fail-json-command.yml
- 10829-fix-keycloak-role-changed-status.yml
- 10840-fix-keycloak-subgroup-search-realm.yml
- 10842-keycloak-client-scope-support.yml
- 10852-yaml.yml
- 10857-github_deploy_key-err.yml
- 10873-six.yml
- 10874-pipx-180.yml
- 10880-github_app_access_token-lookup.yml
- 11.4.0.yml
release_date: '2025-10-06'
11.4.1:
changes:
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/pull/10956).
- cloudflare_dns - roll back changes to SRV record validation (https://github.com/ansible-collections/community.general/issues/10934,
https://github.com/ansible-collections/community.general/pull/10937).
- gitlab_runner - fix exception in check mode when a new runner is created
(https://github.com/ansible-collections/community.general/issues/8854).
- keycloak_clientsecret, keycloak_clientsecret_info - make ``client_auth``
work (https://github.com/ansible-collections/community.general/issues/10932,
https://github.com/ansible-collections/community.general/pull/10933).
- omapi_host - make return values compatible with ansible-core 2.19 and Python
3 (https://github.com/ansible-collections/community.general/pull/11001).
- onepassword_doc and onepassword_ssh_key lookup plugins - ensure that all
connection parameters are passed to CLI class (https://github.com/ansible-collections/community.general/pull/10965).
- pritunl_user - improve resilience when comparing user parameters if remote
fields are ``null`` or missing. List parameters (``groups``, ``mac_addresses``)
now safely default to empty lists for comparison and avoids ``KeyError``
issues (https://github.com/ansible-collections/community.general/issues/10954,
https://github.com/ansible-collections/community.general/pull/10955).
- random_string lookup plugin - replace ``random.SystemRandom()`` with ``secrets.SystemRandom()``
when generating strings. This has no practical effect, as both are the same
(https://github.com/ansible-collections/community.general/pull/10893).
- terraform - fix bug when ``null`` values inside complex vars are throwing
error instead of being passed to terraform. Now terraform can handle ``null``s
in ``complex_vars`` itself (https://github.com/ansible-collections/community.general/pull/10961).
minor_changes:
- dependent lookup plugin - refactor dict initialization, no impact to users
(https://github.com/ansible-collections/community.general/pull/10891).
- pacemaker_cluster.py - refactor dict initialization, no impact to users
(https://github.com/ansible-collections/community.general/pull/10891).
- pacemaker_resource.py - refactor dict initialization, no impact to users
(https://github.com/ansible-collections/community.general/pull/10891).
- pacemaker_stonith.py - refactor dict initialization, no impact to users
(https://github.com/ansible-collections/community.general/pull/10891).
- scaleway module_utils - improve code readability, no impact to users (https://github.com/ansible-collections/community.general/pull/10891).
release_summary: Regular bugfix release.
security_fixes:
- 'keycloak_user - the parameter ``credentials[].value`` is now marked as
``no_log=true``. Before it was logged by Ansible, unless the task was marked
as ``no_log: true``. 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/pull/11005).'
fragments:
- 10891-dict-refactor.yml
- 10918-gitlab-runner-fix-check-mode.yml
- 10933-keycloak-add-client-auth-for-clientsecret-modules.yml
- 10934-cloudflare-dns-caa-bug.yml
- 10934-cloudflare-dns-srv-bug.yml
- 10955-pritunl_user-null-missing-params.yaml
- 10961-terraform-complexvars-null-bugfix.yaml
- 10965-onepassword-bugfix.yml
- 11.4.1.yml
- 11001-omapi.yml
- 11005-keycloak_user.yml
- replace-random-with-secrets.yml
release_date: '2025-11-02'
11.4.2:
changes:
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).
- datetime module utils - fix bug in ``fromtimestamp()`` that caused the function
to crash. This function is not used in community.general (https://github.com/ansible-collections/community.general/pull/11206).
- filesystem - avoid false positive change detection on XFS resize due to
unusable slack space (https://github.com/ansible-collections/community.general/pull/11033).
- mas - parse CLI output correctly when listing installed apps with mas 3.0.0+
(https://github.com/ansible-collections/community.general/pull/11179).
- xfconf - fix handling of empty array properties (https://github.com/ansible-collections/community.general/pull/11026).
- xfconf_info - fix handling of empty array properties (https://github.com/ansible-collections/community.general/pull/11026).
minor_changes:
- tss lookup plugin - fixed ``AccessTokenAuthorizer`` initialization to include
``base_url`` parameter for proper token authentication (https://github.com/ansible-collections/community.general/pull/11031).
release_summary: Regular bugfix release.
fragments:
- 11.4.2.yml
- 11026-xfconf-empty-array.yml
- 11031-tss-lookup-delinea-rebranding.yml
- 11045-check-cobbler-version.yml
- 11179-mas-list-parsing.yml
- 11206-datetime.yml
- filesystem-xfs-resize-slack.yml
release_date: '2025-12-01'
11.4.3:
changes:
bugfixes:
- keycloak_realm - fixed crash in ``sanitize_cr()`` when ``realmrep`` was
``None`` (https://github.com/ansible-collections/community.general/pull/11260).
- listen_ports_facts - fix handling of empty PID lists when ``command=ss``
(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).
- monit - internal state was not reflecting when operation is "pending" in
``monit`` (https://github.com/ansible-collections/community.general/pull/11245).
release_summary: Regular bugfix release.
fragments:
- 11.4.3.yml
- 11245-monit-enum.yml
- 11255-monit-integrationtests.yml
- 11260-keycloak-realm-crash-when-no-realms.yml
- listen-ports-facts-return-no-facts.yml
release_date: '2025-12-29'
11.4.4:
changes:
bugfixes:
- cloudflare_dns - also allow ``flag=128`` for CAA records (https://github.com/ansible-collections/community.general/issues/11355,
https://github.com/ansible-collections/community.general/pull/11377).
- logstash_plugin - fix argument order when using ``version`` parameter. The
plugin name must come after options like ``--version`` for the ``logstash-plugin``
CLI to work correctly (https://github.com/ansible-collections/community.general/issues/10745,
https://github.com/ansible-collections/community.general/pull/11440).
release_summary: Regular bugfix release.
fragments:
- 11.4.4.yml
- 11377-cloudflare_dns-caa.yml
- 11440-logstash-plugin-fix-version-argument-order.yml
release_date: '2026-01-26'
11.4.5:
changes:
bugfixes:
- python_requirements_info - use ``importlib.metadata`` if ``pkg_resources``
from ``setuptools`` 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/pull/11492).
release_summary: Regular bugfix release.
fragments:
- 11.4.5.yml
- 11492-python_requires_info.yml
release_date: '2026-02-23'
11.4.6:
changes:
bugfixes:
- counter_enabled callback plugin - fix plugin not observing ``display_ok_hosts``
option (https://github.com/ansible-collections/community.general/issues/3978,
https://github.com/ansible-collections/community.general/pull/11656).
- keycloak_authentication - fix ``TypeError`` crash when a flow is defined
without ``authenticationExecutions`` (https://github.com/ansible-collections/community.general/issues/11547,
https://github.com/ansible-collections/community.general/pull/11548).
- xfconf - representation of boolean properties was not consistent between
Python and ``xfconf-query``, leading to broken idempotency (https://github.com/ansible-collections/community.general/pull/11645).
release_summary: Regular bugfix release.
fragments:
- 11.4.6.yml
- 11645-xfconf-bool.yml
- 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

@@ -7,7 +7,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
Committers Guidelines for community.general
===========================================
This document is based on the [Ansible committer guidelines](https://github.com/ansible/ansible/blob/b57444af14062ec96e0af75fdfc2098c74fe2d9a/docs/docsite/rst/community/committer_guidelines.rst) ([latest version](https://docs.ansible.com/ansible/devel/community/committer_guidelines.html)).
This document is based on the [Ansible committer guidelines](https://github.com/ansible/ansible/blob/b57444af14062ec96e0af75fdfc2098c74fe2d9a/docs/docsite/rst/community/committer_guidelines.rst) ([latest version](https://docs.ansible.com/projects/ansible/devel/community/committer_guidelines.html)).
These are the guidelines for people with commit privileges on the Ansible Community General Collection GitHub repository. Please read the guidelines before you commit.
@@ -45,7 +45,7 @@ Individuals with direct commit access to this collection repository are entruste
- Do not commit directly.
- Do not merge your own PRs. Someone else should have a chance to review and approve the PR merge. You have a small amount of leeway here for very minor changes.
- Do not forget about non-standard / alternate environments. Consider the alternatives. Yes, people have bad/unusual/strange environments (like binaries from multiple init systems installed), but they are the ones who need us the most.
- Do not drag your community team members down. Discuss the technical merits of any pull requests you review. Avoid negativity and personal comments. For more guidance on being a good community member, read the [Ansible Community Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html).
- Do not drag your community team members down. Discuss the technical merits of any pull requests you review. Avoid negativity and personal comments. For more guidance on being a good community member, read the [Ansible Community Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html).
- Do not forget about the maintenance burden. High-maintenance features may not be worth adding.
- Do not break playbooks. Always keep backwards compatibility in mind.
- Do not forget to keep it simple. Complexity breeds all kinds of problems.

View File

@@ -22,6 +22,7 @@ The same example from the Developer Guide would become:
from ansible_collections.community.general.plugins.module_utils import deps
with deps.declare("foo"):
import foo

View File

@@ -12,7 +12,7 @@ The inventory plugin :ansplugin:`community.general.iocage#inventory` gets the in
See:
* `iocage - A FreeBSD Jail Manager <https://iocage.readthedocs.io/en/latest>`_
* `iocage - A FreeBSD Jail Manager <https://freebsd.github.io/iocage/>`_
* `man iocage <https://man.freebsd.org/cgi/man.cgi?query=iocage>`_
* `Jails and Containers <https://docs.freebsd.org/en/books/handbook/jails>`_

View File

@@ -20,7 +20,7 @@ As root at the iocage host, create three VNET jails with a DHCP interface from t
shell> iocage create --template ansible_client --name srv_3 bpf=1 dhcp=1 vnet=1
srv_3 successfully created!
See: `Configuring a VNET Jail <https://iocage.readthedocs.io/en/latest/networking.html#configuring-a-vnet-jail>`_.
See: `Configuring VNET <https://freebsd.github.io/iocage/networking.html#vimage-vnet>`_.
As admin at the controller, list the jails:
@@ -115,7 +115,7 @@ Optionally, create shared IP jails:
| None | srv_3 | off | down | jail | 14.2-RELEASE-p3 | em0|10.1.0.103/24 | - | ansible_client | no |
+------+-------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
See: `Configuring a Shared IP Jail <https://iocage.readthedocs.io/en/latest/networking.html#configuring-a-shared-ip-jail>`_
See: `Configuring a Shared IP Jail <https://freebsd.github.io/iocage/networking.html#shared-ip>`_
If iocage needs environment variable(s), use the option :ansopt:`community.general.iocage#inventory:env`. For example,

View File

@@ -19,7 +19,7 @@ Quoting `man iocage <https://man.freebsd.org/cgi/man.cgi?query=iocage>`_
Default: none
Source: local
We will use the format `notes="tag1=value1 tag2=value2 ..."`.
We will use the format ``notes="tag1=value1 tag2=value2 ..."``.
.. note::

View File

@@ -21,7 +21,7 @@ That is where ``ModuleHelper`` comes to assistance: a lot of that boilerplate co
Quickstart
""""""""""
See the `example from Ansible documentation <https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html#creating-a-module>`_
See the `example from Ansible documentation <https://docs.ansible.com/projects/ansible/latest/dev_guide/developing_modules_general.html#creating-a-module>`_
written with ``ModuleHelper``.
But bear in mind that it does not showcase all of MH's features:
@@ -74,6 +74,7 @@ section above, but there are more elements that will take part in it.
from ansible_collections.community.general.plugins.module_utils.module_helper import ModuleHelper
class MyTest(ModuleHelper):
# behavior for module paramaters ONLY, see below for further information
output_params = ()
@@ -253,9 +254,9 @@ With that, MH will automatically generate the diff output for variables that hav
class MyTest(ModuleHelper):
diff_params = ('value', )
def __run__(self):
# example from community.general.gio_mime
self.vars.set_meta("handler", initial_value=gio_mime_get(self.runner, self.vars.mime_type), diff=True, change=True)
def __run__(self):
# example from community.general.gio_mime
self.vars.set_meta("handler", initial_value=gio_mime_get(self.runner, self.vars.mime_type), diff=True, change=True)
.. important::
@@ -549,9 +550,9 @@ The other option is to use the parameter ``value``, in which case the method wil
References
^^^^^^^^^^
- `Ansible Developer Guide <https://docs.ansible.com/ansible/latest/dev_guide/index.html>`_
- `Creating a module <https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html#creating-a-module>`_
- `Returning ansible facts <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#ansible-facts>`_
- `Ansible Developer Guide <https://docs.ansible.com/projects/ansible/latest/dev_guide/index.html>`_
- `Creating a module <https://docs.ansible.com/projects/ansible/latest/dev_guide/developing_modules_general.html#creating-a-module>`_
- `Returning ansible facts <https://docs.ansible.com/projects/ansible/latest/reference_appendices/common_return_values.html#ansible-facts>`_
- :ref:`ansible_collections.community.general.docsite.guide_vardict`

View File

@@ -276,9 +276,9 @@ RunCommandMock Specification
Creates an ``UTHelper`` instance from a given test specification.
:param ansible_module: The Ansible module to be tested.
:type ansible_module: module
:type ansible_module: :py:class:`types.ModuleType`
:param test_module: The test module.
:type test_module: module
:type test_module: :py:class:`types.ModuleType`
:param test_spec: The test specification.
:type test_spec: dict
:param mocks: List of ``TestCaseMocks`` to be used during testing. Currently only ``RunCommandMock`` exists.
@@ -308,11 +308,11 @@ RunCommandMock Specification
Creates an ``UTHelper`` instance from a test specification file.
:param ansible_module: The Ansible module to be tested.
:type ansible_module: module
:type ansible_module: :py:class:`types.ModuleType`
:param test_module: The test module.
:type test_module: module
:type test_module: :py:class:`types.ModuleType`
:param test_spec_filehandle: A file handle to an file stream handle providing the test specification in YAML format.
:type test_spec_filehandle: file
:type test_spec_filehandle: ``file-like object``
:param mocks: List of ``TestCaseMocks`` to be used during testing. Currently only ``RunCommandMock`` exists.
:type mocks: list or None
:return: An ``UTHelper`` instance.
@@ -335,7 +335,7 @@ RunCommandMock Specification
Creates an ``UTHelper`` instance from a given Ansible module and test module.
:param ansible_module: The Ansible module to be tested.
:type ansible_module: module
:type ansible_module: :py:class:`types.ModuleType`
:param test_module_name: The name of the test module. It works if passed ``__name__``.
:type test_module_name: str
:param mocks: List of ``TestCaseMocks`` to be used during testing. Currently only ``RunCommandMock`` exists.

View File

@@ -5,7 +5,7 @@
namespace: community
name: general
version: 11.2.0
version: 11.4.8
readme: README.md
authors:
- Ansible (https://github.com/ansible)
@@ -16,6 +16,6 @@ license_file: COPYING
tags:
- community
repository: https://github.com/ansible-collections/community.general
documentation: https://docs.ansible.com/ansible/latest/collections/community/general/
documentation: https://docs.ansible.com/projects/ansible/latest/collections/community/general/
homepage: https://github.com/ansible-collections/community.general
issues: https://github.com/ansible-collections/community.general/issues

View File

@@ -46,6 +46,36 @@ action_groups:
- keycloak_user_federation
- keycloak_user_rolemapping
- keycloak_userprofile
scaleway:
- scaleway_compute
- scaleway_compute_private_network
- scaleway_container
- scaleway_container_info
- scaleway_container_namespace
- scaleway_container_namespace_info
- scaleway_container_registry
- scaleway_container_registry_info
- scaleway_database_backup
- scaleway_function
- scaleway_function_info
- scaleway_function_namespace
- scaleway_function_namespace_info
- scaleway_image_info
- scaleway_ip
- scaleway_ip_info
- scaleway_lb
- scaleway_organization_info
- scaleway_private_network
- scaleway_security_group
- scaleway_security_group_info
- scaleway_security_group_rule
- scaleway_server_info
- scaleway_snapshot_info
- scaleway_sshkey
- scaleway_user_data
- scaleway_volume
- scaleway_volume_info
plugin_routing:
callback:
actionable:
@@ -73,7 +103,7 @@ plugin_routing:
deprecation:
removal_version: 12.0.0
warning_text: >-
The plugin has been superseded by the the option `result_format=yaml` in callback plugin ansible.builtin.default from ansible-core 2.13 onwards.
The plugin has been superseded by the option `result_format=yaml` in callback plugin ansible.builtin.default from ansible-core 2.13 onwards.
connection:
docker:
redirect: community.docker.docker
@@ -89,6 +119,12 @@ plugin_routing:
redirect: community.google.gcp_storage_file
hashi_vault:
redirect: community.hashi_vault.hashi_vault
hiera:
deprecation:
removal_version: 13.0.0
warning_text: >-
Hiera has been deprecated a long time ago.
If you disagree with this deprecation, please create an issue in the community.general repository.
manifold:
tombstone:
removal_version: 11.0.0
@@ -447,6 +483,10 @@ plugin_routing:
redirect: infoblox.nios_modules.nios_txt_record
nios_zone:
redirect: infoblox.nios_modules.nios_zone
oci_vcn:
deprecation:
removal_version: 13.0.0
warning_text: Use oracle.oci.oci_network_vcn instead.
ome_device_info:
redirect: dellemc.openmanage.ome_device_info
one_image_facts:
@@ -1008,6 +1048,30 @@ plugin_routing:
redirect: community.kubevirt.kubevirt_vm_options
nios:
redirect: infoblox.nios_modules.nios
oracle:
deprecation:
removal_version: 13.0.0
warning_text: Code is unmaintained here and official Oracle collection is available for a number of years.
oracle_creatable_resource:
deprecation:
removal_version: 13.0.0
warning_text: Code is unmaintained here and official Oracle collection is available for a number of years.
oracle_display_name_option:
deprecation:
removal_version: 13.0.0
warning_text: Code is unmaintained here and official Oracle collection is available for a number of years.
oracle_name_option:
deprecation:
removal_version: 13.0.0
warning_text: Code is unmaintained here and official Oracle collection is available for a number of years.
oracle_tags:
deprecation:
removal_version: 13.0.0
warning_text: Code is unmaintained here and official Oracle collection is available for a number of years.
oracle_wait_options:
deprecation:
removal_version: 13.0.0
warning_text: Code is unmaintained here and official Oracle collection is available for a number of years.
postgresql:
redirect: community.postgresql.postgresql
proxmox:
@@ -1041,6 +1105,10 @@ plugin_routing:
redirect: community.kubevirt.kubevirt
net_tools.nios.api:
redirect: infoblox.nios_modules.api
oci_utils:
deprecation:
removal_version: 13.0.0
warning_text: Code is unmaintained here and official Oracle collection is available for a number of years.
postgresql:
redirect: community.postgresql.postgresql
proxmox:

View File

@@ -94,7 +94,7 @@ EXAMPLES = r"""
from re import compile as re_compile
from ansible.plugins.become import BecomeBase
from ansible.module_utils._text import to_bytes
from ansible.module_utils.common.text.converters import to_bytes
ansi_color_codes = re_compile(to_bytes(r'\x1B\[[0-9;]+m'))

View File

@@ -59,8 +59,8 @@ notes:
- This plugin ignores the C(become_user) supplied and uses C(pmrun)'s own configuration to select the user.
"""
from shlex import quote as shlex_quote
from ansible.plugins.become import BecomeBase
from ansible.module_utils.six.moves import shlex_quote
class BecomeModule(BecomeBase):

View File

@@ -80,7 +80,7 @@ EXAMPLES = r"""
from re import compile as re_compile
from ansible.plugins.become import BecomeBase
from ansible.module_utils._text import to_bytes
from ansible.module_utils.common.text.converters import to_bytes
ansi_color_codes = re_compile(to_bytes(r"\x1B\[[0-9;]+m"))

View File

@@ -54,7 +54,7 @@ from multiprocessing import Lock
from itertools import chain
from ansible.errors import AnsibleError
from ansible.module_utils.common._collections_compat import MutableSet
from collections.abc import MutableSet
from ansible.plugins.cache import BaseCacheModule
from ansible.utils.display import Display

View File

@@ -48,7 +48,6 @@ try:
except ImportError:
import pickle
from ansible.module_utils.six import PY3
from ansible.plugins.cache import BaseFileCacheModule
@@ -61,10 +60,7 @@ class CacheModule(BaseFileCacheModule):
def _load(self, filepath):
# Pickle is a binary format
with open(filepath, 'rb') as f:
if PY3:
return pickle.load(f, encoding='bytes')
else:
return pickle.load(f)
return pickle.load(f, encoding='bytes')
def _dump(self, value, filepath):
with open(filepath, 'wb') as f:

View File

@@ -44,8 +44,7 @@ options:
# TODO: determine whether it is OK to change to: type: float
"""
import codecs
import os
import yaml
@@ -60,9 +59,9 @@ class CacheModule(BaseFileCacheModule):
"""
def _load(self, filepath):
with codecs.open(filepath, 'r', encoding='utf-8') as f:
with open(os.path.abspath(filepath), 'r', encoding='utf-8') as f:
return AnsibleLoader(f).get_single_data()
def _dump(self, value, filepath):
with codecs.open(filepath, 'w', encoding='utf-8') as f:
with open(os.path.abspath(filepath), 'w', encoding='utf-8') as f:
yaml.dump(value, f, Dumper=AnsibleDumper, default_flow_style=False)

View File

@@ -164,6 +164,8 @@ class CallbackModule(CallbackBase):
msg = f"changed: {self._host_counter}/{self._host_total} [{result._host.get_name()}]"
color = C.COLOR_CHANGED
else:
if not self._plugin_options.get("display_ok_hosts", True):
return
if delegated_vars:
msg = f"ok: {self._host_counter}/{self._host_total} [{result._host.get_name()} -> {delegated_vars['ansible_host']}]"
else:

View File

@@ -27,8 +27,7 @@ try:
except ImportError:
pass
from ansible.module_utils.six import binary_type, text_type
from ansible.module_utils.common._collections_compat import MutableMapping, MutableSequence
from collections.abc import MutableMapping, MutableSequence
from ansible.plugins.callback.default import CallbackModule as CallbackModule_default
from ansible.utils.color import colorize, hostcolor
from ansible.utils.display import Display
@@ -236,7 +235,7 @@ class CallbackModule(CallbackModule_default):
# Remove empty attributes (list, dict, str)
for attr in result.copy():
if isinstance(result[attr], (MutableSequence, MutableMapping, binary_type, text_type)):
if isinstance(result[attr], (MutableSequence, MutableMapping, bytes, str)):
if not result[attr]:
del result[attr]

View File

@@ -39,7 +39,7 @@ notes:
seealso:
- name: default default Ansible screen output
description: The official documentation on the B(default) callback plugin.
link: https://docs.ansible.com/ansible/latest/plugins/callback/default.html
link: https://docs.ansible.com/projects/ansible/latest/plugins/callback/default.html
requirements:
- set as stdout_callback in configuration
options:

View File

@@ -88,7 +88,6 @@ from os.path import basename
from ansible.errors import AnsibleError, AnsibleRuntimeError
from ansible.module_utils.ansible_release import __version__ as ansible_version
from ansible.module_utils.six import raise_from
from ansible.plugins.callback import CallbackBase
try:
@@ -308,9 +307,7 @@ class CallbackModule(CallbackBase):
self.disabled = False
if ELASTIC_LIBRARY_IMPORT_ERROR:
raise_from(
AnsibleError('The `elastic-apm` must be installed to use this plugin'),
ELASTIC_LIBRARY_IMPORT_ERROR)
raise AnsibleError('The `elastic-apm` must be installed to use this plugin') from ELASTIC_LIBRARY_IMPORT_ERROR
self.tasks_data = OrderedDict()

View File

@@ -34,7 +34,7 @@ import json
from ansible.utils.path import makedirs_safe
from ansible.module_utils.common.text.converters import to_bytes
from ansible.module_utils.common._collections_compat import MutableMapping
from collections.abc import MutableMapping
from ansible.parsing.ajson import AnsibleJSONEncoder
from ansible.plugins.callback import CallbackBase

View File

@@ -66,7 +66,8 @@ options:
type: string
"""
from ansible.module_utils.six.moves.urllib.parse import urlencode
from urllib.parse import urlencode
from ansible.module_utils.common.text.converters import to_bytes
from ansible.module_utils.urls import open_url
from ansible.plugins.callback import CallbackBase

View File

@@ -97,7 +97,7 @@ options:
otel_exporter_otlp_traces_protocol:
type: str
description:
- E(OTEL_EXPORTER_OTLP_TRACES_PROTOCOL) represents the the transport protocol for spans.
- E(OTEL_EXPORTER_OTLP_TRACES_PROTOCOL) represents the transport protocol for spans.
- See
U(https://opentelemetry-python.readthedocs.io/en/latest/sdk/environment_variables.html#envvar-OTEL_EXPORTER_OTLP_TRACES_PROTOCOL).
default: grpc
@@ -137,15 +137,13 @@ import json
import os
import socket
import uuid
from time import time_ns
from collections import OrderedDict
from os.path import basename
from time import time_ns
from urllib.parse import urlparse
from ansible.errors import AnsibleError
from ansible.module_utils.ansible_release import __version__ as ansible_version
from ansible.module_utils.six import raise_from
from ansible.module_utils.six.moves.urllib.parse import urlparse
from ansible.plugins.callback import CallbackBase
try:
@@ -495,9 +493,9 @@ class CallbackModule(CallbackBase):
self.otel_exporter_otlp_traces_protocol = None
if OTEL_LIBRARY_IMPORT_ERROR:
raise_from(
AnsibleError('The `opentelemetry-api`, `opentelemetry-exporter-otlp` or `opentelemetry-sdk` must be installed to use this plugin'),
OTEL_LIBRARY_IMPORT_ERROR)
raise AnsibleError(
'The `opentelemetry-api`, `opentelemetry-exporter-otlp` or `opentelemetry-sdk` must be installed to use this plugin'
) from OTEL_LIBRARY_IMPORT_ERROR
self.tasks_data = OrderedDict()

View File

@@ -208,7 +208,7 @@ class CallbackModule(CallbackBase):
stderr = [r.get('exception', None), r.get('module_stderr', None)]
stderr = "\n".join([e for e in stderr if e]).strip()
self._print_host_or_item(r['item'],
self._print_host_or_item(r[r['ansible_loop_var']],
r.get('changed', False),
to_text(r.get('msg', '')),
r.get('diff', None),

View File

@@ -75,11 +75,11 @@ import os
import os.path
import subprocess
import traceback
from shlex import quote as shlex_quote
from ansible.errors import AnsibleError
from ansible.module_utils.basic import is_executable
from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils.common.text.converters import to_bytes
from ansible.plugins.connection import ConnectionBase, BUFSIZE
from ansible.utils.display import Display

View File

@@ -80,7 +80,7 @@ from subprocess import call, Popen, PIPE
from ansible.errors import AnsibleError, AnsibleConnectionFailure, AnsibleFileNotFound
from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils._text import to_bytes, to_text
from ansible.module_utils.common.text.converters import to_bytes, to_text
from ansible.plugins.connection import ConnectionBase

View File

@@ -38,9 +38,9 @@ import os
import os.path
import subprocess
import traceback
from shlex import quote as shlex_quote
from ansible.errors import AnsibleError
from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
from ansible.plugins.connection import ConnectionBase, BUFSIZE

View File

@@ -31,9 +31,9 @@ import os
import os.path
import subprocess
import traceback
from shlex import quote as shlex_quote
from ansible.errors import AnsibleError
from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils.common.text.converters import to_bytes
from ansible.plugins.connection import ConnectionBase, BUFSIZE

View File

@@ -12,7 +12,7 @@ class ModuleDocFragment(object):
options:
venv:
description:
- Use the the Python interpreter from this virtual environment.
- Use the Python interpreter from this virtual environment.
- Pass the path to the root of the virtualenv, not the C(bin/) directory nor the C(python) executable.
type: path
settings:
@@ -59,3 +59,24 @@ options:
type: str
default: default
"""
DATA = r"""
options:
excludes:
description:
- Applications or models to be excluded.
- Format must be either V(app_label) or V(app_label.ModelName).
type: list
elements: str
format:
description:
- Serialization format of the output data.
type: str
default: json
choices: [xml, json, jsonl, yaml]
notes:
- As it is now, the module is B(not idempotent). Ensuring idempotency for this case can be a bit tricky, because it would
amount to ensuring beforehand that all the data in the fixture file is already in the database, which is not a trivial feat.
Unfortunately, neither C(django loaddata) nor C(django dumpdata) have a C(--dry-run) option, so the only way to know whether
there is a change or not is to actually load or dump the data.
"""

View File

@@ -80,5 +80,6 @@ options: {}
notes:
- This module uses JSON-RPC over HTTP(S) to communicate with the FreeIPA server.
If you need to enroll the managed node into FreeIPA realm, you might want to consider using the collection
L(freeipa.ansible_freeipa, https://galaxy.ansible.com/ui/repo/published/freeipa/ansible_freeipa/), but that will require shell access to the managed node.
L(freeipa.ansible_freeipa, https://galaxy.ansible.com/ui/repo/published/freeipa/ansible_freeipa/), but shell access to one
node from the realm is required to manage the deployment.
"""

View File

@@ -6,6 +6,12 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
#
# DEPRECATED
#
# This fragment is deprecated and will be removed in community.general 13.0.0
#
class ModuleDocFragment(object):
DOCUMENTATION = r"""

View File

@@ -6,6 +6,12 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
#
# DEPRECATED
#
# This fragment is deprecated and will be removed in community.general 13.0.0
#
class ModuleDocFragment(object):
DOCUMENTATION = r"""

View File

@@ -6,6 +6,12 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
#
# DEPRECATED
#
# This fragment is deprecated and will be removed in community.general 13.0.0
#
class ModuleDocFragment(object):
DOCUMENTATION = r"""

View File

@@ -6,6 +6,12 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
#
# DEPRECATED
#
# This fragment is deprecated and will be removed in community.general 13.0.0
#
class ModuleDocFragment(object):
DOCUMENTATION = r"""

View File

@@ -6,6 +6,12 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
#
# DEPRECATED
#
# This fragment is deprecated and will be removed in community.general 13.0.0
#
class ModuleDocFragment(object):
DOCUMENTATION = r"""

View File

@@ -6,6 +6,12 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
#
# DEPRECATED
#
# This fragment is deprecated and will be removed in community.general 13.0.0
#
class ModuleDocFragment(object):
DOCUMENTATION = r"""

View File

@@ -23,12 +23,18 @@ options:
itself.
type: path
requirements:
- This module requires C(pipx) version 1.7.0 or above. Please note that C(pipx) 1.7.0 requires Python 3.8 or above.
- This module requires C(pipx) version 1.7.0 or above.
- Please note that C(pipx) 1.7.0 requires Python 3.8 or above.
- Please note that C(pipx) 1.8.0 requires Python 3.9 or above.
notes:
- This module does not install the C(pipx) python package, however that can be easily done with the module M(ansible.builtin.pip).
- This module does not require C(pipx) to be in the shell C(PATH), but it must be loadable by Python as a module.
- This module does not require C(pipx) to be in the shell C(PATH), but it must be loadable by Python as a module, meaning
that C(python -m pipx) must work.
- This module honors C(pipx) environment variables such as but not limited to E(PIPX_HOME) and E(PIPX_BIN_DIR) passed using
the R(environment Ansible keyword, playbooks_environment).
- This module disabled emojis in the output of C(pipx) commands to reduce clutter. In C(pipx) 1.8.0, the environment variable
E(USE_EMOJI) was renamed to E(PIPX_USE_EMOJI) and for compatibility with both versions, starting in community.general
11.4.0, this module sets them both to C(0) to disable emojis.
seealso:
- name: C(pipx) command manual page
description: Manual page for the command.

View File

@@ -47,3 +47,13 @@ notes:
E(SCW_TOKEN), E(SCW_API_KEY), E(SCW_OAUTH_TOKEN) or E(SCW_API_TOKEN).
- If one wants to use a different O(api_url) one can also set the E(SCW_API_URL) environment variable.
"""
ACTIONGROUP_SCALEWAY = r"""
options: {}
attributes:
action_group:
description: Use C(group/community.general.scaleway) in C(module_defaults) to set defaults for this module.
support: full
membership:
- community.general.scaleway
"""

View File

@@ -36,7 +36,7 @@ _value:
"""
from ansible.errors import AnsibleFilterError
from ansible.module_utils.common._collections_compat import Sequence
from collections.abc import Sequence
from collections import Counter

View File

@@ -18,6 +18,12 @@ options:
description: A string containing an INI document.
type: string
required: true
seealso:
- plugin: community.general.to_ini
plugin_type: filter
- plugin: ansible.builtin.ini
plugin_type: lookup
- module: community.general.ini_file
"""
EXAMPLES = r"""
@@ -45,10 +51,10 @@ _value:
"""
from io import StringIO
from configparser import ConfigParser
from ansible.errors import AnsibleFilterError
from ansible.module_utils.six import string_types
from ansible.module_utils.six.moves import StringIO
from ansible.module_utils.six.moves.configparser import ConfigParser
class IniParser(ConfigParser):
@@ -73,7 +79,7 @@ class IniParser(ConfigParser):
def from_ini(obj):
''' Read the given string as INI file and return a dict '''
if not isinstance(obj, string_types):
if not isinstance(obj, str):
raise AnsibleFilterError(f'from_ini requires a str, got {type(obj)}')
parser = IniParser()

View File

@@ -54,7 +54,7 @@ _value:
"""
from ansible.errors import AnsibleFilterError
from ansible.module_utils.common._collections_compat import Mapping, Sequence
from collections.abc import Mapping, Sequence
def groupby_as_dict(sequence, attribute):

View File

@@ -196,8 +196,7 @@ _value:
"""
from ansible.errors import AnsibleFilterError
from ansible.module_utils.six import string_types
from ansible.module_utils.common._collections_compat import Mapping, Sequence
from collections.abc import Mapping, Sequence
from ansible.utils.vars import merge_hash
from collections import defaultdict
@@ -257,7 +256,7 @@ def lists_mergeby(*terms, **kwargs):
index = terms[-1]
if not isinstance(index, string_types):
if not isinstance(index, str):
msg = ("First argument after the lists for community.general.lists_mergeby must be string. "
"%s is %s")
raise AnsibleFilterError(msg % (index, type(index)))

View File

@@ -45,14 +45,13 @@ import re
from random import Random, SystemRandom
from ansible.errors import AnsibleFilterError
from ansible.module_utils.six import string_types
def random_mac(value, seed=None):
''' takes string prefix, and return it completed with random bytes
to get a complete 6 bytes MAC address '''
if not isinstance(value, string_types):
if not isinstance(value, str):
raise AnsibleFilterError('Invalid value type (%s) for random_mac (%s)' %
(type(value), value))

View File

@@ -18,6 +18,12 @@ options:
description: The dictionary that should be converted to the INI format.
type: dictionary
required: true
seealso:
- plugin: ansible.builtin.ini
plugin_type: lookup
- module: community.general.ini_file
- plugin: community.general.from_ini
plugin_type: filter
"""
EXAMPLES = r"""
@@ -49,11 +55,10 @@ _value:
type: string
"""
from collections.abc import Mapping
from configparser import ConfigParser
from io import StringIO
from ansible.errors import AnsibleFilterError
from ansible.module_utils.common._collections_compat import Mapping
from ansible.module_utils.six.moves import StringIO
from ansible.module_utils.six.moves.configparser import ConfigParser
class IniParser(ConfigParser):

View File

@@ -0,0 +1,89 @@
# Copyright (c) Contributors to the Ansible project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
DOCUMENTATION:
name: to_nice_yaml
author:
- Ansible Core Team
- Felix Fontein (@felixfontein)
version_added: 11.3.0
short_description: Convert variable to YAML string
description:
- Converts an Ansible variable into a YAML string representation, without preserving vaulted strings as P(ansible.builtin.to_yaml#filter).
- This filter functions as a wrapper to the L(Python PyYAML library, https://pypi.org/project/PyYAML/)'s C(yaml.dump) function.
positional: _input
options:
_input:
description:
- A variable or expression that returns a data structure.
type: raw
required: true
indent:
description:
- Number of spaces to indent Python structures, mainly used for display to humans.
type: integer
default: 2
sort_keys:
description:
- Affects sorting of dictionary keys.
default: true
type: bool
default_style:
description:
- Indicates the style of the scalar.
choices:
- ''
- "'"
- '"'
- '|'
- '>'
type: string
canonical:
description:
- If set to V(true), export tag type to the output.
type: bool
width:
description:
- Set the preferred line width.
type: integer
line_break:
description:
- Specify the line break.
type: string
encoding:
description:
- Specify the output encoding.
type: string
explicit_start:
description:
- If set to V(true), adds an explicit start using C(---).
type: bool
explicit_end:
description:
- If set to V(true), adds an explicit end using C(...).
type: bool
redact_sensitive_values:
description:
- If set to V(true), vaulted strings are replaced by V(<redacted>) instead of being decrypted.
- With future ansible-core versions, this can extend to other strings tagged as sensitive.
- B(Note) that with ansible-core 2.18 and before this might not yield the expected result
since these versions of ansible-core strip the vault information away from strings that are
part of more complex data structures specified in C(vars).
type: bool
default: false
notes:
- More options may be available, see L(PyYAML documentation, https://pyyaml.org/wiki/PyYAMLDocumentation) for details.
- >-
These parameters to C(yaml.dump) are not accepted, as they are overridden internally: O(ignore:allow_unicode).
EXAMPLES: |
---
# Dump variable in a template to create a YAML document
value: "{{ github_workflow | community.general.to_nice_yaml }}"
RETURN:
_value:
description:
- The YAML serialized string representing the variable structure inputted.
type: string

View File

@@ -116,8 +116,7 @@ except ImportError:
HAS_PRETTYTABLE = False
from ansible.errors import AnsibleFilterError
from ansible.module_utils._text import to_text
from ansible.module_utils.six import string_types
from ansible.module_utils.common.text.converters import to_text
class TypeValidationError(AnsibleFilterError):
@@ -128,7 +127,7 @@ class TypeValidationError(AnsibleFilterError):
expected: Description of expected type
"""
def __init__(self, obj, expected):
type_name = "string" if isinstance(obj, string_types) else type(obj).__name__
type_name = "string" if isinstance(obj, str) else type(obj).__name__
super().__init__(f"Expected {expected}, got a {type_name}")
@@ -157,7 +156,7 @@ def _validate_list_param(param, param_name, ensure_strings=True):
if ensure_strings:
for item in param:
if not isinstance(item, string_types):
if not isinstance(item, str):
# Maintain original error message format
if param_name == "column_order":
error_msg = "a string for column name"
@@ -183,7 +182,7 @@ def _match_key(item_dict, lookup_key):
return lookup_key
# Try boolean conversion for 'true'/'false' strings
if isinstance(lookup_key, string_types):
if isinstance(lookup_key, str):
if lookup_key.lower() == 'true' and True in item_dict:
return True
if lookup_key.lower() == 'false' and False in item_dict:
@@ -335,11 +334,11 @@ def to_prettytable(data, *args, **kwargs):
# Validate column_alignments keys and values
for key, value in column_alignments.items():
# Check that keys are strings
if not isinstance(key, string_types):
if not isinstance(key, str):
raise TypeValidationError(key, "a string for column_alignments key")
# Check that values are strings
if not isinstance(value, string_types):
if not isinstance(value, str):
raise TypeValidationError(value, "a string for column_alignments value")
# Check that values are valid alignments
@@ -391,7 +390,7 @@ def to_prettytable(data, *args, **kwargs):
row.append(item.get(matched_key, ""))
else:
# Try case-insensitive lookup as last resort
lower_col = col.lower() if isinstance(col, string_types) else str(col).lower()
lower_col = col.lower() if isinstance(col, str) else str(col).lower()
if lower_col in reverse_key_map:
row.append(item.get(reverse_key_map[lower_col], ""))
else:

113
plugins/filter/to_yaml.py Normal file
View File

@@ -0,0 +1,113 @@
# Copyright (c) Contributors to the Ansible project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
from __future__ import annotations
import typing as t
from collections.abc import Mapping, Set
from yaml import dump
try:
from yaml.cyaml import CSafeDumper as SafeDumper
except ImportError:
from yaml import SafeDumper
from ansible.module_utils.common.collections import is_sequence
try:
# This is ansible-core 2.19+
from ansible.utils.vars import transform_to_native_types
from ansible.parsing.vault import VaultHelper, VaultLib
except ImportError:
transform_to_native_types = None
from ansible.parsing.yaml.objects import AnsibleVaultEncryptedUnicode
from ansible.utils.unsafe_proxy import AnsibleUnsafe
def _to_native_types_compat(value: t.Any, *, redact_value: str | None) -> t.Any:
"""Compatibility function for ansible-core 2.18 and before."""
if value is None:
return value
if isinstance(value, AnsibleUnsafe):
# This only works up to ansible-core 2.18:
return _to_native_types_compat(value._strip_unsafe(), redact_value=redact_value)
# But that's fine, since this code path isn't taken on ansible-core 2.19+ anyway.
if isinstance(value, Mapping):
return {
_to_native_types_compat(key, redact_value=redact_value): _to_native_types_compat(val, redact_value=redact_value)
for key, val in value.items()
}
if isinstance(value, Set):
return {_to_native_types_compat(elt, redact_value=redact_value) for elt in value}
if is_sequence(value):
return [_to_native_types_compat(elt, redact_value=redact_value) for elt in value]
if isinstance(value, AnsibleVaultEncryptedUnicode):
if redact_value is not None:
return redact_value
# This only works up to ansible-core 2.18:
return value.data
# But that's fine, since this code path isn't taken on ansible-core 2.19+ anyway.
if isinstance(value, bytes):
return bytes(value)
if isinstance(value, str):
return str(value)
return value
def _to_native_types(value: t.Any, *, redact: bool) -> t.Any:
if isinstance(value, Mapping):
return {_to_native_types(k, redact=redact): _to_native_types(v, redact=redact) for k, v in value.items()}
if is_sequence(value):
return [_to_native_types(e, redact=redact) for e in value]
if redact:
ciphertext = VaultHelper.get_ciphertext(value, with_tags=False)
if ciphertext and VaultLib.is_encrypted(ciphertext):
return "<redacted>"
return transform_to_native_types(value, redact=redact)
def remove_all_tags(value: t.Any, *, redact_sensitive_values: bool = False) -> t.Any:
"""
Remove all tags from all values in the input.
If ``redact_sensitive_values`` is ``True``, all sensitive values will be redacted.
"""
if transform_to_native_types is not None:
return _to_native_types(value, redact=redact_sensitive_values)
return _to_native_types_compat(
value,
redact_value="<redacted>" if redact_sensitive_values else None, # same string as in ansible-core 2.19 by transform_to_native_types()
)
def to_yaml(value: t.Any, *, redact_sensitive_values: bool = False, default_flow_style: bool | None = None, **kwargs) -> str:
"""Serialize input as terse flow-style YAML."""
return dump(
remove_all_tags(value, redact_sensitive_values=redact_sensitive_values),
Dumper=SafeDumper,
allow_unicode=True,
default_flow_style=default_flow_style,
**kwargs,
)
def to_nice_yaml(value: t.Any, *, redact_sensitive_values: bool = False, indent: int = 2, default_flow_style: bool = False, **kwargs) -> str:
"""Serialize input as verbose multi-line YAML."""
return to_yaml(
value,
redact_sensitive_values=redact_sensitive_values,
default_flow_style=default_flow_style,
indent=indent,
**kwargs,
)
class FilterModule(object):
def filters(self):
return {
'to_yaml': to_yaml,
'to_nice_yaml': to_nice_yaml,
}

View File

@@ -0,0 +1,92 @@
# Copyright (c) Contributors to the Ansible project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
DOCUMENTATION:
name: to_yaml
author:
- Ansible Core Team
- Felix Fontein (@felixfontein)
version_added: 11.3.0
short_description: Convert variable to YAML string
description:
- Converts an Ansible variable into a YAML string representation, without preserving vaulted strings as P(ansible.builtin.to_yaml#filter).
- This filter functions as a wrapper to the L(Python PyYAML library, https://pypi.org/project/PyYAML/)'s C(yaml.dump) function.
positional: _input
options:
_input:
description:
- A variable or expression that returns a data structure.
type: raw
required: true
indent:
description:
- Number of spaces to indent Python structures, mainly used for display to humans.
type: integer
sort_keys:
description:
- Affects sorting of dictionary keys.
default: true
type: bool
default_style:
description:
- Indicates the style of the scalar.
choices:
- ''
- "'"
- '"'
- '|'
- '>'
type: string
canonical:
description:
- If set to V(true), export tag type to the output.
type: bool
width:
description:
- Set the preferred line width.
type: integer
line_break:
description:
- Specify the line break.
type: string
encoding:
description:
- Specify the output encoding.
type: string
explicit_start:
description:
- If set to V(true), adds an explicit start using C(---).
type: bool
explicit_end:
description:
- If set to V(true), adds an explicit end using C(...).
type: bool
redact_sensitive_values:
description:
- If set to V(true), vaulted strings are replaced by V(<redacted>) instead of being decrypted.
- With future ansible-core versions, this can extend to other strings tagged as sensitive.
- B(Note) that with ansible-core 2.18 and before this might not yield the expected result
since these versions of ansible-core strip the vault information away from strings that are
part of more complex data structures specified in C(vars).
type: bool
default: false
notes:
- More options may be available, see L(PyYAML documentation, https://pyyaml.org/wiki/PyYAMLDocumentation) for details.
- >-
These parameters to C(yaml.dump) are not accepted, as they are overridden internally: O(ignore:allow_unicode).
EXAMPLES: |
---
# Dump variable in a template to create a YAML document
value: "{{ github_workflow | community.general.to_yaml }}"
---
# Same as above but 'prettier' (equivalent to community.general.to_nice_yaml filter)
value: "{{ docker_config | community.general.to_yaml(indent=2) }}"
RETURN:
_value:
description:
- The YAML serialized string representing the variable structure inputted.
type: string

View File

@@ -49,7 +49,6 @@ _value:
from unicodedata import normalize
from ansible.errors import AnsibleFilterError
from ansible.module_utils.six import text_type
try:
from ansible.errors import AnsibleTypeError
@@ -69,7 +68,7 @@ def unicode_normalize(data, form='NFC'):
A normalized unicode string of the specified 'form'.
"""
if not isinstance(data, text_type):
if not isinstance(data, str):
raise AnsibleTypeError("%s is not a valid input type" % type(data))
if form not in ('NFC', 'NFD', 'NFKC', 'NFKD'):

View File

@@ -135,7 +135,6 @@ import socket
from ansible.errors import AnsibleError
from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, to_safe_group_name
from ansible.module_utils.six import text_type
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
@@ -264,7 +263,7 @@ class InventoryModule(BaseInventoryPlugin, Cacheable):
self.cobbler = xmlrpc_client.Server(self.cobbler_url, allow_none=True)
self.token = None
if self.get_option('user') is not None:
self.token = self.cobbler.login(text_type(self.get_option('user')), text_type(self.get_option('password')))
self.token = self.cobbler.login(str(self.get_option('user')), str(self.get_option('password')))
self.cache_key = self.get_cache_key(path)
self.use_cache = cache and self.get_option('cache')

View File

@@ -95,11 +95,11 @@ compose:
"""
import json
from urllib.error import HTTPError
from ansible.errors import AnsibleParserError
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
from ansible.module_utils.urls import open_url
from ansible.module_utils.six.moves.urllib.error import HTTPError
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe

View File

@@ -404,7 +404,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
results['_meta']['hostvars'][iocage_name]['iocage_basejail'] = jail[9]
def get_properties(self, t_stdout, results, hostname):
properties = dict([x.split(':', 1) for x in t_stdout.splitlines()])
properties = dict(x.split(':', 1) for x in t_stdout.splitlines())
results['_meta']['hostvars'][hostname]['iocage_properties'] = properties
def populate(self, results):

View File

@@ -171,12 +171,12 @@ import json
import re
import time
import os
from urllib.parse import urlencode
from ansible.plugins.inventory import BaseInventoryPlugin
from ansible.module_utils.common.text.converters import to_native, to_text
from ansible.module_utils.common.dict_transformations import dict_merge
from ansible.module_utils.six import raise_from
from ansible.errors import AnsibleError, AnsibleParserError
from ansible.module_utils.six.moves.urllib.parse import urlencode
from ansible_collections.community.general.plugins.module_utils.lxd import LXDClient, LXDClientException
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
@@ -1094,9 +1094,7 @@ class InventoryModule(BaseInventoryPlugin):
Returns:
None"""
if IPADDRESS_IMPORT_ERROR:
raise_from(
AnsibleError('another_library must be installed to use this plugin'),
IPADDRESS_IMPORT_ERROR)
raise AnsibleError('another_library must be installed to use this plugin') from IPADDRESS_IMPORT_ERROR
super(InventoryModule, self).parse(inventory, loader, path, cache=False)
# Read the inventory YAML file

View File

@@ -62,13 +62,13 @@ groups:
import json
from sys import version as python_version
from urllib.parse import urljoin
from ansible.errors import AnsibleError
from ansible.module_utils.urls import open_url
from ansible.plugins.inventory import BaseInventoryPlugin
from ansible.module_utils.common.text.converters import to_text
from ansible.module_utils.ansible_release import __version__ as ansible_version
from ansible.module_utils.six.moves.urllib.parse import urljoin
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe

View File

@@ -132,9 +132,8 @@ from ansible_collections.community.general.plugins.module_utils.scaleway import
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
from ansible.module_utils.urls import open_url
from ansible.module_utils.common.text.converters import to_text
from ansible.module_utils.six import raise_from
import ansible.module_utils.six.moves.urllib.parse as urllib_parse
import urllib.parse as urllib_parse
def _fetch_information(token, url):
@@ -338,7 +337,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
def parse(self, inventory, loader, path, cache=True):
if YAML_IMPORT_ERROR:
raise_from(AnsibleError('PyYAML is probably missing'), YAML_IMPORT_ERROR)
raise AnsibleError('PyYAML is probably missing') from YAML_IMPORT_ERROR
super(InventoryModule, self).parse(inventory, loader, path)
self._read_config_data(path=path)

View File

@@ -78,7 +78,7 @@ from subprocess import Popen, PIPE
from ansible.errors import AnsibleParserError
from ansible.module_utils.common.text.converters import to_bytes, to_text
from ansible.module_utils.common._collections_compat import MutableMapping
from collections.abc import MutableMapping
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
from ansible.module_utils.common.process import get_bin_path

View File

@@ -16,7 +16,7 @@ description:
with simple rest commands.
- C(curl -X PUT -d 'some-value' http://localhost:8500/v1/kv/ansible/somedata).
requirements:
- 'python-consul python library U(https://python-consul.readthedocs.io/en/latest/#installation)'
- 'py-consul python library U(https://github.com/criteo/py-consul?tab=readme-ov-file#installation)'
options:
_raw:
description: List of key(s) to retrieve.
@@ -112,7 +112,8 @@ _raw:
type: dict
"""
from ansible.module_utils.six.moves.urllib.parse import urlparse
from urllib.parse import urlparse
from ansible.errors import AnsibleError, AnsibleAssertionError
from ansible.plugins.lookup import LookupBase
from ansible.module_utils.common.text.converters import to_text
@@ -131,7 +132,7 @@ class LookupModule(LookupBase):
if not HAS_CONSUL:
raise AnsibleError(
'python-consul is required for consul_kv lookup. see http://python-consul.readthedocs.org/en/latest/#installation')
'py-consul is required for consul_kv lookup. see https://github.com/criteo/py-consul?tab=readme-ov-file#installation')
# get options
self.set_options(direct=kwargs)

View File

@@ -121,8 +121,7 @@ _list:
"""
from ansible.errors import AnsibleLookupError
from ansible.module_utils.common._collections_compat import Mapping, Sequence
from ansible.module_utils.six import string_types
from collections.abc import Mapping, Sequence
from ansible.plugins.lookup import LookupBase
from ansible.template import Templar
@@ -181,7 +180,7 @@ class LookupModule(LookupBase):
if isinstance(values, Mapping):
for idx, val in sorted(values.items()):
current[key] = dict([('key', idx), ('value', val)])
current[key] = dict(key=idx, value=val)
self.__process(result, terms, index + 1, current, templar, variables)
elif isinstance(values, Sequence):
for elt in values:
@@ -215,7 +214,7 @@ class LookupModule(LookupBase):
raise AnsibleLookupError(
f'The variable {k!r} appears more than once')
vars_so_far.add(k)
if isinstance(v, string_types):
if isinstance(v, str):
data.append((k, v, None))
elif isinstance(v, (Sequence, Mapping)):
data.append((k, None, v))

View File

@@ -37,7 +37,6 @@ _raw:
type: list
"""
from ansible.errors import AnsibleError
from ansible.module_utils.six import string_types
from ansible.plugins.lookup import LookupBase
from ansible.utils.listify import listify_lookup_plugin_terms
@@ -65,7 +64,7 @@ class LookupModule(LookupBase):
# ignore undefined items
break
if isinstance(term, string_types):
if isinstance(term, str):
# convert a variable to a list
term2 = listify_lookup_plugin_terms(term, templar=self._templar)
# but avoid converting a plain string to a list of one string

View File

@@ -9,10 +9,12 @@ DOCUMENTATION = r"""
name: github_app_access_token
author:
- Poh Wei Sheng (@weisheng-p)
- Bruno Lavoie (@blavoie)
short_description: Obtain short-lived Github App Access tokens
version_added: '8.2.0'
requirements:
- jwt (https://github.com/GehirnInc/python-jwt)
- jwt (https://github.com/GehirnInc/python-jwt) OR
- PyJWT (https://pypi.org/project/PyJWT/) AND cryptography (https://pypi.org/project/cryptography/)
description:
- This generates a Github access token that can be used with a C(git) command, if you use a Github App.
options:
@@ -45,6 +47,13 @@ options:
- How long the token should last for in seconds.
default: 600
type: int
github_url:
description:
- Base URL for the GitHub API (for GitHub Enterprise Server).
- "Example: C(https://github-enterprise-server.example.com/api/v3)"
default: https://api.github.com
type: str
version_added: 11.4.0
"""
EXAMPLES = r"""
@@ -66,41 +75,80 @@ _raw:
elements: str
"""
try:
from jwt import JWT, jwk_from_pem
import jwt
HAS_JWT = True
except ImportError:
HAS_JWT = False
HAS_PYTHON_JWT = False # vs pyjwt
if HAS_JWT and hasattr(jwt, 'JWT'):
HAS_PYTHON_JWT = True
from jwt import jwk_from_pem, JWT
jwt_instance = JWT()
try:
from cryptography.hazmat.primitives import serialization
HAS_CRYPTOGRAPHY = True
except ImportError:
HAS_CRYPTOGRAPHY = False
import time
import json
from urllib.error import HTTPError
from ansible.module_utils.urls import open_url
from ansible.module_utils.six.moves.urllib.error import HTTPError
from ansible.errors import AnsibleError, AnsibleOptionsError
from ansible.plugins.lookup import LookupBase
from ansible.utils.display import Display
if HAS_JWT:
jwt_instance = JWT()
else:
jwk_from_pem = None
jwt_instance = None
display = Display()
class PythonJWT:
@staticmethod
def read_key(path, private_key=None):
try:
if private_key:
return jwk_from_pem(private_key.encode('utf-8'))
with open(path, 'rb') as pem_file:
return jwk_from_pem(pem_file.read())
except Exception as e:
raise AnsibleError(f"Error while parsing key file: {e}")
@staticmethod
def encode_jwt(app_id, jwk, exp=600):
now = int(time.time())
payload = {
'iat': now,
'exp': now + exp,
'iss': app_id,
}
try:
return jwt_instance.encode(payload, jwk, alg='RS256')
except Exception as e:
raise AnsibleError(f"Error while encoding jwt: {e}")
def read_key(path, private_key=None):
if HAS_PYTHON_JWT:
return PythonJWT.read_key(path, private_key)
try:
if private_key:
return jwk_from_pem(private_key.encode('utf-8'))
with open(path, 'rb') as pem_file:
return jwk_from_pem(pem_file.read())
key_bytes = private_key.encode('utf-8')
else:
with open(path, 'rb') as pem_file:
key_bytes = pem_file.read()
return serialization.load_pem_private_key(key_bytes, password=None)
except Exception as e:
raise AnsibleError(f"Error while parsing key file: {e}")
def encode_jwt(app_id, jwk, exp=600):
def encode_jwt(app_id, private_key_obj, exp=600):
if HAS_PYTHON_JWT:
return PythonJWT.encode_jwt(app_id, private_key_obj)
now = int(time.time())
payload = {
'iat': now,
@@ -108,19 +156,21 @@ def encode_jwt(app_id, jwk, exp=600):
'iss': app_id,
}
try:
return jwt_instance.encode(payload, jwk, alg='RS256')
return jwt.encode(payload, private_key_obj, algorithm='RS256')
except Exception as e:
raise AnsibleError(f"Error while encoding jwt: {e}")
def post_request(generated_jwt, installation_id):
github_api_url = f'https://api.github.com/app/installations/{installation_id}/access_tokens'
def post_request(generated_jwt, installation_id, api_base):
base = api_base.rstrip('/')
github_url = f"{base}/app/installations/{installation_id}/access_tokens"
headers = {
"Authorization": f'Bearer {generated_jwt}',
"Accept": "application/vnd.github.v3+json",
}
try:
response = open_url(github_api_url, headers=headers, method='POST')
response = open_url(github_url, headers=headers, method='POST')
except HTTPError as e:
try:
error_body = json.loads(e.read().decode())
@@ -128,7 +178,7 @@ def post_request(generated_jwt, installation_id):
except Exception:
error_body = {}
if e.code == 404:
raise AnsibleError("Github return error. Please confirm your installationd_id value is valid")
raise AnsibleError("Github return error. Please confirm your installation_id value is valid")
elif e.code == 401:
raise AnsibleError("Github return error. Please confirm your private key is valid")
raise AnsibleError(f"Unexpected data returned: {e} -- {error_body}")
@@ -140,17 +190,21 @@ def post_request(generated_jwt, installation_id):
return json_data.get('token')
def get_token(key_path, app_id, installation_id, private_key, expiry=600):
def get_token(key_path, app_id, installation_id, private_key, github_url, expiry=600):
jwk = read_key(key_path, private_key)
generated_jwt = encode_jwt(app_id, jwk, exp=expiry)
return post_request(generated_jwt, installation_id)
return post_request(generated_jwt, installation_id, github_url)
class LookupModule(LookupBase):
def run(self, terms, variables=None, **kwargs):
if not HAS_JWT:
raise AnsibleError('Python jwt library is required. '
'Please install using "pip install jwt"')
'Please install using "pip install pyjwt"')
if not HAS_PYTHON_JWT and not HAS_CRYPTOGRAPHY:
raise AnsibleError('Python cryptography library is required. '
'Please install using "pip install cryptography"')
self.set_options(var_options=variables, direct=kwargs)
@@ -164,6 +218,7 @@ class LookupModule(LookupBase):
self.get_option('app_id'),
self.get_option('installation_id'),
self.get_option('private_key'),
self.get_option('github_url'),
self.get_option('token_expiry'),
)

View File

@@ -15,6 +15,12 @@ requirements:
- hiera (command line utility)
description:
- Retrieves data from an Puppetmaster node using Hiera as ENC.
deprecated:
removed_in: 13.0.0
why: >-
Hiera has been deprecated a long time ago.
If you disagree with this deprecation, please create an issue in the community.general repository.
alternative: Unknown.
options:
_terms:
description:

View File

@@ -85,7 +85,6 @@ from ansible.plugins.lookup import LookupBase
from ansible.errors import AnsibleLookupError, AnsibleOptionsError
from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils.common.text.converters import to_bytes, to_text
from ansible.module_utils.six import with_metaclass
from ansible_collections.community.general.plugins.module_utils.onepassword import OnePasswordConfig
@@ -98,7 +97,7 @@ def _lower_if_possible(value):
return value
class OnePassCLIBase(with_metaclass(abc.ABCMeta, object)):
class OnePassCLIBase(object, metaclass=abc.ABCMeta):
bin = "op"
def __init__(
@@ -610,7 +609,8 @@ class OnePass(object):
def _get_cli_class(self, cli_class=None):
if cli_class is not None:
return cli_class(self.subdomain, self.domain, self.username, self.secret_key, self.master_password, self.service_account_token)
return cli_class(self.subdomain, self.domain, self.username, self.secret_key, self.master_password, self.service_account_token,
self.account_id, self.connect_host, self.connect_token)
version = OnePassCLIBase.get_current_version()
for cls in OnePassCLIBase.__subclasses__():

View File

@@ -16,7 +16,7 @@ short_description: Generates random string
version_added: '3.2.0'
description:
- Generates random string based upon the given constraints.
- Uses L(random.SystemRandom,https://docs.python.org/3/library/random.html#random.SystemRandom), so should be strong enough
- Uses L(secrets.SystemRandom,https://docs.python.org/3/library/secrets.html#secrets.SystemRandom), so should be strong enough
for cryptographic purposes.
options:
length:
@@ -101,6 +101,14 @@ options:
- Returns base64 encoded string.
type: bool
default: false
seed:
description:
- Seed for random string generator.
- B(Note) that this drastically reduces the security of this plugin. First, when O(seed) is provided, a non-cryptographic random number generator is used.
Second, if the seed does not contain enough entropy, the generated string is weak.
B(Do not use the generated string as a password or a secure token when using this option!)
type: str
version_added: 11.3.0
"""
EXAMPLES = r"""
@@ -109,6 +117,14 @@ EXAMPLES = r"""
var: lookup('community.general.random_string')
# Example result: 'DeadBeeF'
- name: Generate random string with seed
ansible.builtin.debug:
var: lookup('community.general.random_string', seed=12345)
# Example result: '6[~(2q5O'
# NOTE: Do **not** use this string as a password or a secure token,
# unless you know exactly what you are doing!
# Specifying seed uses a non-secure random number generator.
- name: Generate random string with length 12
ansible.builtin.debug:
var: lookup('community.general.random_string', length=12)
@@ -153,6 +169,7 @@ _raw:
import base64
import random
import secrets
import string
from ansible.errors import AnsibleLookupError
@@ -182,7 +199,6 @@ class LookupModule(LookupBase):
lower_chars = string.ascii_lowercase
upper_chars = string.ascii_uppercase
special_chars = string.punctuation
random_generator = random.SystemRandom()
self.set_options(var_options=variables, direct=kwargs)
@@ -191,6 +207,13 @@ class LookupModule(LookupBase):
override_all = self.get_option("override_all")
ignore_similar_chars = self.get_option("ignore_similar_chars")
similar_chars = self.get_option("similar_chars")
seed = self.get_option("seed")
if seed is None:
random_generator = secrets.SystemRandom()
else:
random_generator = random.Random(seed)
values = ""
available_chars_set = ""
@@ -236,10 +259,11 @@ class LookupModule(LookupBase):
remaining_pass_len = length - len(values)
values += self.get_random(random_generator, available_chars_set, remaining_pass_len)
# Get pseudo randomization
shuffled_values = list(values)
# Randomize the order
random.shuffle(shuffled_values)
if seed is None:
# Get pseudo randomization
# Randomize the order
random.shuffle(shuffled_values)
if base64_flag:
return [self.b64encode("".join(shuffled_values))]

View File

@@ -66,7 +66,6 @@ EXAMPLES = r"""
from ansible.plugins.lookup import LookupBase
from ansible.utils.display import Display
from ansible.errors import AnsibleError
from ansible.module_utils.six import raise_from
try:
from pam.revbits_ansible.server import SecretServer
@@ -87,10 +86,7 @@ class LookupModule(LookupBase):
def run(self, terms, variables, **kwargs):
if ANOTHER_LIBRARY_IMPORT_ERROR:
raise_from(
AnsibleError('revbits_ansible must be installed to use this plugin'),
ANOTHER_LIBRARY_IMPORT_ERROR
)
raise AnsibleError('revbits_ansible must be installed to use this plugin') from ANOTHER_LIBRARY_IMPORT_ERROR
self.set_options(var_options=variables, direct=kwargs)
secret_server = LookupModule.Client(
{

View File

@@ -9,7 +9,7 @@ __metaclass__ = type
DOCUMENTATION = r"""
name: tss
author: Adam Migus (@amigus) <adam@migus.org>
short_description: Get secrets from Thycotic Secret Server
short_description: Get secrets from Delinea Secret Server
version_added: 1.0.0
description:
- Uses the Thycotic Secret Server Python SDK to get Secrets from Secret Server using token authentication with O(username)
@@ -121,14 +121,16 @@ options:
RETURN = r"""
_list:
description:
- The JSON responses to C(GET /secrets/{id}).
- The JSON responses to C(GET /secrets/{id}) and C(GET /secrets/{path}).
- See U(https://updates.thycotic.net/secretserver/restapiguide/TokenAuth/#operation--secrets--id--get).
type: list
elements: dict
"""
EXAMPLES = r"""
- hosts: localhost
# Using Secret Server Authentication
- name: Lookup secret using Secret Server user credentials
hosts: localhost
vars:
secret: >-
{{
@@ -149,7 +151,8 @@ EXAMPLES = r"""
value_name='itemValue'))['password']
}}
- hosts: localhost
- name: Lookup secret with domain user
hosts: localhost
vars:
secret: >-
{{
@@ -171,7 +174,8 @@ EXAMPLES = r"""
value_name='itemValue'))['password']
}}
- hosts: localhost
- name: Lookup secret using Secret Server token
hosts: localhost
vars:
secret_password: >-
{{
@@ -189,7 +193,8 @@ EXAMPLES = r"""
# Private key stores into certificate file which is attached with secret.
# If fetch_attachments=True then private key file will be download on specified path
# and file content will display in debug message.
- hosts: localhost
- name: Lookup secret and fetch attachments using Secret Server token
hosts: localhost
vars:
secret: >-
{{
@@ -212,7 +217,8 @@ EXAMPLES = r"""
}}
# If fetch_secret_ids_from_folder=true then secret IDs are in a folder is fetched based on folder ID
- hosts: localhost
- name: Lookup secret IDs by folder ID using Secret Server token
hosts: localhost
vars:
secret: >-
{{
@@ -232,7 +238,8 @@ EXAMPLES = r"""
}}
# If secret ID is 0 and secret_path has value then secret is fetched by secret path
- hosts: localhost
- name: Lookup secret by secret path using Secret Server user credentials
hosts: localhost
vars:
secret: >-
{{
@@ -253,12 +260,50 @@ EXAMPLES = r"""
| items2dict(key_name='slug',
value_name='itemValue'))['password']
}}
# Using Platform Authentication
- name: Lookup secret using Platform service user credentials
hosts: localhost
vars:
secret: >-
{{
lookup(
'community.general.tss',
102,
base_url='https://platform.delinea.app/',
username='platform_service_username',
password='platform_service_user_password'
)
}}
tasks:
- ansible.builtin.debug:
msg: >
the password is {{
(secret['items']
| items2dict(key_name='slug',
value_name='itemValue'))['password']
}}
- name: Lookup secret using platform token
hosts: localhost
vars:
secret_password: >-
{{
((lookup(
'community.general.tss',
102,
base_url='https://platform.delinea.app/',
token='delinea_platform_access_token',
) | from_json).get('items') | items2dict(key_name='slug', value_name='itemValue'))['password']
}}
tasks:
- ansible.builtin.debug:
msg: the password is {{ secret_password }}
"""
import abc
import os
from ansible.errors import AnsibleError, AnsibleOptionsError
from ansible.module_utils import six
from ansible.plugins.lookup import LookupBase
from ansible.utils.display import Display
@@ -289,8 +334,7 @@ except ImportError:
display = Display()
@six.add_metaclass(abc.ABCMeta)
class TSSClient(object):
class TSSClient(object, metaclass=abc.ABCMeta):
def __init__(self):
self._client = None
@@ -388,9 +432,7 @@ class TSSClientV1(TSSClient):
@staticmethod
def _get_authorizer(**server_parameters):
if server_parameters.get("token"):
return AccessTokenAuthorizer(
server_parameters["token"],
)
return AccessTokenAuthorizer(server_parameters["token"], server_parameters["base_url"])
if server_parameters.get("domain"):
return DomainPasswordGrantAuthorizer(

View File

View File

@@ -22,8 +22,8 @@ def ensure_timezone_info(value):
def fromtimestamp(value):
if _USE_TIMEZONE:
return _datetime.fromtimestamp(value, tz=_datetime.timezone.utc)
return _datetime.utcfromtimestamp(value)
return _datetime.datetime.fromtimestamp(value, tz=_datetime.timezone.utc)
return _datetime.datetime.utcfromtimestamp(value)
def now():

View File

@@ -8,7 +8,7 @@ __metaclass__ = type
from ansible.module_utils.common.dict_transformations import dict_merge
from ansible_collections.community.general.plugins.module_utils.cmd_runner import cmd_runner_fmt
from ansible_collections.community.general.plugins.module_utils import cmd_runner_fmt
from ansible_collections.community.general.plugins.module_utils.python_runner import PythonRunner
from ansible_collections.community.general.plugins.module_utils.module_helper import ModuleHelper
@@ -23,28 +23,58 @@ django_std_args = dict(
verbosity=dict(type="int", choices=[0, 1, 2, 3]),
skip_checks=dict(type="bool"),
)
_database_dash = dict(
database=dict(type="str", default="default"),
)
_data = dict(
excludes=dict(type="list", elements="str"),
format=dict(type="str", default="json", choices=["xml", "json", "jsonl", "yaml"]),
)
_pks = dict(
primary_keys=dict(type="list", elements="str"),
)
_django_std_arg_fmts = dict(
all=cmd_runner_fmt.as_bool("--all"),
app=cmd_runner_fmt.as_opt_val("--app"),
apps=cmd_runner_fmt.as_list(),
apps_models=cmd_runner_fmt.as_list(),
check=cmd_runner_fmt.as_bool("--check"),
command=cmd_runner_fmt.as_list(),
settings=cmd_runner_fmt.as_opt_eq_val("--settings"),
database_dash=cmd_runner_fmt.as_opt_eq_val("--database"),
database_stacked_dash=cmd_runner_fmt.stack(cmd_runner_fmt.as_opt_val)("--database"),
deploy=cmd_runner_fmt.as_bool("--deploy"),
dry_run=cmd_runner_fmt.as_bool("--dry-run"),
excludes=cmd_runner_fmt.stack(cmd_runner_fmt.as_opt_val)("--exclude"),
fail_level=cmd_runner_fmt.as_opt_val("--fail-level"),
fixture=cmd_runner_fmt.as_opt_val("--output"),
fixtures=cmd_runner_fmt.as_list(),
format=cmd_runner_fmt.as_opt_val("--format"),
ignore_non_existent=cmd_runner_fmt.as_bool("--ignorenonexistent"),
indent=cmd_runner_fmt.as_opt_val("--indent"),
natural_foreign=cmd_runner_fmt.as_bool("--natural-foreign"),
natural_primary=cmd_runner_fmt.as_bool("--natural-primary"),
no_color=cmd_runner_fmt.as_fixed("--no-color"),
noinput=cmd_runner_fmt.as_fixed("--noinput"),
primary_keys=lambda v: ["--pks", ",".join(v)],
pythonpath=cmd_runner_fmt.as_opt_eq_val("--pythonpath"),
settings=cmd_runner_fmt.as_opt_eq_val("--settings"),
skip_checks=cmd_runner_fmt.as_bool("--skip-checks"),
tags=cmd_runner_fmt.stack(cmd_runner_fmt.as_opt_val)("--tag"),
traceback=cmd_runner_fmt.as_bool("--traceback"),
verbosity=cmd_runner_fmt.as_opt_val("--verbosity"),
no_color=cmd_runner_fmt.as_fixed("--no-color"),
skip_checks=cmd_runner_fmt.as_bool("--skip-checks"),
version=cmd_runner_fmt.as_fixed("--version"),
)
_django_database_args = dict(
database=dict(type="str", default="default"),
)
# keys can be used in _django_args
_args_menu = dict(
std=(django_std_args, _django_std_arg_fmts),
database=(_django_database_args, {"database": cmd_runner_fmt.as_opt_eq_val("--database")}),
noinput=({}, {"noinput": cmd_runner_fmt.as_fixed("--noinput")}),
dry_run=({}, {"dry_run": cmd_runner_fmt.as_bool("--dry-run")}),
check=({}, {"check": cmd_runner_fmt.as_bool("--check")}),
database=(_database_dash, {"database": _django_std_arg_fmts["database_dash"]}), # deprecate, remove in 13.0.0
noinput=({}, {"noinput": cmd_runner_fmt.as_fixed("--noinput")}), # deprecate, remove in 13.0.0
dry_run=({}, {"dry_run": cmd_runner_fmt.as_bool("--dry-run")}), # deprecate, remove in 13.0.0
check=({}, {"check": cmd_runner_fmt.as_bool("--check")}), # deprecate, remove in 13.0.0
database_dash=(_database_dash, {}),
data=(_data, {}),
)

View File

@@ -134,7 +134,7 @@ def gitlab_authentication(module, min_version=None):
def filter_returned_variables(gitlab_variables):
# pop properties we don't know
existing_variables = [dict(x.attributes) for x in gitlab_variables]
KNOWN = ['key', 'value', 'masked', 'protected', 'variable_type', 'environment_scope', 'raw']
KNOWN = ['key', 'value', 'description', 'masked', 'hidden', 'protected', 'variable_type', 'environment_scope', 'raw']
for item in existing_variables:
for key in list(item.keys()):
if key not in KNOWN:
@@ -151,8 +151,10 @@ def vars_to_variables(vars, module):
{
"name": item,
"value": str(value),
"description": None,
"masked": False,
"protected": False,
"hidden": False,
"raw": False,
"variable_type": "env_var",
}
@@ -162,7 +164,9 @@ def vars_to_variables(vars, module):
new_item = {
"name": item,
"value": value.get('value'),
"description": value.get('description'),
"masked": value.get('masked'),
"hidden": value.get('hidden'),
"protected": value.get('protected'),
"raw": value.get('raw'),
"variable_type": value.get('variable_type'),

View File

@@ -1671,7 +1671,7 @@ class KeycloakAPI(object):
return None
for p in name_chain[1:]:
for sg in self.get_subgroups(tmp):
for sg in self.get_subgroups(tmp, realm):
pv, is_id = self._get_normed_group_parent(p)
if is_id:

View File

@@ -35,8 +35,8 @@ def keycloak_clientsecret_module():
argument_spec=argument_spec,
supports_check_mode=True,
required_one_of=([['id', 'client_id'],
['token', 'auth_realm', 'auth_username', 'auth_password']]),
required_together=([['auth_realm', 'auth_username', 'auth_password']]),
['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
required_together=([['auth_username', 'auth_password']]),
mutually_exclusive=[
['token', 'auth_realm'],
['token', 'auth_username'],

View File

@@ -297,7 +297,7 @@ class ManageIQPolicies(object):
# make a list of assigned full profile names strings
# e.g. ['openscap profile', ...]
assigned_profiles_set = set([profile['profile_name'] for profile in assigned_profiles])
assigned_profiles_set = set(profile['profile_name'] for profile in assigned_profiles)
for profile in profiles:
assigned = profile.get('name') in assigned_profiles_set
@@ -424,7 +424,7 @@ class ManageIQTags(object):
# make a list of assigned full tag names strings
# e.g. ['/managed/environment/prod', ...]
assigned_tags_set = set([tag['full_name'] for tag in assigned_tags])
assigned_tags_set = set(tag['full_name'] for tag in assigned_tags)
for tag in tags:
assigned = self.full_tag_name(tag) in assigned_tags_set

View File

@@ -31,7 +31,7 @@ except ImportError:
from ansible.module_utils import six
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.common.text.converters import to_native
from ansible.module_utils.common._collections_compat import Mapping
from ansible.module_utils.six.moves.collections_abc import Mapping
def transform_list_to_dict(list_):

View File

@@ -6,6 +6,12 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
#
# DEPRECATED
#
# This module utils is deprecated and will be removed in community.general 13.0.0
#
import logging
import logging.config
import os

View File

@@ -6,12 +6,14 @@
from __future__ import absolute_import, division, print_function
__metaclass__ = type
from ansible_collections.community.general.plugins.module_utils.cmd_runner import CmdRunner, cmd_runner_fmt
import re
from ansible_collections.community.general.plugins.module_utils.cmd_runner import CmdRunner, cmd_runner_fmt
_state_map = {
"present": "create",
"absent": "remove",
"cloned": "clone",
"status": "status",
"enabled": "enable",
"disabled": "disable",
@@ -24,7 +26,7 @@ _state_map = {
def fmt_resource_type(value):
return [value[k] for k in ['resource_standard', 'resource_provider', 'resource_name'] if value.get(k) is not None]
return [":".join(value[k] for k in ['resource_standard', 'resource_provider', 'resource_name'] if value.get(k) is not None)]
def fmt_resource_operation(value):
@@ -45,7 +47,8 @@ def fmt_resource_argument(value):
def get_pacemaker_maintenance_mode(runner):
with runner("cli_action config") as ctx:
rc, out, err = ctx.run(cli_action="property")
maintenance_mode_output = list(filter(lambda string: "maintenance-mode=true" in string.lower(), out.splitlines()))
maint_mode_re = re.compile(r"maintenance-mode.*true", re.IGNORECASE)
maintenance_mode_output = [line for line in out.splitlines() if maint_mode_re.search(line)]
return bool(maintenance_mode_output)
@@ -63,7 +66,10 @@ def pacemaker_runner(module, **kwargs):
resource_operation=cmd_runner_fmt.as_func(fmt_resource_operation),
resource_meta=cmd_runner_fmt.stack(cmd_runner_fmt.as_opt_val)("meta"),
resource_argument=cmd_runner_fmt.as_func(fmt_resource_argument),
resource_clone_ids=cmd_runner_fmt.as_list(),
resource_clone_meta=cmd_runner_fmt.as_list(),
apply_all=cmd_runner_fmt.as_bool("--all"),
agent_validation=cmd_runner_fmt.as_bool("--agent-validation"),
wait=cmd_runner_fmt.as_opt_eq_val("--wait"),
config=cmd_runner_fmt.as_fixed("config"),
force=cmd_runner_fmt.as_bool("--force"),

View File

@@ -64,7 +64,7 @@ def pipx_runner(module, command, **kwargs):
module,
command=command,
arg_formats=arg_formats,
environ_update={'USE_EMOJI': '0'},
environ_update={'USE_EMOJI': '0', 'PIPX_USE_EMOJI': '0'},
check_rc=True,
**kwargs
)

View File

@@ -109,10 +109,7 @@ class SecretVariables(object):
@staticmethod
def dict_to_list(source_dict):
return [
dict(key=var[0], value=var[1])
for var in source_dict.items()
]
return [dict(key=k, value=v) for k, v in source_dict.items()]
@staticmethod
def list_to_dict(source_list, hashed=False):

View File

@@ -28,22 +28,18 @@ def xenserver_common_argument_spec():
return dict(
hostname=dict(type='str',
aliases=['host', 'pool'],
required=False,
default='localhost',
fallback=(env_fallback, ['XENSERVER_HOST']),
),
username=dict(type='str',
aliases=['user', 'admin'],
required=False,
default='root',
fallback=(env_fallback, ['XENSERVER_USER'])),
password=dict(type='str',
aliases=['pass', 'pwd'],
required=False,
no_log=True,
fallback=(env_fallback, ['XENSERVER_PASSWORD'])),
validate_certs=dict(type='bool',
required=False,
default=True,
fallback=(env_fallback, ['XENSERVER_VALIDATE_CERTS'])),
)

View File

@@ -160,7 +160,7 @@ class AndroidSdk(StateModuleHelper):
arg_pkgs = set(self.vars.package)
if len(arg_pkgs) < len(self.vars.package):
self.do_raise("Packages may not repeat")
return set([Package(p) for p in arg_pkgs])
return set(Package(p) for p in arg_pkgs)
def state_present(self):
packages = self._parse_packages()

View File

@@ -23,7 +23,7 @@ notes:
seealso:
- name: C(ansible-galaxy) command manual page
description: Manual page for the command.
link: https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html
link: https://docs.ansible.com/projects/ansible/latest/cli/ansible-galaxy.html
requirements:
- ansible-core 2.11 or newer

View File

@@ -258,8 +258,8 @@ def main():
)
name = module.params['name']
if name == 'cgi' and _run_threaded(module):
module.fail_json(msg="Your MPM seems to be threaded. No automatic actions on module cgi possible.")
if name == 'cgi' and module.params['state'] == 'present' and _run_threaded(module):
module.fail_json(msg="Your MPM seems to be threaded, therefore enabling cgi module is not allowed.")
if not module.params['identifier']:
module.params['identifier'] = create_apache_identifier(module.params['name'])

View File

@@ -14,7 +14,7 @@ DOCUMENTATION = r"""
module: archive
short_description: Creates a compressed archive of one or more files or trees
extends_documentation_fragment:
- files
- ansible.builtin.files
- community.general.attributes
description:
- Creates or extends an archive.

View File

@@ -61,9 +61,12 @@ options:
flag:
description:
- Issuer Critical Flag.
- Should be set either to V(0) for not critical, or to V(128) for critical.
- Before community.general 11.4.4, only V(0) and V(1) were valid options.
The value V(1) is still available for backwards-compatibility reasons.
- Required for O(type=CAA) when O(state=present).
type: int
choices: [0, 1]
choices: [0, 1, 128]
version_added: 8.0.0
tag:
description:
@@ -907,7 +910,7 @@ def main():
hash_type=dict(type='int', choices=[1, 2]),
key_tag=dict(type='int', no_log=False),
port=dict(type='int'),
flag=dict(type='int', choices=[0, 1]),
flag=dict(type='int', choices=[0, 1, 128]),
tag=dict(type='str', choices=['issue', 'issuewild', 'iodef']),
tags=dict(type='list', elements='str'),
priority=dict(type='int', default=1),
@@ -929,9 +932,9 @@ def main():
required_if=[
('state', 'present', ['record', 'type', 'value']),
('state', 'absent', ['record']),
('type', 'SRV', ['proto', 'service', 'value']),
('type', 'SRV', ['proto', 'service']),
('type', 'TLSA', ['proto', 'port']),
('type', 'CAA', ['flag', 'tag', 'value']),
('type', 'CAA', ['flag', 'tag']),
],
required_together=[
('account_api_key', 'account_email'),
@@ -942,8 +945,11 @@ def main():
)
if module.params['type'] == 'SRV':
if not module.params['value'] == '':
module.fail_json(msg="For SRV records the params weight, port and value all need to be defined.")
if not ((module.params['weight'] is not None and module.params['port'] is not None
and not (module.params['value'] is None or module.params['value'] == ''))
or (module.params['weight'] is None and module.params['port'] is None
and (module.params['value'] is None or module.params['value'] == ''))):
module.fail_json(msg="For SRV records the params weight, port and value all need to be defined, or not at all.")
if module.params['type'] == 'SSHFP':
if not ((module.params['algorithm'] is not None and module.params['hash_type'] is not None
@@ -960,8 +966,11 @@ def main():
module.fail_json(msg="For TLSA records the params cert_usage, selector, hash_type and value all need to be defined, or not at all.")
if module.params['type'] == 'CAA':
if not module.params['value'] == '':
module.fail_json(msg="For CAA records the params flag, tag and value all need to be defined.")
if not ((module.params['flag'] is not None and module.params['tag'] is not None
and not (module.params['value'] is None or module.params['value'] == ''))
or (module.params['flag'] is None and module.params['tag'] is None
and (module.params['value'] is None or module.params['value'] == ''))):
module.fail_json(msg="For CAA records the params flag, tag and value all need to be defined, or not at all.")
if module.params['type'] == 'DS':
if not ((module.params['key_tag'] is not None and module.params['algorithm'] is not None and module.params['hash_type'] is not None

Some files were not shown because too many files have changed in this diff Show More