Compare commits

..

504 Commits

Author SHA1 Message Date
Felix Fontein
dc055f1741 Remove CI. 2024-05-19 22:10:50 +02:00
Felix Fontein
c663a3009a Release 6.6.9. 2024-05-19 21:39:46 +02:00
Felix Fontein
cee1d9365b Prepare 6.6.9. 2024-05-18 16:31:56 +02:00
patchback[bot]
1a1b1654bf [PR #8365/cd01a928 backport][stable-6] Add REUSE badge (#8374)
Add REUSE badge (#8365)

Add REUSE badge.

(cherry picked from commit cd01a928ab)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-05-15 21:11:48 +02:00
patchback[bot]
1f3fefa31c [PR #8355/fabf6263 backport][stable-6] Fix sanitize for keycloak_identitiy_provider. (#8369)
Fix sanitize for keycloak_identitiy_provider. (#8355)

* Fix sanitize for keycloak_identitiy_provider.

* Apply suggestions from code review

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit fabf6263f1)

Co-authored-by: Florian Apolloner <florian@apolloner.eu>
2024-05-15 19:59:51 +02:00
patchback[bot]
7efdcb618d [PR #8345/7aa118b9 backport][stable-6] Add test for unsafe plugin util (#8346)
Add test for unsafe plugin util (#8345)

Add test for unsafe plugin util.

(cherry picked from commit 7aa118b957)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-05-12 01:01:17 +02:00
patchback[bot]
451f34f8d7 [PR #8341/b774435d backport][stable-6] Pass codecov token to ansible-test-gh-action (#8342)
Pass codecov token to ansible-test-gh-action (#8341)

Pass codecov token to ansible-test-gh-action.

(cherry picked from commit b774435d8d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-05-11 21:47:44 +02:00
patchback[bot]
54a4d5c110 [PR #8325/feb443d2 backport][stable-6] Fix django_manage tests (#8326)
Fix django_manage tests (#8325)

Ensure that manage.py is executable.

(cherry picked from commit feb443d260)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-05-07 08:24:43 +02:00
patchback[bot]
39f163b3e9 [PR #8313/bc609d74 backport][stable-6] Disable ejabberd tests on Arch Linux (#8316)
Disable ejabberd tests on Arch Linux (#8313)

Disable ejabberd tests on Arch Linux.

(cherry picked from commit bc609d74a0)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-05-05 20:42:47 +02:00
patchback[bot]
2df9748e5e [PR #8312/4bd68ac1 backport][stable-6] Disable cpanm tests for RHEL 7 and CentOS 7 (#8314)
Disable cpanm tests for RHEL 7 and CentOS 7 (#8312)

Disable cpanm tests for RHEL 7 and CentOS 7.

(cherry picked from commit 4bd68ac153)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-05-05 20:42:35 +02:00
patchback[bot]
820d067c29 [PR #7541/b8ecb167 backport][stable-7] CI: devel supports Fedora 39, and no longer Fedora 38 (#7547)
CI: devel supports Fedora 39, and no longer Fedora 38 (#7541)

* devel supports Fedora 39, and no longer Fedora 38.

* Disable 'mail' tests for Python 3.12+.

Ref: https://github.com/ansible-collections/community.general/issues/4656

* Fix setupSSLServer to work with Python 3.12.

(cherry picked from commit b8ecb1671b)

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 3ce83dcf6a)
2024-04-28 19:22:56 +02:00
Felix Fontein
ec5e4919eb CI: Arch Linux switched to Python 3.12 (#8291)
Arch Linux switched to Python 3.12.

(cherry picked from commit fc2024d837)
2024-04-28 17:26:02 +02:00
patchback[bot]
e7c4239640 [PR #8225/7fd37ea2 backport][stable-6] inventory plugins: make wrapping variables as unsafe smarter to avoid triggering an AWX bug (#8244)
inventory plugins: make wrapping variables as unsafe smarter to avoid triggering an AWX bug (#8225)

Make wrapping variables as unsafe smarter to avoid triggering an AWX bug.

(cherry picked from commit 7fd37ea247)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-04-20 10:08:29 +02:00
patchback[bot]
34fd2c01f4 [PR #8169/b444e873 backport][stable-6] xml: make module work with lxml 5.1.1 (#8170)
xml: make module work with lxml 5.1.1 (#8169)

Make module work with lxml 5.1.1.

(cherry picked from commit b444e8739c)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-03-30 22:48:12 +01:00
Felix Fontein
4689114fac The next release will be 6.6.9. 2024-03-25 14:35:03 +01:00
Felix Fontein
09b3253edd Release 6.6.8. 2024-03-25 14:10:36 +01:00
Felix Fontein
739998779b Prepare 6.6.8 release. 2024-03-25 06:51:29 +01:00
Felix Fontein
d250bb5217 [stable-6] inventory plugins: make data obtained from remote unsafe (#8147)
inventory plugins: make data obtained from remote unsafe (#8098)

Make data obtained from remote unsafe.

(cherry picked from commit d62fe154d2)
2024-03-25 06:50:17 +01:00
patchback[bot]
12df7f7a95 [PR #8052/73b6b98e backport][stable-6] Aix filesystem crfs issue (#8110)
Aix filesystem crfs issue (#8052)

* crfs issue in aix_filesystem.py

Change the crfs logic and fields, since empty options and order seem to be an issue.

this quick fix seems to solve it

* Create aix_filesystem-crfs-issue.yml

changelog fragment

* fix

fix typo

* Update changelogs/fragments/aix_filesystem-crfs-issue.yml

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

* Refactored based on feeback and testing

Refactored the changes i did based on the comments and testing. Also changed the attribute default values because they were causing errors

* blank line whitespaces

* fix default

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 73b6b98ed9)

Co-authored-by: Mike <mike@php-webdesign.nl>
2024-03-17 17:40:44 +01:00
patchback[bot]
db28a2e94a [PR #8103/1c4197aa backport][stable-6] Skip cloud_init_data_facts tests on OpenSuSE Leap 15 (#8107)
Skip cloud_init_data_facts tests on OpenSuSE Leap 15 (#8103)

Skip cloud_init_data_facts tests on OpenSuSE Leap 15.5.

(cherry picked from commit 1c4197aa23)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-03-17 17:14:57 +01:00
patchback[bot]
fa865a19a5 [PR #8102/23fbc5e2 backport][stable-6] Fix pacman tests in CI (#8104)
Fix pacman tests in CI (#8102)

Fix pacman tests.

(cherry picked from commit 23fbc5e241)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-03-17 16:57:06 +01:00
patchback[bot]
d15a41d6c2 [PR #8081/17e275bc backport][stable-6] pacemaker_cluster: implement check mode (#8093)
pacemaker_cluster: implement check mode (#8081)

* Implement check mode for pacemaker_cluster.

* Fix restart code.

Co-authored-by: Mario Lenz <m@riolenz.de>

---------

Co-authored-by: Mario Lenz <m@riolenz.de>
(cherry picked from commit 17e275bc0b)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-03-14 22:32:52 +01:00
patchback[bot]
40de10b9b3 [PR #8057/c13bede0 backport][stable-6] pam_limits: do not create file in check mode when it does not exist (#8080)
pam_limits: do not create file in check mode when it does not exist (#8057)

Do not create file in check mode when it does not exist.

(cherry picked from commit c13bede0c5)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-03-10 15:33:03 +01:00
patchback[bot]
6137ffe2a4 [PR #8058/98df3440 backport][stable-6] Bump fsfe/reuse-action from 2 to 3 (#8059)
Bump fsfe/reuse-action from 2 to 3 (#8058)

Bumps [fsfe/reuse-action](https://github.com/fsfe/reuse-action) from 2 to 3.
- [Release notes](https://github.com/fsfe/reuse-action/releases)
- [Commits](https://github.com/fsfe/reuse-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: fsfe/reuse-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 98df344017)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-04 19:50:02 +01:00
Felix Fontein
a7770647ae [stable-6] Add MarkDown changelog and use it by default (#7943)
Add MarkDown changelog and use it by default.
2024-02-09 13:08:44 +01:00
Felix Fontein
0c4461f9cd [stable-6] filesize: use 2 TB instead of 4 TB in sparse file tests (#7935) (#7936)
filesize: use 2 TB instead of 4 TB in sparse file tests (#7935)

Use 2 TB instead of 4 TB.

4 TB does not work on the Alpine VMs for some reason
(File too large / cannot seek: Invalid argument).

(cherry picked from commit 549a73bd78)
2024-02-03 15:27:31 +01:00
patchback[bot]
2f16e78431 [PR #7907/2580da97 backport][stable-6] Zuul third-party-check: disable ansible-doc part of galaxy-importer (#7908)
Zuul third-party-check: disable ansible-doc part of galaxy-importer (#7907)

Zuul third-party-check: disable ansible-doc part of galaxy-importer.

(cherry picked from commit 2580da9796)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-01-27 15:44:44 +01:00
patchback[bot]
4002e458dd [PR #7857/069b485b backport][stable-6] Use shared workflow for Galaxy import test (#7862)
Use shared workflow for Galaxy import test (#7857)

Simplifiy workflows.

(cherry picked from commit 069b485b7e)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-01-18 07:33:33 +01:00
Felix Fontein
02ee120a6e [stable-6] Make compatible with newer reuse versions (#7861)
Make compatible with newer reuse versions (#7858)

Make compatible with newer reuse versions.

(cherry picked from commit 002208f425)
2024-01-18 07:11:00 +01:00
patchback[bot]
78c16ca5e5 [PR #7839/32ec7519 backport][stable-6] Use import galaxy workflow from ansible-collections/community.docker#754 (#7840)
Use import galaxy workflow from ansible-collections/community.docker#754 (#7839)

Use import galaxy workflow from https://github.com/ansible-collections/community.docker/pull/754.

(cherry picked from commit 32ec751996)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-01-13 19:25:43 +01:00
patchback[bot]
32a348d73f [PR #7831/8891f559 backport][stable-6] Disable timezone tests on Arch Linux (#7833)
Disable timezone tests on Arch Linux (#7831)

Disable timezone tests on Arch Linux.

(cherry picked from commit 8891f559ef)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-01-13 10:25:46 +01:00
patchback[bot]
5a1ea5bac3 [PR #7827/87866477 backport][stable-6] CI: fix xml tests on RHEL 8 (#7828)
CI: fix xml tests on RHEL 8 (#7827)

* Try to fix xml installation on RHEL.

* Install python-lxml on RHEL 8. Should speed up tests considerably.

(cherry picked from commit 878664778e)

Co-authored-by: Felix Fontein <felix@fontein.de>
2024-01-13 10:11:32 +01:00
Felix Fontein
0805f97905 [stable-6] Fix failing sanity and integration tests (#7807) (#7810)
Fix failing sanity and integration tests (#7807)

* Remove some Shippable specific code that trips latest shellcheck.

* Rename templated shell script to .sh.j2 to avoid shellcheck disliking the templating.

* Copy on the remote, not from controller to remote.

(cherry picked from commit ee8b15708f)
2024-01-04 23:29:15 +01:00
patchback[bot]
54fe541081 [PR #7797/8d307cb1 backport][stable-6] Remove FreeBSD 12.4 from CI (#7798)
Remove FreeBSD 12.4 from CI (#7797)

Remove FreeBSD 12.4 from CI.

(cherry picked from commit 8d307cb190)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-12-31 15:19:25 +01:00
patchback[bot]
67cb03a77e [PR #7776/e9f7f7e2 backport][stable-6] CI: python-memcached 1.60 needs Python 3.6+ (#7777)
CI: python-memcached 1.60 needs Python 3.6+ (#7776)

python-memcached 1.60 needs Python 3.6+.

(cherry picked from commit e9f7f7e2de)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-12-28 13:53:23 +01:00
patchback[bot]
010877691a [PR #7709/0c7b9e50 backport][stable-6] Fix keytool setup on Debian Bookworm (#7710)
Fix keytool setup on Debian Bookworm (#7709)

Fix keytool setup on Debian Bookworm.

(cherry picked from commit 0c7b9e50b5)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-12-10 09:03:14 +01:00
patchback[bot]
827967310e [PR #7705/aea238e5 backport][stable-6] Fix integration tests on Arch (#7706)
Fix integration tests on Arch (#7705)

* Fix ejabberd_user integration tests on Arch Linux.

* Fix odbc integration tests on Arch Linux.

* The old name of systemd_service is systemd.

(cherry picked from commit aea238e5d1)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-12-09 17:30:28 +01:00
patchback[bot]
fe385eb131 [PR #7699/2b64ef2a backport][stable-6] Deactivate FreeBSD 13.1 in CI (#7700)
Deactivate FreeBSD 13.1 in CI (#7699)

Deactivate FreeBSD 13.1 in CI.

(cherry picked from commit 2b64ef2a62)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-12-08 07:10:26 +01:00
patchback[bot]
9f16c7baf1 [PR #7656/096d36ad backport][stable-6] passwordstore tests: re-enable gopass on Debian-like systems (#7660)
passwordstore tests: re-enable gopass on Debian-like systems (#7656)

Re-enable gopass on Debian-like systems.

(cherry picked from commit 096d36adc5)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-12-01 18:03:25 +01:00
patchback[bot]
e13f9c1092 [PR #7630/0589c841 backport][stable-6] Fix and re-enable cmd_runner tests (#7651)
Fix and re-enable cmd_runner tests (#7630)

Fix cmd_runner tests.

(cherry picked from commit 0589c84176)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-12-01 17:28:36 +01:00
Felix Fontein
1f60829b9d [stable-6] Fix bad expressions in tests (#7627)
* Fix bad expressions in tests (#7625)

* Fix bad expressions in tests.

ci_complete

* Disable cmd_runner integration tests.

ci_complete

* Another bad expression.

ci_complete

(cherry picked from commit 3b779ecade)

* Fix osx_defaults tests (#7631)

Fix osx_defaults tests.

(cherry picked from commit dbba0d1956)
2023-11-29 07:51:37 +01:00
patchback[bot]
e6c2a12a4a [PR #7603/12395732 backport][stable-6] CI: temporarily skip passwordstore tests on Debian/Ubuntu (#7607)
CI: temporarily skip passwordstore tests on Debian/Ubuntu (#7603)

Skip passwordstore tests on Debian/Ubuntu.

(cherry picked from commit 12395732e8)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-11-26 17:35:23 +01:00
Felix Fontein
0be65af9a9 Remove Fedora 36 from CI (#7592)
Remove Fedora 36 from CI.

(cherry picked from commit b2dea631d1)
2023-11-24 21:48:36 +01:00
patchback[bot]
3c021dc4fc [PR #7591/19984ce4 backport][stable-6] Update proxmox_tasks_info.py (#7593)
Update proxmox_tasks_info.py (#7591)

fix typo
I spend 3 hours because of this mistake

(cherry picked from commit 19984ce4df)

Co-authored-by: Андрей Неустроев <99169437+aneustroev@users.noreply.github.com>
2023-11-24 21:27:24 +01:00
patchback[bot]
2f64e8c732 [PR #7543/b3c661a9 backport][stable-6] sysrc: FreeBSD jail test no longer works with FreeBSD 13.1 (#7544)
sysrc: FreeBSD jail test no longer works with FreeBSD 13.1 (#7543)

Jail test no longer works with FreeBSD 13.1.

(cherry picked from commit b3c661a9f6)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-11-18 13:58:47 +01:00
Felix Fontein
5f2a8d5e59 Stick to pre-semantic-markup version. 2023-11-12 12:19:39 +01:00
patchback[bot]
6bc2a8e949 [PR #7480/74e941e4 backport][stable-6] Disable nomad tests (#7482)
Disable nomad tests (#7480)

Disable nomad tests.

(cherry picked from commit 74e941e432)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-11-04 14:01:03 +01:00
patchback[bot]
56662f82fe [PR #7476/57e36d7d backport][stable-6] timezone tests: do not restore original timezone if it wasn't known (value 'n/a') (#7477)
timezone tests: do not restore original timezone if it wasn't known (value 'n/a') (#7476)

Do not restore original timezone if it wasn't known (value 'n/a').

(cherry picked from commit 57e36d7dc2)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-11-04 13:22:54 +01:00
Felix Fontein
938ed56d70 Next expected release will be 6.6.8. 2023-11-04 13:00:17 +01:00
Felix Fontein
1357e47f92 Re-create 6.6.7 release including GitLab fix.
This reverts commit 01134d4625.
2023-11-04 12:36:30 +01:00
patchback[bot]
cc6d4209d4 [PR #7467/a366318a backport][stable-6] [gitlab] Fix gitlab constants calls (#7475)
[gitlab] Fix gitlab constants calls (#7467)

fix: Fix gitlab constants calls

Co-authored-by: Arnaud Hatzenbuhler <arnaud.hatzenbuhler@conserto.pro>
(cherry picked from commit a366318ac6)

Co-authored-by: Arnaud Hatzenbuhler <arnaud.hatzenbuhler@gmail.com>
2023-11-04 12:35:59 +01:00
Felix Fontein
01134d4625 Release 6.6.7. 2023-11-04 12:23:01 +01:00
Felix Fontein
16089ab2de Fix section. 2023-11-04 12:22:25 +01:00
Felix Fontein
0da4607c7f Prepare 6.6.7 release. 2023-11-04 12:20:35 +01:00
patchback[bot]
46cbf60c2d [PR #7405/f7267c71 backport][stable-6] Fix the ability to run Composer "working_dir" dependent commands (#7459)
Fix the ability to run Composer "working_dir" dependent commands (#7405)

* pass the working_dir to all composer command invocations that are not global

* add changelog fragment

* Update changelog fragment

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f7267c7123)

Co-authored-by: Xavier Lacot <xavier@lacot.org>
2023-11-01 08:22:38 +01:00
Felix Fontein
e7d86f5add Main branches are stable-8 and stable-7; stable-6 runs more seldomly in CI.
(cherry picked from commit 6d0bcec1cb)
2023-11-01 08:10:52 +01:00
patchback[bot]
ee4c76fa43 [PR #7446/8055dd1c backport][stable-6] Revert "Disable ansible_galaxy_install tests until Galaxy is fixed (#7440)" (#7448)
Revert "Disable ansible_galaxy_install tests until Galaxy is fixed (#7440)" (#7446)

This reverts commit f7532c7d9d.

(cherry picked from commit 8055dd1c9b)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-10-29 20:57:48 +01:00
patchback[bot]
095d09ec12 [PR #7440/f7532c7d backport][stable-6] Disable ansible_galaxy_install tests until Galaxy is fixed (#7442)
Disable ansible_galaxy_install tests until Galaxy is fixed (#7440)

Disable ansible_galaxy_install tests until Galaxy is fixed.

(cherry picked from commit f7532c7d9d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-10-29 09:58:24 +01:00
patchback[bot]
d9ed00fb12 [PR #7375/eb4f8d43 backport][stable-6] Fix pagination issue in community.general.github_deploy_key (#7407)
Fix  pagination issue in community.general.github_deploy_key (#7375)

* Fix pagination issue in community.general.github_deploy_key

* Add changelog fragment

* Update changelogs/fragments/7375-fix-github-deploy-key-pagination.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit eb4f8d4301)

Co-authored-by: Padraic Calpin <padraic.calpin93@gmail.com>
2023-10-18 21:15:12 +02:00
patchback[bot]
94bb204e29 [PR #7374/479e7df6 backport][stable-6] Fix callback/selective task print being long (#7390)
Fix callback/selective task print being long (#7374)

* Fix callback/selective task print being long

Compare against all text on the line rather than simply the task_name var,
which does not include 3 formatting characters in the string

* Add changelog fragment

---------

Co-authored-by: Aidan Houck <AidanHouck@users.noreply.github.com>
(cherry picked from commit 479e7df687)

Co-authored-by: Aidan Houck <92699100+AidanHouck@users.noreply.github.com>
2023-10-11 17:01:50 +02:00
patchback[bot]
9b1f450102 [PR #7385/91fdc8e0 backport][stable-6] Skip odbc tests on Python 2.6 and CentOS 7 (#7387)
Skip odbc tests on Python 2.6 and CentOS 7 (#7385)

Skip odbc tests on Python 2.6 and CentOS 7.

(cherry picked from commit 91fdc8e06a)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-10-11 15:58:19 +02:00
patchback[bot]
dd3bc067f5 [PR #7378/d7bb8648 backport][stable-6] redhat_subscription: fix D-Bus option for consumer type on older distros (#7383)
redhat_subscription: fix D-Bus option for consumer type on older distros (#7378)

subscription-manager 1.29.32 renames the "type" D-Bus registration
option to "consumer_type"; this means that the right option must be
passed according to the distro type & version.

Copy the same approach done for environments, tweaking the version
needed: this change is found in RHEL 9.2+ and supported Fedora versions.

Reported-by: Radek Bíba <rbiba@redhat.com>
(cherry picked from commit d7bb8648f3)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2023-10-11 09:00:57 +02:00
patchback[bot]
15916cd61f [PR #7379/557a4ae6 backport][stable-6] Make compatible with current ansible-core devel (#7380)
Make compatible with current ansible-core devel (#7379)

Make compatible with current ansible-core devel.

(cherry picked from commit 557a4ae653)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-10-10 09:06:50 +02:00
patchback[bot]
02a257569a [PR #7369/1bf5a44a backport][stable-6] Fix lxc plugin options (#7370)
Fix lxc plugin options (#7369)

* Fixture for liblxc

Add a fixture to allow testing the lxc connection plugin both with and
without liblxc being present.

Also change the test from unittest to pytest.

* Update liblxc error message

The error is not specific to python2, so remove the version. Also add
a test for it.

* Migrate to options

Because the lxc plugin was only using PlayContext properties, using host
vars like `ansible_lxc_host` didn't work. This is fixed by instead using
the `get_option` method inherited from `AnsiblePlugin`.
The options are not yet available in the `__init__` function, so the
determination of the container name is moved to the `_connect` method,
which is the first time it is actually needed.
The default for the `remote_addr` option is removed, because the string
`inventory_hostname` is not very useful. At all. This seams to have been
spread with copy&paste and a bit of cargo culting. The variable priority
already takes care of setting the value.

* Add changelog fragment

* Fix for Py2.7

`TypeError: super() takes at least 1 argument (0 given)`

* Add plugin type to changelog fragment.

* Restore untemplated default

This partially reverts commit 429d8c8cfb.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 1bf5a44a77)

Co-authored-by: Corubba <97832352+corubba@users.noreply.github.com>
2023-10-09 09:21:43 +02:00
Felix Fontein
c486e42faa Next expected release is 6.6.7. 2023-10-08 14:06:59 +02:00
Felix Fontein
7f7e622262 Release 6.6.6. 2023-10-08 13:31:17 +02:00
Felix Fontein
e1551b3d34 Prepare 6.6.6 release. 2023-10-08 12:59:23 +02:00
patchback[bot]
a3bc0535a5 [PR #7334/92d7bd68 backport][stable-6] Fix Galaxy URLs (#7336)
Fix Galaxy URLs (#7334)

Fix Galaxy URLs.

(cherry picked from commit 92d7bd68e9)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-09-30 21:30:16 +02:00
patchback[bot]
9e59665bee [PR #7301/7bf24eeb backport][stable-6] Fixing incorrect string encapsulation for -backend-config. (#7314)
Fixing incorrect string encapsulation for -backend-config. (#7301)

* Fixing incorrect string encapsulation for -backend-config. Removing shlex_quote.

* Adding change log fragemnt for bugfix:

- "terraform module - prevents `-backend-config` option double encapsulating with `shlex_quote` function. (https://github.com/ansible-collections/community.general/pull/7301)."

* Update changelogs/fragments/7301-fix-backend-config-string-encapsulation.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 7bf24eeb84)

Co-authored-by: Kosala Atapattu <kosala@kosala.net>
2023-09-25 05:51:19 +02:00
patchback[bot]
30b29d24ab [PR #7309/522fb23e backport][stable-6] xinetd no longer exists; use mdadm instead (#7312)
xinetd no longer exists; use mdadm instead (#7309)

xinetd no longer exists; use mdadm instead.

(cherry picked from commit 522fb23e06)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-09-25 05:51:04 +02:00
patchback[bot]
d5efc3f13a [PR #7303/f4237dde backport][stable-6] Fix incorrect parsing of headers containing equal character (#7305)
Fix incorrect parsing of headers containing equal character (#7303)

* Fix incorrect parsing of header containing equal character

* Add changelog fragment

* Update changelogs/fragments/7303-mail-incorrect-header-parsing.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f4237dde1b)

Co-authored-by: Théo Lévesque <Theo024@users.noreply.github.com>
2023-09-22 13:17:29 +02:00
patchback[bot]
d237faa447 [PR #7296/756e8f5c backport][stable-6] Update from_csv.py docs (#7299)
Update from_csv.py docs (#7296)

Typo fix

(cherry picked from commit 756e8f5cca)

Co-authored-by: bontreger <bontreger@users.noreply.github.com>
2023-09-20 22:44:17 +02:00
Felix Fontein
65ce979d4a [stable-6] CI: devel → stable-2.16, move stable-2.13 to EOL CI (#7287)
CI: devel → stable-2.16, move stable-2.13 to EOL CI.
2023-09-19 17:51:41 +02:00
patchback[bot]
938367b67a [PR #7249/4030481b backport][stable-6] ipa_user documentation: givenname and sn are required when user doesn't exist (#7280)
* ipa_user documentation: givenname and sn are required when user doesn't exist (#7249)

* Edit  givenname and sn description.

* Update plugins/modules/ipa_user.py

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

* Update plugins/modules/ipa_user.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 4030481b36)

* Remove semantic markup.

---------

Co-authored-by: Christer Warén <cwchristerw@gmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2023-09-17 14:36:10 +02:00
patchback[bot]
578df1b054 [PR #7241/1beb38ce backport][stable-6] Use get(..) instead of [..] for safe lookup of value (Fixes #7240) (#7257)
Use `get(..)` instead of [..] for safe lookup of value (Fixes #7240) (#7241)

A OnePassword field item might not have a value (property) when the user has omitted it (on purpose).

(cherry picked from commit 1beb38ceff)

Co-authored-by: Wouter Klein Heerenbrink <wouter@fluxility.com>
2023-09-13 06:24:24 +00:00
patchback[bot]
0b494a5d2d [PR #7252/7d97b37b backport][stable-6] Update my maintainer status for 1PW plugin (#7253)
Update my maintainer status for 1PW plugin (#7252)

* ignore notifications for scottsb on 1pw plugin; update email

* Also update maintainers list.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 7d97b37b21)

Co-authored-by: Scott Buchanan <scottiesb@gmail.com>
2023-09-13 07:20:10 +02:00
Felix Fontein
f92043c7f5 Next release will be 6.6.6. 2023-09-11 19:50:55 +02:00
Felix Fontein
839336c21d Release 6.6.5. 2023-09-11 19:05:43 +02:00
patchback[bot]
2a5e4b8a46 [PR #7219/208df2c9 backport][stable-6] nsupdate: fix 'index out of range' error when no TTL answer is given (#7235)
nsupdate: fix 'index out of range' error when no TTL answer is given (#7219)

* nsupdate: fix 'index out of range' error when no TTL answer is given

Fix a possible `list index out of range` when no answer is returned in the `ttl_changed` method
by applying the existing workaround for NS records to all record types.

Resolves #836

* fixup! nsupdate: fix 'index out of range' error when no TTL answer is given

(cherry picked from commit 208df2c9e6)

Co-authored-by: Silke Hofstra <silkeh@users.noreply.github.com>
2023-09-11 06:01:01 +02:00
Felix Fontein
fae1dbc198 Prepare 6.6.5 release. 2023-09-10 21:31:33 +02:00
patchback[bot]
dc7aba3bca [PR #7200/8fa667ee backport][stable-6] CmdRunner bugfix (#7227)
CmdRunner bugfix (#7200)

* cmd_runner module utils: fix bug when passing absolute path not in standard search paths

* improved tests

* changed /usr/bin/echo to /bin/echo for the sake of alpine

* fixed error messaging for last testcase

* add condition to test cases, and remove macos from troubling ones

* fix templating

* fix templating

* exclude centos 6 from testcases copying echo to tmp dir

* try different way of specifying version

* trying trick for old jinjas

* use os.path.isabs() to determine if path is absolute

* add changelog frag

* Update plugins/module_utils/cmd_runner.py

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

* Update changelogs/fragments/7200-cmd-runner-abs-path.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 8fa667eeb7)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-09-10 09:00:20 +02:00
patchback[bot]
03c66d0db4 [PR #7205/58d89ce4 backport][stable-6] smbios option description (#7223)
* smbios option description (#7205)

* smbios option description

More detailed description smbios option

* Update plugins/modules/proxmox_kvm.py

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

* Change map to string

* Update proxmox_kvm.py

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 58d89ce442)

* Avoid semantic markup.

---------

Co-authored-by: Андрей Неустроев <99169437+aneustroev@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2023-09-08 17:38:34 +02:00
patchback[bot]
5707fc1b33 [PR #7180/9021e741 backport][stable-6] community.general.make: (#7217)
* community.general.make: (#7180)

* community.general.make:

  allows parameters without value

  closes #7178

* add changelog fragment for community.general.make

* correction: v != none -> v is not None

* update fragment changelog as per developer request

* add an example

* document the modification

* update example with comments as per maintainer request

(cherry picked from commit 9021e7416d)

* Avoid semantic markup for stable-6.

---------

Co-authored-by: snail59 <25689269+snail59@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2023-09-07 06:29:27 +02:00
patchback[bot]
830e3988aa [PR #7161/a23cd6c1 backport][stable-6] Update incorrect path for pritunl organization post (#7213)
Update incorrect path for pritunl organization post (#7161)

* Update incorrect path for organization post

* Create changelog fragment

* Update changelog fragment.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit a23cd6c1d5)

Co-authored-by: dsmackie <48046804+dsmackie@users.noreply.github.com>
2023-09-06 22:06:20 +02:00
patchback[bot]
f4ccef462e [PR #7156/0862511e backport][stable-6] Ensure pritunl validate_certs is honoured in all methods (#7215)
Ensure pritunl validate_certs is honoured in all methods (#7156)

* Ensure pritunl validate_certs is honoured in all methods

* Create changelog fragment

* Rename 7156-ensure-validate-certs-parameter-is-honoured to 7156-ensure-validate-certs-parameter-is-honoured.yml

* Update changelog fragment.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 0862511e82)

Co-authored-by: dsmackie <48046804+dsmackie@users.noreply.github.com>
2023-09-06 22:06:02 +02:00
patchback[bot]
cd26dd6b0a [PR #7209/9f1a9e30 backport][stable-6] plugins/modules/apache2_module: fix typo (#7210)
plugins/modules/apache2_module: fix typo (#7209)

(cherry picked from commit 9f1a9e306c)

Co-authored-by: Célestin Matte <celestin.matte@gmail.com>
2023-09-06 19:09:59 +02:00
patchback[bot]
009bfd786d [PR #7181/d6ebba1a backport][stable-6] cmd tests improvement (#7186)
cmd tests improvement (#7181)

* cmd tests improvement

* fix sanity

* remove commented line

* fixed class init code

(cherry picked from commit d6ebba1aea)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-09-01 11:28:01 +00:00
patchback[bot]
9f08cc11a8 [PR #7170/63030966 backport][stable-6] xfconf*: using yaml-specified unit tests (#7176)
xfconf*: using yaml-specified unit tests (#7170)

(cherry picked from commit 6303096648)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-08-30 06:16:20 +02:00
patchback[bot]
cae4bc80af [PR #7172/f3a02b3e backport][stable-6] CI: make sure EXTERNALLY-MANAGED is absent on Arch Linux (#7174)
CI: make sure EXTERNALLY-MANAGED is absent on Arch Linux (#7172)

Make sure EXTERNALLY-MANAGED is absent on Arch.

(cherry picked from commit f3a02b3efb)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-08-30 06:15:57 +02:00
patchback[bot]
058462973e [PR #7154/8652fd95 backport][stable-6] Refactored unit tests for modules based on CmdRunner (#7167)
Refactored unit tests for modules based on CmdRunner (#7154)

* refactored unit tests for modules based on CmdRunner

* improved/fixed test helper

* fixed sanity

* refactored yaml spec out of the python file

* small adjustments

(cherry picked from commit 8652fd9528)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-08-29 13:22:08 +02:00
patchback[bot]
23dc90812f [PR #7162/4c8c25bc backport][stable-6] keycloak_clientscope_type: fixed example (#7164)
keycloak_clientscope_type: fixed example (#7162)

(cherry picked from commit 4c8c25bc93)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-08-29 07:47:32 +02:00
patchback[bot]
97e17fcee2 [PR #7125/77214203 backport][stable-6] Fix inappropriate comparison on the length of a Collection (#7146)
Fix inappropriate comparison on the length of a Collection (#7125)

* Comment: Fixed inappropriate comparison on the length of a Collection. Added changlelog fragment file.

* Comment: Updated the scope of the changelog fragment based on feedback.

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 7721420388)

Co-authored-by: Munawar <munawar.hafiz@gmail.com>
2023-08-23 06:13:58 +02:00
patchback[bot]
d75d5f67f7 [PR #7104/eafdf87b backport][stable-6] lxc: fix remote_addr default to inventory_hostname (#7108)
lxc: fix remote_addr default to inventory_hostname (#7104)

* lxc: fix remote_addr default to inventory_hostname

* Update changelogs/fragments/7104_fix_lxc_remoteaddr_default.yml

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit eafdf87b1b)

Co-authored-by: Corubba <97832352+corubba@users.noreply.github.com>
2023-08-13 22:15:22 +02:00
patchback[bot]
c597a75372 [PR #7103/5e27bbfd backport][stable-6] CI: FreeBSD 13.0 and 12.3 are no longer availabe, bump versions and disable since these versions are already tested with stable-2.15 (#7106)
CI: FreeBSD 13.0 and 12.3 are no longer availabe, bump versions and disable since these versions are already tested with stable-2.15 (#7103)

FreeBSD 13.0 and 12.3 are no longer availabe, bump versions and disable since these versions are already tested with stable-2.15.

(cherry picked from commit 5e27bbfdf6)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-08-13 20:12:44 +02:00
Felix Fontein
031a3b56bf Next release will be 6.6.5. 2023-08-13 11:34:09 +02:00
Felix Fontein
5fd87a1811 Release 6.6.4 2023-08-13 11:13:09 +02:00
patchback[bot]
e463f94ce9 [PR #7010/7496466f backport][stable-6] Update chroot.py - better documentation (#7100)
Update chroot.py - better documentation (#7010)

* Update chroot.py

Better informations about sudo and env.

* Update plugins/connection/chroot.py

---------

Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com>
(cherry picked from commit 7496466f9d)

Co-authored-by: Przemysław Sztoch <psztoch@finn.pl>
2023-08-12 19:35:47 +02:00
patchback[bot]
4205a94f0c [PR #7081/fe3eec01 backport][stable-6] Follow DMTF redfish deprecation on StorageControllers (#7092)
Follow DMTF redfish deprecation on StorageControllers (#7081)

* Get controller information from "Controllers" field instead of "StorageControllers" which is deprecated

* Add changelog fragment

* Changelog fragment writing guide formatting

* For consistency, get_disk_inventory and get_volume_inventory use Controllers key instead of StorageControllers to obtain controller name

---------

Co-authored-by: Pierre-yves FONTANIERE <pyf@cc.in2p3.fr>
(cherry picked from commit fe3eec0122)

Co-authored-by: Pierre-yves Fontaniere <pyfontan@cc.in2p3.fr>
2023-08-11 19:55:52 +02:00
patchback[bot]
bcfcdd1052 [PR #7061/e75dc746 backport][stable-6] bitwarden lookup fix get_field (#7089)
bitwarden lookup fix `get_field` (#7061)

* bitwarden lookup rewrite `get_field`

* add changelog fragment

* PEP8 add newline

* Update changelogs/fragments/7061-fix-bitwarden-get_field.yml

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

* Update plugins/lookup/bitwarden.py

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

* Update plugins/lookup/bitwarden.py

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

* Update plugins/lookup/bitwarden.py

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

---------

Co-authored-by: Simon <simonleary@umass.edu>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit e75dc74613)

Co-authored-by: simonLeary42 <71396965+simonLeary42@users.noreply.github.com>
2023-08-11 13:53:39 +02:00
Felix Fontein
2638413475 [stable-6] Avoid direct type comparisons (#7087)
Avoid direct type comparisons (#7085)

Avoid direct type comparisons.

(cherry picked from commit a8809401ee)
2023-08-11 13:39:42 +02:00
patchback[bot]
9ea55a81b3 [PR #7033/c1f2f126 backport][stable-6] ejabberd_user: bug fixes + tests (#7069)
ejabberd_user: bug fixes + tests (#7033)

* ejabberd_user: bug fixes + tests

* fix changed property

* add license to handler file

* adjustments to test

* add needs/target/setup_epel to aliases

* further adjustments to integration tests

* add target to integration tests

* add some skips to test

* skip centos as it has no ejabberd

* skip fedora as it has no ejabberd

* discard unused epel setup

* add changelog frag

* remove ejabberd before tests

* fix typo

(cherry picked from commit c1f2f126cf)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-08-08 13:45:14 +02:00
patchback[bot]
32c1e39df1 [PR #7055/fd9d9482 backport][stable-6] CI: ansible-core devel only supports Alpine 3.18 VMs, no longer Alpine 3.17 VMs (#7056)
CI: ansible-core devel only supports Alpine 3.18 VMs, no longer Alpine 3.17 VMs (#7055)

ansible-core devel only supports Alpine 3.18 VMs, no longer Alpine 3.17 VMs.

(cherry picked from commit fd9d948267)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-08-02 10:33:59 +02:00
patchback[bot]
7bb23e9649 [PR #6983/a942545d backport][stable-6] Rundeck - fix TypeError on 404 api response (#7040)
Rundeck - fix TypeError on 404 api response (#6983)

* fix TypeError on 404 api response

* add changelog fragment

* Update changelogs/fragments/6983-rundeck-fix-typerrror-on-404-api-response.yml

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

---------

Co-authored-by: Vincent CHARLES <vincent.charles@swatchgroup.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit a942545dd2)

Co-authored-by: Vincent CHARLES <124702855+MehuiSeklayr@users.noreply.github.com>
2023-07-31 15:44:57 +02:00
patchback[bot]
eeedd97eec [PR #7027/87053e52 backport][stable-6] Add tarka to ignore list. (#7031)
Add tarka to ignore list. (#7027)

* Add tarka to ignore list.

* Remove tarka from maintainers.

(cherry picked from commit 87053e5266)

Co-authored-by: Steve Smith <tarkasteve@gmail.com>
2023-07-29 21:51:28 +02:00
patchback[bot]
4e1ba6af46 [PR #7028/3a7044e2 backport][stable-6] ejabberd_user: better error when command not installed (#7029)
ejabberd_user: better error when command not installed (#7028)

* ejabberd_user: better error when command not installed

* add changelog frag

(cherry picked from commit 3a7044e2b8)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-07-29 21:40:02 +02:00
patchback[bot]
aa1ae85b55 [PR #7022/5d7899b3 backport][stable-6] setup_docker: handlers to stop service and remove requests (#7023)
setup_docker: handlers to stop service and remove requests (#7022)

(cherry picked from commit 5d7899b341)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-07-28 20:19:29 +02:00
patchback[bot]
4d2873afd2 [PR #6991/00bfc3e1 backport][stable-6] Add example for ECS Fargate/EFS Jenkins authentication (#7015)
Add example for ECS Fargate/EFS Jenkins authentication (#6991)

* Add example for ECS Fargate/EFS Jenkins authentication

Since ECS Fargate is serverless, one cannot access its jenkins_home other than from a machine (EC2 for example) that actually mounts and owns its EFS storage.

That way we provide user/group of a defatul local user which has the same uid/gid 1000 as the default jenkins user inside the container and also can authenticate at Jenkins URL.

I feel this is not as straightforward from the docs and someone might benefit from such an example being present

* Added an empty line

* Float value now in single quotes

* Use UID/GID instead user/group name

(cherry picked from commit 00bfc3e131)

Co-authored-by: TeekWan <74403302+teekwan@users.noreply.github.com>
2023-07-27 11:00:08 +02:00
Sergei Antipov
43c1d9f66c [PR #6981/f9448574 backport][stable-6] [proxmox_kvm] Don't create VM if name is used without vmid (#7003)
* [proxmox_kvm] Don't create VM if name is used without vmid (#6981)

* [proxmox_kvm] Don't create VM if name is used without vmid

* Add changelog and unit tests

(cherry picked from commit f9448574bd)

* Remove semantic markup
2023-07-24 08:27:35 +02:00
patchback[bot]
201f49acd9 [PR #6995/cc5e1b6f backport][stable-6] Skip java_cert and java_keystore tests on RHEL (#6999)
Skip java_cert and java_keystore tests on RHEL (#6995)

Skip java_cert and java_keystore tests on RHEL.

(cherry picked from commit cc5e1b6fe7)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-24 08:27:22 +02:00
patchback[bot]
6f0d46d0a2 [PR #6994/e8150408 backport][stable-6] crypt is still deprecated in Python 3.12 (#7001)
crypt is still deprecated in Python 3.12 (#6994)

crypt is still deprecated in Python 3.12.

(cherry picked from commit e815040877)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-24 08:27:05 +02:00
patchback[bot]
92529d5605 [PR #6985/d9951cbc backport][stable-6] CI: move FreeBSD 12.4 from ansible-core devel to stable-2.15 (#6986)
CI: move FreeBSD 12.4 from ansible-core devel to stable-2.15 (#6985)

Move FreeBSD 12.4 from ansible-core devel to stable-2.15.

(cherry picked from commit d9951cbc32)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-21 16:55:54 +02:00
Sergei Antipov
f635ed6c2e [PR #6980/796ad356 backport][stable-6] [proxmox] Use proxmoxer_version instead of server API version (#6984)
* [proxmox] Use proxmoxer_version instead of server API version (#6980)

* Use proxmoxer_version instead of server API version

* Add changelog fragment

(cherry picked from commit 796ad3565e)

* Update unit tests requirements file

* Add python 2.6 constraint for tests
2023-07-20 20:51:53 +02:00
patchback[bot]
0e0fce54ab [PR #6968/f6714eda backport][stable-6] cmd_runner module utils: fix bug when argument spec has implicit type (#6977)
cmd_runner module utils: fix bug when argument spec has implicit type (#6968)

* cmd_runner module utils: fix bug when argument spec has implicit type

* add changelog frag

(cherry picked from commit f6714edabb)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-07-20 08:34:35 +02:00
Felix Fontein
caae74abd8 The next release will be 6.6.4. 2023-07-16 16:19:45 +02:00
Felix Fontein
c01a16c1bc Release 6.6.3. 2023-07-16 15:48:18 +02:00
patchback[bot]
15c832b8d5 [PR #6906/b818afd4 backport][stable-6] Fix key error for reverse zone (#6905) (#6950)
Fix key error for reverse zone (#6905) (#6906)

* Fix key error for reverse zone (#6905)

* Add changelog fragment for #6905

* Fix changelog (6905)

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b818afd464)

Co-authored-by: irozet12 <119814380+irozet12@users.noreply.github.com>
2023-07-16 14:39:31 +02:00
patchback[bot]
b104c580e1 [PR #6923/7020b27b backport][stable-6] cobbler inventory plugin: Convert unicode to str (#6952)
cobbler inventory plugin: Convert unicode to str (#6923)

* plugins/inventory/cobbler: Convert unicode to str

* plugins/inventory/cobbler: Use text_type instead

(cherry picked from commit 7020b27b0a)

Co-authored-by: Algirdas <76789112+Algirdas-Z@users.noreply.github.com>
2023-07-16 14:39:18 +02:00
patchback[bot]
a4e1beefe3 [PR #6955/8a344ea0 backport][stable-6] 📝 Add missing commas to documentation (#6960)
📝 Add missing commas to documentation (#6955)

(cherry picked from commit 8a344ea036)

Co-authored-by: Dov Benyomin Sohacheski <b@kloud.email>
2023-07-16 14:39:06 +02:00
patchback[bot]
b0898e5c51 [PR #6954/9abdc5a9 backport][stable-6] CI: Stop restricting idna (#6957)
CI: Stop restricting idna (#6954)

Stop restricting idna.

(cherry picked from commit 9abdc5a995)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-16 14:38:51 +02:00
patchback[bot]
eca1d0191f [PR #6956/0be71628 backport][stable-6] Removal of myself as maintainer (#6965)
Removal of myself as maintainer (#6956)

* Removal of myself as maintainer

* Added the ignore propery to satisfy the tests

(cherry picked from commit 0be7162848)

Co-authored-by: Werner Dijkerman <iam@werner-dijkerman.nl>
2023-07-16 14:38:36 +02:00
patchback[bot]
08036e7f65 [PR #6883/c70edfa8 backport][stable-6] Fix for get_volume_inventory (#6947)
Fix for get_volume_inventory (#6883)

* Fix for get_volume_inventory

* Adding changelog fragment

* Update changelogs/fragments/6883-redfish-utils-changing-variable-names-in-get-volume-inventory.yml

---------

Co-authored-by: Kushal <t-s.kushal@hpe.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit c70edfa84b)

Co-authored-by: TSKushal <44438079+TSKushal@users.noreply.github.com>
2023-07-15 17:55:37 +02:00
patchback[bot]
3c6c9ba425 [PR #6935/24feb1dd backport][stable-6] machinectl become plugin: mark as require_tty (#6941)
machinectl become plugin: mark as require_tty (#6935)

Mark machinectl become plugin as require_tty.

(cherry picked from commit 24feb1dd10)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-15 16:27:19 +02:00
patchback[bot]
3eeb0009cb [PR #6937/e427857d backport][stable-6] CI: remove no longer needed ignore (#6938)
CI: remove no longer needed ignore (#6937)

Remove no longer needed ignore.

(cherry picked from commit e427857db7)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-15 12:51:10 +02:00
patchback[bot]
c92215d339 [PR #6713/f6ee2177 backport][stable-6] pacman: support yay as root (#6895)
* pacman: support yay as root (#6713)

* pacman: support yay as root

* make pylint happy

* minor adjustments

* rollback some test actions

* removal of user and pkgs in handlers

* add comment to note

* add changelog frag

* fix doc

* Update tests/integration/targets/pacman/tasks/yay-become.yml

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

* Update tests/integration/targets/pacman/tasks/yay-become.yml

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

* simplify pkg install in int. tests

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f6ee2177a2)

* Switch to old markup.

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-08 18:09:50 +02:00
patchback[bot]
1a4ae5e9aa [PR #6785/704a3019 backport][stable-6] Handle pkg_info(1) error message "Can't find" (#6892)
Handle pkg_info(1) error message "Can't find" (#6785)

* Handle pkg_info(1) error message "Can't find"

* Update plugins/modules/openbsd_pkg.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 704a3019b7)

Co-authored-by: Rafael Sadowski <rafael@sizeofvoid.org>
2023-07-08 18:09:34 +02:00
patchback[bot]
9ecfa370ff [PR #6811/fc74f9a4 backport][stable-6] [datadog_downtime] - added 'type' to recurrence object when rrule param is present (#6890)
[datadog_downtime] - added 'type' to recurrence object when rrule param is present (#6811)

* added 'type' to recurrence object when rrule param is present

* formatting cleanup

(cherry picked from commit fc74f9a4f2)

Co-authored-by: Simon Keil <freezer_xx@gmx.de>
2023-07-08 18:09:21 +02:00
patchback[bot]
f3828ebdd7 [PR #6824/59479b4a backport][stable-6] chroot: added an example (#6898)
chroot: added an example (#6824)

* chroot: added an example

Added a simple example of chroot connection plugin

Fixes: #6365

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>

* Apply suggestions from code review

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

---------

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 59479b4abd)

Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com>
2023-07-08 18:09:04 +02:00
patchback[bot]
7b71ffa1c4 [PR #6838/49349fce backport][stable-6] proxmox: default value when checking for dict key (#6885)
proxmox: default value when checking for dict key (#6838)

* proxmox: default value when checking for dict key

* add changelog frag

(cherry picked from commit 49349fce5e)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-07-08 10:10:08 +02:00
patchback[bot]
d7494bb9e4 [PR #6874/53c1ed18 backport][stable-6] Temporarily disable pipx tests (#6876)
Temporarily disable pipx tests (#6874)

Temporarily disable pipx tests.

(cherry picked from commit 53c1ed184d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-07 08:02:43 +02:00
patchback[bot]
443a1c3ed7 [PR #6769/9d8bec14 backport][stable-6] nmcli: fix empty list to replace / remove values (#6868)
nmcli: fix empty list to replace / remove values (#6769)

(cherry picked from commit 9d8bec14c0)

Co-authored-by: genofire <geno+dev@fireorbit.de>
2023-07-06 21:37:25 +02:00
patchback[bot]
177e327c24 [PR #6827/216962a9 backport][stable-6] proxmox_kvm: Add required timeout arg when force deleting (#6865)
proxmox_kvm: Add required timeout arg when force deleting (#6827)

* Add required timeout arg when force deleting

* Add changelog fragment

* Update changelogs/fragments/6827-proxmox_kvm-force-delete-bug-fix.yaml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 216962a98c)

Co-authored-by: Drew Brown <drew@drewburr.com>
2023-07-06 21:37:15 +02:00
patchback[bot]
6ff4b479ab [PR #6854/99a35b16 backport][stable-6] Add example for github_key in a single task (#6859)
Add example for github_key in a single task (#6854)

* Add example for github_key in a single task

* Update plugins/modules/github_key.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 99a35b1664)

Co-authored-by: Seige <charliefjennings+git@gmail.com>
2023-07-06 08:03:00 +02:00
patchback[bot]
feb8d421dc [PR #6847/41e3f4d5 backport][stable-6] htpasswd: add integration tests (#6849)
htpasswd: add integration tests (#6847)

(cherry picked from commit 41e3f4d5fa)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-07-04 20:31:27 +02:00
patchback[bot]
d633f6c4c8 [PR #6839/e5dc6978 backport][stable-6] proxmox module utils: better error msg when token fails with old proxmoxer (#6845)
proxmox module utils: better error msg when token fails with old proxmoxer (#6839)

* proxmox module utils: clear msg when token fails with old proxmoxer

* add changelog frag

* better way to determine version

(cherry picked from commit e5dc697887)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-07-03 20:57:36 +00:00
patchback[bot]
3405b24fa6 [PR #6832/92ea63e2 backport][stable-6] Revert "proxmox_kvm: remove non-working example (#6498)" (#6833)
Revert "proxmox_kvm: remove non-working example (#6498)" (#6832)

This reverts commit 61a0dc4370.

(cherry picked from commit 92ea63e20b)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-03 05:59:26 +02:00
patchback[bot]
540c92fa62 [PR #6774/3fd4cdb1 backport][stable-6] locale_gen: works with C.UTF-8 (#6817)
locale_gen: works with C.UTF-8 (#6774)

* locale_gen: fix

* test working with C.UTF-8

* working with locale eo

* handle C.UTF-8 edge cases

* grammatic pedantism

* add changelog frag

* add doc about specific OS support

* update changelog frag

(cherry picked from commit 3fd4cdb119)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-06-30 13:13:13 +02:00
patchback[bot]
8cf2358fb1 [PR #6691/89ad18d1 backport][stable-6] random_string docs to say it's cryptographically secure (#6815)
random_string docs to say it's cryptographically secure (#6691)

Modify random_string docs to state that randomness is cryptographically secure

(cherry picked from commit 89ad18d1a7)

Co-authored-by: Matthew Davis <7035647+mdavis-xyz@users.noreply.github.com>
2023-06-30 06:39:20 +02:00
patchback[bot]
2d92ab91eb [PR #6804/c4a2801f backport][stable-6] Remove pre-commit config (#6806)
Remove pre-commit config (#6804)

Remove pre-commit config.

(cherry picked from commit c4a2801f99)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-06-29 05:52:45 +02:00
patchback[bot]
d03abae7a1 [PR #6719/22efbcc6 backport][stable-6] Fixing bug in get_volume_inventory (#6791)
Fixing bug in get_volume_inventory (#6719)

* Fixing bug in get_volume_inventory

* Adding changelog fragment

* sanity fix

* Update changelogs/fragments/6719-redfish-utils-fix-for-get-volume-inventory.yml

Agreed

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

* Updating changelog fragment

* Update changelogs/fragments/6719-redfish-utils-fix-for-get-volume-inventory.yml

Agreed

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

* Updating changes as per PR comments

* PR comment changes

---------

Co-authored-by: Kushal <t-s.kushal@hpe.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 22efbcc627)

Co-authored-by: TSKushal <44438079+TSKushal@users.noreply.github.com>
2023-06-27 07:08:11 +02:00
patchback[bot]
d7efa7eb13 [PR #6772/93f5a48b backport][stable-6] Redfish: Filter empty account slots from ListUsers (#6793)
Redfish: Filter empty account slots from ListUsers (#6772)

* Redfish: Filter empty account slots from ListUsers

Signed-off-by: Mike Raineri <michael.raineri@dell.com>

* Update 6771-redfish-filter-empty-account-slots.yml

* Update changelogs/fragments/6771-redfish-filter-empty-account-slots.yml

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

---------

Signed-off-by: Mike Raineri <michael.raineri@dell.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 93f5a48b8c)

Co-authored-by: Mike Raineri <mraineri@gmail.com>
2023-06-27 07:07:56 +02:00
patchback[bot]
a9a9e723e5 [PR #6770/70e2048d backport][stable-6] proxmox_disk: fix failure to create cdrom (#6795)
proxmox_disk: fix failure to create cdrom (#6770)

* proxmox_disk: fix failure to create cdrom

* Add changelog fragment 6770

* Update changelogs/fragments/6770-proxmox_disk_create_cdrom.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 70e2048d8c)

Co-authored-by: exodious <10215736+exodious@users.noreply.github.com>
2023-06-27 07:07:32 +02:00
patchback[bot]
3d87fbf6f9 [PR #6788/7b404fd4 backport][stable-6] CI: Remove Fedora 37 from devel; add Fedora 38 (#6789)
CI: Remove Fedora 37 from devel; add Fedora 38 (#6788)

Remove Fedora 37 from devel; add Fedora 38.

(cherry picked from commit 7b404fd45d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-06-26 22:59:00 +02:00
patchback[bot]
9e6960639f [PR #6758/08fa05f0 backport][stable-6] rhsm_repository: add an initial unit test (#6780)
rhsm_repository: add an initial unit test (#6758)

So far there are no tests for the rhsm_repository module, which makes it
difficult to do even basic changes. Hence, add an initial version of
unit tests, heavily based on the approach of the redhat_subscription
unit tests.

(cherry picked from commit 08fa05f05f)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2023-06-24 16:32:36 +02:00
patchback[bot]
7074a52721 [PR #6775/cfaeed04 backport][stable-6] Bump AZP container (#6777)
Bump AZP container (#6775)

Bump AZP container.

(cherry picked from commit cfaeed0492)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-06-24 16:29:46 +02:00
patchback[bot]
d18afe6746 [PR #6759/f88f4008 backport][stable-6] ipify_facts: skip tests on Python 2.6 (#6761)
ipify_facts: skip tests on Python 2.6 (#6759)

Needs some special requirements on Python 2.6 so that it can contact the server.

These seem to be installed when running all tests. I don't want to figure out what exactly
is missing, so let's just skip the tests on Python 2.6 for now.

(cherry picked from commit f88f40086d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-06-21 10:42:47 +02:00
patchback[bot]
ee03af599c [PR #6748/806f6da1 backport][stable-6] icinga2_host: fix a key error when modifying an existing host (#6752)
icinga2_host: fix a key error when modifying an existing host (#6748)

* Initialize `template` variable. Add changelog fragment.

* Update changelogs/fragments/6286-icinga2_host-template-and-template-vars.yml

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

* icinga2_host: fix a key error when updating a host

* Changelog fragment.

* Update changelog fragment with correct PR number.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 806f6da16b)

Co-authored-by: yoannlr <32494673+yoannlr@users.noreply.github.com>
2023-06-20 19:23:06 +02:00
patchback[bot]
42c643ddda [PR #6676/ffb9b6ff backport][stable-6] rhsm_repository: update returned "repositories" when using "purge=true" (#6745)
rhsm_repository: update returned "repositories" when using "purge=true" (#6676)

In case the "purge" option was enabled, the "repositories" element in
the returned JSON was not updated with the repositories disabled by that
option.

(cherry picked from commit ffb9b6ff96)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2023-06-20 08:44:16 +02:00
patchback[bot]
a7d89fc1ee [PR #6739/068a799b backport][stable-6] Add RHEL 8.7, 8.8, and 9.2 to CI (#6742)
Add RHEL 8.7, 8.8, and 9.2 to CI (#6739)

* Add RHEL 8.7, 8.8, and 9.2 to CI.

* Add more ignores.

* Disable another test.

(cherry picked from commit 068a799bba)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-06-20 02:21:41 +02:00
Felix Fontein
d4477615a9 Add stable-2.15. 2023-06-19 21:54:38 +02:00
Felix Fontein
c84738324e Add release summary for 6.6.3. 2023-06-19 21:37:37 +02:00
Felix Fontein
0c3ae48f85 Next expected release is 6.6.3. 2023-06-19 20:13:10 +02:00
Felix Fontein
a3c711491a Release 6.6.2. 2023-06-19 19:29:50 +02:00
Felix Fontein
d6a57882d2 Prepare 6.6.2 release. 2023-06-19 19:12:11 +02:00
patchback[bot]
edbef2266d [PR #6735/9642be8b backport][stable-6] Update Datadog downtime URL (#6737)
Update Datadog downtime URL (#6735)

(cherry picked from commit 9642be8b19)

Co-authored-by: Pedro Dias <61794382+diasp-ppb@users.noreply.github.com>
2023-06-19 18:40:42 +02:00
patchback[bot]
2b88ee01d3 [PR #6575/f710a10f backport][stable-6] ini_file: try using inactive option before creating a new one (#6728)
ini_file: try using inactive option before creating a new one (#6575)

* ini_file: make inactive options as active if they exist, instead of creating a new option entry

Add changelog fragment

* Update changelogs/fragments/ini_file-use-inactive-options-when-possible.yml

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

* Fix test

* Update tests

* Fix spelling

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f710a10f25)

Co-authored-by: njutn95 <njutn95@yahoo.com>
2023-06-19 08:01:18 +02:00
patchback[bot]
afd24ccd35 [PR #6712/e85b0080 backport][stable-6] gitlab_group => Make most options optional (#6724)
gitlab_group => Make most options optional (#6712)

* Make most options optional as they should be

* Add filter to create_group instead

* Remove whitespace

* Add changelog fragment

* Added description and extension to fragment

* Update changelogs/fragments/6712-gitlab_group-filtered-for-none-values.yml

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

* Update plugins/modules/gitlab_group.py

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

* Make Python 2.6 compatible.

* Another shot at compatibility.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit e85b008036)

Co-authored-by: Intellium <w.moeken@moeken.eu>
2023-06-18 21:27:29 +02:00
Felix Fontein
26ada26df1 ansible-core devel no longer supports the Ubuntu 20.04 VM.
(cherry picked from commit 3b13c30112)
2023-06-16 06:18:10 +02:00
patchback[bot]
59999a89f1 [PR #6662/bb216934 backport][stable-6] csv module utils: detect unicode BOM in content (#6694)
csv module utils: detect unicode BOM in content (#6662)

* csv module utils: detect unicode BOM in content

* fix handling of py2

* fix comment

* add changelog frag

* add missing link

* simplification

(cherry picked from commit bb2169340d)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-06-15 08:13:24 +02:00
patchback[bot]
e1f4be1e01 [PR #6688/032996e0 backport][stable-6] Fix composites comparison for role in is_struct_included keycloak.py … (#6689)
Fix composites comparison for role in is_struct_included keycloak.py … (#6688)

* Fix composites comparison for role in is_struct_included keycloak.py function

* Add changelog fragment and unit tests

* Update changelogs/fragments/6688-is-struct-included-bug-in-keycloak-py.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 032996e005)

Co-authored-by: Philippe Gauthier <philippe.gauthier@inspq.qc.ca>
2023-06-14 23:30:30 +02:00
patchback[bot]
e7e2f095ee [PR #6629/2cfbcb4e backport][stable-6] CI: ansible-core devel drops support for Python 3.5 (#6633)
CI: ansible-core devel drops support for Python 3.5 (#6629)

ansible-core devel drops support for Python 3.5.

(cherry picked from commit 2cfbcb4efd)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-06-07 06:59:41 +02:00
patchback[bot]
45200fc233 [PR #6620/91b69263 backport][stable-6] Fixed typo in record_values documentation (#6625)
Fixed typo in record_values documentation (#6620)

(cherry picked from commit 91b692634e)

Co-authored-by: Tristan Pinaudeau <tristan@tic.sh>
2023-06-06 07:39:13 +02:00
patchback[bot]
154d1b7024 [PR #6613/36e8653c backport][stable-6] Minor bitwarden plugin req. docs addition (#6622)
Minor bitwarden plugin req. docs addition (#6613)

The Bitwarden CLI requires a `login` followed by an `unlock` operation.
The later will display a message regarding setting (and exporting) the
`$BW_SESSION` env. var. When using the `bitwarden` lookup plugin, having
the env. var. set and available (exported) to Ansible is critical.
Without it, the plugin will simply return the error:

`Bitwarden Vault locked. Run 'bw unlock'.`

Make this clearer in the requirement documentation.

Signed-off-by: Chris Evich <cevich@redhat.com>
(cherry picked from commit 36e8653cf7)

Co-authored-by: Chris Evich <1183438+cevich@users.noreply.github.com>
2023-06-06 06:04:51 +02:00
patchback[bot]
541fcec900 [PR #6603/47f39675 backport][stable-6] Update BOTMETA.yml (#6606)
Update BOTMETA.yml (#6603)

Stepping down from maintaining parted module

(cherry picked from commit 47f39675a9)

Co-authored-by: Robert Osowiecki <robert.osowiecki@gmail.com>
2023-05-30 22:19:33 +02:00
patchback[bot]
dc6ccbea63 [PR #6584/a6dd7d78 backport][stable-6] Move ansible-core 2.12 to EOL CI (#6586)
Move ansible-core 2.12 to EOL CI (#6584)

* https://github.com/ansible/ansible/pull/79734 has been merged and backported for all branches but stable-2.10 and stable-2.11.

* Move ansible-core 2.12 to EOL CI.

(cherry picked from commit a6dd7d789b)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-05-29 18:39:15 +02:00
patchback[bot]
6cb044ac13 [PR #6568/27fe14bf backport][stable-6] Fix get_user_by_username in keycloak library (#6582)
Fix get_user_by_username in keycloak library (#6568)

* Fix get_user_by_username in keycloak library for keycloak_user_rolemapping module

* Add changelog fragment for keycloak.py bug fix

(cherry picked from commit 27fe14bfc1)

Co-authored-by: Philippe Gauthier <philippe.gauthier@inspq.qc.ca>
2023-05-29 15:58:56 +02:00
patchback[bot]
af78b2068a [PR #6578/ab046755 backport][stable-6] CI: restrict to python-nomad < 2.0.0 for Python < 3.7 (#6580)
CI: restrict to python-nomad < 2.0.0 for Python < 3.7 (#6578)

Restrict to python-nomad < 2.0.0 for Python < 3.7.

(cherry picked from commit ab046755bb)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-05-29 15:58:44 +02:00
Felix Fontein
73569b1c36 Next expected release is 6.6.2. 2023-05-22 22:33:13 +02:00
Felix Fontein
5914c1df8e Release 6.6.1. 2023-05-22 22:14:12 +02:00
patchback[bot]
f847531a35 [PR #6534/a9fd9f89 backport][stable-6] added handling of zypper exitcode 102: ZYPPER_EXIT_INF_REBOOT_NEEDED (#6559)
added handling of zypper exitcode 102: ZYPPER_EXIT_INF_REBOOT_NEEDED (#6534)

* added handling of zypper exitcode 102: ZYPPER_EXIT_INF_REBOOT_NEEDED - Returned after a successful installation of a patch which requires reboot of computer.

The exitcode 102 will be treated exactly like 0 by the module internally now, and the changed status will be reported correctly. However, since I preserve the rc 102 in the retvals to allow the playbook to react to the requested reboot, the task must still include a "failed_when: zypper_cmd.rc not in [0, 102]" to not fail in this case.

* removed trailing whitespaces

* added changelogs fragment

* Fix typo.

Co-authored-by: Alex <alexgubin@gmx.de>

* Add URL.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alex <alexgubin@gmx.de>
(cherry picked from commit a9fd9f8982)

Co-authored-by: tover99 <101673769+tover99@users.noreply.github.com>
2023-05-22 04:54:14 +00:00
patchback[bot]
df01cde23d [PR #6554/29790df5 backport][stable-6] Don't require api_password when api_token_id is used in proxmox_tasks_info (#6561)
Don't require api_password when api_token_id is used in proxmox_tasks_info (#6554)

* Don't require api_password when api_token_id is used in proxmox_tasks_info

* Add changelog fragment

* Fix casing.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 29790df583)

Co-authored-by: Sergei Antipov <greendayonfire@gmail.com>
2023-05-22 04:54:03 +00:00
patchback[bot]
cdd9ced441 [PR #6548/5f968fb0 backport][stable-6] portage: fix changed_use and newuse not triggering rebuilds (#6008) (#6557)
portage: fix changed_use and newuse not triggering rebuilds (#6008) (#6548)

* portage: fix changed_use and newuse not triggering rebuilds (#6008)

* Add changelog fragment

* Update changelogs/fragments/6548-portage-changed_use-newuse.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 5f968fb075)

Co-authored-by: s-hamann <10639154+s-hamann@users.noreply.github.com>
2023-05-21 22:02:37 +02:00
patchback[bot]
dfb61b283d [PR #6527/cb1e6376 backport][stable-6] nmcli: Fix bond option xmit_hash_policy (#6555)
nmcli: Fix bond option xmit_hash_policy (#6527)

* nmcli_bond_xmit_fix

* Create 6527-nmcli-bond-fix-xmit_hash_policy.yml

add changelog

* Update changelogs/fragments/6527-nmcli-bond-fix-xmit_hash_policy.yml

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

* unit tests extend

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit cb1e6376db)

Co-authored-by: Sergey Putko <mail@psvlan.com>
2023-05-21 17:23:56 +02:00
patchback[bot]
fe7b151a26 [PR #6549/d643bd57 backport][stable-6] Switch to Ansible Galaxy compatible requirements files for tests (#6551)
Switch to Ansible Galaxy compatible requirements files for tests (#6549)

Switch to Ansible Galaxy compatible requirements files for tests.

(cherry picked from commit d643bd5794)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-05-21 15:09:20 +02:00
patchback[bot]
9b983fba86 [PR #6538/08377df7 backport][stable-6] Fix code formatting in documentation of dconf.py (#6542)
Fix code formatting in documentation of dconf.py (#6538)

* Fix code formatting in documentation of dconf.py

* Update plugins/modules/dconf.py

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

* Update plugins/modules/dconf.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 08377df7a5)

Co-authored-by: Tamerlan Bimzhanov <bimzhanovt.net@gmail.com>
2023-05-20 14:57:38 +02:00
patchback[bot]
2d27dbd9ea [PR #6535/ddca52ee backport][stable-6] CI: include has finally been removed in ansible-core devel (#6536)
CI: include has finally been removed in ansible-core devel (#6535)

include: → include_tasks:.
(cherry picked from commit ddca52ee15)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-05-19 20:45:25 +02:00
patchback[bot]
55cbccf0fc [PR #6478/c740f89d backport][stable-6] CI: Add FreeBSD 13.2 (#6508)
CI: Add FreeBSD 13.2 (#6478)

* Add FreeBSD 13.2.

* Skip FreeBSD 13.2 for iso_extract tests.

* Fix autoremove test: m4 is no longer a dependency, or it was already installed beforehand.

* Also disable the jail tests for FreeBSD 13.2.

(cherry picked from commit c740f89df3)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-05-09 20:10:00 +02:00
Felix Fontein
675860c392 Remove stable-4 from CI cron; add stable-7 instead.
(cherry picked from commit 9708561131)
2023-05-08 21:40:57 +02:00
patchback[bot]
5e8914e00c [PR #6503/6558c998 backport][stable-6] fix typo in terraform docs (#6506)
fix typo in `terraform` docs (#6503)

fix typo

The [Docs](https://docs.ansible.com/ansible/latest/collections/community/general/terraform_module.html) have a typo in the examples. `camplex_vars` should be spelled `complex_vars`.

Since many people are copy-and-pasting from docs and modify them to their needs this typo is an annoyance for users.

(cherry picked from commit 6558c9981f)

Co-authored-by: Max Juhlke <max.juhlke@gmail.com>
2023-05-08 20:22:34 +02:00
patchback[bot]
c0230342b4 [PR #6491/9f3c86a5 backport][stable-6] dconf - Try to find a Python interpreter that has gi.repository.GLib (#6504)
dconf - Try to find a Python interpreter that has gi.repository.GLib (#6491)

* dconf - Try to find a Python interpreter that has gi.repository.GLib

If we're invoked in a Python interpreter that doesn't have access to
`gi.repository.GLib`, try to find one that does and respawn the task
in that interpreter.

* ChangeLog fragment for #6491

* Update changelogs/fragments/6491-dconf-respawn.yml

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

* Simplify import code

* Get rid of ModuleNotFoundError

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 9f3c86a589)

Co-authored-by: Jonathan Kamens <jik@kamens.us>
2023-05-08 19:57:32 +02:00
Felix Fontein
ebf15447f0 Prepare 6.6.1 release. 2023-05-08 06:49:33 +02:00
patchback[bot]
86d10f53fd [PR #6498/61a0dc43 backport][stable-6] proxmox_kvm: remove non-working example (#6501)
proxmox_kvm: remove non-working example (#6498)

Remove non-working example.

(cherry picked from commit 61a0dc4370)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-05-07 21:29:55 +02:00
patchback[bot]
d679f51018 [PR #6497/4e57240e backport][stable-6] terraform: fix warn() call (#6499)
terraform: fix warn() call (#6497)

Fix warn() call.

(cherry picked from commit 4e57240e9f)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-05-07 21:29:45 +02:00
patchback[bot]
e9e494e1ff [PR #6387/9c112308 backport][stable-6] Fixes #5143: xfs_quota fails to initialize new project quotas (#6495)
Fixes #5143: xfs_quota fails to initialize new project quotas (#6387)

This fix ensures that in case of a project quota, the corresponding project gets initialized, if required.

Signed-off-by: Christoph Fiehe <c.fiehe@eurodata.de>
Co-authored-by: Christoph Fiehe <c.fiehe@eurodata.de>
(cherry picked from commit 9c11230824)

Co-authored-by: cfiehe <cfiehe@users.noreply.github.com>
2023-05-06 07:20:03 +02:00
patchback[bot]
bf90b4e88a [PR #6479/57cfd1b4 backport][stable-6] deps module util: fix overzealous name cropping (#6489)
deps module util: fix overzealous name cropping (#6479)

Fix overzealous name cropping.

(cherry picked from commit 57cfd1b46d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-05-05 07:56:22 +02:00
patchback[bot]
874d7f7050 [PR #6456/fab717bb backport][stable-6] modules/portage: fix usage with withbdeps: false (#6480)
modules/portage: fix usage with withbdeps: false (#6456)

Using ``withbdeps: false`` was causing the underlying emerge command to
fail due to not passing an argument to the ``--with-bdeps`` flag.  Fix
by updating the logic for generating the emerge command arguments to
ensure that ``withbdeps: false`` results in a passing an ``n`` argument
with the ``--with-bdeps`` emerge flag.

(cherry picked from commit fab717bb2d)

Co-authored-by: Daniel Harding <dharding@living180.net>
2023-05-04 08:14:29 +02:00
patchback[bot]
3a19fbc89c [PR #6458/d254372d backport][stable-6] puppet: fix noop parameter error (#6481)
puppet: fix noop parameter error (#6458)

* puppet: fix noop parameter error

* add changelog frag

(cherry picked from commit d254372d37)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-05-04 08:14:19 +02:00
patchback[bot]
2d8e1339d1 [PR #6482/737d37e0 backport][stable-6] CI: Arch Linux now uses Python 3.11 (#6487)
CI: Arch Linux now uses Python 3.11 (#6482)

Arch Linux now uses Python 3.11.

(cherry picked from commit 737d37e019)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-05-04 08:12:38 +02:00
patchback[bot]
4892f954fa [PR #6472/cb81abc6 backport][stable-6] CI: Fix matrix entries (#6474)
CI: Fix matrix entries (#6472)

Fix CI matrix entries.

(cherry picked from commit cb81abc636)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-05-02 20:21:11 +02:00
patchback[bot]
6fd58ba388 [PR #6396/c411e125 backport][stable-6] Setup docker (#6466)
Setup docker (#6396)

* setup-docker: install and run docker inside integration test VMs

* must pip install requests to satisfy community.docker requirements

* add Ubuntu configuration to setup_docker

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

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

* docker_pacakges variable non-existent by default

* add setup_docker to keycloak_groups

* add setup_docker to keycloak_groups

* removed unused file tasks/nothing.yml

* add README

* add copyright notice to readme file

* Update tests/integration/targets/setup_docker/README.md

* rolled back the boilerplate disclaimer to mssql_script tasks/main.yml

(cherry picked from commit c411e12555)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-05-01 21:20:01 +02:00
patchback[bot]
49967547df [PR #6459/24efe6b9 backport][stable-6] Make sure that plugins/module_utils/deps.py is cleaned up before every test (#6462)
Make sure that plugins/module_utils/deps.py is cleaned up before every test (#6459)

Make sure that plugins/module_utils/deps.py is cleaned up before every test.

ci_complete

(cherry picked from commit 24efe6b9db)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-29 22:27:12 +02:00
patchback[bot]
492170b414 [PR #6442/b4628e27 backport][stable-6] awall: improve docs (#6455)
awall: improve docs (#6442)

* awall: improve docs

* Update plugins/modules/awall.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b4628e27b2)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-28 15:26:04 +02:00
patchback[bot]
25b9391fb4 [PR #6447/c58dda14 backport][stable-6] passwordstore plugin: vendor FileLock that was removed from ansible-core devel (#6450)
passwordstore plugin: vendor FileLock that was removed from ansible-core devel (#6447)

Vendor FileLock that was removed from ansible-core devel.

(cherry picked from commit c58dda14c2)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-28 12:17:47 +02:00
patchback[bot]
1e30afa92f [PR #6439/6e913a3b backport][stable-6] dnsimple_info: remove extraneous importorskip from test (#6446)
dnsimple_info: remove extraneous importorskip from test (#6439)

* dnsimple_info: remove extraneous importorskip from test

* remove yet another extraneous importorskip from test

(cherry picked from commit 6e913a3b28)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-28 10:21:00 +02:00
Felix Fontein
7d4e69cdf7 The next expected release will be 6.6.1. 2023-04-24 21:39:56 +02:00
Felix Fontein
ff23e41c21 Release 6.6.0. 2023-04-24 20:56:30 +02:00
Felix Fontein
3ce7d2fc7e Prepare 6.6.0 release. 2023-04-23 22:46:58 +02:00
patchback[bot]
20a9d120aa [PR #6403/eab39ffc backport][stable-6] iso_customize: fix integration test (#6425)
iso_customize: fix integration test (#6403)

* Fix bad parameters in integration test.

* Remove unrelated thing.

* Simply remove test.

(cherry picked from commit eab39ffc23)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-23 20:59:27 +02:00
patchback[bot]
f4a40592a1 [PR #6415/f0fcc91a backport][stable-6] zypper_repository: disable failing repository (#6424)
zypper_repository: disable failing repository (#6415)

* Disable failing repository from zypper_repository tests.

* Also disable repo file for >= 15.4.

* Simply disable file test for now.

(cherry picked from commit f0fcc91ac7)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-23 18:50:08 +02:00
patchback[bot]
3d5145e924 [PR #6414/69d7f19c backport][stable-6] Restrict jail tests for sysrc to certain FreeBSD versions (#6421)
Restrict jail tests for sysrc to certain FreeBSD versions (#6414)

Restrict jail tests for sysrc to certain FreeBSD versions.

(cherry picked from commit 69d7f19c74)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-23 18:49:58 +02:00
patchback[bot]
1ae5a2cd05 [PR #6413/0edc3e82 backport][stable-6] xfs_quota: uninstalling packages breaks tests on Alpine (#6418)
xfs_quota: uninstalling packages breaks tests on Alpine (#6413)

Uninstalling packages breaks tests on Alpine.

(cherry picked from commit 0edc3e820e)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-23 18:49:49 +02:00
patchback[bot]
75aa353281 [PR #6412/68614502 backport][stable-6] Fix kdeconfig tests (#6416)
Fix kdeconfig tests (#6412)

Fix kdeconfig tests.

(cherry picked from commit 6861450243)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-23 18:49:39 +02:00
patchback[bot]
5fe10915a8 [PR #6404/e49c6a33 backport][stable-6] ini_file: removing required=true for 'section' option (#6411)
ini_file: removing required=true for 'section' option (#6404)

Fix ini_file by removing required=true for 'section' option.

(cherry picked from commit e49c6a339e)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-23 18:49:32 +02:00
patchback[bot]
eca6494503 [PR #6401/486c47f9 backport][stable-6] rhsm_release: removing required=true for 'release' option (#6409)
rhsm_release: removing required=true for 'release' option (#6401)

Fix rhsm_release by removing required=true for 'release' option.

(cherry picked from commit 486c47f922)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-23 18:49:20 +02:00
patchback[bot]
b12d422fcc [PR #6390/c1b16d53 backport][stable-6] office_365_connector_card: Remove references to dev.outlook.com (#6407)
office_365_connector_card: Remove references to dev.outlook.com (#6390)

* office_365_connector_card: Remove references to dev.outlook.com

Remove references to the deprecated dev.outlook.com and update them to the relevant learn.microsoft.com links.

Closed #6262

* Fix PEP 8 line length issue

* Apply suggestions from PR review

* Update plugins/modules/office_365_connector_card.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit c1b16d534f)

Co-authored-by: Marc Sensenich <marc-sensenich@users.noreply.github.com>
2023-04-23 16:50:35 +02:00
patchback[bot]
33809395ab [PR #6256/bc228d82 backport][stable-6] Add keycloak_authz_authorization scope module (#6400)
Add keycloak_authz_authorization scope module (#6256)

* Add keycloak_authz_authorization scope module

This module allows managing Keycloak client authorization scopes. The client has
to have authorization enable for this to work.

* botmeta: make mattock maintainer of keycloak_authz_authorization_scope

* botmeta: add mattock to team_keycloak

* keycloak_authz_authorization_scope: documentation and code layout fixes

* keycloak_authz_authorization_scope: do not fail on names with whitespace

* keycloak_authz_authorization_scope: use url quote method

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

* keycloak_authz_authorization_scope: style fixes to documentation

* keycloak_authz_authorization_scope: do not claim check/diff mode support

* keycloak_authz_authorization_scope: fix documentation

* keycloak_authz_authorization_scope: support check_mode and diff_mode

* keycloak_authz_authorization_scope: use more common terminology

Most keycloak modules use before_<object_type> and desired_<object_type> to
designate current and desired states of objects. Do the same for authorization
scopes.

* keycloak_authz_authorization_scope: fixes to check_mode and docs

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit bc228d82be)

Co-authored-by: Samuli Seppänen <samuli.seppanen@gmail.com>
2023-04-23 14:59:59 +02:00
patchback[bot]
60fe6ebc3c [PR #6383/e7cc9964 backport][stable-6] deps module utils: add function failed() to retrieve dependencies check result (#6399)
deps module utils: add function failed() to retrieve dependencies check result (#6383)

* deps module utils: add function failed() to retrieve dependencies check result

* add changelog frag

(cherry picked from commit e7cc996470)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-23 14:53:38 +02:00
patchback[bot]
957f3e6eca [PR #6382/3e338a1c backport][stable-6] udm_dns_record: minor refactor (#6398)
udm_dns_record: minor refactor (#6382)

* udm_dns_record: minor refactor

* remove unused import

* improve ptr_record zone validation

* add changelog frag

* undo zone validation change as it breaks for IPv6 addresses

(cherry picked from commit 3e338a1cca)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-23 14:46:07 +02:00
patchback[bot]
dbd918865f [PR #6385/ad6ff9b0 backport][stable-6] cpanm: apply MH feature (#6395)
cpanm: apply MH feature (#6385)

* cpanm: apply MH feature

* add changelog frag

(cherry picked from commit ad6ff9b0c5)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-23 12:29:06 +02:00
patchback[bot]
46a83df85e [PR #6352/0eb33c28 backport][stable-6] Add support env variables for nmap inventory plugin (#6394)
Add support env variables for nmap inventory plugin (#6352)

* Add support env variables for nmap inventory plugin

* Add  changelogs/fragments file

* Rename support-env-variables-to-nmap-dynamic-inventoiry to 6351-support-env-variables-to-nmap-dynamic-inventoiry

* Add extension for changelog file

* Fix https://github.com/ansible-collections/community.general/pull/6352#discussion_r1167973326

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

* Fix https://github.com/ansible-collections/community.general/pull/6352#discussion_r1167973295

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

* Fix https://github.com/ansible-collections/community.general/pull/6352#discussion_r1167973265

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

* Fix https://github.com/ansible-collections/community.general/pull/6352#discussion_r1167973193

* Fix linter

* Fix https://github.com/ansible-collections/community.general/pull/6352#discussion_r1168014445

* Fix changelog fragment.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 0eb33c2839)

Co-authored-by: efrikin <sadeless@gmail.com>
2023-04-23 12:28:58 +02:00
patchback[bot]
57f262504d [PR #6318/114eb67f backport][stable-6] keycloak: Add option to create authentication sub-flow of type 'form flow' (#6393)
keycloak: Add option to create authentication sub-flow of type 'form flow' (#6318)

* keycloak: Improve API error message

* keycloak: Fix API error message

They key 'provider' is undefined.

* keycloak: Allow the creation of 'form-flow' authentication sub flows

To create something like keycloak's built-in registration flow,
we need to create a subflow with the type 'form-flow'.

* Add changelog fragment 6318

* Update changelogs/fragments/6318-add-form-flow.yml

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

* Update plugins/modules/keycloak_authentication.py

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

* Update plugins/modules/keycloak_authentication.py

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

* keycloak_authentication: Don't compare subFlowType

It is only useful for creation.

* Update changelogs/fragments/6318-add-form-flow.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 114eb67f58)

Co-authored-by: fachleitner <flo@fopen.at>
2023-04-23 12:28:49 +02:00
patchback[bot]
29671cb54c [PR #6322/1f2c7b17 backport][stable-6] Add a module to set the keycloak client scope type (#6392)
Add a module to set the keycloak client scope type (#6322)

The module keycloak_clientscope_type allows to set the client scope
types (optional/default) either on realm or client level.

(cherry picked from commit 1f2c7b1731)

Co-authored-by: Simon Pahl <simpahl@gmail.com>
2023-04-23 12:28:33 +02:00
patchback[bot]
fd91e94279 [PR #6203/f4dd4d5a backport][stable-6] Add append option to ipa_hostgroup module (#6391)
Add append option to ipa_hostgroup module (#6203)

* Add append option to ipa_hostgroup module

Signed-off-by: Jan Sobczak <jan.sobczak@soit.com.pl>

* Update plugins/modules/ipa_hostgroup.py

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

* Update plugins/modules/ipa_hostgroup.py

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

* Add changelog fragment

Signed-off-by: Jan Sobczak <jan.sobczak@soit.com.pl>

* Move choices argument to previous line

Signed-off-by: Jan Sobczak <jan.sobczak@soit.com.pl>

* Update plugins/modules/ipa_hostgroup.py

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

* Update changelogs/fragments/6203-add-append-option-to-ipa-hostgroup.yml

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

---------

Signed-off-by: Jan Sobczak <jan.sobczak@soit.com.pl>
Co-authored-by: Jan Sobczak <jan.sobczak@soit.com.pl>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f4dd4d5ace)

Co-authored-by: Jan Sobczak <9196392+jansobczak@users.noreply.github.com>
2023-04-22 23:07:52 +02:00
patchback[bot]
b001e36fb3 [PR #6381/9b493d53 backport][stable-6] iptables_state: add comment sanity ignore files (#6386)
iptables_state: add comment sanity ignore files (#6381)

add comment to iptables_state line in the sanity ignore files

(cherry picked from commit 9b493d53a9)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-20 19:25:27 +02:00
patchback[bot]
5f63476404 [PR #6370/484f642c backport][stable-6] Redfish iDRAC: Allow for specifying an exact manager with 'resource_id' for CreateBiosConfigJob (#6380)
Redfish iDRAC: Allow for specifying an exact manager with 'resource_id' for CreateBiosConfigJob (#6370)

Allow for specifying an exact manager with 'resource_id' for CreateBiosConfigJob

Signed-off-by: Mike Raineri <michael.raineri@dell.com>
(cherry picked from commit 484f642c23)

Co-authored-by: Mike Raineri <michael.raineri@dell.com>
2023-04-20 07:50:42 +02:00
patchback[bot]
eff452e4a5 [PR #6361/4171418e backport][stable-6] snap_alias: fix regex expression when listing aliases (#6378)
snap_alias: fix regex expression when listing aliases (#6361)

* snap_alias: fix regex expression when listing aliases

* simplify regex, add changelog

(cherry picked from commit 4171418e37)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-20 07:27:53 +02:00
patchback[bot]
d393b16064 [PR #6303/996fc8c1 backport][stable-6] pipx: fix state=latest w/ install_deps=true (#6377)
pipx: fix state=latest w/ install_deps=true (#6303)

* pipx and pipx_info: Document that modules require pipx 0.16.2.1 or above

Since their introduction, these modules rely on 'pipx list --json' to
return machine-readable output about installed pipx applications. That
functionality was introduced in 0.16.2, along with a critical bug fix
(invalid json) in 0.16.2.1.

* pipx: fix state=latest with install_deps=true

"pipx upgrade" stopped supporting the "--include-deps" option
("install_deps" in the ansible module) in pipx 0.15
(https://pypa.github.io/pipx/changelog/#01500).

The lack of support causes the pipx module to fail if attempting to use
state=latest with install_deps, since the parameter is passed to both
pipx install (fine) and pipx upgrade (fails).

* Add changelog fragment

(cherry picked from commit 996fc8c18e)

Co-authored-by: Paul Aurich <paul@darkrain42.org>
2023-04-20 05:21:40 +00:00
patchback[bot]
40b5967fc3 [PR #5832/ae5090d9 backport][stable-6] New modules btrfs_subvolume / btrfs_info (#6376)
New modules btrfs_subvolume / btrfs_info (#5832)

* Initial implementation for new modules btrfs_subvolume and btrfs_info

* Improve/flesh out documentation. Add ability to target filesystem by uuid, label or device. Update tests to test targeting filesystem by each supported parameter and when only mountpoint.

* Updates for btrfs modules. Add missing copyright notices. Switch options to contains in return documentation. Update btrfs_subvolume to always use closest parent mount.

* Add maintainers for btrfs module(s) and remove unused class member cause lint failure.

* Add changelog fragment. Attempt to only run against the VMs as part of CI.

* Updates per code review. Remove changelog fragment. Switch use of map to list comprehension. Add trailing comma to last item in multi-line dicts. Clean up documentation with complete senstences for descriptions and correct/consistent use of macros.

* Improved error handling in btrfs_subvolume module: add custom exception type, favor exceptions over immediate call to fail_json and add single top level return for failure scenarios. Normalize name and snapshot_source parameters early in module execution and remove unecessary duplicate normalization throughout processing.

* Add azp/posix/3 to aliases per feedback

* Clean up automatic mounting. Prevent automount when check_mode=True. Immediately fail if a mount is identified as required and automount=True. Identify the minimal subset of subvolumes that need to be mounted instead of just finding a single common root.

* Skip btrfs_subvolume integration tests if btrfs-progs isn't successfully installed.

* Bump version_added for btrfs modules to 6.6.0. Ensure consistent trailing punctuation for module descriptions and document check_mode behavior as attribute description rather than a module level note.

* Remove unused imports from btrfs_subvolume module.

* Fix import.

* Docs improvements.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit ae5090d90e)

Co-authored-by: Gregory Furlong <50386272+gnfzdz@users.noreply.github.com>
2023-04-20 07:12:45 +02:00
patchback[bot]
ccabc342b9 [PR #6286/76dd465e backport][stable-6] icinga2_host: make use of templates and template vars (#6375)
icinga2_host: make use of templates and template vars (#6286)

* icinga2_host: make use of templates, append vars instead of replacing all vars array.

* Initialize `template` variable. Add changelog fragment.

* Update changelogs/fragments/6286-icinga2_host-template-and-template-vars.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 76dd465e08)

Co-authored-by: yoannlr <32494673+yoannlr@users.noreply.github.com>
2023-04-20 06:59:05 +02:00
patchback[bot]
570f6a8791 [PR #6338/fe798e22 backport][stable-6] parted: improve docs (#6373)
parted: improve docs (#6338)

(cherry picked from commit fe798e22a6)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-20 06:34:38 +02:00
patchback[bot]
b10cf1e357 [PR #6289/6e0bc4f4 backport][stable-6] Remove --app by flatpak check if already installed (ansible-collectio… (#6372)
Remove --app by flatpak check if already installed (ansible-collectio… (#6289)

* Remove --app by flatpak check if already installed (ansible-collections#6265)

* Add Changelogfragment

* Fix syntax

* Update changelogs/fragments/6289-bugfix-flatpak-check-if-already-installed.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 6e0bc4f45c)

Co-authored-by: Svenum <43136984+Svenum@users.noreply.github.com>
2023-04-20 06:34:29 +02:00
patchback[bot]
acfe464a31 [PR #6366/1aa94a5a backport][stable-6] redhat_subscription: document the security of the registration (#6368)
redhat_subscription: document the security of the registration (#6366)

(cherry picked from commit 1aa94a5a1d)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2023-04-19 21:14:34 +02:00
patchback[bot]
f32a8dc740 [PR #6367/087c5a53 backport][stable-6] Redfish iDRAC: Added job_id to response for CreateBiosConfigJob (#6369)
Redfish iDRAC: Added job_id to response for CreateBiosConfigJob (#6367)

* Redfish iDRAC: Added job_id to response for CreateBiosConfigJob

Signed-off-by: Mike Raineri <michael.raineri@dell.com>

* YAML fix to changelog fragment

Signed-off-by: Mike Raineri <michael.raineri@dell.com>

---------

Signed-off-by: Mike Raineri <michael.raineri@dell.com>
(cherry picked from commit 087c5a53d5)

Co-authored-by: Mike Raineri <michael.raineri@dell.com>
2023-04-19 21:14:29 +02:00
patchback[bot]
ea8f109056 [PR #6336/59cb5b2d backport][stable-6] dconf: minor refactor (#6353)
dconf: minor refactor (#6336)

* dconf: minor refactor

* add changelog frag

* Update plugins/modules/dconf.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 59cb5b2d6f)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-17 04:05:24 +00:00
patchback[bot]
7e7b84348b [PR #6337/67b921e4 backport][stable-6] parted: add integration test (#6348)
parted: add integration test (#6337)

* parted: add integration test

* Update tests/integration/targets/parted/aliases

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

* adjusted for Alpine

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 67b921e4e6)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-16 22:09:49 +02:00
patchback[bot]
baf552337d [PR #6345/ee11847c backport][stable-6] Do extra docs validation; explicitly disallow semantic markup in docs (#6350)
Do extra docs validation; explicitly disallow semantic markup in docs (#6345)

* Do extra docs validation. Explicitly disallow semantic markup in docs.

* Forgot to add new requirement.

* Fix prefixes.

* Remove superfluous condition.

* TEMP - make CI fail.

* Revert "TEMP - make CI fail."

This reverts commit 14f4d6b503.

* Remove unnecessary import.

* Make sure ANSIBLE_COLLECTIONS_PATH is set.

* Make sure sanity tests from older Ansible versions don't complain.

(cherry picked from commit ee11847c7e)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-16 19:45:21 +02:00
patchback[bot]
3ff9161ab0 [PR #6334/64e797d0 backport][stable-6] dig: Support multiple domains in a single lookup (#6346)
dig: Support multiple domains in a single lookup (#6334)

* dig: Support multiple domains in a single lookup (#6334)

The docs for this plugin indicated that multiple domains could be
specified at once, but the code did not support multiple domains.

* Address review feedback.

(cherry picked from commit 64e797d077)

Co-authored-by: Kevin P. Fleming <kpfleming@users.noreply.github.com>
2023-04-16 15:34:50 +02:00
patchback[bot]
aa8728b22c [PR #6300/a35542d0 backport][stable-6] Rundeck modules fixes and improvements (#6343)
Rundeck modules fixes and improvements (#6300)

* feat: add token alias to api_token parameter

* fix: return (None, info) on empty content response

* feat: update the modules for using module_utils.rundeck funcs

* docs: add changelog fragment

* fix: add trailing commas

* fix: changelog fragment invalid syntax

* fix: changelog typos

* fix: remove token aliases from api_token

* fix: add token alias to api_token param

* fix: add partial overwrite of params and docs

(cherry picked from commit a35542d0d1)

Co-authored-by: Phillipe Smith <phsmithcc@gmail.com>
2023-04-16 13:47:47 +02:00
patchback[bot]
590ff351b4 [PR #6294/cb3ca05b backport][stable-6] one_vm: fix syntax error when creating VMs with a more complex template (#6342)
one_vm: fix syntax error when creating VMs with a more complex template (#6294)

* one_vm: fix syntax error when creating VMs with a more complex template

with more complex templates that make use of quoted strings the new
"render" method fails to produce a template that is accepted by
OpenNebula.  ==> escape double quotes in strings to make OpenNebula
happy again.

I also tested whether newlines need to be escaped, looks like they are
fine as they are.

Fixes #6225

* module_utils/opennebula: skip empty values in render

(cherry picked from commit cb3ca05bd1)

Co-authored-by: Georg Gadinger <nilsding@nilsding.org>
2023-04-16 13:40:09 +02:00
patchback[bot]
a5824a2a9d [PR #6312/29a7d24d backport][stable-6] nmcli: Add macvlan connection type support (#6341)
nmcli: Add macvlan connection type support (#6312)

* add nmcli macvlan type

* changelog

* improve docs

* macvlan params

* fix linter and improve module params

* improve_docs

* raise error if type macvlan and macvlan options not set

(cherry picked from commit 29a7d24d75)

Co-authored-by: Sergey Putko <mail@psvlan.com>
2023-04-16 13:40:00 +02:00
patchback[bot]
71975be3c1 [PR #5488/d7340945 backport][stable-6] snap: add tests for multiple commands (#6340)
snap: add tests for multiple commands (#5488)

* snap: add tests for multiple commands

* snap: add tests + become

* remove packages again for idempotency

* roll back become=true in tests

(cherry picked from commit d7340945a4)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-16 13:39:52 +02:00
patchback[bot]
564f87c775 [PR #6115/f95b8ab9 backport][stable-6] Adding CheckiLORebootStatus functionality to ilo_redfish_command (#6339)
Adding CheckiLORebootStatus functionality to ilo_redfish_command (#6115)

* Adding CheckiLORebootStatus functionality to ilo_redfish_command

* PR fix

* Update plugins/modules/ilo_redfish_command.py

Agreed

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

* sanity fix

* Changed command to WaitforiLORebootCompletion

* PR comment fix

* Update plugins/modules/ilo_redfish_command.py

Agreed

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

* Update plugins/modules/ilo_redfish_command.py

Agreed

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

* Update plugins/modules/ilo_redfish_command.py

Agreed

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

* Update plugins/modules/ilo_redfish_command.py

Agreed

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

* Updating documentation based on PR comment

* Adding tests and updating task name in module

---------

Co-authored-by: Kushal <t-s.kushal@hpe.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f95b8ab9cd)

Co-authored-by: TSKushal <44438079+TSKushal@users.noreply.github.com>
2023-04-16 13:39:44 +02:00
patchback[bot]
6750a866c6 [PR #6316/42bc2cb4 backport][stable-6] fix small typo (#6333)
fix small typo (#6316)

fix small typo toch -> touch

(cherry picked from commit 42bc2cb4d8)

Co-authored-by: Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>
2023-04-13 09:57:26 +02:00
patchback[bot]
c6316c1153 [PR #6319/83994c0a backport][stable-6] redhat_subscription: use CLI when using environments (#6332)
redhat_subscription: use CLI when using environments (#6319)

It turns out that the 'environments' that the D-Bus Register*() APIs
accept are the IDs of the environments, and not the user-facing names of
the environments (which is what the module has been accepting so far).

Since there is no easy way to do the mapping manually, for now use again
the subscription-manager CLI for registering when environments are
specified.

(cherry picked from commit 83994c0a2d)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2023-04-13 08:09:58 +02:00
patchback[bot]
2c825f04e7 [PR #6296/bf780ea7 backport][stable-6] terraform: remote state file exists check issue (#6331)
terraform: remote state file exists check issue (#6296)

* remote state file exists check

In the official CLI implementation of Terraform, if the state file does not exist, a new one will be created, and there is no need to check that the state file already exists and with an error if file not exists.

```bash
# Test command
terraform apply -state test.tfstate. # if state file not exists ,terraform will create a new one
terraform destroy -state test1.tfstate  ### Terraform will not throw any error, the command will succeed execute, only report no resource has destroy
```

* Update terraform.py

add 1 blank line to function end

* Create 6296-LanceNero-Terraform_statefile_check

remove file exists check (https://github.com/ansible-collections/community.general/pull/6296)

* resolve if case issue

* Add blank line

* Update 6296-LanceNero-Terraform_statefile_check

* Update changelogs/fragments/6296-LanceNero-Terraform_statefile_check

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* update code style

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* Update suffix to correct CI issue

* Update Code Style

* Update bug-fix to feature release

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
(cherry picked from commit bf780ea738)

Co-authored-by: LanceNero <Lance.nero@gmail.com>
2023-04-13 07:43:49 +02:00
patchback[bot]
8a33e070be [PR #6206/a5765143 backport][stable-6] dconf: three minor but useful fixes (#6330)
dconf: three minor but useful fixes (#6206)

* dconf: Correctly handle setting a key that has no value in DB

We need to check if the value in the database is None before we try to
parse it, because the GVariant parser won't accept None as an input
value. By definition if the value is None, i.e., there's no value in
the database, than any value the user is trying to set is a change, so
just indicate that it's a change without trying to compare the None to
whatever the user specified as the value.x

* dconf: Give a more useful error when writing a key fails

if writing a key fails, then include in the error that is returned the
exact key and value aguments that were given to the dconf command, to
assist in diagnosing failures caused by providing the key or value in
the wrong format.x

* dconf: Convert boolean values into the format that dconf expects

Even though we warn users to be careful to specify GVariant strings
for values, a common error is to be trying to specify a boolean string
which ends up getting converted into a boolean by the YAML parser or
Ansible. Then it gets converted to "True" or "False", the string
representations of Python booleans, which are not valid GVariants.

Rather than just failing with an obscure error when this happens,
let's be more user-friendly and detect when the user has specified a
boolean and convert it into the correct GVariant forms, "true" or
"false", so it just works. There's no good reason to be more pedantic
than that.

(cherry picked from commit a5765143f1)

Co-authored-by: Jonathan Kamens <jik@kamens.us>
2023-04-13 07:18:19 +02:00
patchback[bot]
d2a5fdfc71 [PR #6320/86f9a657 backport][stable-6] Remove nibalizer from puppet module (#6329)
Remove nibalizer from puppet module (#6320)

Sorry! I haven't had time to work on this in a while. Cheers!

(cherry picked from commit 86f9a657e7)

Co-authored-by: Spencer Krum <nibz@spencerkrum.com>
2023-04-13 07:14:01 +02:00
patchback[bot]
b6b2419206 [PR #6274/14b19afc backport][stable-6] archive: Generate crc32 over 16MiB chunks (#6326)
archive: Generate crc32 over 16MiB chunks (#6274)

* archive: Generate crc32 over 16MiB chunks

Running crc32 over the whole content of the compressed file potentially
requires a lot of RAM. The crc32 function in zlib allows for calculating
the checksum in chunks. This changes the code to calculate the checksum
over 16 MiB chunks instead. 16 MiB is the value also used by
shutil.copyfileobj().

* Update changelogs/fragments/6199-archive-generate-checksum-in-chunks.yml

Change the type of change to bugfix

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

* Update changelogs/fragments/6199-archive-generate-checksum-in-chunks.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 14b19afc9a)

Co-authored-by: Nils Meyer <nils@nm.cx>
2023-04-13 05:09:34 +00:00
patchback[bot]
4c399f1c01 [PR #6293/ea8720f5 backport][stable-6] Add skip_tags option to Puppet module (#6327)
Add skip_tags option to Puppet module (#6293)

* Add Puppet skip_tags option

* Include changelog fragment

* Apply suggestions from code review

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit ea8720f572)

Co-authored-by: Jon-Paul Lindquist <jonpaul@lindquist.me>
2023-04-13 05:09:28 +00:00
patchback[bot]
923d335646 [PR #6267/6c5c05df backport][stable-6] homebrew: respect greedy flag for cask upgrade_all (#6328)
homebrew: respect greedy flag for cask upgrade_all (#6267)

* homebrew: respect greedy flag for cask upgrade_all

* homebrew: implement feedback from code review

(cherry picked from commit 6c5c05dfdc)

Co-authored-by: Claude Becker <becker@phys.ethz.ch>
2023-04-13 07:09:19 +02:00
patchback[bot]
be96c33257 [PR #6313/aa77a88f backport][stable-6] pkgng: skip jail tests also on FreeBSD 12.3 (#6315)
pkgng: skip jail tests also on FreeBSD 12.3 (#6313)

Skip jail tests also on FreeBSD 12.3.

(cherry picked from commit aa77a88f4b)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-10 21:30:59 +02:00
patchback[bot]
e68b1017e3 [PR #6307/28bdf1ed backport][stable-6] xfs_quota: fix integration tests for Alpine Linux (#6310)
xfs_quota: fix integration tests for Alpine Linux (#6307)

* xfs_quota: fix integration tests for Alpine Linux

* remove skip/alpine

(cherry picked from commit 28bdf1ed74)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-10 07:26:44 +00:00
patchback[bot]
44e4b1d202 [PR #6308/f93a1bf5 backport][stable-6] pipx: Add support for system_site_packages (#6311)
pipx: Add support for system_site_packages (#6308)

* pipx: Add support for system_site_packages

* Add changelog fragment

(cherry picked from commit f93a1bf5ec)

Co-authored-by: Paul Aurich <paul@darkrain42.org>
2023-04-10 07:26:31 +00:00
patchback[bot]
24378fd944 [PR #6304/08f14f3e backport][stable-6] pids tests: 'some-' is not that a unique pattern. (#6306)
pids tests: 'some-' is not that a unique pattern. (#6304)

* 'some-' is not that a unique pattern.

* Add debugging help.

* Avoid passing the name as a parameter to obtainpid.sh.

(cherry picked from commit 08f14f3eb0)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-09 15:10:11 +02:00
patchback[bot]
c3e1715233 [PR #6299/37cddb8c backport][stable-6] snap: enable ubuntu in integration tests (#6302)
snap: enable ubuntu in integration tests (#6299)

enable ubuntu in integration tests for snap

(cherry picked from commit 37cddb8c02)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-08 17:28:48 +00:00
patchback[bot]
ec86ebed98 [PR #6269/a64e3682 backport][stable-6] mksysb: improve visibility on the output (#6291)
mksysb: improve visibility on the output (#6269)

* mksysb: improve visibility on the output

* add changelog frag

(cherry picked from commit a64e36820f)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-04-05 14:10:47 +02:00
patchback[bot]
5aa2779a48 [PR #6284/7d19eca8 backport][stable-6] Update CI matrix: add stable-2.15 (#6285)
Update CI matrix: add stable-2.15 (#6284)

* Add ignore files for bumped devel version.

* Update CI matrix.

(cherry picked from commit 7d19eca8bf)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-04-04 10:10:25 +02:00
patchback[bot]
f6d15ec818 [PR #6278/cee5f31b backport][stable-6] Add support to topics on Gitlab Project module (#6283)
Add support to topics on Gitlab Project module (#6278)

* add topics to gitlab_project.py

* add chngelog fragment

* fix lint error

* Update changelogs/fragments/6277-add-topics-gitlab-project.yml

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

* Apply suggestions from code review

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit cee5f31b70)

Co-authored-by: Lorenzo Tanganelli <35271287+tanganellilore@users.noreply.github.com>
2023-04-03 22:15:23 +02:00
patchback[bot]
f0320b5ac9 [PR #6275/c280b793 backport][stable-6] redhat_subscription: fix D-Bus option for environments on CentOS (#6282)
redhat_subscription: fix D-Bus option for environments on CentOS (#6275)

Factorize the current logic to determine whether use 'environments' as
D-Bus registration option (rather than 'environment') in an own
function, so it is easier to read it and maintain it.

With the small helper function in place, extend the logic to support
CentOS: it is in practice the same as the RHEL one, with an additional
check to support CentOS Stream 8 (which is a rolling release, and not
versioned).

(cherry picked from commit c280b793de)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2023-04-03 22:02:12 +02:00
patchback[bot]
79578e5db3 [PR #6261/9bb768ae backport][stable-6] Update maintainership of rhsm modules (#6281)
Update maintainership of rhsm modules (#6261)

- remove Barnaby, Adrian, and Kevil from redhat_subscription, as they
  are no more working on subscription-manager
- create a new team_rhsm group to maintain redhat_subscription,
  rhsm_release, and rhsm_repository (all the modules related to
  subscription-manager)
- add myself and cnsnyder to team_rhsm

(cherry picked from commit 9bb768ae62)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2023-04-03 21:26:27 +02:00
patchback[bot]
43beaf4b00 [PR #6259/c9e11e5c backport][stable-6] redhat_subscription: manually unregister only when registered (#6280)
redhat_subscription: manually unregister only when registered (#6259)

When registering using D-Bus and using a version of subscription-manager
with an unimplemented 'force' option, then unregister manually the
system only if it is registered. 'subscription-manager unregister'
errors out when trying to unregister an already unregistered system.

(cherry picked from commit c9e11e5c0c)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2023-04-03 21:25:53 +02:00
patchback[bot]
6b0cc3c1de [PR #6212/33093e9f backport][stable-6] pipx: document parameters supported with state=latest, and fix include_injected parameter (#6266)
pipx: document parameters supported with state=latest, and fix include_injected parameter (#6212)

* pipx: Document parameters supported with state=latest

* pipx: Support "include_injected" with states "upgrade" and "latest"

- Contrary to documentation, "include_injected" doesn't appear to have
  worked with state=upgrade since it was introduced.
- Add support for include_injected with "latest", since "latest" is
  specified as being install+upgrade.

* Add changelog fragment

* Update plugins/modules/pipx.py

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

* Update changelog fragment

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

* pipx: Update to correct target release of community.general

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 33093e9f3e)

Co-authored-by: Paul Aurich <paul@darkrain42.org>
2023-03-30 07:52:45 +02:00
Felix Fontein
81a95a347d Next expected release will be 6.6.0. 2023-03-27 22:11:59 +02:00
Felix Fontein
8026337c44 Release 6.5.0. 2023-03-27 21:39:20 +02:00
patchback[bot]
8fb1aaaf53 [PR #5815/5e1e8d06 backport][stable-6] ldap_entry documentation is lacking examples (#6255)
ldap_entry documentation is lacking examples (#5815)

* Add changelog fragment

* Add documentation for possible values of LDAP entry attributes

* Add PR information

* Update plugins/modules/ldap_entry.py

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* remove changlog

* Update docstring

* Align ldap_attrs doc to ldap_entry module

* Update plugins/modules/ldap_attrs.py

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

* Change formulations.

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 5e1e8d06ef)

Co-authored-by: Cédric Servais <cedric.servais@outlook.com>
2023-03-27 19:20:57 +00:00
patchback[bot]
fda610cc23 [PR #6250/05824a07 backport][stable-6] merge_variables: Fix example section (#6251)
merge_variables: Fix example section (#6250)

(cherry picked from commit 05824a0754)

Co-authored-by: Roy Lenferink <lenferinkroy@gmail.com>
2023-03-26 14:02:59 +00:00
patchback[bot]
8ecb322816 [PR #5533/f52dd194 backport][stable-6] Add new merge_variables lookup plugin (#6249)
Add new merge_variables lookup plugin (#5533)

* Add new merge_variables lookup plugin

* Add changelog fragment

* Process bot feedback

* Refactor override options and add pattern_type option

* Fix unit tests

* Changed default pattern_type and simplified plugin based on feedback

* Processed feedback for merge_variables lookup plugin

* Adjust version_added.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f52dd194f9)

Co-authored-by: Roy Lenferink <lenferinkroy@gmail.com>
2023-03-26 13:36:46 +02:00
patchback[bot]
1260a63241 [PR #6210/be7f11bf backport][stable-6] Add worklog functionality to jira module (#6248)
Add worklog functionality to jira module (#6210)

community.general#6209 Add worklog functionality to jira

(cherry picked from commit be7f11bf39)

Co-authored-by: Hugo Prudente <hugo.kenshin@gmail.com>
2023-03-26 10:21:49 +02:00
patchback[bot]
f6aad230c2 [PR #6182/99776187 backport][stable-6] Add module to manipulate KDE config files using kwriteconfig (#6247)
Add module to manipulate KDE config files using kwriteconfig (#6182)

* Add module to manipulate KDE config files using kwriteconfig

* Fix license issues

* Apply suggestions from code review

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

* Add smeso as kdeconfig.py maintainer

* Fix attributes fragment name

* Fix test

* Do not use shutil.chown

It isn't available on old Python versions

* Apply suggestions from code review

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 997761878c)

Co-authored-by: Salvatore Mesoraca <s.mesoraca16@gmail.com>
2023-03-26 10:05:57 +02:00
patchback[bot]
f3a4e5ea27 [PR #6200/59e58079 backport][stable-6] Adding open option to nmap (#6246)
Adding `open` option to nmap (#6200)

* Adding nmap `open` option

* Removing accidental copy/paste issue

* Update changelogs/fragments/6200-adding-open-option-to-nmap.yml

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

* Update plugins/inventory/nmap.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 59e58079cb)

Co-authored-by: barloff-st <42866449+barloff-st@users.noreply.github.com>
2023-03-26 10:04:13 +02:00
patchback[bot]
e26eaa0565 [PR #6227/cd706454 backport][stable-6] Fixed XenOrchestra inventory plugin failing due to not checking response ID. (#6245)
Fixed XenOrchestra inventory plugin failing due to not checking response ID. (#6227)

* Added call method to select proper response from xo server

* Added changelog fragment

* Removed excess blank lines

* Moved period in changelog fragment

* Made suggested changes

* Remove f-strings for Python 2.7 compatibility

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

---------

Co-authored-by: Linus Kirkwood <lkirkwood@allette.com.au>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit cd706454ec)

Co-authored-by: lirkwood <linuskirkwood@gmail.com>
2023-03-26 10:04:05 +02:00
patchback[bot]
3432be3a2f [PR #6105/81b16a88 backport][stable-6] nmcli: fixed idempotency issue when config bridge connection (#6243)
nmcli: fixed idempotency issue when config bridge connection (#6105)

* nmcli: fixed idempotency issue when config bridge connection

* Update changelog fragment.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 81b16a88ee)

Co-authored-by: Sam Potekhin <heaveaxy@gmail.com>
2023-03-26 09:48:29 +02:00
patchback[bot]
4f78e7979e [PR #6148/d4f272ba backport][stable-6] nmcli: add runner_fast_rate option (#6239)
nmcli: add runner_fast_rate option (#6148)

* add runner_fast_rate option

* unset default value for runner_fast_rate parameter

* add some commas

* Remove default in copy of argspec.

Co-authored-by: Sam Potekhin <eax24@ya.ru>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Sam Potekhin <eax24@ya.ru>
(cherry picked from commit d4f272ba52)

Co-authored-by: Alex Groshev <38885591+haddystuff@users.noreply.github.com>
2023-03-26 09:46:04 +02:00
patchback[bot]
8a0b7dcdc9 [PR #6106/5ee68704 backport][stable-6] nmcli: fixed idempotency issue with 'may_fail4' when 'method' is 'disabled' (#6241)
nmcli: fixed idempotency issue with 'may_fail4' when 'method' is 'disabled' (#6106)

* nmcli: fixed idempotency issue with 'may_fail4' when 'method' is 'disabled'

* added note to documentation

* updated changelog fragment

* Update changelog fragment.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 5ee687049f)

Co-authored-by: Sam Potekhin <heaveaxy@gmail.com>
2023-03-26 09:45:57 +02:00
patchback[bot]
9cd3f37686 [PR #6198/6fa833fe backport][stable-6] pipx: Allow injected modules to add apps (#6238)
pipx: Allow injected modules to add apps (#6198)

* pipx: Allow injected modules to add apps

Add support for pipx inject's "--include-apps" parameter.

* add changelog fragment

* fix pipx test ("install_apps", not "include_apps")

* fix pipx test -- add a second invocation for install_apps

* Update changelogs/fragments/6198-pipx-inject-install-apps.yml

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

* Update plugins/modules/pipx.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 6fa833feed)

Co-authored-by: Paul Aurich <paul@darkrain42.org>
2023-03-26 09:45:48 +02:00
patchback[bot]
5e1508e0df [PR #6205/e9655239 backport][stable-6] ssh_config: add proxyjump option (#6236)
ssh_config: add proxyjump option (#6205)

* feat(ssh_config): proxyjump option

* feat(ssh_config: add proxyjump test

* CamelCase ProxyJump

* add changelog fragment

* Update plugins/modules/ssh_config.py

add version_added

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

* update task name to include new proxyjump option

* adding tests for proxyjump option

* fixing assert variable name

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit e96552396e)

Co-authored-by: Gavin Will <g@gavinwill.me.uk>
2023-03-25 23:36:56 +01:00
patchback[bot]
be4d294b61 [PR #6208/33ccabed backport][stable-6] added hpe thermal config and fan percent min (#6237)
added hpe thermal config and fan percent min (#6208)

* added hpe thermal config and fan percent min

* typo fixed

* Create 6208-hpe-thermal-fan-percent.yaml

* fixed changelog fragment

* Update 6208-hpe-thermal-fan-percent.yaml

(cherry picked from commit 33ccabed13)

Co-authored-by: ky13 <k.william.ritchie@gmail.com>
2023-03-25 23:36:47 +01:00
patchback[bot]
1d36db1806 [PR #6159/7059789f backport][stable-6] Add archive param for proxmox_kvm module (#6235)
Add archive param for proxmox_kvm module (#6159)

We simply add a param to allow proxmox administrator to restore VM from
an archives. This new option will be useful to automate automatic
creation and restore of VM.

Co-authored-by: Julian Vanden Broeck <julian.vandenbroeck@dalibo.com>
(cherry picked from commit 7059789f35)

Co-authored-by: Julian <374571+l00ptr@users.noreply.github.com>
2023-03-25 08:50:37 +01:00
patchback[bot]
16a18d1456 [PR #3935/f3be0076 backport][stable-6] Add Gitlab group runners support (#6234)
Add Gitlab group runners support (#3935)

(cherry picked from commit f3be0076af)

Co-authored-by: Léo GATELLIER <26511053+lgatellier@users.noreply.github.com>
2023-03-25 08:50:28 +01:00
patchback[bot]
493fa405e2 [PR #5867/b1d94385 backport][stable-6] apt_rpm: add clean, dist_upgrade and update_kernel (#6233)
apt_rpm: add clean, dist_upgrade and update_kernel (#5867)

* clean performs apt-get clean.

* dist_upgrade performs apt-get dist-upgrade.

* update_kernel performs update-kernel to upgrade kernel packages.

* update_cache, clean, dist_upgrade and update_kernel can be used with and without specified packages.

(cherry picked from commit b1d94385ae)

Co-authored-by: Andrey Cherepanov <sibskull@gmail.com>
2023-03-25 08:50:19 +01:00
patchback[bot]
25464602d9 [PR #5974/ed8049a2 backport][stable-6] nmcli: add new addr_gen_mode6 options (#6228)
nmcli: add new addr_gen_mode6 options (#5974)

* nmcli: add new addr_gen_mode6 options

* Add changelog fragment.

* Update plugins/modules/nmcli.py

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

* Adjust documentation.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit ed8049a220)

Co-authored-by: Jeffrey Cutter <jeffmcutter@users.noreply.github.com>
2023-03-25 08:22:25 +01:00
Felix Fontein
8a670a3929 Prepare 6.5.0 release. 2023-03-23 21:32:45 +01:00
patchback[bot]
47b8df8019 [PR #5664/bbd68e26 backport][stable-6] redhat_subscription: require credentials only when needed (#6222)
redhat_subscription: require credentials only when needed (#5664)

The module currently has a static 'required_if' statement for its
parameters that forces any of 'username' or 'activationkey' or 'token'
in case state=present; while this is generally a good idea, it can be
an extra requirements in some cases. In particular, if the system is
already registered, there is no need for credentials -- some of the
operations of the module, such as manipulating pools, can be done
perfectly without credentials.

Hence:
- change the static 'required_if' to require credentials only when
  forcing the registration
- check for credentials manually when a registration is needed, i.e.
  on an unregistered system; the fail message is the same as the one
  shown by 'required_if'

Adapt the tests to this new situation:
- test_without_required_parameters now needs to mock an unregistered
  system
- add a new version of test_without_required_parameters to test an
  already registered system
- add a simple test case for only state=present usable on an already
  registered system
- remove the credentials from a test case for pool attachment that
  mocks an already registered system

(cherry picked from commit bbd68e26a2)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2023-03-22 20:56:22 +01:00
patchback[bot]
9c411586ea [PR #6211/9f67cbbe backport][stable-6] rhsm modules: cleanly fail when not run as root (#6218)
rhsm modules: cleanly fail when not run as root (#6211)

subscription-manager on RHEL installs a symlink in /usr/bin to
console-helper (part of usermode), which triggers an interactive prompt
for root credentials when run as user. It seems that console-helper
does not handle well non-interactive contexts (e.g. without a TTY for
input), and thus it will hang waiting for input when run as user in an
Ansible task.

Since subscription-manager requires root already anyway (and it will
fail when explicitly run as user), then apply the same logic locally on
all the modules that interact with it: redhat_subscription,
rhsm_release, and rhsm_repository.

(cherry picked from commit 9f67cbbe36)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2023-03-22 17:57:46 +00:00
patchback[bot]
e0465d1f48 [PR #6111/3fb1ff0b backport][stable-6] Fix influxdb_user grants in check mode (#6214)
Fix influxdb_user grants in check mode (#6111)

* Fix influxdb_user grants in check mode

When running in check mode, `influxdb_user` will return error when the user doesn't exist yet, instead of reporting `changed` state.

* Update changelogs/fragments/6111-influxdb_user-check-mode.yaml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 3fb1ff0b72)

Co-authored-by: Petr Tichý <petr@pex.com>
2023-03-22 13:16:21 +01:00
patchback[bot]
ad6c28069a [PR #6180/f66cc7c9 backport][stable-6] Replace deprecated error with BadZipFile (#6216)
Replace deprecated error with BadZipFile (#6180)

* Replace deprecated error with BadZipFile

* Use imported BadZipFile

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

* Add news fragment

* Update new fragment

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f66cc7c933)

Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
2023-03-22 13:16:05 +01:00
patchback[bot]
31a1c8e185 [PR #6185/512bf4b7 backport][stable-6] ldap moduls: add optional ca_cert_file option (#6217)
ldap moduls: add optional ca_cert_file option (#6185)

* add ca_cert_file option

* fix pr url

* Apply suggestions from code review

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

* update parameter name

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 512bf4b77f)

Co-authored-by: Reto Kupferschmid <kupferschmid@puzzle.ch>
2023-03-22 13:15:48 +01:00
patchback[bot]
20bd0d130c [PR #6165/bf8f2950 backport][stable-6] Adding support for -p option to specify port(s) to scan (#6207)
Adding support for `-p` option to specify port(s) to scan (#6165)

* Adding support for `-p` option to specify port(s) to scan

* Adding changelog fragment file

* Corrected appending options

* Edit to doc section

* Correction in documentation type

* Fixed `:` use in doc breaking yaml

* Update changelogs/fragments/6165-nmap-port.yml

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

* Update plugins/inventory/nmap.py

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

* Update plugins/inventory/nmap.py

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

* Adding usage example

* Adding comment to example that was missed

* Breaking line up, was too long for sanity test 160 char limit

* Still too long since spaces are counted

* Changed type to string to work for a single entry as well as comma separated values

* Update changelogs/fragments/6165-nmap-port.yml

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

* Update plugins/inventory/nmap.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit bf8f2950b4)

Co-authored-by: barloff-st <42866449+barloff-st@users.noreply.github.com>
2023-03-19 13:54:53 +01:00
patchback[bot]
e5ecaffa1a [PR #6193/e8a7c27c backport][stable-6] Remove verkaufer as maintainer for yarn module (#6194)
Remove verkaufer as maintainer for yarn module (#6193)

(cherry picked from commit e8a7c27cab)

Co-authored-by: David Gunter <david@davidgunter.ca>
2023-03-15 12:42:02 +01:00
patchback[bot]
8fd89721cd [PR #6154/1dd86bcb backport][stable-6] add optional use_tls parameter (#6191)
add optional use_tls parameter (#6154)

* add optional use_tls parameter

* add optional use_tls parameter

---------

Co-authored-by: Martin Helwig <prostep.helwig@extaccount.com>
(cherry picked from commit 1dd86bcb55)

Co-authored-by: Martin Helwig <115872657+MartinHelwig@users.noreply.github.com>
2023-03-15 07:29:48 +01:00
patchback[bot]
b1231c1315 [PR #6149/b97bee3f backport][stable-6] openbsd_pkg: set TERM to 'dumb' in execute_command (#6190)
openbsd_pkg: set TERM to 'dumb' in execute_command (#6149)

* openbsd_pkg: set TERM to 'dumb' in execute_command

Keeps pkg_add happy when someone running ansible is using a TERM that
the managed OpenBSD host does not know about.

Fixes #5738.

Selection of specific TERM from discussion at
https://marc.info/?l=openbsd-tech&m=167290482630534&w=2

* Add changelog fragment for openbsd_pkg TERM fix

* Update changelogs/fragments/6149-openbsd_pkg-term.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b97bee3fd6)

Co-authored-by: Patrik Lundin <patrik@sigterm.se>
2023-03-15 07:29:38 +01:00
patchback[bot]
48b20894b3 [PR #6129/df34569f backport][stable-6] Updating yarn.list to not fail when when warnings are emitted (#6189)
Updating yarn.list to not fail when when warnings are emitted (#6129)

* Updating yarn.list to not fail when when warnings are emitted

* Adding changelog fragment

* Adding _process_yarn_error function

* - Adding back changes to the changelog fragment
- Fixing formatting

* Fix trailing whitespace

* Update plugins/modules/yarn.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit df34569fad)

Co-authored-by: John Daly <john.daly2@gmail.com>
2023-03-15 07:28:40 +01:00
patchback[bot]
1676b09573 [PR #6122/e939cd07 backport][stable-6] redhat_subscription: use D-Bus for registration if possible (#6188)
redhat_subscription: use D-Bus for registration if possible (#6122)

subscription-manager currently does not have a way to get credentials
(username, password, activation keys, organization ID) in a secure way:
the existing command line parameters can be easily spotted when running
a process listing while 'subscription-manager register' runs.
There is a D-Bus service, which is used by e.g. cockpit and Anaconda to
interface with RHSM (at least for registration and common queries).

Try to perform the registration using D-Bus, in a way very similar to
the work done in convert2rhel [1] (with my help):
- try to do a simple signal test to check whether the system bus works;
  inspired by the login in the dconf module
- pass most of the options as registration options; for the few that are
  not part of the registration, execute 'subscription-manager' manually
- add quirks for differently working (or not) registration options for
  the D-Bus Register*() methods depending on the version of RHEL
- 'subscription-manager register' is used only in case the signal test
  is not working; silent fallback in case of D-Bus errors during the
  registration is not done on purpose to avoid silent fallback to a less
  secure registration

[1] https://github.com/oamg/convert2rhel/pull/540/

(cherry picked from commit e939cd07ef)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2023-03-14 23:06:41 +01:00
patchback[bot]
94efecaf67 [PR #6160/a49ad340 backport][stable-6] [make] Provide built command in the module output (#6186)
[make] Provide built command in the module output (#6160)

It may happen operator wants to get the built command instead of all the
parameters. This change injects a new entry in the dict output, showing
what command way actually launched.

This patch also takes the opportunity to add missing dots to some
documentation lines.

(cherry picked from commit a49ad340af)

Co-authored-by: Cédric Jeanneret <39397510+cjeanner@users.noreply.github.com>
2023-03-14 21:03:54 +01:00
patchback[bot]
e9bc32528e [PR #6175/1ddcdc63 backport][stable-6] Mark monit integration tests as unstable (#6178)
Mark monit integration tests as unstable (#6175)

Mark monit integration tests as unstable.

(cherry picked from commit 1ddcdc63ff)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-03-12 15:50:18 +01:00
patchback[bot]
8e84b3ef8e [PR #6117/3862de3f backport][stable-6] Removes dependency on StormSSH (#6179)
Removes dependency on StormSSH (#6117)

* included storm config parser

* Add changelog fragment

* Fix changelog fragment

* address PR feedback

* fix license

* add required boilerplate, fix issues found in test output

* move __future__ imports

* address pr feedback

* address test output

* address pr feedback

(cherry picked from commit 3862de3f15)

Co-authored-by: Peter Upton <peterupton99@gmail.com>
2023-03-12 15:50:07 +01:00
patchback[bot]
944bc78360 [PR #6131/abcba9db backport][stable-6] Interfaces file spaces fix (#6169)
Interfaces file spaces fix (#6131)

* interfaces_file: added test case for #6120

* interfaces_file: reverted code to #fafabed

* interfaces_file: added changelog fragment

* interfaces_file: added missing licenses

* interfaces_file: improved test coverage

* interfaces_file: fixed retrieving option values

* Update plugins/modules/interfaces_file.py

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

* Update plugins/modules/interfaces_file.py

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

* Update tests/unit/plugins/modules/interfaces_file/test_interfaces_file.py

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

* Update plugins/modules/interfaces_file.py

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

* Update plugins/modules/interfaces_file.py

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

* Update plugins/modules/interfaces_file.py

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

* Update plugins/modules/interfaces_file.py

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

* Update plugins/modules/interfaces_file.py

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

* Update plugins/modules/interfaces_file.py

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

* Update tests/unit/plugins/modules/interfaces_file/test_interfaces_file.py

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

* interfaces_file: spacing fix

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit abcba9dbbe)

Co-authored-by: Roman Belyakovsky <roman.beliakovskii@smartly.io>
2023-03-09 20:31:08 +01:00
patchback[bot]
a2a81f11c3 [PR #6166/6b8a1cd8 backport][stable-6] Add macOS 13.2 to CI (#6168)
Add macOS 13.2 to CI (#6166)

Add macOS 13.2 to CI.

(cherry picked from commit 6b8a1cd8e6)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-03-09 06:54:56 +01:00
patchback[bot]
1a72aea4c5 [PR #6161/6d003ca7 backport][stable-6] [make] Improve module doc (#6163)
[make] Improve module doc (#6161)

This change reorder the parameters so that we get the mandatory one at
the top, then alphabetically order the other bellow.

It also adds the returned values.

(cherry picked from commit 6d003ca7fc)

Co-authored-by: Cédric Jeanneret <39397510+cjeanner@users.noreply.github.com>
2023-03-08 15:19:54 +01:00
patchback[bot]
36eff2fd99 [PR #6114/6cf67448 backport][stable-6] memset*.py: Fixed URLError handling (#6157)
memset*.py: Fixed URLError handling (#6114)

* memset.py: Added URLError exception and stderr to Response() object

* memset_*.py: Check response.status_code and response.stderr

* Added changelog fragment

* memset.py: Fixed pep8

* Renamed changelog fragment with .yml file extension

(cherry picked from commit 6cf674485f)

Co-authored-by: Daniel Patrick <dani.p1991@gmail.com>
2023-03-08 13:58:39 +01:00
patchback[bot]
47514e1401 [PR #6152/11c7611c backport][stable-6] More true/false normalization (#6153)
More true/false normalization (#6152)

* More true/false normalization.

* Boolean do not need explicit choices.

* One more.

* Fix type argument.

(cherry picked from commit 11c7611ced)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-03-07 07:10:10 +01:00
patchback[bot]
186b4200f6 [PR #6049/627371e2 backport][stable-6] dconf: Check for changes properly despite style of quotes used by user (#6145)
dconf: Check for changes properly despite style of quotes used by user (#6049)

dconf: parse GVariant values to check for equality whenever possible

Direct string comparisons are an inaccurate way to compare two
GVariant representations. For example, 'foo' and "foo" (including the
quote marks, which are part of the representation) are equal GVariants
but if you just do a string compare (remember, including the quotes)
they'll be interpreted.

We therefore want to use the `gi.repository` Python library to parse
GVariant representations before comparing them whenever possible.

However, we don't want to assume that this library will always be
available or require it for Ansible to function, so we use a straight
string comparison as a fallback when the library isn't available. This
may result in some false positives, i.e., Ansible thinking a value is
changing when it actually isn't, but will not result in incorrect
values being written into `dconf`.

Co-authored-by: Jonathan Kamens <jik@jik5.kamens.us>
(cherry picked from commit 627371e2d8)

Co-authored-by: Jonathan Kamens <jik@kamens.us>
2023-03-05 11:49:43 +01:00
patchback[bot]
6057c3c7c4 [PR #6143/733e31c8 backport][stable-6] Remove chrishoffman as maintainer for yarn (#6144)
Remove chrishoffman as maintainer for yarn (#6143)

Ignore chrishoffman from yarn

(cherry picked from commit 733e31c85f)

Co-authored-by: Chris Hoffman <99742+chrishoffman@users.noreply.github.com>
2023-03-04 21:02:08 +01:00
patchback[bot]
b12113c182 [PR #6130/c077818c backport][stable-6] Fixes #6112: community.general.gitlab_runner KeyError: 'access_level' (#6142)
Fixes #6112: community.general.gitlab_runner KeyError: 'access_level' (#6130)

The fix ensures that no 'KeyError' is raised, when 'access_level' is not provided as module parameter or when 'access_level_on_creation' is false.

Signed-off-by: Christoph Fiehe <c.fiehe@eurodata.de>
Co-authored-by: Christoph Fiehe <c.fiehe@eurodata.de>
(cherry picked from commit c077818c5d)

Co-authored-by: cfiehe <cfiehe@users.noreply.github.com>
2023-03-04 10:38:59 +01:00
patchback[bot]
4860c20108 [PR #6104/2dee3464 backport][stable-6] nmcli: fixed inability to change mtu on vlan connection (#6140)
nmcli: fixed inability to change mtu on vlan connection (#6104)

* tests updated

Co-authored-by: Sam Potekhin <heaveaxy@gmail.com>
(cherry picked from commit 2dee3464dd)

Co-authored-by: Sam Potekhin <24751685+heaveaxy@users.noreply.github.com>
2023-03-04 10:21:59 +01:00
patchback[bot]
8efbd8172c [PR #6138/3d67f518 backport][stable-6] Fix Yarn global not working without explicit executable path (#6141)
Fix Yarn global not working without explicit executable path (#6138)

* Fix Yarn global not working without explicit executable path

* changelog fragment

* fix formatting and add test

* oops

(cherry picked from commit 3d67f51824)

Co-authored-by: Sargun Vohra <sargun.vohra@gmail.com>
2023-03-04 10:21:50 +01:00
patchback[bot]
8c1b7e3ddb [PR #6118/9a97bc7c backport][stable-6] Add 'inventory_hostname' to the jail plugin documentation (#6137)
Add 'inventory_hostname' to the jail plugin documentation (#6118)

This fixes the following warning on FreeBSD:

  [WARNING]: The "jail" connection plugin has an improperly configured
  remote target value, forcing "inventory_hostname" templated value
  instead of the string

(cherry picked from commit 9a97bc7c11)

Co-authored-by: Giacomo Olgeni <olgeni@olgeni.com>
2023-03-03 23:10:59 +01:00
patchback[bot]
ec228bf32f [PR #6121/c0cb7958 backport][stable-6] Documentation: yum_versionlock typo fix (#6126)
Documentation: yum_versionlock typo fix (#6121)

##### SUMMARY
Fixing typo in documentation, we need to use name parameter instead of package.

##### ISSUE TYPE
- Docs Pull Request

+label: docsite_pr

(cherry picked from commit c0cb7958cb)

Co-authored-by: AnatomicJC <github@open-web.fr>
2023-03-02 20:16:13 +01:00
patchback[bot]
1d39bbefd9 [PR #6119/345a6930 backport][stable-6] opkg: fix bug when update_cache=true (#6124)
opkg: fix bug when update_cache=true (#6119)

* opkg: fix bug when update_cache=true

* add changelog fragment

(cherry picked from commit 345a69304a)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-03-02 07:15:28 +01:00
patchback[bot]
59fb0cf506 [PR #6116/03084d11 backport][stable-6] Remove glitchcrab as maintainer for memset modules and module utils (#6123)
Remove glitchcrab as maintainer for memset modules and module utils (#6116)

Remove glitchcrab as maintainer for memset modules and module utils.

(cherry picked from commit 03084d1133)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-03-01 21:39:40 +01:00
Felix Fontein
6c4080e78d Next expected release is 6.5.0. 2023-02-27 21:28:48 +01:00
Felix Fontein
1a81760d47 Release 6.4.0. 2023-02-27 20:43:35 +01:00
patchback[bot]
c3db6343e5 [PR #6109/d2094669 backport][stable-6] add xorder_discovery parameter (#6110)
add xorder_discovery parameter (#6109)

* add xorder_discovery parameter

* fix regex raw string

* use dn logic from LdapGeneric

* Update documentation.

* Update changelog fragment.

* Improve if.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit d209466985)

Co-authored-by: Reto Kupferschmid <kupferschmid@puzzle.ch>
2023-02-27 20:39:31 +01:00
Felix Fontein
e87c2c9eb4 Fix changelog fragment type.
(cherry picked from commit 681fad92c2)
2023-02-26 16:20:13 +01:00
patchback[bot]
90a1743acf [PR #6100/e8bdec27 backport][stable-6] jenkins_plugin: avoid undefined variable when updates file is not downloaded (#6103)
jenkins_plugin: avoid undefined variable when updates file is not downloaded (#6100)

Avoid undefined variable when updates file is not downloaded.

(cherry picked from commit e8bdec2733)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-26 15:52:53 +01:00
patchback[bot]
eb6ef5ae2e [PR #5424/29f50337 backport][stable-6] add persistent option for modprobe (#6102)
add persistent option for modprobe (#5424)

* add persistent option for modprobe

* add suggested changes + fix broken test

* change modprobe module path in tests due to rebase

* change persistent option type from bool to str with choices

* fix unused import

* add example with persistent option

* fix some minor issues after review

- move regexps compiling to __init__
- move AnsibleModule to build_module function and use this function in tests instead of AnsibleModule
- fix terminlogy issue in documentation

* fix unused-import

(cherry picked from commit 29f5033737)

Co-authored-by: Alex Groshev <38885591+haddystuff@users.noreply.github.com>
2023-02-26 15:37:09 +01:00
patchback[bot]
89dd500159 [PR #5986/617be6e1 backport][stable-6] Add new project features to API (#6099)
Add new project features to API (#5986)

* Add new project features to API

* add changelog fragment

* remove extra line from changelog

* Update changelog formatting

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 617be6e124)

Co-authored-by: Hemant Zope <42613258+zhemant@users.noreply.github.com>
2023-02-26 14:29:54 +01:00
patchback[bot]
9bab144d06 [PR #5830/c8a2ac3a backport][stable-6] sefcontext: add support for path substitutions (#6098)
sefcontext: add support for path substitutions (#5830)

* sefcontext: add path substitution support (#1193)

First commit for feedback, missing docs and tests.

* sefcontext: add documentation

* Add changelog fragment

* Documentation formatting

* Delete extra newline

* pep8 fixes

Fix indentation

* Add version_added to arg docs

* Add examples

* Don't delete non-matching path substitutions

* Add integration tests

* Delete only substitutions if such arg passed

Don't delete existing regular file context mappings if deletion of
a path substitution was requested with the presence of the
`equal` arg - delete only path substitutions in such case.

Path substitutions and regular mappings may overlap.

* Can only add args in minor releases

:(

* Cleanup before tests

* Fix deletion using substitution

Was comparing wrong var.

* Fix test checking wrong var

* Improve args documentation and examples

List the default values for selevel, seuser.
Add example for deleting path substitutions only.

* Add attributes documentation block

Not sure if should add become/delegate/async,
shouldn't those work just like that without any
specific code added for them?

* and fix indentation on attribute block

* Consistent indentation for attributes

Confusing, most plugins indent with 4 spaces.
But some use 2 like the rest of the code, so use 2.

* Add missing ref for attribute block

* Use correct c.g version in doc block

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

* Add full stop to changelog fragment

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

* Streamline documentation

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* Support limiting deletion to setype

Deleting file context mappings may be limited by
passing setype or equal, if neither arg is passed
then delete either setype/equal mappings that match.

* Change arg name, diff mode output fix

Change arg name from equal to substitute.
Print target = subsitute in diff mode same way as
semanage does.

Also put back platform attribute, try to improve
clumsy language in the substitute arg docs.

* Delete even if arg setype not match existing

Test 5 indicates that deletion is supposed to not check that
the arg setype passed when deleting matches the setype
of the mapping to delete.
Delete any mapping that matches target, regardless of
setype arg value.

* Update arg name in tests

* Too eager replacing

Accidentally replaced seobject function names so fix them back

* 4564: Fix invalid setype in doc example

Change from httpd_git_rw_content_t which
does not exist to httpd_sys_rw_content_t

Fixes #4564

* Fix documentation attributes

Additional fragment

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

* Update version_added in docs

Bumping minor to 6.4.0 since it didn't make 6.3.0.

* Add more description to the new arg docs

Try to improve discoverability of the new feature and make it easier to understand without deep SELinux understanding.

* Update platform to Linux in documentation

* Add equal as alias for the new argument

Improve discoverability of the new feature by adding an alias to the new module argument. The argument name "equal" will be easy to find for users who are not familiar with SELinux and who just try to match to the CLI tool `semanage`.

* And add alias argument properly

Previous commit missed actually adding the alias (added to docs only).

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
(cherry picked from commit c8a2ac3a47)

Co-authored-by: bluikko <14869000+bluikko@users.noreply.github.com>
2023-02-26 14:23:53 +01:00
patchback[bot]
31eddc0ffe [PR #5972/094dc6b6 backport][stable-6] cloudflare_dns: Fix setting SRV records with a root level entry (#6097)
cloudflare_dns: Fix setting SRV records with a root level entry (#5972)

* cloudflare_dns: Fix setting SRV records with a root level entry

* cloudflare_dns: Remove the part which deletes the zone from the SRV record name

The cloudflare API accepts the record name + zone name to be sent. Removing that, will guarantee the module to be idempotent even though that line was added ~7 years ago for that specific reason: 7477fe5141

It seems the most logical explanition is that Cloudflare changed their API response somewhere over the last 7 years.

* cloudflare_dns: Update the changelog fragment

(cherry picked from commit 094dc6b69c)

Co-authored-by: Roy Lenferink <lenferinkroy@gmail.com>
2023-02-26 14:16:52 +01:00
patchback[bot]
bc64c4035e [PR #5926/810f3b50 backport][stable-6] Add enabled parameter to flatpak_remote (#6095)
Add `enabled` parameter to `flatpak_remote` (#5926)

(cherry picked from commit 810f3b50fc)

Co-authored-by: Yannick Ihmels <yannick@ihmels.org>
2023-02-25 23:16:07 +01:00
patchback[bot]
3ed65a0a37 [PR #6072/3db0fcf1 backport][stable-6] Adding jyundt to Redfish maintainers (#6094)
Adding jyundt to Redfish maintainers (#6072)

(cherry picked from commit 3db0fcf1bd)

Co-authored-by: Mike Raineri <michael.raineri@dell.com>
2023-02-25 16:01:47 +01:00
patchback[bot]
93008fd41c [PR #6074/b6492911 backport][stable-6] stop passing loader/dataloader since it has been deprecated by ansible (#6092)
stop passing loader/dataloader since it has been deprecated by ansible (#6074)

* stop passing loader/dataloader since it has been deprecated by ansible

Signed-off-by: Martin Schurz <Martin.Schurz@t-systems.com>

* add changelog fragment

Signed-off-by: Martin Schurz <Martin.Schurz@t-systems.com>

* explicitly pass None to keep compatibility to older Ansible versions

Signed-off-by: Martin Schurz <Martin.Schurz@t-systems.com>

* use try/except to keep things compatible

Signed-off-by: Martin Schurz <Martin.Schurz@t-systems.com>

* Update plugins/lookup/cartesian.py

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

* Update plugins/lookup/flattened.py

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

* Update plugins/lookup/flattened.py

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

* Update plugins/lookup/cartesian.py

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

* Update changelogs/fragments/6074-loader_in_listify.yml.yml

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

---------

Signed-off-by: Martin Schurz <Martin.Schurz@t-systems.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b64929118e)

Co-authored-by: schurzi <github@drachen-server.de>
2023-02-25 15:39:48 +01:00
patchback[bot]
1462ed0b4a [PR #5814/7d3e6d1b backport][stable-6] keycloak_group: support keycloak subgroups (#6089)
keycloak_group: support keycloak subgroups (#5814)

* feat(module/keycloak_group): add support for ...

... handling subgroups

* added changelog fragment and fixing sanity ...

... test issues

* more sanity fixes

* fix missing version and review issues

* added missing licence header

* fix docu

* fix line beeing too long

* replaced suboptimal string type prefixing ...

... with better subdict based approach

* fix sanity issues

* more sanity fixing

* fixed more review issues

* fix argument list too long

* why is it failing? something wrong with the docu?

* is it this line then?

* undid group attribute removing, it does not ...

... belong into this PR

* fix version_added for parents parameter

---------

Co-authored-by: Mirko Wilhelmi <Mirko.Wilhelmi@sma.de>
(cherry picked from commit 7d3e6d1bb7)

Co-authored-by: morco <thegreatwiper@web.de>
2023-02-25 14:03:38 +01:00
patchback[bot]
139fcdba88 [PR #5994/1877ef15 backport][stable-6] github_webhook: Don't include secret in the config if it's absent (#6088)
github_webhook: Don't include secret in the config if it's absent (#5994)

* github_webhook: Don't include secret in the config if it's absent

* Add changelogs

* Fix indentation

* Apply suggestion to simplify the check

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

---------

Co-authored-by: dima1206 <–32818228+dima1206@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 1877ef1510)

Co-authored-by: dima1206 <32818228+dima1206@users.noreply.github.com>
2023-02-25 11:56:05 +01:00
patchback[bot]
e9b8692025 [PR #5943/53f72973 backport][stable-6] zfs_delegate_admin: fix: zfs allow cannot parse unknown uid/gid (#6086)
zfs_delegate_admin: fix: zfs allow cannot parse unknown uid/gid (#5943)

When setting allow permissions for particular users or groups
there will be circumstances when that user is not known to the
host system.

In that case the output of `zfs allow <pool/dataset>`
looks similar to this:

  $ sudo zfs allow tank/test
  ---- Permissions on tank/test ---------------------------------------
  Local+Descendent permissions:
    user (unknown: 1002) hold
    user zfsuser receive

The fix in this commit removes ' (unknown: '+')' from the output
leaving only the uid/gid.

This allows the current parser to continue even if the uid/gid
is not known.

This situation occurs most often when moving a zpool from one system
to another that may not have the same users/groups. Simply adding
permissions to a user/group and then deleting the user/group
from the system will cause this situation to occur.

(cherry picked from commit 53f729730b)

Co-authored-by: Phil Kauffman <philip@kauffman.me>
2023-02-25 11:48:25 +01:00
patchback[bot]
3d8049190c [PR #6034/f0529dcb backport][stable-6] lxd plugins and modules: fix TLS/SSL context creation (#6084)
lxd plugins and modules: fix TLS/SSL context creation (#6034)

Use correct purpose.

(cherry picked from commit f0529dcb0e)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-25 11:41:35 +01:00
patchback[bot]
54025a2efc [PR #6048/682c6fc9 backport][stable-6] nmcli: Treat order as significant when comparing address lists (#6082)
nmcli: Treat order as significant when comparing address lists (#6048)

* nmcli: Treat order as significant when comparing address lists

Don't sort the old and new values for ipv4.addresses and
ipv6.addresses before comparing them, because order matters in these
parameters: the first address specified is the default source address
for outbound connections.

* Changelog fragment for #6048

* Update changelogs/fragments/6048-nmcli-addres-order.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 682c6fc967)

Co-authored-by: Jonathan Kamens <jik@kamens.us>
2023-02-25 11:34:34 +01:00
patchback[bot]
94015c2096 [PR #6011/92544993 backport][stable-6] community.general.osx_defaults: Include stderr in error messages (#6080)
community.general.osx_defaults: Include stderr in error messages (#6011)

* Update osx_defaults documentation examples

* Include stderr in errors from osx_defaults

* Add Changelog Fragment

* Update changelogs/fragments/6011-osx-defaults-errors.yml

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

* Change format of examples

* Update plugins/modules/osx_defaults.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 92544993c0)

Co-authored-by: Joseph Shanak <josephshanak@protonmail.com>
2023-02-25 11:25:19 +01:00
patchback[bot]
b1a711633b [PR #5998/2c762c47 backport][stable-6] Added support for openSUSE MicroOS (#6078)
Added support for openSUSE MicroOS (#5998)

* fix(zypper): Added condition to check for transactional-update binary to support microos

closes #5615

* style(changelog): Made zypper-change uppercase

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

* fix(zypper): Removed check for /var/lib/misc/transactional-update.state

* feat(zypper): Aligned transactional-update checks with zypper's

* refactor(zypper): Removed dependency to psutil and made use of parsing /proc/mount

* refactor(zypper): Removed need for regex, plus small refactoring

---------

Co-authored-by: André Dörscheln <ad@itesign.de>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 2c762c4753)

Co-authored-by: andre161292 <andre161292@users.noreply.github.com>
2023-02-25 11:23:44 +01:00
patchback[bot]
79d15d526a [PR #5863/95b8afde backport][stable-6] providerType should be defaulted for keycloak_user_federation mappers (#6079)
providerType should be defaulted for keycloak_user_federation mappers (#5863)

* feat(modules/keycloak_user_federation): mapper ...

... provider type should have a default value

* add changelog fragment

---------

Co-authored-by: Mirko Wilhelmi <Mirko.Wilhelmi@sma.de>
(cherry picked from commit 95b8afdea3)

Co-authored-by: morco <thegreatwiper@web.de>
2023-02-25 11:23:26 +01:00
patchback[bot]
3aeaab2708 [PR #6075/de1f0ff4 backport][stable-6] Consolidate onepassword unit tests so that ansible-test will find them when the plugin is modified (#6076)
Consolidate onepassword unit tests so that ansible-test will find them when the plugin is modified (#6075)

Consolidate onepassword unit tests so that ansible-test will find them when the plugin is modified.

(cherry picked from commit de1f0ff419)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-25 11:22:36 +01:00
Felix Fontein
470f4e8c02 [stable-6] Run tests with EOL ansible-core versions in GHA (#6069)
* Run tests with EOL ansible-core versions in GHA (#6044)

Run tests with EOL ansible-core versions in GHA.

(cherry picked from commit b72b7d4936)

* Re-schedule cron.
2023-02-24 12:50:57 +01:00
Felix Fontein
f7f79defab [stable-6] Add attributes to SAP modules (#6068)
Add attributes to SAP modules.
2023-02-24 11:26:20 +01:00
patchback[bot]
d4d1c847cf [PR #6066/0307fd12 backport][stable-6] Add attributes to ocapi_info (#6067)
Add attributes to ocapi_info (#6066)

Add attributes to ocapi_info.

(cherry picked from commit 0307fd12eb)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:26:12 +01:00
Felix Fontein
044c706d64 Prepare 6.4.0 release. 2023-02-24 11:18:18 +01:00
patchback[bot]
e22667b72f [PR #5963/673c79f6 backport][stable-6] Add attributes to apache2, cobbler, dimensiondata, icinga2, lxca, pritunl, and spectrum modules (#6059)
Add attributes to apache2, cobbler, dimensiondata, icinga2, lxca, pritunl, and spectrum modules (#5963)

Add attributes to apache2, cobbler, dimensiondata, icinga2, lxca, pritunl, and spectrum modules.

(cherry picked from commit 673c79f6d9)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:05:04 +01:00
patchback[bot]
4fc0c9a6d8 [PR #5962/51394b55 backport][stable-6] Add attributes to some messaging modules (#6060)
Add attributes to some messaging modules (#5962)

Add attributes to some messaging modules.

(cherry picked from commit 51394b55a0)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:04:52 +01:00
patchback[bot]
93650233e4 [PR #5960/3b97fad5 backport][stable-6] Add attributes to some filesystem modules (#6061)
Add attributes to some filesystem modules (#5960)

Add attributes to some filesystem modules.

(cherry picked from commit 3b97fad577)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:04:44 +01:00
patchback[bot]
a41d1851a5 [PR #5959/5b9ee786 backport][stable-6] Add attributes to aix and ibm modules (#6058)
Add attributes to aix and ibm modules (#5959)

Add attributes to aix and ibm modules.

(cherry picked from commit 5b9ee78610)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:04:36 +01:00
patchback[bot]
bd4da7f2c0 [PR #5957/1f1ae558 backport][stable-6] Add attributes to consul, datadog, jenkins, pagerduty, rundeck, and sensu modules (#6057)
Add attributes to consul, datadog, jenkins, pagerduty, rundeck, and sensu modules (#5957)

* Add attributes to consul, datadog, jenkins, pagerduty, rundeck, and sensu modules.

* Fix error.

(cherry picked from commit 1f1ae558f9)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:04:27 +01:00
patchback[bot]
bf853f6f35 [PR #5956/bad4b4b0 backport][stable-6] Add attributes to source control modules (#6056)
Add attributes to source control modules (#5956)

Add attributes to source control modules.

(cherry picked from commit bad4b4b086)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:04:20 +01:00
patchback[bot]
5dc34829c4 [PR #5955/e944a67c backport][stable-6] Add attributes to manageiq, udm, utm, and webfaction modules (#6055)
Add attributes to manageiq, udm, utm, and webfaction modules (#5955)

Add attributes to manageiq, udm, utm, and webfaction modules.

(cherry picked from commit e944a67c18)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:04:11 +01:00
patchback[bot]
061b861211 [PR #5954/3ec2fde2 backport][stable-6] Add attributes to package manager modules (#6062)
Add attributes to package manager modules (#5954)

Add attributes to package manager modules.

(cherry picked from commit 3ec2fde2c6)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:04:03 +01:00
patchback[bot]
e4ce977079 [PR #5953/cc3a79bc backport][stable-6] Add attributes to some database modules (#6054)
Add attributes to some database modules (#5953)

Add attributes to some database modules.

(cherry picked from commit cc3a79bc48)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:03:56 +01:00
patchback[bot]
4776ee20e3 [PR #5950/18a6bdd6 backport][stable-6] Add attributes to ipa and keycloak modules (#6063)
Add attributes to ipa and keycloak modules (#5950)

Add attributes to ipa and keycloak modules.

(cherry picked from commit 18a6bdd6aa)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:03:47 +01:00
patchback[bot]
fdfcd15960 [PR #5952/cc29b165 backport][stable-6] Add attributes to clc, hwc, and lxd modules (#6053)
Add attributes to clc, hwc, and lxd modules (#5952)

Add attributes to clc, hwc, and lxd modules.

(cherry picked from commit cc29b16536)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:03:38 +01:00
patchback[bot]
b934e06569 [PR #5949/50d7597d backport][stable-6] Add attributes to scaleway and profitbricks modules (#6052)
Add attributes to scaleway and profitbricks modules (#5949)

Add attributes to scaleway and profitbricks modules.

(cherry picked from commit 50d7597ddc)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-24 11:03:30 +01:00
Felix Fontein
5589bcb659 [stable-6] Add attributes to oneandone, ovh, and rackspace modules (#6064)
Add attributes to oneandone, ovh, and rackspace modules (#5948)

Add attributes to oneandone, ovh, and rackspace modules.

(cherry picked from commit 6bd131f2fb)
2023-02-24 11:03:19 +01:00
patchback[bot]
41af1c3693 [PR #5431/490899f8 backport][stable-6] nmcli: two fixes needed to make wifi.wake-on-wlan settings work properly (#6051)
nmcli: two fixes needed to make wifi.wake-on-wlan settings work properly (#5431)

* nmcli: Convert current value of wifi.wake-on-wlan before comparing

The new value of wifi.wake-on-wlan is specified as an integer, but in
the nmcli output it's specified as a hex string followed by a textual
description of it. Therefore, to determine properly whether it's being
changed we need to pull the hex string out of the current value,
convert it into an integer, and finally convert the integer back to a
string so that we can compare it to the new specified value. Without
this change, whenever wifi.wake-on-wlan is specified in the module
arguments the module will think the value is being changed even when
it isn't.

* nmcli: Handle wifi options correctly when connection type not specified

When an nmcli task does not specify the connection type and the module
ask nmcli for it, the module needs to convert nmcli's
`802-11-wireless` to `wifi`, the term for this connection type used by
the module.

* nmcli: Correctly detect values changed to the integer 0

If the user specifies a value of 0 (without quotes) in a task, we
should interpret that as an actual value, not empty, when comparing
the new value to the old one. Otherwise we incorrectly conclude that
there was no change.

* Changelog fragment for #5431

(cherry picked from commit 490899f87f)

Co-authored-by: Jonathan Kamens <jik@kamens.us>
2023-02-24 09:29:49 +01:00
patchback[bot]
3802d54922 [PR #6043/c168f9c3 backport][stable-6] JC: Add plugin parser functionality to JC Filter Plugin (#6047)
JC: Add plugin parser functionality to JC Filter Plugin (#6043)

* Add plugin parser functionality to JC Filter Plugin

The parse function was added in jc v1.18.0 which allows plugin parsers to be used. This change will try the new API if available, else fallback to the old API so there is no change in behavior.

* remove whitespace from blank line

* Add changelog fragment for JC plugin parser support

* add .yml extension to file name

* Formatting

* add period at end

(cherry picked from commit c168f9c3be)

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2023-02-23 17:12:09 +01:00
patchback[bot]
ff4aff0bef [PR #6031/e348d285 backport][stable-6] Re-enable Arch Linux tests (#6040)
Re-enable Arch Linux tests (#6031)

Revert "Disable Arch Linux tests for now (#6013)"

This reverts commit 1b2c2af9a8.

(cherry picked from commit e348d28559)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-23 07:19:22 +00:00
patchback[bot]
86b19a2bf4 [PR #6041/a7e8e95b backport][stable-6] onepassword lookup: fix unit tests (#6042)
onepassword lookup: fix unit tests (#6041)

Fix unit tests.

(cherry picked from commit a7e8e95b50)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-22 23:10:15 +01:00
patchback[bot]
1fc53eea22 [PR #5942/5648e0e2 backport][stable-6] onepassword: ignore errors from "op account get" (#6037)
onepassword: ignore errors from "op account get" (#5942)

* ignore errors from "op account get"

* add changelog fragment

* Update changelogs/fragments/5942-onepassword-ignore-errors-from-op-account-get.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 5648e0e2af)

Co-authored-by: Glenn Marcy <gmarcy@us.ibm.com>
2023-02-22 16:43:55 +01:00
patchback[bot]
3ecbadf694 [PR #5934/78297e44 backport][stable-6] Fix keycloak sanitize_cr (#6036)
Fix keycloak sanitize_cr (#5934)

* Fix keycloak sanitize_cr

* Update changelogs/fragments/5934-fix-keycloak-sanitize_cr.yml

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

---------

Co-authored-by: Claude Dioudonnat <claude.dioudonnat@be-ys.cloud>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 78297e44b7)

Co-authored-by: Claude Dioudonnat <claude@dioudonnat.fr>
2023-02-22 15:23:33 +01:00
patchback[bot]
2181c2b090 [PR #5951/cb7a970f backport][stable-6] Add attributes for modules with action plugin (#6033)
Add attributes for modules with action plugin (#5951)

Add attributes for modules with action plugin.

(cherry picked from commit cb7a970f6f)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-22 13:58:29 +00:00
patchback[bot]
0c295d4f61 [PR #5866/7e3c73ce backport][stable-6] lxd_container: add check- and diff-mode support (#6032)
`lxd_container`: add check- and diff-mode support (#5866)

* lxd_container module: Automate CONFIG_PARAM handling.

Signed-off-by: InsanePrawn <insane.prawny@gmail.com>

* lxd_container: check- and diff mode

Signed-off-by: InsanePrawn <insane.prawny@gmail.com>

* Make JSON lookups safer and fix crashes in check mode when instance is absent

* lxd_profile: fix docstring typos

* lxd_container: simplify _needs_to_change_instance_config()

* lxd_container: add docstring for check- and diff-mode and changelog fragment

* style fixes

* lxd_container: fix typo in actions: "unfreez" lacks an "e"

---------

Signed-off-by: InsanePrawn <insane.prawny@gmail.com>
(cherry picked from commit 7e3c73ceb2)

Co-authored-by: Prawn <Insane.Prawny@gmail.com>
2023-02-22 14:49:28 +01:00
Felix Fontein
db451bf68a [stable-6] Check mode has only been added for some _info and _facts modules in a bugfix (#6026)
Check mode has only been added for some _info and _facts modules in a bugfix (#5969)

Check mode has only been added for some _info and _facts modules in a bugfix.

(cherry picked from commit 867aee606e)
2023-02-20 18:08:15 +01:00
patchback[bot]
91095240f4 [PR #5967/d03ae532 backport][stable-6] Add attributes to more modules (3/4) (#6025)
Add attributes to more modules (3/4) (#5967)

Add attributes to more modules.

(cherry picked from commit d03ae532ed)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-20 17:58:28 +01:00
patchback[bot]
e92908b66e [PR #5964/9de14548 backport][stable-6] Add attributes to various basic modules (#6021)
Add attributes to various basic modules (#5964)

* Add attributes to various basic modules.

* Check and diff mode for pam_limits was added in #830.

(cherry picked from commit 9de145482b)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-20 17:47:39 +01:00
patchback[bot]
ef09ea519c [PR #5965/0ef80569 backport][stable-6] Add attributes to more modules (1/4) (#6022)
Add attributes to more modules (1/4) (#5965)

* Add attributes to more modules.

* Apply suggestions from code review.

Co-authored-by: Kristian Heljas <11139388+kristianheljas@users.noreply.github.com>

---------

Co-authored-by: Kristian Heljas <11139388+kristianheljas@users.noreply.github.com>
(cherry picked from commit 0ef805699d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-20 17:47:01 +01:00
patchback[bot]
611e024550 [PR #5968/4b262e39 backport][stable-6] Add attributes to more modules (4/4) (#6024)
Add attributes to more modules (4/4) (#5968)

* Add attributes to more modules.

* Adjust indentation.

Co-authored-by: Kristian Heljas <11139388+kristianheljas@users.noreply.github.com>

---------

Co-authored-by: Kristian Heljas <11139388+kristianheljas@users.noreply.github.com>
(cherry picked from commit 4b262e39f0)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-20 17:46:51 +01:00
patchback[bot]
94b4034fd2 [PR #5966/b4a50010 backport][stable-6] Add attributes to more modules (2/4) (#6023)
Add attributes to more modules (2/4) (#5966)

Add attributes to more modules.

(cherry picked from commit b4a500103a)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-20 17:46:37 +01:00
patchback[bot]
1bfdee0830 [PR #5961/755a4969 backport][stable-6] Add attributes to remove management modules (#6020)
Add attributes to remove management modules (#5961)

Add attributes to remove management modules.

(cherry picked from commit 755a49692d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-20 17:42:18 +01:00
patchback[bot]
9350954aa3 [PR #5958/ed79a685 backport][stable-6] Add attributes to atomic, memset, one, oneview, packet, proxmox, and xenserver modules (#6019)
Add attributes to atomic, memset, one, oneview, packet, proxmox, and xenserver modules (#5958)

Add attributes to atomic, memset, one, oneview, packet, proxmox, and xenserver modules.

(cherry picked from commit ed79a68553)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-20 17:42:08 +01:00
patchback[bot]
2f05cd3330 [PR #5947/3186a944 backport][stable-6] Add attributes to git* modules (#6018)
Add attributes to git* modules (#5947)

Add attributes to git* modules.

(cherry picked from commit 3186a944e9)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-20 17:41:58 +01:00
patchback[bot]
27906ca76b [PR #6013/1b2c2af9 backport][stable-6] Disable Arch Linux tests for now (#6016)
Disable Arch Linux tests for now (#6013)

Disable Arch Linux tests for now until https://github.com/ansible-community/images/pull/40 and https://github.com/systemd/systemd/issues/26474 are resolved.

(cherry picked from commit 1b2c2af9a8)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-18 21:56:40 +01:00
patchback[bot]
278b0607f5 [PR #5899/71d74a79 backport][stable-6] Adding EnableSecureBoot functionality (#6007)
Adding EnableSecureBoot functionality (#5899)

* rebase merge

* Sanity fixes

* Optimizing code as suggested by PR comments

* Optimizing code as suggested by PR comments

* PR comment changes

* Adding changelog fragment

* Update changelogs/fragments/5899-adding-enablesecureboot-functionality-to-redfish-config.yml

Agreed

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

---------

Co-authored-by: Kushal <t-s.kushal@hpe.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 71d74a7960)

Co-authored-by: TSKushal <44438079+TSKushal@users.noreply.github.com>
2023-02-17 20:20:23 +01:00
patchback[bot]
00d1160b56 [PR #5927/33df7b61 backport][stable-6] Set User-Agent for API requests to DNSimple (#6005)
Set User-Agent for API requests to DNSimple (#5927)

* Set the user-agent for API requests to DNSimple

* Update user agent format

* Add changelog fragment

* Update changelogs/fragments/5927-set-user-agent-dnsimple.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 33df7b61c0)

Co-authored-by: Ivan Bakalov <ibbakalov@gmail.com>
2023-02-17 08:08:35 +01:00
patchback[bot]
4266163c13 [PR #5900/49e3da36 backport][stable-6] Adding VerifyBiosAttributes functionality (#6006)
Adding VerifyBiosAttributes functionality (#5900)

* Adding VerifyBiosAttributes functionality

* Updating authors information

* PR comment changes

* Update plugins/modules/redfish_command.py

Agreed

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

* Adding author as redfish maintainer

* Adding changelog fragment

* Update changelogs/fragments/5900-adding-verifybiosattribute-fucntionality-to-redfish-command.yml

Agreed

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

---------

Co-authored-by: Kushal <t-s.kushal@hpe.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 49e3da3646)

Co-authored-by: TSKushal <44438079+TSKushal@users.noreply.github.com>
2023-02-17 08:08:27 +01:00
patchback[bot]
ec7f885e2f [PR #5996/24efe9ee backport][stable-6] Normalize bools in tests (#5997)
Normalize bools in tests (#5996)

* Normalize bools in tests.

* Fix typo.

(cherry picked from commit 24efe9ee9a)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-16 06:42:27 +01:00
patchback[bot]
4f71c9384e [PR #5829/4c4ef80c backport][stable-6] yarn: Fix state=latest not working with global=true (#5992)
yarn: Fix state=latest not working with global=true (#5829)

* Yarn module: fix state=latest not working with global=true

* fix whitespace

* add changelog fragment

* add integration test cases

* add only tests for this PR (install+upgrade)

* fix assuming default global dir

* fix list() not working when global=true and name a package with no binary

* remove ignores

* whitespace

* Update changelogs/fragments/5829-fix-yarn-global.yml

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

* Update changelogs/fragments/5829-fix-yarn-global.yml

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
(cherry picked from commit 4c4ef80ca9)

Co-authored-by: Sargun Vohra <sargun.vohra@gmail.com>
2023-02-13 22:07:12 +01:00
patchback[bot]
53e5f51e57 [PR #5989/cd0a414e backport][stable-6] Update gitlab_project_members.py - typo fix (#5991)
Update gitlab_project_members.py - typo fix (#5989)

Update gitlab_project_members.py

##### SUMMARY

typo fix

##### ISSUE TYPE
- Docs Pull Request

+label: docsite_pr

(cherry picked from commit cd0a414e9f)

Co-authored-by: cybernet <cybernet2u@yahoo.com>
2023-02-13 22:07:01 +01:00
patchback[bot]
83ff925417 [PR #5931/f0fd6aa9 backport][stable-6] Suppress urllib3 InsecureRequestWarnings when validate_certs option is false (#5987)
Suppress urllib3 InsecureRequestWarnings when `validate_certs` option is false (#5931)

* Suppress urllib3 InsecureRequestWarnings when validate_certs option is false

Suppress urllib3 InsecureRequestWarnings when `validate_certs` option is false.

It's clear that the user would know the possible risk when he or she chose to turn off the option, so the warning message could be ignored and make the output clean.

* Create 5915-suppress-urllib3-insecure-request-warnings.yml

* Update changelogs/fragments/5915-suppress-urllib3-insecure-request-warnings.yml

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

* Remove extra whitespaces

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f0fd6aa97d)

Co-authored-by: Boik <qazbnm456@gmail.com>
2023-02-13 21:47:26 +01:00
patchback[bot]
8ff611089b [PR #5885/c587c09d backport][stable-6] Remove skornehl as maintainer for datadog_monitor (#5988)
Remove skornehl as maintainer for datadog_monitor (#5885)

Remove skornehl as maintainer for datadog_monitor.

(cherry picked from commit c587c09df1)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-13 21:40:52 +01:00
patchback[bot]
4def87bc53 [PR #5981/68d0cac3 backport][stable-6] Ignore more unnecessary import warnings (#5983)
Ignore more unnecessary import warnings (#5981)

Fix imports.

(cherry picked from commit 68d0cac310)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-12 22:13:22 +01:00
patchback[bot]
3d70bfa1e4 [PR #5978/9f87989e backport][stable-6] Remove unnecessary test imports (#5979)
Remove unnecessary test imports (#5978)

Remove unnecessary test imports.

(cherry picked from commit 9f87989e7f)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-12 21:36:32 +01:00
patchback[bot]
554ec94110 [PR #5940/2b8ac3c6 backport][stable-6] Remove unneccessary imports (#5976)
Remove unneccessary imports (#5940)

* Remove unneccessary imports.

* Keep unnecessary imports in module_utils - for now.

* Make older sanity tests shut up.

* Also make flake8 happier.

(cherry picked from commit 2b8ac3c629)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-12 20:22:44 +01:00
patchback[bot]
ab4f96105c [PR #5930/de193ac1 backport][stable-6] Align 'gitlab_runner' with GitLab's default access level. (#5971)
Align 'gitlab_runner' with GitLab's default access level. (#5930)

Signed-off-by: Christoph Fiehe <c.fiehe@eurodata.de>
Co-authored-by: Christoph Fiehe <c.fiehe@eurodata.de>
(cherry picked from commit de193ac1bf)

Co-authored-by: cfiehe <cfiehe@users.noreply.github.com>
2023-02-10 14:12:15 +01:00
patchback[bot]
d8cf32e6c4 [PR #5933/b1d9507c backport][stable-6] Fix pylint errors (#5937)
Fix pylint errors (#5933)

* Fix pylint errors.

* Also adjust to https://github.com/ansible/ansible/pull/79909.

(cherry picked from commit b1d9507cd2)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-02-04 17:22:05 +01:00
patchback[bot]
ead9524dc3 [PR #5928/a64df658 backport][stable-6] Replace missing default favicon with docs.ansible.com favicon (#5935)
Replace missing default favicon with docs.ansible.com favicon (#5928)

* replace missing default favicon with docs.ansible.com

* create changelog fragment for PR 5928

* move changelog fragment

* fix parameter description

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

* fix parameter description

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

* add affected modules in changelog fragment

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

---------

Co-authored-by: Lars Krahl <lkr@mms-dresden.de>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit a64df658c5)

Co-authored-by: Lars Krahl <57526005+mmslkr@users.noreply.github.com>
2023-02-03 11:46:40 +01:00
Felix Fontein
5d5d403415 Next expected release is 6.4.0. 2023-01-31 08:11:38 +01:00
Felix Fontein
d483fd9482 Release 6.3.0. 2023-01-31 07:17:03 +01:00
Felix Fontein
8da9cf3276 Fix changelog fragment types.
(cherry picked from commit 84dbb286eb)
2023-01-31 07:15:28 +01:00
patchback[bot]
3c5c3a0113 [PR #5903/ea5cbe25 backport][stable-6] Redfish: Removed basic auth header when performing a GET on the service root and POST to the session collection (#5924)
Redfish: Removed basic auth header when performing a GET on the service root and POST to the session collection (#5903)

* Redfish: Removed basic auth header when performing a GET on the service root and POST to the session collection

* Update changelogs/fragments/5886-redfish-correct-basic-auth-usage-on-session-creation.yml

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit ea5cbe2553)

Co-authored-by: Mike Raineri <mraineri@gmail.com>
2023-01-30 21:17:09 +01:00
patchback[bot]
7def57a71f [PR #5908/31ff3f66 backport][stable-6] Fixes #5907: gitlab_runner is not idempotent on first run after runner creation (#5922)
Fixes #5907: gitlab_runner is not idempotent on first run after runner creation (#5908)

This fix introduces the new boolean option 'access_level_on_creation'. It controls, whether the value of 'access_level' is used for runner registration or not. The option 'access_level' has been ignored on registration so far and was only used on updates. The user is informed by a deprecation warning, if the option is unspecified. For reasons of compatibility 'false' is assumed in that case. The option 'access_level_on_creation' will switch to 'true' for the next major release (community.general 7.0.0)

Signed-off-by: Christoph Fiehe <c.fiehe@eurodata.de>
Co-authored-by: Christoph Fiehe <c.fiehe@eurodata.de>
(cherry picked from commit 31ff3f662d)

Co-authored-by: cfiehe <cfiehe@users.noreply.github.com>
2023-01-30 21:16:57 +01:00
patchback[bot]
e5930aabcb [PR #5883/dcc3d4f5 backport][stable-6] Add support for setenv parameters (#5920)
Add support for setenv parameters (#5883)

(cherry picked from commit dcc3d4f508)

Co-authored-by: Renaud <33203203+redat00@users.noreply.github.com>
2023-01-30 05:57:28 +00:00
patchback[bot]
48bfba435f [PR #5918/393f2d61 backport][stable-6] Fix PLATFORM attributes docs fragment (#5919)
Fix PLATFORM attributes docs fragment (#5918)

Fix PLATFORM attributes docs fragment.

(cherry picked from commit 393f2d6153)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-01-29 22:28:51 +01:00
patchback[bot]
9740b76f3c [PR #5914/3da24d50 backport][stable-6] dig lookup: fix DNSKEY's algorithm handling (#5916)
dig lookup: fix DNSKEY's algorithm handling (#5914)

Fix DNSKEY's algorithm handling.

(cherry picked from commit 3da24d50cd)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-01-29 18:37:27 +01:00
patchback[bot]
24cf561135 [PR #5913/451c9025 backport][stable-6] dig lookup: support CAA record type (#5917)
dig lookup: support CAA record type (#5913)

* Support CAA record type.

* Update return docs.

(cherry picked from commit 451c90251a)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-01-29 18:37:18 +01:00
patchback[bot]
61324ed9eb [PR #5897/6c6de8fb backport][stable-6] add external user support to ipa_group module (#5912)
add external user support to ipa_group module (#5897)

* add external user support to ipa_group module

* add changelog

* fix style errors

* remove trailing whitespace

* Update plugins/modules/ipa_group.py

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

* Update plugins/modules/ipa_group.py

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

* Update plugins/modules/ipa_group.py

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

* Update plugins/modules/ipa_group.py

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

* Update changelogs/fragments/5897-ipa_group-add-external-users.yml

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

* Update plugins/modules/ipa_group.py

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

* Update plugins/modules/ipa_group.py

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

---------

Co-authored-by: Yuriy Halytskyy <yuriy.halytskyy@nesi.org.nz>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 6c6de8fb90)

Co-authored-by: yhal003 <yuriy.halytskyy@gmail.com>
2023-01-29 15:33:30 +01:00
patchback[bot]
99336ba5fe [PR #5812/8818a6f2 backport][stable-6] OpenNebula/one_vm implement the one.vm.updateconf API call (#5905)
OpenNebula/one_vm implement the one.vm.updateconf API call (#5812)

* opennebula: Add template manipulation helpers

* one_vm: Use 'updateconf' API call to modify running VMs

* one_vm: Emulate 'updateconf' API call for newly created VMs

* opennebula/one_vm: Satisfy linter checks

* opennebula/one_vm: Apply suggestions from code review

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* opennebula/one_vm: Drop 'extend' function, use 'dict_merge' instead

* Add changelog fragment

* one_vm: Refactor 'parse_updateconf' function

* opennebula/one_vm: Apply suggestions from code review

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

* one_vm: Allow for using updateconf in all scenarios

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 8818a6f242)

Co-authored-by: Michal Opala <mopala@opennebula.io>
2023-01-28 11:52:27 +01:00
patchback[bot]
9d99ccef2d [PR #5851/7b8b73f1 backport][stable-6] Add support to Bitwarden Lookup for filtering results by collection (#5849) (#5904)
Add support to Bitwarden Lookup for filtering results by collection (#5849) (#5851)

* Add support to Bitwarden Lookup for filtering results by collection id (#5849)

* Debug

* Add support to Bitwarden Lookup for filtering results by collection id (#5849)

* Update comments

* Fix blank line issue

* Fix unit tests for bitwarden lookup plugin. Add changelog fragment file.

* Change collectionId to collection_id parameter on bitwarden plugin

* Fix collection id parameter name when used in bw cli

(cherry picked from commit 7b8b73f17f)

Co-authored-by: Piotr <skc.peter@gmail.com>
2023-01-28 11:52:14 +01:00
patchback[bot]
a146eb3118 [PR #5888/855cbd67 backport][stable-6] Update gitlab_deploy_key.py (#5896)
Update gitlab_deploy_key.py (#5888)

* Update gitlab_deploy_key.py

Change key title on key update

* Create 5888-update-key-title

Add changelog fragment for key title change

* Update changelogs/fragments/5888-update-key-title

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

* Rename 5888-update-key-title to 5888-update-key-title.yml

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 855cbd67ae)

Co-authored-by: lapete <github@lapete.de>
2023-01-26 06:23:51 +01:00
patchback[bot]
c7f7bd6050 [PR #5822/fe520a6b backport][stable-6] Gem: Support force flag when uninstalling (#5884)
Gem: Support force flag when uninstalling (#5822)

* Gem: Support force flag when uninstalling

* Improve docs' syntax

* Add changelog fragment

(cherry picked from commit fe520a6b09)

Co-authored-by: Juan Vela <juan.vela.bcn@gmail.com>
2023-01-24 20:06:16 +01:00
patchback[bot]
54099d77ff [PR #5803/f38bfadd backport][stable-6] Bugfix: proxmox_disk - read time out on import (#5881)
Bugfix: proxmox_disk - read time out on import (#5803)

* Use async calls and fix docs

* Add changelog fragment

(cherry picked from commit f38bfaddf0)

Co-authored-by: castorsky <csky57@gmail.com>
2023-01-23 23:16:01 +01:00
patchback[bot]
ee07d8320a [PR #5868/098912c2 backport][stable-6] stormssh tests: do not install newer cryptography (#5872)
stormssh tests: do not install newer cryptography (#5868)

Do not install newer cryptography.

ci_complete

(cherry picked from commit 098912c229)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-01-22 18:16:53 +01:00
patchback[bot]
0729f0c262 [PR #5811/bf117c83 backport][stable-6] Clarify Error message when bitwarden vault not unlocked (#5878)
Clarify Error message when bitwarden vault not unlocked (#5811)

* Clarify Error message when vault not unlocked

You can be logged into the Bitwarden-CLI, but it can still be locked. This took me several hours to debug, since every time I ran 'bw login' it told me, that I am already logged in.
If you run 'bw unlock' without being logged in, you are prompted to log in.
This clarifies the Error occurring and can drastically reduce debugging time, since you don't have to look into the source code to get an understanding of whats wrong.

* RM: negation

Nobody needs negation

* Update function name

* FIX: tests

* ADD: changelog

* Update changelogs/fragments/5811-clarify-bitwarden-error.yml

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit bf117c839c)

Co-authored-by: Christoph <29735603+Chr1s70ph@users.noreply.github.com>
2023-01-22 17:46:44 +01:00
patchback[bot]
57cd48f3cf [PR #5750/6781dd19 backport][stable-6] bugfixing keycloak user federation failing when updating default mapper simultaneously (#5876)
bugfixing keycloak user federation failing when updating default mapper simultaneously (#5750)

* fix(modules/keycloak_user_federation): fixes ...

... user federation creation failing when also updating/changing default
mappers at the same time

* add changelog fragment for pr

Co-authored-by: Mirko Wilhelmi <Mirko.Wilhelmi@sma.de>
(cherry picked from commit 6781dd1918)

Co-authored-by: morco <thegreatwiper@web.de>
2023-01-22 17:44:52 +01:00
patchback[bot]
afd2151672 [PR #5732/0ca41ded backport][stable-6] Bugfix/keycloak userfed idempotency (#5874)
Bugfix/keycloak userfed idempotency (#5732)

* fix(modules/keycloak_user_federation): fixes ...

... federation read call not finding already existing federations
properly because of bad parametrisation

* fix(modules/keycloak_user_federation): added ...

... new integration test for module idempotency bugfix

* added changelog fragment for pr

Co-authored-by: Mirko Wilhelmi <Mirko.Wilhelmi@sma.de>
(cherry picked from commit 0ca41dedce)

Co-authored-by: morco <thegreatwiper@web.de>
2023-01-22 17:44:42 +01:00
patchback[bot]
ea9b272043 [PR #5754/59a9d342 backport][stable-6] Remote management modules for OCAPI-based devices. (#5869)
Remote management modules for OCAPI-based devices. (#5754)

* Remote management modules for OCAPI-based devices.

    Open Composable API (OCAPI) is a REST-based API designed for data center composability. For more information, see https://www.opencompute.org/documents/open-composable-api-for-ocp-2019-06-24-pdf

    This PR introduces ocapi_command and ocapi_info modules.  These are based on the existing redfish_command and redfish_info modules and follow similar patterns.  This initial implementation includes support for the folowing operations:

    - Indicator LED toggling
    - Power state toggling
    - Enclosure reset (reboot)
    - Firmware upload
    - Firmware update
    - Firmware activate
    - Job deletion
    - Job status

    These modules have been tested against Western Digital OpenFlex(tm) Data24 storage enclosures. API reference is at https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/platforms/openflex/reference-architecture-open-composable-api.pdf

* Fix licensing issue for ocapi_utils.py

* PR Feedback

* Apply suggestions from code review

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

* Update plugins/module_utils/ocapi_utils.py

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

* Update plugins/modules/ocapi_info.py

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

* Apply suggestions from code review

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

* PR Feedback

Use six module for urlparse

* Apply suggestions from code review

Documentation fixes.

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

* Fix sanity test line too long error.

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 59a9d34250)

Co-authored-by: Mike Moerk <michael.moerk@wdc.com>
2023-01-22 17:23:28 +01:00
patchback[bot]
60addb332d [PR #5499/c4b18361 backport][stable-6] scaleway module utils: make function private that should be removed (#5860)
scaleway module utils: make function private that should be removed (#5499)

* Make function private that should be removed (ref: #5497).

* Maybe it works as a comment?

* Try something else.

* Ok, let's just add a comment.

* Last try: docstring instead of comment.

(cherry picked from commit c4b18361b9)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-01-18 21:44:08 +01:00
patchback[bot]
1ade62c5bc [PR #5845/1430ed00 backport][stable-6] pipx: add testcase w/ env vars PIPX_xxxx (#5859)
pipx: add testcase w/ env vars PIPX_xxxx (#5845)

* pipx: add testcase w/ env vars PIPX_xxxx

* add note to the docs about env vars

* add note to the docs about env vars

* Apply suggestions from code review

* Update plugins/modules/pipx.py

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

* Update plugins/modules/pipx_info.py

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

* break long lines into smaller ones

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 1430ed000c)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-01-18 21:43:16 +01:00
Felix Fontein
7c8cc96d8b Prepare 6.3.0 release. 2023-01-18 08:18:55 +01:00
patchback[bot]
ca177a0ceb [PR #5844/a35b2eda backport][stable-6] iptables_state: minor pythonisms (#5855)
iptables_state: minor pythonisms (#5844)

* iptables_state: minor pythonisms

* add changelog fragment

* fix typo

(cherry picked from commit a35b2eda4c)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-01-18 08:17:56 +01:00
patchback[bot]
c0e769e5f5 [PR #5804/b92542de backport][stable-6] Minor changes to HPE iLO collection (#5854)
Minor changes to HPE iLO collection (#5804)

* Minor changes to setting IPs of servers

* Lint fix

* Added change log

* Update changelogs/fragments/5804-minor-changes-to-hpe-ilo-collection.yml

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b92542dea2)

Co-authored-by: Bhavya <44067558+Bhavya06@users.noreply.github.com>
2023-01-18 08:09:20 +01:00
patchback[bot]
585dbc3171 [PR #5818/5ad703ac backport][stable-6] nsupdate: fix zone lookup (#5853)
nsupdate: fix zone lookup (#5818)

The SOA record for an existing zone is returned as an answer RR and not
as an authority RR. It can be returned as an authority RR for subdomains
of a zone.

$ dig -t SOA example.com
;; ANSWER SECTION:
example.com.	3530	IN	SOA	ns.icann.org. noc.dns.icann.org. 2022091184 7200 3600 1209600 3600

$ dig -t SOA www.example.com
;; AUTHORITY SECTION:
example.com.	3600	IN	SOA	ns.icann.org. noc.dns.icann.org. 2022091184 7200 3600 1209600 3600

(cherry picked from commit 5ad703ac64)

Co-authored-by: n0p90 <36303164+n0p90@users.noreply.github.com>
2023-01-17 21:32:11 +01:00
patchback[bot]
b400491ef3 [PR #5843/44172dda backport][stable-6] Add -no-color argument to terraform validation (#5847)
Add -no-color argument to terraform validation (#5843)

(cherry picked from commit 44172ddaa6)

Co-authored-by: Kristian Heljas <11139388+kristianheljas@users.noreply.github.com>
2023-01-16 23:11:08 +01:00
patchback[bot]
490baed566 [PR #5837/3985ade3 backport][stable-6] Add PLATFORM docs fragment (#5840)
Add PLATFORM docs fragment (#5837)

Add PLATFORM docs fragment.

(cherry picked from commit 3985ade3fc)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-01-14 19:04:28 +01:00
patchback[bot]
811c4a304a [PR #5793/756c0776 backport][stable-6] apache2_module generates false/misleading warning (#5841)
apache2_module generates false/misleading warning (#5793)

* Add parameter warn_mpm_module to control when warning are raised

* Remoe whitespace

* Add changelog fragment

* Add missing license

* Update changelogs/fragments/5793-apache2-module-npm-warnings.yml

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

* Update plugins/modules/apache2_module.py

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

* Update plugins/modules/apache2_module.py

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

* Update tests/integration/targets/apache2_module/tasks/635-apache2-misleading-warning.yml

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

* Refining integration test - previous was invalid

* False to false

* refactor assertion for suse

* Revert "refactor assertion for suse"

This reverts commit 61b86e7493.

* Excluding test on Suse

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 756c0776d6)

Co-authored-by: Cédric Servais <cedric.servais@outlook.com>
2023-01-14 19:04:17 +01:00
patchback[bot]
c0fde76b79 [PR #5808/6ec04973 backport][stable-6] xml children module parameter does not exist (#5839)
xml children module parameter does not exist (#5808)

* Add changelog

* Add integration tests

* Rename children to set_children

* Add PR information

* Update changelogs/fragments/5808-xml-children-parameter-does-not-exist.yml

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 6ec049734e)

Co-authored-by: Cédric Servais <cedric.servais@outlook.com>
2023-01-14 18:40:20 +01:00
patchback[bot]
16c7615b82 [PR #5833/08b0ea70 backport][stable-6] ldap.py: capitalize one letter (#5836)
ldap.py: capitalize one letter (#5833)

(cherry picked from commit 08b0ea700d)

Co-authored-by: bluikko <14869000+bluikko@users.noreply.github.com>
2023-01-14 18:30:18 +01:00
patchback[bot]
474364c862 [PR #5772/cc79c24c backport][stable-6] consul: deprecate params incompatible with state=absent (#5831)
consul: deprecate params incompatible with state=absent (#5772)

* consul: deprecate params incompatible with state=absent

* Refrain from handling SystemExit exception

* preposition

* add changelog fragment

* Update plugins/modules/consul.py

* Update changelogs/fragments/5772-consul-deprecate-params-when-absent.yml

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit cc79c24c01)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-01-13 21:23:08 +01:00
patchback[bot]
1da5f7dc54 [PR #5766/317f79ff backport][stable-6] multiple scaleway modules: fixed markups in doc (#5827)
multiple scaleway modules: fixed markups in doc (#5766)

* multiple scaleway modules: fixed markups in doc

* Update plugins/modules/scaleway_ip.py

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

* Update plugins/modules/scaleway_volume.py

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

* Update plugins/modules/scaleway_private_network.py

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

* Update plugins/modules/scaleway_security_group.py

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

* Update plugins/modules/scaleway_security_group_rule.py

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

* Update plugins/modules/scaleway_sshkey.py

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

* further docs adjustments

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 317f79ff1f)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-01-12 21:56:31 +01:00
patchback[bot]
559c914e36 [PR #5706/58eb4957 backport][stable-6] Fixes #5691. Support gitlab forking_access_level, builds_access_level and container_registry_access_level fields (#5828)
Fixes #5691. Support gitlab forking_access_level, builds_access_level and container_registry_access_level fields (#5706)

* Fixes #5691. Support gitlab forking_access_level, builds_access_level and container_registry_access_level fields

* Add changelog fragment

* Fix revision issues

(cherry picked from commit 58eb495797)

Co-authored-by: Juan Antonio Valiño García <juanval@edu.xunta.es>
2023-01-12 21:56:18 +01:00
patchback[bot]
91cca4ae49 [PR #5810/b9ac2dcd backport][stable-6] opkg: extend docu about compatibilty with OpenWrt vs. Yocto based Linux distribitions (#5825)
opkg: extend docu about compatibilty with OpenWrt vs. Yocto based Linux distribitions (#5810)

* opkg: extend documentation: opkg also works on Yocto

... based linux distributions

Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>

* opkg: extend documentation: PACKAGE=VERSION only works on Yocto

... based linux distributions

Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>

Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>
(cherry picked from commit b9ac2dcda5)

Co-authored-by: joergho <48011876+joergho@users.noreply.github.com>
2023-01-12 21:06:21 +01:00
patchback[bot]
82a9db9738 [PR #5718/682bb4b8 backport][stable-6] opkg: refactor module to use StateModuleHelper and CmdRunner (#5824)
opkg: refactor module to use StateModuleHelper and CmdRunner (#5718)

* opkg: refactor module to use StateModuleHelper and CmdRunner

* add changelog fragment

* Update plugins/modules/opkg.py

Co-authored-by: joergho <48011876+joergho@users.noreply.github.com>

* Update plugins/modules/opkg.py

Co-authored-by: joergho <48011876+joergho@users.noreply.github.com>

* Update plugins/modules/opkg.py

Co-authored-by: joergho <48011876+joergho@users.noreply.github.com>

* Update plugins/modules/opkg.py

Co-authored-by: joergho <48011876+joergho@users.noreply.github.com>

* Update plugins/modules/opkg.py

Co-authored-by: joergho <48011876+joergho@users.noreply.github.com>

* Update plugins/modules/opkg.py

Co-authored-by: joergho <48011876+joergho@users.noreply.github.com>

* Update plugins/modules/opkg.py

Co-authored-by: joergho <48011876+joergho@users.noreply.github.com>

* generate message outcome as before

* aggregated changes from 5688

* fix package query

* add unit tests

* fix sanity error

* Update plugins/modules/opkg.py

Co-authored-by: joergho <48011876+joergho@users.noreply.github.com>

* add test for specifying version

* refactor parameter name

Co-authored-by: joergho <48011876+joergho@users.noreply.github.com>
(cherry picked from commit 682bb4b88a)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-01-12 21:06:11 +01:00
patchback[bot]
3fd84d71b8 [PR #5486/4caa6574 backport][stable-6] snap_alias: using CmdRunner (#5801)
snap_alias: using CmdRunner (#5486)

* snap_alias: using CmdRunner

* add changelog fragment

* fix changelog fragment

* invert order of initialization in __init_module__()

* comment extra changed=True from code

* add extra info when verbose

* add extra info when verbose - fix blank line

* handle check_mode the old way

* fix logical test

* fix error when using multiple aliases

* fix error when using multiple aliases, part 2

* revert to using check_mode_skip=True again

(cherry picked from commit 4caa6574de)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-01-08 22:02:42 +01:00
patchback[bot]
a17124f3c4 [PR #5486/4caa6574 backport][stable-6] snap_alias: using CmdRunner (#5801)
snap_alias: using CmdRunner (#5486)

* snap_alias: using CmdRunner

* add changelog fragment

* fix changelog fragment

* invert order of initialization in __init_module__()

* comment extra changed=True from code

* add extra info when verbose

* add extra info when verbose - fix blank line

* handle check_mode the old way

* fix logical test

* fix error when using multiple aliases

* fix error when using multiple aliases, part 2

* revert to using check_mode_skip=True again

(cherry picked from commit 4caa6574de)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-01-08 22:02:27 +01:00
patchback[bot]
efc2cbf840 [PR #5782/6fb212b1 backport][stable-6] Update CI matrix (#5798)
Update CI matrix (#5782)

* Update CI matrix.

* Disable RHEL 9.1 for tests where RHEL 9.0 was disabled as well.

* Skip iso_extract on FreeBSD 12.4.

* Fix cloud_init_data_facts test for Fedora 37.

* Do not try to install snap on RHEL 9.1.

* Skip pkgng jail tests on FreeBSD 12.4 as well.

(cherry picked from commit 6fb212b104)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-01-07 18:17:12 +01:00
patchback[bot]
aa136aca4c [PR #5794/3b73e7ed backport][stable-6] alternatives: make work with Fedora 37 (#5797)
alternatives: make work with Fedora 37 (#5794)

* alternatives in Fedora 37 uses follower instead of slave.

* Add changelog fragment.

(cherry picked from commit 3b73e7ed2a)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-01-07 16:55:57 +01:00
patchback[bot]
a1ca89b058 [PR #5786/759ca9a0 backport][stable-6] Remove currently unneeded generic tests from CI (#5791)
Remove currently unneeded generic tests from CI (#5786)

Remove currently unneeded generic tests from CI.

(cherry picked from commit 759ca9a0ab)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-01-07 15:24:47 +01:00
patchback[bot]
dd70419d18 [PR #5785/0ff003d3 backport][stable-6] Fix CI (#5789)
Fix CI (#5785)

Try to fix CI.

(cherry picked from commit 0ff003d312)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-01-07 15:20:24 +01:00
patchback[bot]
ef5ac023cf [PR #5760/9e3a729d backport][stable-6] Improve callback docs (#5784)
Improve callback docs (#5760)

* Improve callback docs.

* Apply suggestions from code review

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* Update plugins/callback/logentries.py

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* More improvements.

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
(cherry picked from commit 9e3a729da9)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-01-07 11:45:12 +00:00
patchback[bot]
8bc5494ad5 [PR #5765/dc531b18 backport][stable-6] ModuleHelper - lax handling of conflicting output (#5775)
ModuleHelper - lax handling of conflicting output (#5765)

* ModuleHelper - lax handling of conflicting output

* add changelog fragment

* only create _var when really needed

* adjust changelog

* Update changelogs/fragments/5765-mh-lax-output-conflict.yml

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit dc531b183d)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-01-07 10:52:56 +01:00
patchback[bot]
d95a821d5b [PR #5735/fc2b1aac backport][stable-6] terraform: bugfix: init command when default workspace doesn't exists (#5777)
terraform: bugfix: init command when default workspace doesn't exists (#5735)

* feat: init when default workspace doesn't exists

* doc: add changelogs fragment and docs update

* fix: changelog formating fix

(cherry picked from commit fc2b1aac4a)

Co-authored-by: Teodor Janez Podobnik <48418580+dorkamotorka@users.noreply.github.com>
2023-01-07 10:52:49 +01:00
patchback[bot]
b7697fe3de [PR #5694/e3f02cb1 backport][stable-6] Add Support to Bitwarden Lookup for Custom Fields (#5781)
Add Support to Bitwarden Lookup for Custom Fields (#5694)

* Add Support to Bitwarden Lookup for Custom Fields

This adds support to the Bitwarden lookup for retrieving values from
custom fields, such as api keys.

* Need to Return Whole Record if Field is Not Defined

* whitespace

* Add Changelog Fragment

* Need to Make Sure All Login Fields are Represented

We need to make sure that all login fields are accounted for, since
there will be no other way to retrieve them with this change, and we
don't want to break backwards compatibility. Looking at this code from
the official client,
https://github.com/bitwarden/clients/blob/master/libs/common/spec/models/domain/login.spec.ts,
autofillOnPageLoad might be another login field.

* Update changelogs/fragments/5694-add-custom-fields-to-bitwarden.yml

Clarify changelog fragment

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

* Update plugins/lookup/bitwarden.py

Fix logic. Should only error if matches were found, but are missing the custom field.

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit e3f02cb161)

Co-authored-by: reverendj1 <reverendj1@users.noreply.github.com>
2023-01-07 10:52:40 +01:00
patchback[bot]
16e05ab5f3 [PR #5751/2670215c backport][stable-6] Fix gem.py, hang on uninstall specific gem version (#5780)
Fix gem.py, hang on uninstall specific gem version (#5751)

* Update gem.py

move 'cmd.append('--executable')' to all uninstalls rather than only all versions

* Create 5751-gem-fix-uninstall-hang

* Rename 5751-gem-fix-uninstall-hang to 5751-gem-fix-uninstall-hang.yml

(cherry picked from commit 2670215c8a)

Co-authored-by: rietvelde <99407273+rietvelde@users.noreply.github.com>
2023-01-07 10:52:32 +01:00
patchback[bot]
5cf7ce705a [PR #5773/02431341 backport][stable-6] snap: use MH execute() static method (#5774)
snap: use MH execute() static method (#5773)

* use MH execute() static method

* add changelog fragment

(cherry picked from commit 02431341b7)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-01-07 10:52:22 +01:00
patchback[bot]
c8b8668212 [PR #5767/217a62ac backport][stable-6] consul: minor fixes in docs (#5771)
consul: minor fixes in docs (#5767)

* consul: minor fixes in docs

* additional docs fixes

* adjustments from review

(cherry picked from commit 217a62aca2)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-01-06 15:17:46 +01:00
patchback[bot]
2d450a5a36 [PR #5725/4dc897d5 backport][stable-6] redhat_subscription: Add support for Red Hat API token (#5768)
redhat_subscription: Add support for Red Hat API token (#5725)

Add support for Red Hat API token

fix mixed up

fix version

(cherry picked from commit 4dc897d559)

Co-authored-by: Eric C Chong <ecchong@gmail.com>
2023-01-05 21:51:21 +01:00
patchback[bot]
e08412c345 [PR #5761/84ebda65 backport][stable-6] Fix callback plugin types (#5764)
Fix callback plugin types (#5761)

Fix callback types.

(cherry picked from commit 84ebda65f1)

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-01-04 23:46:31 +01:00
patchback[bot]
c355f93d62 [PR #5755/b49bf081 backport][stable-6] ModuleHelper - fix bug when adjusting conflicting output (#5758)
ModuleHelper - fix bug when adjusting conflicting output (#5755)

* ModuleHelper - fix bug when adjusting conflicting output

* add changelog fragment

* remove commented test code

(cherry picked from commit b49bf081f8)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-01-04 21:40:56 +01:00
Felix Fontein
80206b5a53 Next expected release is 6.3.0. 2023-01-04 10:29:58 +01:00
Felix Fontein
e978fd4d61 Release 6.2.0. 2023-01-04 07:29:45 +01:00
Felix Fontein
6fc8492ecf Prepare 6.2.0 release. 2023-01-03 23:53:45 +01:00
Alexei Znamensky
95beb452a8 rax modules: deprecation notice for branch stable-6 (#5733)
* rax modules: deprecation notice for branch stable-6

* add changelog fragment

* adjust changelog message

* adjust changelog message
2023-01-03 23:35:26 +01:00
patchback[bot]
c10e9e2650 [PR #5741/06d72dfe backport][stable-6] htpasswd: improve documentation on crypt_scheme (#5749)
htpasswd: improve documentation on crypt_scheme (#5741)

* htpasswd: improve documentation on crypt_scheme

* htpasswd: formatting in documentation

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

* htpasswd: formatting in documentation

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

* Apply suggestions from code review

* Apply suggestions from code review

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 06d72dfed9)

Co-authored-by: bluikko <14869000+bluikko@users.noreply.github.com>
2022-12-31 08:13:04 +01:00
patchback[bot]
ac35bf4acb [PR #5744/568e1880 backport][stable-6] unixy Callback: Fix typo using ansibles config manager (#5747)
unixy Callback: Fix typo using ansibles config manager (#5744)

Fixes typo introduced in 53da86c.

Signed-off-by: Fabian P. Schmidt <kerel@mailbox.org>

Signed-off-by: Fabian P. Schmidt <kerel@mailbox.org>
(cherry picked from commit 568e18809c)

Co-authored-by: Fabian P. Schmidt <kerel@mailbox.org>
2022-12-31 07:54:09 +01:00
patchback[bot]
50b9855ace [PR #5714/2d4ce9f2 backport][stable-6] feat: add tags to proxmox containers (#5745)
feat: add tags to proxmox containers (#5714)

* feat: add tags to proxmox containers

* fix: correct version added

* fix: code style

* feat: changelog fragment

* fix: correct version_added

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

* feat: fail on unsupported params, rather than silently ignoring them

* fix: actually check unsupported feature presence before failing

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 2d4ce9f219)

Co-authored-by: GuillaumeV-cemea <101114641+GuillaumeV-cemea@users.noreply.github.com>
2022-12-30 22:18:40 +01:00
patchback[bot]
2ab26db197 [PR #5658/669d0925 backport][stable-6] Feature: Provide project field for LXD inventory plugin (#5729)
Feature: Provide project field for LXD inventory plugin (#5658)

* Provide project field for LXD inventory plugin

if field `project` exists in `lxd.yml`, the instances are searched in the
given LXD project. if project field is not defined the default project
named `default` will be used.

Signed-off-by: omani <3346207+omani@users.noreply.github.com>

* Update plugins/inventory/lxd.py

Signed-off-by: omani <3346207+omani@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 669d0925f7)

Co-authored-by: HAH! Sun <3346207+omani@users.noreply.github.com>
2022-12-23 11:47:47 +01:00
patchback[bot]
5fcf5d0c8b [PR #5720/6383c823 backport][stable-6] ssh_config: fixed sanity (#5726)
ssh_config: fixed sanity (#5720)

* ssh_config: fix sanity checks

* fixed mod utils and removed sanity ignores

* update BOTMETA

* add changelog fragment

* Update plugins/module_utils/ssh.py

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 6383c82328)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-12-23 06:41:39 +01:00
patchback[bot]
0f0ad6b6d1 [PR #5688/b3485b8f backport][stable-6] opkg module: allow installing a package in a certain version (#5724)
opkg module: allow installing a package in a certain version  (#5688)

* opkg: allow installing a package in a certain version

example:
- name: Install foo in version 1.2
  community.general.opkg:
    name: foo=1.2
    state: present

Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>

* opkg: use list for passing arguments to run_command

Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>

Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>
(cherry picked from commit b3485b8fca)

Co-authored-by: joergho <48011876+joergho@users.noreply.github.com>
2022-12-22 20:58:43 +01:00
patchback[bot]
95f3109ddc [PR #5721/28969c61 backport][stable-6] manageiq_policies: deprecate list state (#5723)
manageiq_policies: deprecate list state (#5721)

* manageiq_policies: deprecate list state

* add changelog fragment

(cherry picked from commit 28969c61ad)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-12-22 07:11:24 +01:00
patchback[bot]
6037c5d1e6 [PR #5680/488e828f backport][stable-6] ansible_galaxy_install: use locale C tentatively, else en_US (#5722)
ansible_galaxy_install: use locale C tentatively, else en_US (#5680)

* ansible_galaxy_install: use locale C tentatively, else en_US

* use custom exception to signal unsupported locale

* add step to remove artefacts at the end of the test

* add step to remove artefacts at the beginning of the test

* comment out context controller

* trying with temporary dir as destination

* remove collection before test with reqs file

* ensure collections are installed in temp dir in tests + check_force

* simplified the change

* added extra condition for failing locale

* improved exception handling

* add changelog fragment

(cherry picked from commit 488e828f9b)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-12-22 06:00:34 +00:00
patchback[bot]
a70d9773dd [PR #5713/1f492414 backport][stable-6] CI: add extra VMs for certain tests (#5717)
CI: add extra VMs for certain tests (#5713)

* Remove superfluous VM.

* Add extra VM group.

* More platforms, add scripts.

* [REVERT THIS] Shrink matrix to only the tests we are interested in.

* Fix some tests.

* Skip snap tests on Ubuntu VMs for now.

* Skip xfs_quota tests on Alpine VMs due to ansible.posix.mount failing.

* Revert "[REVERT THIS] Shrink matrix to only the tests we are interested in."

This reverts commit 2e98e163db.

* Stick to Alpine and Ubuntu 22.04 for now.

(cherry picked from commit 1f49241481)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-12-21 08:13:06 +01:00
patchback[bot]
bc50b48205 [PR #5703/77fde030 backport][stable-6] Add support for host restriction in sudoers module (#5716)
Add support for host restriction in sudoers module (#5703)

* Add support to restrict privileges by host

* Missing comma

* Making linter happy.

* Add version 6.2.0 as when sudoers host parameter added

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

* Changelog fragment for PR #5703

* Test for sudoers host-based restriction

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 77fde030cd)

Co-authored-by: Laurence <laurence+github@entek.org.uk>
2022-12-20 12:59:26 +01:00
patchback[bot]
02e6a8608f [PR #5672/fab73a1d backport][stable-6] Bugfix: Remove redundant VMID parameters (#5709)
Bugfix: Remove redundant VMID parameters (#5672)

* Remove redundant parameters VMID

* Add changelog fragment

(cherry picked from commit fab73a1d1e)

Co-authored-by: castorsky <csky57@gmail.com>
2022-12-19 20:43:13 +01:00
patchback[bot]
82f4b51873 [PR #5705/2b39470a backport][stable-6] opkg: fix issue that force=reinstall would not reinstall an existing package (#5711)
opkg: fix issue that force=reinstall would not reinstall an existing package (#5705)

* opkg: fix issue that force=reinstall would not reinstall an existing package

Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>

* changelog fragment

Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>
(cherry picked from commit 2b39470a77)

Co-authored-by: joergho <48011876+joergho@users.noreply.github.com>
2022-12-19 20:43:00 +01:00
patchback[bot]
589e8fd5e1 [PR #5699/25be366c backport][stable-6] Fixed github_release docs: only module-specific returned key is tag (#5701)
Fixed `github_release` docs: only module-specific returned key is `tag` (#5699)

* Fixed github_release docs: only module-specific returned key is "tag"

* Update plugins/modules/github_release.py - added a dot

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 25be366cc3)

Co-authored-by: Or Bin <orbin50@gmail.com>
2022-12-18 09:25:46 +01:00
patchback[bot]
58f74b96ef [PR #5659/af53271c backport][stable-6] lxc_container: fix lxc argument when executing lxc command (#5698)
lxc_container: fix lxc argument when executing lxc command (#5659)

lxc_container fails when executing the lxc command (e.g. when creating
a new container) because PR#5358 broke the module argument
parsing. The resulting argument dict contained only the module argument name
and the argument flag but not the value. E.g.
```
- lxc_container:
    template: debian
```
would result in lxc command arguments `lxc template --template` instead of
`lxc --template debian`.

Fixes: 6f88426cf1 ("lxc_container: minor refactor (#5358)")
Fixes #5578

Signed-off-by: Alexander Couzens <lynxis@fe80.eu>

Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
(cherry picked from commit af53271c41)

Co-authored-by: Alexander Couzens <lynxis@fe80.eu>
2022-12-17 12:22:30 +01:00
patchback[bot]
1489c080a7 [PR #5612/f95e0d77 backport][stable-6] puppet: refactored to use CmdRunner (#5686)
puppet: refactored to use CmdRunner (#5612)

* puppet: refactored to use CmdRunner

* add changelog fragment

* add more tests

(cherry picked from commit f95e0d775d)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-12-14 22:03:40 +01:00
patchback[bot]
6f845f61f0 [PR #5667/c3bc172b backport][stable-6] respect new variable property in gitlab_group_variable and gitlab_project_variable (#5679)
respect new variable property in gitlab_group_variable and gitlab_project_variable (#5667)

* draft

* add changelog fragment

* rework

* rework group variables

* add new line at end of file

* Update plugins/module_utils/gitlab.py

Co-authored-by: Nejc Habjan <hab.nejc@gmail.com>

* rename

* revert

* return a copy

* Update plugins/modules/gitlab_project_variable.py

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

Co-authored-by: Nejc Habjan <hab.nejc@gmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit c3bc172bf6)

Co-authored-by: Markus Bergholz <git@osuv.de>
2022-12-10 22:42:19 +01:00
patchback[bot]
c17f5ff3e8 [PR #5674/b5e58a3b backport][stable-6] CI: Bump CentOS Stream 8 Python from 3.8 to 3.9 (#5677)
CI: Bump CentOS Stream 8 Python from 3.8 to 3.9 (#5674)

Bump CentOS Stream 8 Python from 3.8 to 3.9.

(cherry picked from commit b5e58a3bcc)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-12-09 15:52:27 +00:00
patchback[bot]
ff21afb227 [PR #5662/471f523f backport][stable-6] redhat_subscription: add server_proxy_scheme parameter (#5671)
redhat_subscription: add `server_proxy_scheme` parameter (#5662)

Add the `server_proxy_scheme` parameter to configure the scheme used for
the proxy server. This completes the configuration parameters for the
proxy server.

(cherry picked from commit 471f523f53)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2022-12-08 22:54:18 +01:00
patchback[bot]
c1d6e5c3c2 [PR #5668/50021d6b backport][stable-6] Fix pipx_info tests (#5670)
Fix pipx_info tests (#5668)

Update dependencies.

(cherry picked from commit 50021d6bfb)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-12-08 22:25:12 +01:00
Felix Fontein
377b5d4ccd Next expected release is 6.2.0. 2022-12-06 08:02:06 +01:00
Felix Fontein
f3f7b2776f Release 6.1.0. 2022-12-06 07:30:35 +01:00
patchback[bot]
df8bfad9b9 [PR #5507/b22638ba backport][stable-6] Adding PUT functionality to redfish_utils (Updated) (#5660)
Adding PUT functionality to redfish_utils (Updated) (#5507)

* adding changelog fragment

* adding PUT functionality

* sanity fix

Co-authored-by: Kushal <t-s.kushal@hpe.com>
(cherry picked from commit b22638ba0c)

Co-authored-by: TSKushal <44438079+TSKushal@users.noreply.github.com>
2022-12-05 18:42:37 +01:00
patchback[bot]
8a231e4b36 [PR #5606/7ea544a6 backport][stable-6] New Module: Keycloak ClientSecret with PR changes (#5654)
New Module: Keycloak ClientSecret with PR changes (#5606)

* feat(plugins/keycloak): add get and create util function for client secret

* feat(plugins/keycloak): add client secret module

* chore: add maintainer in BOTMETA

* Update plugins/modules/identity/keycloak/keycloak_clientsecret.py

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

* Make changes to keycloak_clientsecret from PR

* Add SPDX identifier for keycloak_clientsecret

* Add copyright in keycloak_clientsecret for REUSE

* Add integration test for keycloak_clientsecret

* rm clientsecret from keycloak_clientsecret result

  - end_state used instead

* keycloak_clientsecret: Undo meta/runtime.yml change

* Fix sanity tests for keycloak_clientsecret

* New keycloak_clientsecret_info module

  - Replaces keycloak_clientsecret
  - Module definition and some common logic moved into module_utils
  - Update documentation, tests, etc.
  - Add myself as author

* Misc fixes to keycloak_clientsecret_info

* Add keycloak_clientsecret_regenerate module

* keycloak_clientsecret* Update .github/BOTMETA.yml

* keycloak_clientsecret_regenerate: Fix sanity tests

* Fix README for keycloak_clientsecret integration test

* Separate out keycloak_clientsecret module_utils

* Keycloak_clientsecret module_utils: boilerplate

* Update plugins/modules/keycloak_clientsecret_info.py

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

* Update plugins/modules/keycloak_clientsecret_info.py

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

* Update plugins/modules/keycloak_clientsecret_info.py

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

* Update plugins/modules/keycloak_clientsecret_info.py

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

* Update plugins/modules/keycloak_clientsecret_info.py

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

* Update plugins/modules/keycloak_clientsecret_info.py

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

* keycloak_clientsecret: Add no_log to examples and docs

* keycloak_clientsecret: Update BOTMETA

* Update .github/BOTMETA.yml

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

Co-authored-by: fynncfchen <fynn.cfchen@gmail.com>
Co-authored-by: Fynnnnn <ethan.cfchen@gmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 7ea544a624)

Co-authored-by: John Cant <a.johncant@gmail.com>
2022-12-05 05:47:23 +00:00
patchback[bot]
671f850069 [PR #5619/f0b3bba0 backport][stable-6] Fix keycloak_client_rolemapping role removal and diff (#5656)
Fix keycloak_client_rolemapping role removal and diff (#5619)

* Keycloak: Fix client rolemapping removal

Keycloak's delete_group_rolemapping API wrapper didn't pass data about
the roles to remove to keycloak, resulting in removal of all roles.

Follow the intended behaviour and delete only the roles listed in the
module invocation.

Signed-off-by: Florian Achleitner <flo@fopen.at>

* Keycloak: Fix client_rolemapping diff

The module's diff output wrongly showed the changed roles list as
'after' state. This is obviously wrong for role removal and also
wrong for role addition, if there are other roles assigned.

Use the result of the API query for 'end_state' for 'diff' as well.

Signed-off-by: Florian Achleitner <flo@fopen.at>

* Keycloak: Calculate client_rolemapping proposed state properly

Signed-off-by: Florian Achleitner <flo@fopen.at>

* Add changelog fragment

Signed-off-by: Florian Achleitner <flo@fopen.at>
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Felix Fontein <felix@fontein.de>

* Fix for python2 unit test

Signed-off-by: Florian Achleitner <flo@fopen.at>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f0b3bba030)

Co-authored-by: fachleitner <flo@fopen.at>
2022-12-05 05:47:11 +00:00
Felix Fontein
2fa36592e4 Prepare 6.1.0 release. 2022-12-04 21:44:59 +01:00
patchback[bot]
51d704bfe3 [PR #5605/fb2833d3 backport][stable-6] feat(ssh_config): host_key_algorithms option (#5653)
feat(ssh_config): host_key_algorithms option (#5605)

* feat(ssh_config): host_key_algorithms option

* chore: add changelog fragment

* chore(ssh_config): add version info to option and update fragment

(cherry picked from commit fb2833d34d)

Co-authored-by: Arek Kalandyk <36413794+koralowiec@users.noreply.github.com>
2022-12-04 13:10:32 +01:00
patchback[bot]
2b0e335752 [PR #5602/632fc07e backport][stable-6] Updated tags delimiter (#5652)
Updated tags delimiter (#5602)

* Updated tags delimiter

Starting from Proxmox 7.3 tags are delimited by semicolon. For backward compatibility it needs to be splitted by both commas and semicolons.

* Added missing space

* Add changelog fragment.

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 632fc07e65)

Co-authored-by: domelek <40233039+domelek@users.noreply.github.com>
2022-12-04 12:57:24 +01:00
patchback[bot]
cc28cde3a2 [PR #5647/be22ca06 backport][stable-6] cmd_runner: allow bool format to pass alternate (false) value (#5650)
cmd_runner: allow bool format to pass alternate (false) value (#5647)

* allow bool format to pass alternate (false) value

* add changelog fragment

(cherry picked from commit be22ca0633)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-12-04 12:39:30 +01:00
patchback[bot]
2d616bf4d1 [PR #5638/23aacc78 backport][stable-6] Reenable and enhance copr integration tests (#5646)
Reenable and enhance `copr` integration tests (#5638)

* Enhance `copr` integration tests

- Switch to a new test Copr repository. @copr/integration_tests was
  removed which caused the tests to fail. I created a new one under my
  account that I'll ensure stays around.
- Add basic testing to ensure that repo files are created in the correct
  location and contain the correct baseurl and enabled status.
- Also run tests on Enterprise Linux.
- Test that packages from the Copr install. This has to be disabled on
  EOL Fedoras that Copr does not allow building new packages for.

Resolves: https://github.com/ansible-collections/community.general/issues/5595

* copr tests: Fix ansible_python_interpreter on c8s

* copr: Don't test on alt Pythons on cs8

* Revert "copr tests: Fix ansible_python_interpreter on c8s"

This reverts commit 58e15a7ebf.

(cherry picked from commit 23aacc78e1)

Co-authored-by: Maxwell G <gotmax@e.email>
2022-12-03 22:40:55 +01:00
patchback[bot]
25d9ab8dcd [PR #5640/fd436bdb backport][stable-6] fix typo disable_looups in inventory/proxmox (#5644)
fix typo disable_looups in inventory/proxmox (#5640)

* fix typo disable_looups in inventory/proxmox

- resolve issue with lookups in proxmox inventory config

* add changelog fragment

* Update changelogs/fragments/5640-fix-typo-proxmox-inventory.yml

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit fd436bdbc2)

Co-authored-by: Torgny Bjers <torgny@bjers.org>
2022-12-02 06:59:43 +01:00
patchback[bot]
9abda18071 [PR #5639/da7cba4c backport][stable-6] Fix example in keycloak_realm documentation (#5643)
Fix example in keycloak_realm documentation (#5639)

(cherry picked from commit da7cba4c12)

Co-authored-by: Dorian Monnier <contact@dorianmonnier.fr>
2022-12-01 22:48:59 +01:00
patchback[bot]
406fa12142 [PR #5629/03039a56 backport][stable-6] Remove automatically adding # symbol to channel names (#5641)
Remove automatically adding # symbol to channel names (#5629)

* Add regex to match all channel ids

* Add changelog fragment

* Allow matching of channel ids with 9-11 characters

* Fix file name

* Update changelogs/fragments/5629-add-channel-prefix-regex.yml

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

* Remove channel auto prepend #

* Update changelog fragment

* Add prepend_hash option

* Add version_added to prepend_hash doc string

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

* Add description of possible values for the prepend_hash option

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

* Remove old channel assign statement

* Update changelogs/fragments/5629-add-prepend-hash-option-for-channel-id.yml

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

* Update changelog fragment tag

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 03039a56c0)

Co-authored-by: William McBroom <william.mcbroom@draft2digital.com>
2022-12-01 22:48:44 +01:00
patchback[bot]
caaebb38e7 Fix for vmadm get_vm_uuid out of range (#5628) (#5635)
* Fix for vmadm get_vm_uuid out of range

* Fix for vmadm get_vm_uuid out of range

* Update changelogs/fragments/5628-fix-vmadm-off-by-one.yml

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b8545d10e6)

Co-authored-by: Carlos Neira <cneirabustos@gmail.com>
2022-11-30 22:56:03 +01:00
patchback[bot]
2bc74f4f04 vdo: Use yaml.safe_load() instead of yaml.load() (#5632) (#5637)
* vdo: Use yaml.safe_load() instead of yaml.load()

yaml.load() without specifying a Loader= is deprecated and unsafe.

For details, see
https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation

* Update changelogs/fragments/5632-vdo-Use-yaml-safe-load-instead-of-yaml-load.yml

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

Co-authored-by: Lee Garrett <lgarrett@rocketjump.eu>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 428e181440)

Co-authored-by: Lee Garrett <leegarrett@users.noreply.github.com>
2022-11-30 22:55:52 +01:00
patchback[bot]
e1e89f7735 redhat_subscription: don't discard vars with key (#5627) (#5633)
Fixes #3486. From the man-pages of subscription-manager, none of the
parameters used are tied to the activationkey except the two that remain
in its else-clause.

Note that type is not mentioned in the man-pages on 7.6 (at least), but
is still present and available.

Co-authored-by: Thor K. H <thor@roht.no>
(cherry picked from commit f7fa54eed9)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2022-11-30 22:30:49 +01:00
patchback[bot]
efedd0d6e2 redhat_subscription: drop unneeded args to Rhsm.register() (#5583) (#5626)
Stop passing all the "rhsm_", and "server_" module arguments to
"Rhsm.register()", and thus as arguments for
"subscription-manager register":
- right before calling "Rhsm.register()", "Rhsm.configure()" is called
  to configure subscription-manager with all the "rhsm_", and "server_"
  arguments; hence, they are already configured
- the passed argument to "--serverurl" is partially wrong:
  "Rhsm.register()" passes only the hostname, whereas the other bits
  (port and prefix) are supported too; this "works" because port and
  prefix were already configured previously, and the lax parsing that
  subscription-manager does allows for missing bits
- the parsing done by subscription-manager for "--baseurl" strips out
  the URL scheme and always uses https: this means that specifying
  "rhsm_baseurl: http://server" as module parameter will be taken as
  "https://server" by subscription-manager; since "rhsm_baseurl" is
  already configured by "Rhsm.configure()", this issue is gone

(cherry picked from commit 101c957631)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2022-11-29 13:20:30 +01:00
Felix Fontein
8079aea1ee Announce removal of sap modules. (#5614) 2022-11-29 10:05:23 +00:00
patchback[bot]
ee7fdf5f8c unixy Callback: Use Ansible's config manager (#5601) (#5625)
* unixy Callback: Use Ansible's config manager

In ansible-core 2.14 deprecated support was removed[1] for accessing options
of the DefaultCallback via class attributes. Use the "new" config system
instead.

[1]: dbdbfe845a

Fixes #5600.

Signed-off-by: Fabian P. Schmidt <kerel@mailbox.org>

* Update changelog fragment.

Signed-off-by: Fabian P. Schmidt <kerel@mailbox.org>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 53da86c1a5)

Co-authored-by: Fabian P. Schmidt <kerel@mailbox.org>
2022-11-29 08:01:09 +01:00
patchback[bot]
ced1baad63 java_certs : Not enough info on error (#5550) (#5623)
* java_certs : Not enough info on error

Just bumped into an issue when the message was "Internal module failure, cannot extract public certificate from pkcs12, error: "
Seems that the issue #2560 doesn't cover all cases. To make debugging easier, I propose to add error output on json return instead of only expose standard output.

* java_certs - add missing fragment message

* Word-smithing.

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 1ca775248f)

Co-authored-by: Naewis <Naewis@users.noreply.github.com>
2022-11-29 07:40:11 +01:00
patchback[bot]
a0d4ee4fc1 contributing: Modify link anchor to changelog fragments docs (#5618) (#5621)
The hmtl anchor linked now points to the parent section
("Creating changelog fragments").

Previously new contributors were linked to the subsection
"Creating a changelog fragment", just to be immediately be guided
by the second paragraph to jump to the previous section.

Signed-off-by: Fabian P. Schmidt <kerel@mailbox.org>

Signed-off-by: Fabian P. Schmidt <kerel@mailbox.org>
(cherry picked from commit 3f80aa3c63)

Co-authored-by: Fabian P. Schmidt <kerel@mailbox.org>
2022-11-28 21:08:22 +01:00
patchback[bot]
d930c8d877 udm_share: fix sanity checks (#5557) (#5609)
* udm_share: fix sanity checks

* add changelog fragment

(cherry picked from commit a3b748a15e)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-26 18:58:09 +01:00
patchback[bot]
352e91a389 redhat_subscription: improve wording wrt Satellite (#5581) (#5608)
Do not mention an explicit version of Satellite for an environment to
use; future versions of Satellite will support that, and older versions
are long EOL.

Also mention Katello next to Red Hat Satellite.

(cherry picked from commit 911769d2f3)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2022-11-26 18:49:40 +01:00
patchback[bot]
4b7554445b Temporarily disable copr tests. (#5594) (#5598)
(cherry picked from commit 11e1423f60)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-11-23 20:34:31 +01:00
patchback[bot]
3a456a645d udm_user: sanity (#5559) (#5593)
* fix parameter email

* fix parameter groups

* fix parameters home_telephone_number, mail_alternative_address, mobile_telephone_number, pager_telephonenumber

* fix parameter phone

* fix parameter samba_privileges

* fix parameter samba_user_workstations

* fix parameter secretary

* fix parameter serviceprovider

* remove lines from ignore files

* add changelog fragment

(cherry picked from commit 79929830c4)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-23 18:58:37 +01:00
patchback[bot]
6f4580ebd9 Redfish: Expanded SimpleUpdate command to allow for users to monitor the progress of an update and perform follow-up operations (#5580) (#5590)
* Redfish: Expanded SimpleUpdate command to allow for users to monitor the progress of an update and perform follow-up operations

* Update changelogs/fragments/3910-redfish-add-operation-apply-time-to-simple-update.yml

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

* Update plugins/modules/redfish_command.py

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

* Update changelogs/fragments/4276-redfish-command-updates-for-full-simple-update-workflow.yml

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

* Updated based on feedback and CI results

* Update plugins/modules/redfish_command.py

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

* Update plugins/modules/redfish_command.py

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

* Update plugins/modules/redfish_info.py

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 5c1c8152ec)

Co-authored-by: Mike Raineri <mraineri@gmail.com>
2022-11-23 08:03:19 +01:00
patchback[bot]
8d83557e52 [GitLab] Add modules to manager project badges (#5534) (#5584)
* [GitLab] Add modules to manager project badges

Signed-off-by: Lunik <lunik@tiwabbit.fr>

* first review

Signed-off-by: Lunik <lunik@tiwabbit.fr>

* Update plugins/modules/gitlab_project_badge.py

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

Signed-off-by: Lunik <lunik@tiwabbit.fr>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit c7481c5c96)

Co-authored-by: Guillaume MARTINEZ <lunik@tiwabbit.fr>
2022-11-23 07:38:08 +01:00
patchback[bot]
5ebd980e26 Add additional flags to nmap.py (#5566) (#5576)
* Adding extra flag options for NMAP scaning udp_scan, icmp_timestamp and dns_resolve

* Update nmap.py

* Update plugins/inventory/nmap.py

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

* Updates as per felixfontein  suggestions

* Updates as per felixfontein  suggestions

* Update plugins/inventory/nmap.py

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

* Update plugins/inventory/nmap.py

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

* Update nmap.py

* Update changelogs/fragments/5566-additional-flags-nmap.yml

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

* Update changelogs/fragments/5566-additional-flags-nmap.yml

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

* Update 5566-additional-flags-nmap.yml

* Update nmap.py

Co-authored-by: Axis12 <3225945+axistwelve@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 52c28494ca)

Co-authored-by: David Stuart <dave@axistwelve.com>
2022-11-23 07:37:59 +01:00
patchback[bot]
17447d2a84 jenkins_plugin: fix sanity checks (#5565) (#5575)
* jenkins_plugin: fix sanity checks

* update BOTMETA

* add changelog fragment

* fix copyright

* Update plugins/module_utils/jenkins.py

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

* Update plugins/module_utils/jenkins.py

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 8ad43fd774)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-23 07:37:52 +01:00
patchback[bot]
ffee01cd9c add dependency manager (#5535) (#5574)
* add dependency manager

* add plugins/module_utils/deps.py to BOTMETA

* ditch usng OrderedDict to keep compatibility with Python 2.6

* Update plugins/module_utils/deps.py

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 0624951e17)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-23 07:37:45 +01:00
patchback[bot]
38b4e316ae lxd_project: refactored os.path.expanduser() to module utils (#5549) (#5552)
* lxd_project: refactored os.path.expanduser() to module utils

* add changelog fragment

(cherry picked from commit 9874462abb)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-23 07:37:36 +01:00
patchback[bot]
b52a6f3611 gconftool2: refactored to use ModuleHelper + CmdRunner (#5545) (#5551)
* gconftool2: refactored to use ModuleHelper + CmdRunner

* add changelog fragment

* removed old code commented out

(cherry picked from commit 6c7e9116e1)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-23 07:37:27 +01:00
patchback[bot]
2435fb3f30 rax_scaling_group: fix sanity check (#5563) (#5569)
* rax_scaling_group: fix sanity check

* add changelog fragment

* added missing call to expanduser()

(cherry picked from commit 6a03108609)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-23 07:37:12 +01:00
patchback[bot]
d6d9f84b0a chroot plugin fix inventory_hostname var for remote_addr (#5570) (#5573)
* Add inventory_hostname under remote_addr.vars in chroot connection plugin required by ansible 2.13

* fix changelog fragment

(cherry picked from commit 5e5af458fb)

Co-authored-by: Evan Jarrett <ejfirestar00@gmail.com>
2022-11-17 07:30:00 +01:00
patchback[bot]
4b04e3cc32 scaleway_organization_info: sanity checks (#5571) (#5577)
* scaleway_organization_info: fix sanity checks

* remove lines from ignore files

* Update plugins/modules/scaleway_organization_info.py

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 83ff4429e8)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-17 07:29:49 +01:00
patchback[bot]
c681249364 cmd_runner module utils: fix case for as_fixed() format (#5538) (#5562)
* cmd_runner module utils: fix case for as_fixed() format

* add changelog fragment

* simplified test_cmd_runner

* fix handling empty default for `as_map()`

* add changelog fragment

* MissingArgumentValue is reraised in run()

(cherry picked from commit e87ca10b61)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-16 06:58:30 +01:00
patchback[bot]
57a4195b0d redhat_subscription: fix sanity check (#5555) (#5560)
* redhat_subscription: fix sanity check

* removed ignore lines

(cherry picked from commit 801e3d86ef)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-16 06:57:38 +01:00
patchback[bot]
41a23f093d spotinst_aws_elasticgroup: sanity checks (#5553) (#5554)
* spotinst_aws_elastigroup: add elements to parameter do_not_update

* spotinst_aws_elastigroup: add docs for parameter token

* add missing docs

* add changelog fragment

* Update plugins/modules/spotinst_aws_elastigroup.py

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 270dc133b3)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-16 05:35:56 +00:00
Felix Fontein
0bd085714f Next expected release is 6.1.0. 2022-11-15 13:09:30 +01:00
Felix Fontein
a4be229f67 Release 6.0.1. 2022-11-15 08:58:18 +01:00
patchback[bot]
9c4487ebc5 dependent lookup: prevent deprecation warning with ansible-core 2.14 (#5543) (#5548)
* Prevent deprecation warning.

* Improve naming and add comment.

(cherry picked from commit 60c8b9a67f)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-11-15 08:38:34 +01:00
patchback[bot]
09ea441316 [PR #5493/27a4ffc2 backport][stable-6] Fix: Duplicate vmid in proxmox_disk module #5492 (#5537)
* Fix:  Duplicate vmid in proxmox_disk module #5492 (#5493)

https://github.com/ansible-collections/community.general/issues/5492
(cherry picked from commit 27a4ffc293)

* Add changelog fragment.

(cherry picked from commit 672385309c)

Co-authored-by: Doc_Tiebeau <elie.saintfelix@gmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2022-11-13 21:21:31 +01:00
patchback[bot]
fef6abc8c8 Fix a logical flaw when deleting a build in the jenkins_build module (#5514) (#5531)
* Fix the logical flaw when deleting a build in the jenkins_build module.

* Fix the logical flaw when deleting a Jenkins build in the jenkins_build module.

* Adding changelogs.

* Update tests/unit/plugins/modules/test_jenkins_build.py

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

* Attempt to mock the exception classes.

* Remedy the CI issues when mocking the exception classes.

* Assuming a way to mock the get_build_status function.

* Near to the feasible approach.

* Calls the correct class when unit testing.

* Fix sending wrong arguments when unit testing.

* Directly assign the argument value in the unit testing.

* Fix errors calling different classes.

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 7610501c66)

Co-authored-by: Tong He <68936428+unnecessary-username@users.noreply.github.com>
2022-11-13 17:36:34 +01:00
patchback[bot]
618e567377 Short descriptions (batch3) - massive fix on Capitalization and trailing period (#5521) (#5529)
* short_description fix batch 3

* Update plugins/modules/telegram.py

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 6b20572ea1)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-09 21:18:39 +01:00
Felix Fontein
246abffce5 Prepare 6.0.1 release. 2022-11-09 21:17:15 +01:00
patchback[bot]
076ebb4b2d Ignore mpdehaan in BOTMETA. (#5524) (#5525)
(cherry picked from commit 0e9cd5e6b6)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-11-09 18:44:48 +01:00
patchback[bot]
4948b521a3 short_description fix batch 2 (#5520) (#5523)
(cherry picked from commit f683d6a05d)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-09 14:11:41 +01:00
patchback[bot]
e9ec26ff1b Short descriptions (batch1) - massive fix on Capitalization and trailing period (#5503) (#5516)
* short_description fix batch 1

* Update plugins/modules/ali_instance.py

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

* Update plugins/modules/apt_rpm.py

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 97b584e261)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-09 07:38:36 +01:00
patchback[bot]
72d4476813 onepassword_raw - Add missing parameter to doc string (#5511) (#5518)
* onepassword_raw - Add missing parameter to doc string

* Remove redundant mention of default value

* Update changelogs/fragments/5506-onepassword_raw-missing-param.yml

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit c604cc5ba9)

Co-authored-by: Sam Doran <sdoran@redhat.com>
2022-11-09 07:38:27 +01:00
patchback[bot]
e96bfd07b4 Actually sort the fixtures (#5510) (#5517)
* Actually sort the fixtures

I removed my more complicated fix but failed to actually put the sorted() call
back in.

* Sort by class name

(cherry picked from commit eae33c20f6)

Co-authored-by: Sam Doran <sdoran@redhat.com>
2022-11-09 07:32:56 +01:00
patchback[bot]
c6d0419460 one_vm: fix for 'NoneType' object has no attribute 'split' in get_vm_labels_and_attributes_dict (#5489) (#5513)
* Fix for 'NoneType' object has no attribute 'split'

* Added changelog to fix

* Update changelogs/fragments/5489-nonetype-in-get-vm-by-label.yml

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

* Fix line ending in changelog

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 621fb6a619)

Co-authored-by: wh1t3 r4bb1t <16529603+d34d5p4rr0w@users.noreply.github.com>
2022-11-09 07:11:59 +01:00
patchback[bot]
081b4068a0 Clarification to use underscores instead of dashes in parser name (#5500) (#5509)
* Clarification to use underscores instead of dashes in parser name

* Update plugins/filter/jc.py

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

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 27827cbea4)

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2022-11-08 20:32:20 +01:00
patchback[bot]
8fba9ca751 minor docs update (#5501) (#5505)
(cherry picked from commit 858eaac500)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-11-08 14:19:54 +01:00
Felix Fontein
fad4c2d956 Next expected release is 6.0.1. 2022-11-07 21:53:15 +01:00
Felix Fontein
6065dd0f18 Do not run docs PR workflow in stable branches. 2022-11-07 21:53:00 +01:00
Felix Fontein
a411ff5ea8 Add stable-6 to nightlies.
(cherry picked from commit df9c5d1d35)
2022-11-07 21:51:43 +01:00
Felix Fontein
42b245eabf Release 6.0.0. 2022-11-07 21:49:22 +01:00
Felix Fontein
9a676bb88f Add missing changelog fragment for #5497. 2022-11-07 21:48:17 +01:00
Felix Fontein
cd26aec2f3 Add missing new modules and plugins to 6.0.0-a1 release changelog. 2022-11-07 21:46:22 +01:00
Felix Fontein
e9327a0464 Update links in README. 2022-11-07 21:45:57 +01:00
2071 changed files with 98456 additions and 138234 deletions

View File

@@ -1,9 +0,0 @@
<!--
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
-->
## Azure Pipelines Configuration
Please see the [Documentation](https://github.com/ansible/community/wiki/Testing:-Azure-Pipelines) for more information.

View File

@@ -1,430 +0,0 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
trigger:
batch: true
branches:
include:
- main
- stable-*
pr:
autoCancel: true
branches:
include:
- main
- stable-*
schedules:
- cron: 0 8 * * *
displayName: Nightly (main)
always: true
branches:
include:
- main
- cron: 0 10 * * *
displayName: Nightly (active stable branches)
always: true
branches:
include:
- stable-11
- stable-10
- cron: 0 11 * * 0
displayName: Weekly (old stable branches)
always: true
branches:
include:
- stable-9
variables:
- name: checkoutPath
value: ansible_collections/community/general
- name: coverageBranches
value: main
- name: entryPoint
value: tests/utils/shippable/shippable.sh
- name: fetchDepth
value: 0
resources:
containers:
- container: default
image: quay.io/ansible/azure-pipelines-test-container:7.0.0
pool: Standard
stages:
### Sanity
- stage: Sanity_devel
displayName: Sanity devel
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Test {0}
testFormat: devel/sanity/{0}
targets:
- test: 1
- test: 2
- test: 3
- test: 4
- stage: Sanity_2_19
displayName: Sanity 2.19
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Test {0}
testFormat: 2.19/sanity/{0}
targets:
- test: 1
- 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
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: devel/units/{0}/1
targets:
- test: 3.9
- test: '3.10'
- test: '3.11'
- test: '3.12'
- test: '3.13'
- test: '3.14'
- stage: Units_2_19
displayName: Units 2.19
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: 2.19/units/{0}/1
targets:
- 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
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/{0}
targets:
- name: Alpine 3.22
test: alpine/3.22
# - name: Fedora 42
# test: fedora/42
- name: Ubuntu 22.04
test: ubuntu/22.04
- name: Ubuntu 24.04
test: ubuntu/24.04
groups:
- vm
- stage: Remote_devel
displayName: Remote devel
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/{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: FreeBSD 14.3
test: freebsd/14.3
- name: FreeBSD 13.5
test: freebsd/13.5
groups:
- 1
- 2
- 3
- stage: Remote_2_19
displayName: Remote 2.19
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.19/{0}
targets:
- name: RHEL 9.5
test: rhel/9.5
- name: RHEL 10.0
test: rhel/10.0
- 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
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/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
- 3
- stage: Docker_2_19
displayName: Docker 2.19
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.19/linux/{0}
targets:
- name: Fedora 41
test: fedora41
- name: Alpine 3.21
test: alpine321
groups:
- 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
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/linux-community/{0}
targets:
- name: Debian 11 Bullseye
test: debian-bullseye/3.9
- 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
groups:
- 1
- 2
- 3
### Generic
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
# - stage: Generic_devel
# displayName: Generic devel
# dependsOn: []
# jobs:
# - template: templates/matrix.yml
# parameters:
# nameFormat: Python {0}
# testFormat: devel/generic/{0}/1
# targets:
# - test: '3.9'
# - test: '3.12'
# - test: '3.14'
# - stage: Generic_2_19
# displayName: Generic 2.19
# dependsOn: []
# jobs:
# - template: templates/matrix.yml
# parameters:
# nameFormat: Python {0}
# testFormat: 2.19/generic/{0}/1
# targets:
# - test: '3.9'
# - test: '3.13'
# - stage: Generic_2_18
# displayName: Generic 2.18
# dependsOn: []
# jobs:
# - template: templates/matrix.yml
# parameters:
# nameFormat: Python {0}
# testFormat: 2.18/generic/{0}/1
# targets:
# - test: '3.8'
# - test: '3.13'
# - stage: 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_19
- Sanity_2_18
- Sanity_2_17
- Units_devel
- Units_2_19
- Units_2_18
- Units_2_17
- Remote_devel_extra_vms
- Remote_devel
- Remote_2_19
- Remote_2_18
- Remote_2_17
- Docker_devel
- Docker_2_19
- Docker_2_18
- Docker_2_17
- Docker_community_devel
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
# - Generic_devel
# - Generic_2_19
# - Generic_2_18
# - Generic_2_17
jobs:
- template: templates/coverage.yml

View File

@@ -1,24 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# Aggregate code coverage results for later processing.
set -o pipefail -eu
agent_temp_directory="$1"
PATH="${PWD}/bin:${PATH}"
mkdir "${agent_temp_directory}/coverage/"
options=(--venv --venv-system-site-packages --color -v)
ansible-test coverage combine --group-by command --export "${agent_temp_directory}/coverage/" "${options[@]}"
if ansible-test coverage analyze targets generate --help >/dev/null 2>&1; then
# Only analyze coverage if the installed version of ansible-test supports it.
# Doing so allows this script to work unmodified for multiple Ansible versions.
ansible-test coverage analyze targets generate "${agent_temp_directory}/coverage/coverage-analyze-targets.json" "${options[@]}"
fi

View File

@@ -1,64 +0,0 @@
#!/usr/bin/env python
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
"""
Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job.
Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}"
The recommended coverage artifact name format is: Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)
Keep in mind that Azure Pipelines does not enforce unique job display names (only names).
It is up to pipeline authors to avoid name collisions when deviating from the recommended format.
"""
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import os
import re
import shutil
import sys
def main():
"""Main program entry point."""
source_directory = sys.argv[1]
if '/ansible_collections/' in os.getcwd():
output_path = "tests/output"
else:
output_path = "test/results"
destination_directory = os.path.join(output_path, 'coverage')
if not os.path.exists(destination_directory):
os.makedirs(destination_directory)
jobs = {}
count = 0
for name in os.listdir(source_directory):
match = re.search('^Coverage (?P<attempt>[0-9]+) (?P<label>.+)$', name)
label = match.group('label')
attempt = int(match.group('attempt'))
jobs[label] = max(attempt, jobs.get(label, 0))
for label, attempt in jobs.items():
name = 'Coverage {attempt} {label}'.format(label=label, attempt=attempt)
source = os.path.join(source_directory, name)
source_files = os.listdir(source)
for source_file in source_files:
source_path = os.path.join(source, source_file)
destination_path = os.path.join(destination_directory, source_file + '.' + label)
print('"%s" -> "%s"' % (source_path, destination_path))
shutil.copyfile(source_path, destination_path)
count += 1
print('Coverage file count: %d' % count)
print('##vso[task.setVariable variable=coverageFileCount]%d' % count)
print('##vso[task.setVariable variable=outputPath]%s' % output_path)
if __name__ == '__main__':
main()

View File

@@ -1,28 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# Check the test results and set variables for use in later steps.
set -o pipefail -eu
if [[ "$PWD" =~ /ansible_collections/ ]]; then
output_path="tests/output"
else
output_path="test/results"
fi
echo "##vso[task.setVariable variable=outputPath]${output_path}"
if compgen -G "${output_path}"'/junit/*.xml' > /dev/null; then
echo "##vso[task.setVariable variable=haveTestResults]true"
fi
if compgen -G "${output_path}"'/bot/ansible-test-*' > /dev/null; then
echo "##vso[task.setVariable variable=haveBotResults]true"
fi
if compgen -G "${output_path}"'/coverage/*' > /dev/null; then
echo "##vso[task.setVariable variable=haveCoverageData]true"
fi

View File

@@ -1,105 +0,0 @@
#!/usr/bin/env python
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
"""
Upload code coverage reports to codecov.io.
Multiple coverage files from multiple languages are accepted and aggregated after upload.
Python coverage, as well as PowerShell and Python stubs can all be uploaded.
"""
import argparse
import dataclasses
import pathlib
import shutil
import subprocess
import tempfile
import typing as t
import urllib.request
@dataclasses.dataclass(frozen=True)
class CoverageFile:
name: str
path: pathlib.Path
flags: t.List[str]
@dataclasses.dataclass(frozen=True)
class Args:
dry_run: bool
path: pathlib.Path
def parse_args() -> Args:
parser = argparse.ArgumentParser()
parser.add_argument('-n', '--dry-run', action='store_true')
parser.add_argument('path', type=pathlib.Path)
args = parser.parse_args()
# Store arguments in a typed dataclass
fields = dataclasses.fields(Args)
kwargs = {field.name: getattr(args, field.name) for field in fields}
return Args(**kwargs)
def process_files(directory: pathlib.Path) -> t.Tuple[CoverageFile, ...]:
processed = []
for file in directory.joinpath('reports').glob('coverage*.xml'):
name = file.stem.replace('coverage=', '')
# Get flags from name
flags = name.replace('-powershell', '').split('=') # Drop '-powershell' suffix
flags = [flag if not flag.startswith('stub') else flag.split('-')[0] for flag in flags] # Remove "-01" from stub files
processed.append(CoverageFile(name, file, flags))
return tuple(processed)
def upload_files(codecov_bin: pathlib.Path, files: t.Tuple[CoverageFile, ...], dry_run: bool = False) -> None:
for file in files:
cmd = [
str(codecov_bin),
'--name', file.name,
'--file', str(file.path),
]
for flag in file.flags:
cmd.extend(['--flags', flag])
if dry_run:
print(f'DRY-RUN: Would run command: {cmd}')
continue
subprocess.run(cmd, check=True)
def download_file(url: str, dest: pathlib.Path, flags: int, dry_run: bool = False) -> None:
if dry_run:
print(f'DRY-RUN: Would download {url} to {dest} and set mode to {flags:o}')
return
with urllib.request.urlopen(url) as resp:
with dest.open('w+b') as f:
# Read data in chunks rather than all at once
shutil.copyfileobj(resp, f, 64 * 1024)
dest.chmod(flags)
def main():
args = parse_args()
url = 'https://ansible-ci-files.s3.amazonaws.com/codecov/linux/codecov'
with tempfile.TemporaryDirectory(prefix='codecov-') as tmpdir:
codecov_bin = pathlib.Path(tmpdir) / 'codecov'
download_file(url, codecov_bin, 0o755, args.dry_run)
files = process_files(args.path)
upload_files(codecov_bin, files, args.dry_run)
if __name__ == '__main__':
main()

View File

@@ -1,19 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# Generate code coverage reports for uploading to Azure Pipelines and codecov.io.
set -o pipefail -eu
PATH="${PWD}/bin:${PATH}"
if ! ansible-test --help >/dev/null 2>&1; then
# Install the devel version of ansible-test for generating code coverage reports.
# This is only used by Ansible Collections, which are typically tested against multiple Ansible versions (in separate jobs).
# Since a version of ansible-test is required that can work the output from multiple older releases, the devel version is used.
pip install https://github.com/ansible/ansible/archive/devel.tar.gz --disable-pip-version-check
fi
ansible-test coverage xml --group-by command --stub --venv --venv-system-site-packages --color -v

View File

@@ -1,38 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# Configure the test environment and run the tests.
set -o pipefail -eu
entry_point="$1"
test="$2"
read -r -a coverage_branches <<< "$3" # space separated list of branches to run code coverage on for scheduled builds
export COMMIT_MESSAGE
export COMPLETE
export COVERAGE
export IS_PULL_REQUEST
if [ "${SYSTEM_PULLREQUEST_TARGETBRANCH:-}" ]; then
IS_PULL_REQUEST=true
COMMIT_MESSAGE=$(git log --format=%B -n 1 HEAD^2)
else
IS_PULL_REQUEST=
COMMIT_MESSAGE=$(git log --format=%B -n 1 HEAD)
fi
COMPLETE=
COVERAGE=
if [ "${BUILD_REASON}" = "Schedule" ]; then
COMPLETE=yes
if printf '%s\n' "${coverage_branches[@]}" | grep -q "^${BUILD_SOURCEBRANCHNAME}$"; then
COVERAGE=yes
fi
fi
"${entry_point}" "${test}" 2>&1 | "$(dirname "$0")/time-command.py"

View File

@@ -1,29 +0,0 @@
#!/usr/bin/env python
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
"""Prepends a relative timestamp to each input line from stdin and writes it to stdout."""
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import sys
import time
def main():
"""Main program entry point."""
start = time.time()
sys.stdin.reconfigure(errors='surrogateescape')
sys.stdout.reconfigure(errors='surrogateescape')
for line in sys.stdin:
seconds = time.time() - start
sys.stdout.write('%02d:%02d %s' % (seconds // 60, seconds % 60, line))
sys.stdout.flush()
if __name__ == '__main__':
main()

View File

@@ -1,34 +0,0 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# This template adds a job for processing code coverage data.
# It will upload results to Azure Pipelines and codecov.io.
# Use it from a job stage that completes after all other jobs have completed.
# This can be done by placing it in a separate summary stage that runs after the test stage(s) have completed.
jobs:
- job: Coverage
displayName: Code Coverage
container: default
workspace:
clean: all
steps:
- checkout: self
fetchDepth: $(fetchDepth)
path: $(checkoutPath)
- task: DownloadPipelineArtifact@2
displayName: Download Coverage Data
inputs:
path: coverage/
patterns: "Coverage */*=coverage.combined"
- bash: .azure-pipelines/scripts/combine-coverage.py coverage/
displayName: Combine Coverage Data
- bash: .azure-pipelines/scripts/report-coverage.sh
displayName: Generate Coverage Report
condition: gt(variables.coverageFileCount, 0)
- bash: .azure-pipelines/scripts/publish-codecov.py "$(outputPath)"
displayName: Publish to codecov.io
condition: gt(variables.coverageFileCount, 0)
continueOnError: true

View File

@@ -1,60 +0,0 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# This template uses the provided targets and optional groups to generate a matrix which is then passed to the test template.
# If this matrix template does not provide the required functionality, consider using the test template directly instead.
parameters:
# A required list of dictionaries, one per test target.
# Each item in the list must contain a "test" or "name" key.
# Both may be provided. If one is omitted, the other will be used.
- name: targets
type: object
# An optional list of values which will be used to multiply the targets list into a matrix.
# Values can be strings or numbers.
- name: groups
type: object
default: []
# An optional format string used to generate the job name.
# - {0} is the name of an item in the targets list.
- name: nameFormat
type: string
default: "{0}"
# An optional format string used to generate the test name.
# - {0} is the name of an item in the targets list.
- name: testFormat
type: string
default: "{0}"
# An optional format string used to add the group to the job name.
# {0} is the formatted name of an item in the targets list.
# {{1}} is the group -- be sure to include the double "{{" and "}}".
- name: nameGroupFormat
type: string
default: "{0} - {{1}}"
# An optional format string used to add the group to the test name.
# {0} is the formatted test of an item in the targets list.
# {{1}} is the group -- be sure to include the double "{{" and "}}".
- name: testGroupFormat
type: string
default: "{0}/{{1}}"
jobs:
- template: test.yml
parameters:
jobs:
- ${{ if eq(length(parameters.groups), 0) }}:
- ${{ each target in parameters.targets }}:
- name: ${{ format(parameters.nameFormat, coalesce(target.name, target.test)) }}
test: ${{ format(parameters.testFormat, coalesce(target.test, target.name)) }}
- ${{ if not(eq(length(parameters.groups), 0)) }}:
- ${{ each group in parameters.groups }}:
- ${{ each target in parameters.targets }}:
- name: ${{ format(format(parameters.nameGroupFormat, parameters.nameFormat), coalesce(target.name, target.test), group) }}
test: ${{ format(format(parameters.testGroupFormat, parameters.testFormat), coalesce(target.test, target.name), group) }}

View File

@@ -1,50 +0,0 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# This template uses the provided list of jobs to create test one or more test jobs.
# It can be used directly if needed, or through the matrix template.
parameters:
# A required list of dictionaries, one per test job.
# Each item in the list must contain a "job" and "name" key.
- name: jobs
type: object
jobs:
- ${{ each job in parameters.jobs }}:
- job: test_${{ replace(replace(replace(job.test, '/', '_'), '.', '_'), '-', '_') }}
displayName: ${{ job.name }}
container: default
workspace:
clean: all
steps:
- checkout: self
fetchDepth: $(fetchDepth)
path: $(checkoutPath)
- bash: .azure-pipelines/scripts/run-tests.sh "$(entryPoint)" "${{ job.test }}" "$(coverageBranches)"
displayName: Run Tests
- bash: .azure-pipelines/scripts/process-results.sh
condition: succeededOrFailed()
displayName: Process Results
- bash: .azure-pipelines/scripts/aggregate-coverage.sh "$(Agent.TempDirectory)"
condition: eq(variables.haveCoverageData, 'true')
displayName: Aggregate Coverage Data
- task: PublishTestResults@2
condition: eq(variables.haveTestResults, 'true')
inputs:
testResultsFiles: "$(outputPath)/junit/*.xml"
displayName: Publish Test Results
- task: PublishPipelineArtifact@1
condition: eq(variables.haveBotResults, 'true')
displayName: Publish Bot Results
inputs:
targetPath: "$(outputPath)/bot/"
artifactName: "Bot $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
- task: PublishPipelineArtifact@1
condition: eq(variables.haveCoverageData, 'true')
displayName: Publish Coverage Data
inputs:
targetPath: "$(Agent.TempDirectory)/coverage/"
artifactName: "Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"

View File

@@ -1,9 +0,0 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# YAML reformatting
d032de3b16eed11ea3a31cd3d96d78f7c46a2ee0
e8f965fbf8154ea177c6622da149f2ae8533bd3c
e938ca5f20651abc160ee6aba10014013d04dcc1
eaa5e07b2866e05b6c7b5628ca92e9cb1142d008

422
.github/BOTMETA.yml vendored
View File

@@ -33,8 +33,6 @@ files:
maintainers: $team_ansible_core
$becomes/pmrun.py:
maintainers: $team_ansible_core
$becomes/run0.py:
maintainers: konstruktoid
$becomes/sesu.py:
maintainers: nekonyuu
$becomes/sudosu.py:
@@ -52,8 +50,6 @@ files:
$callbacks/cgroup_memory_recap.py: {}
$callbacks/context_demo.py: {}
$callbacks/counter_enabled.py: {}
$callbacks/default_without_diff.py:
maintainers: felixfontein
$callbacks/dense.py:
maintainers: dagwieers
$callbacks/diy.py:
@@ -61,6 +57,7 @@ files:
$callbacks/elastic.py:
keywords: apm observability
maintainers: v1v
$callbacks/hipchat.py: {}
$callbacks/jabber.py: {}
$callbacks/log_plays.py: {}
$callbacks/loganalytics.py:
@@ -77,8 +74,6 @@ files:
$callbacks/opentelemetry.py:
keywords: opentelemetry observability
maintainers: v1v
$callbacks/print_task.py:
maintainers: demonpig
$callbacks/say.py:
keywords: brew cask darwin homebrew macosx macports osx
labels: macos say
@@ -92,10 +87,6 @@ files:
maintainers: ryancurrah
$callbacks/syslog_json.py:
maintainers: imjoseangel
$callbacks/tasks_only.py:
maintainers: felixfontein
$callbacks/timestamp.py:
maintainers: kurokobo
$callbacks/unixy.py:
labels: unixy
maintainers: akatch
@@ -106,9 +97,6 @@ files:
$connections/funcd.py:
maintainers: mscherer
$connections/iocage.py: {}
$connections/incus.py:
labels: incus
maintainers: stgraber
$connections/jail.py:
maintainers: $team_ansible_core
$connections/lxc.py: {}
@@ -120,14 +108,10 @@ files:
$connections/saltstack.py:
labels: saltstack
maintainers: mscherer
$connections/wsl.py:
maintainers: rgl
$connections/zone.py:
maintainers: $team_ansible_core
$doc_fragments/:
labels: docs_fragments
$doc_fragments/django.py:
maintainers: russoz
$doc_fragments/hpe3par.py:
labels: hpe3par
maintainers: farhan7500 gautamphegde
@@ -135,14 +119,10 @@ files:
labels: hwc
maintainers: $team_huawei
$doc_fragments/nomad.py:
maintainers: chris93111 apecnascimento
$doc_fragments/pipx.py:
maintainers: russoz
maintainers: chris93111
$doc_fragments/xenserver.py:
labels: xenserver
maintainers: bvitnik
$filters/accumulate.py:
maintainers: VannTen
$filters/counter.py:
maintainers: keilr
$filters/crc32.py:
@@ -153,8 +133,6 @@ files:
maintainers: giner
$filters/from_csv.py:
maintainers: Ajpantuso
$filters/from_ini.py:
maintainers: sscheib
$filters/groupby_as_dict.py:
maintainers: felixfontein
$filters/hashids.py:
@@ -165,64 +143,28 @@ files:
maintainers: Ajpantuso
$filters/jc.py:
maintainers: kellyjonbrazil
$filters/json_diff.yml:
maintainers: numo68
$filters/json_patch.py:
maintainers: numo68
$filters/json_patch.yml:
maintainers: numo68
$filters/json_patch_recipe.yml:
maintainers: numo68
$filters/json_query.py: {}
$filters/keep_keys.py:
maintainers: vbotka
$filters/lists.py:
maintainers: cfiehe
$filters/lists_difference.yml:
maintainers: cfiehe
$filters/lists_intersect.yml:
maintainers: cfiehe
$filters/lists_mergeby.py:
maintainers: vbotka
$filters/lists_symmetric_difference.yml:
maintainers: cfiehe
$filters/lists_union.yml:
maintainers: cfiehe
$filters/random_mac.py: {}
$filters/remove_keys.py:
maintainers: vbotka
$filters/replace_keys.py:
maintainers: vbotka
$filters/reveal_ansible_type.py:
maintainers: vbotka
$filters/time.py:
maintainers: resmo
$filters/to_days.yml:
maintainers: resmo
$filters/to_hours.yml:
maintainers: resmo
$filters/to_ini.py:
maintainers: sscheib
$filters/to_milliseconds.yml:
maintainers: resmo
$filters/to_minutes.yml:
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:
maintainers: resmo
$filters/to_time_unit.yml:
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:
@@ -235,8 +177,6 @@ files:
maintainers: opoplawski
$inventories/gitlab_runners.py:
maintainers: morph027
$inventories/iocage.py:
maintainers: vbotka
$inventories/icinga2.py:
maintainers: BongoEADGC6
$inventories/linode.py:
@@ -252,18 +192,18 @@ files:
keywords: opennebula dynamic inventory script
labels: cloud opennebula
maintainers: feldsam
$inventories/proxmox.py:
maintainers: $team_virt ilijamt
$inventories/scaleway.py:
labels: cloud scaleway
maintainers: $team_scaleway
$inventories/stackpath_compute.py:
maintainers: shayrybak
$inventories/virtualbox.py: {}
$inventories/xen_orchestra.py:
maintainers: ddelnano shinuza
$lookups/:
labels: lookups
$lookups/binary_file.py:
maintainers: felixfontein
$lookups/bitwarden_secrets_manager.py:
maintainers: jantari
$lookups/bitwarden.py:
maintainers: lungj
$lookups/cartesian.py: {}
@@ -292,16 +232,17 @@ files:
$lookups/filetree.py:
maintainers: dagwieers
$lookups/flattened.py: {}
$lookups/github_app_access_token.py:
maintainers: weisheng-p blavoie
$lookups/hiera.py:
maintainers: jparrill
$lookups/keyring.py: {}
$lookups/lastpass.py: {}
$lookups/lmdb_kv.py:
maintainers: jpmens
$lookups/manifold.py:
labels: manifold
maintainers: galanoff
$lookups/merge_variables.py:
maintainers: rlenferink m-a-r-k-e alpex8
maintainers: rlenferink m-a-r-k-e
$lookups/onepass:
labels: onepassword
maintainers: samdoran
@@ -311,8 +252,6 @@ files:
$lookups/onepassword_raw.py:
ignore: scottsb
maintainers: azenk
$lookups/onepassword_ssh_key.py:
maintainers: mohammedbabelly20
$lookups/passwordstore.py: {}
$lookups/random_pet.py:
maintainers: Akasurde
@@ -330,23 +269,13 @@ files:
maintainers: delineaKrehl tylerezimmerman
$module_utils/:
labels: module_utils
$module_utils/android_sdkmanager.py:
maintainers: shamilovstas
$module_utils/btrfs.py:
maintainers: gnfzdz
$module_utils/cmd_runner_fmt.py:
maintainers: russoz
$module_utils/cmd_runner.py:
maintainers: russoz
$module_utils/deps.py:
maintainers: russoz
$module_utils/django.py:
maintainers: russoz
$module_utils/gconftool2.py:
labels: gconftool2
maintainers: russoz
$module_utils/gio_mime.py:
maintainers: russoz
$module_utils/gitlab.py:
keywords: gitlab source_control
labels: gitlab
@@ -382,15 +311,9 @@ files:
$module_utils/oracle/oci_utils.py:
labels: cloud
maintainers: $team_oracle
$module_utils/pacemaker.py:
maintainers: munchtoast
$module_utils/pipx.py:
labels: pipx
maintainers: russoz
$module_utils/pkg_req.py:
maintainers: russoz
$module_utils/python_runner.py:
maintainers: russoz
$module_utils/puppet.py:
labels: puppet
maintainers: russoz
@@ -405,26 +328,16 @@ files:
$module_utils/scaleway.py:
labels: cloud scaleway
maintainers: $team_scaleway
$module_utils/snap.py:
labels: snap
maintainers: russoz
$module_utils/ssh.py:
maintainers: russoz
$module_utils/systemd.py:
maintainers: NomakCooper
$module_utils/storage/hpe3par/hpe3par.py:
maintainers: farhan7500 gautamphegde
$module_utils/utm_utils.py:
labels: utm_utils
maintainers: $team_e_spirit
$module_utils/vardict.py:
labels: vardict
maintainers: russoz
$module_utils/wdc_redfish_utils.py:
labels: wdc_redfish_utils
maintainers: $team_wdc
$module_utils/xdg_mime.py:
maintainers: mhalano
$module_utils/xenserver.py:
labels: xenserver
maintainers: bvitnik
@@ -451,8 +364,6 @@ files:
ignore: DavidWittman jiuka
labels: alternatives
maintainers: mulby
$modules/android_sdk.py:
maintainers: shamilovstas
$modules/ansible_galaxy_install.py:
maintainers: russoz
$modules/apache2_mod_proxy.py:
@@ -483,11 +394,9 @@ files:
$modules/bearychat.py:
maintainers: tonyseek
$modules/bigpanda.py:
ignore: hkariti
maintainers: hkariti
$modules/bitbucket_:
maintainers: catcombo
$modules/bootc_manage.py:
maintainers: cooktheryan
$modules/bower.py:
maintainers: mwarkentin
$modules/btrfs_:
@@ -508,6 +417,8 @@ files:
maintainers: NickatEpic
$modules/cisco_webex.py:
maintainers: drew-russell
$modules/clc_:
maintainers: clc-runner
$modules/cloud_init_data_facts.py:
maintainers: resmo
$modules/cloudflare_dns.py:
@@ -519,7 +430,7 @@ files:
ignore: resmo
maintainers: dmtrs
$modules/consul:
ignore: colin-nolan Hakon
ignore: colin-nolan
maintainers: $team_consul
$modules/copr.py:
maintainers: schlupov
@@ -539,8 +450,6 @@ files:
ignore: skornehl
$modules/dconf.py:
maintainers: azaghal
$modules/decompress.py:
maintainers: shamilovstas
$modules/deploy_helper.py:
maintainers: ramondelafuente
$modules/dimensiondata_network.py:
@@ -550,24 +459,12 @@ files:
maintainers: tintoy
$modules/discord.py:
maintainers: cwollinger
$modules/django_check.py:
maintainers: russoz
$modules/django_command.py:
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
maintainers: russoz
$modules/dnf_versionlock.py:
maintainers: moreda
$modules/dnf_config_manager.py:
maintainers: ahyattdev
$modules/dnsimple.py:
maintainers: drcapulet
$modules/dnsimple_info.py:
@@ -590,9 +487,6 @@ files:
$modules/facter.py:
labels: facter
maintainers: $team_ansible_core gamethis
$modules/facter_facts.py:
labels: facter
maintainers: russoz $team_ansible_core gamethis
$modules/filesize.py:
maintainers: quidame
$modules/filesystem.py:
@@ -602,6 +496,8 @@ files:
maintainers: $team_flatpak
$modules/flatpak_remote.py:
maintainers: $team_flatpak
$modules/flowdock.py:
ignore: mcodd
$modules/gandi_livedns.py:
maintainers: gthiemonge
$modules/gconftool2.py:
@@ -613,12 +509,8 @@ files:
$modules/gem.py:
labels: gem
maintainers: $team_ansible_core johanwiren
$modules/gio_mime.py:
maintainers: russoz
$modules/git_config.py:
maintainers: djmattyg007 mgedmin
$modules/git_config_info.py:
maintainers: guenhter
$modules/github_:
maintainers: stpierre
$modules/github_deploy_key.py:
@@ -640,36 +532,26 @@ files:
ignore: dj-wasabi
$modules/gitlab_branch.py:
maintainers: paytroff
$modules/gitlab_issue.py:
maintainers: zvaraondrej
$modules/gitlab_label.py:
maintainers: gpongelli
$modules/gitlab_merge_request.py:
maintainers: zvaraondrej
$modules/gitlab_milestone.py:
maintainers: gpongelli
$modules/gitlab_project_variable.py:
maintainers: markuman
$modules/gitlab_instance_variable.py:
maintainers: benibr
$modules/gitlab_runner.py:
maintainers: SamyCoenen
$modules/gitlab_user.py:
maintainers: LennertMertens stgrace
$modules/gitlab_group_access_token.py:
maintainers: pixslx
$modules/gitlab_project_access_token.py:
maintainers: pixslx
$modules/grove.py:
maintainers: zimbatm
$modules/gunicorn.py:
maintainers: agmezr
$modules/hana_query.py:
maintainers: rainerleber
$modules/haproxy.py:
maintainers: ravibhure Normo
$modules/heroku_collaborator.py:
maintainers: marns93
$modules/hg.py:
maintainers: yeukhon
$modules/hipchat.py:
maintainers: pb8226 shirou
$modules/homebrew.py:
ignore: ryansb
keywords: brew cask darwin homebrew macosx macports osx
@@ -688,11 +570,6 @@ files:
labels: homebrew_ macos
maintainers: $team_macos
notify: chris-short
$modules/homebrew_services.py:
ignore: ryansb
keywords: brew cask services darwin homebrew macosx macports osx
labels: homebrew_ macos
maintainers: $team_macos kitizz
$modules/homectl.py:
maintainers: jameslivulpi
$modules/honeybadger_deployment.py:
@@ -751,13 +628,6 @@ files:
maintainers: bregman-arie
$modules/ipa_:
maintainers: $team_ipa
ignore: fxfitz
$modules/ipa_getkeytab.py:
maintainers: abakanovskii
$modules/ipa_dnsrecord.py:
maintainers: $team_ipa jwbernin
$modules/ipbase_info.py:
maintainers: dominikkukacka
$modules/ipa_pwpolicy.py:
maintainers: adralioh
$modules/ipa_service.py:
@@ -792,17 +662,11 @@ files:
labels: jboss
maintainers: $team_jboss jhoekx
$modules/jenkins_build.py:
maintainers: brettmilford unnecessary-username juanmcasanova
$modules/jenkins_build_info.py:
maintainers: juanmcasanova
$modules/jenkins_credential.py:
maintainers: YoussefKhalidAli
maintainers: brettmilford unnecessary-username
$modules/jenkins_job.py:
maintainers: sermilrod
$modules/jenkins_job_info.py:
maintainers: stpierre
$modules/jenkins_node.py:
maintainers: phyrwork
$modules/jenkins_plugin.py:
maintainers: jtyr
$modules/jenkins_script.py:
@@ -819,16 +683,8 @@ files:
maintainers: $team_keycloak
$modules/keycloak_authentication.py:
maintainers: elfelip Gaetan2907
$modules/keycloak_authentication_required_actions.py:
maintainers: Skrekulko
$modules/keycloak_authz_authorization_scope.py:
maintainers: mattock
$modules/keycloak_authz_permission.py:
maintainers: mattock
$modules/keycloak_authz_custom_policy.py:
maintainers: mattock
$modules/keycloak_authz_permission_info.py:
maintainers: mattock
$modules/keycloak_client_rolemapping.py:
maintainers: Gaetan2907
$modules/keycloak_clientscope.py:
@@ -839,8 +695,6 @@ files:
maintainers: fynncfchen johncant
$modules/keycloak_clientsecret_regenerate.py:
maintainers: fynncfchen johncant
$modules/keycloak_component.py:
maintainers: fivetide
$modules/keycloak_group.py:
maintainers: adamgoossens
$modules/keycloak_identity_provider.py:
@@ -849,32 +703,18 @@ files:
maintainers: kris2kris
$modules/keycloak_realm_info.py:
maintainers: fynncfchen
$modules/keycloak_realm_key.py:
maintainers: mattock
$modules/keycloak_role.py:
maintainers: laurpaum
$modules/keycloak_user.py:
maintainers: elfelip
$modules/keycloak_user_federation.py:
maintainers: laurpaum
$modules/keycloak_userprofile.py:
maintainers: yeoldegrove
$modules/keycloak_component_info.py:
maintainers: desand01
$modules/keycloak_client_rolescope.py:
maintainers: desand01
$modules/keycloak_user_rolemapping.py:
maintainers: bratwurzt
$modules/keycloak_realm_rolemapping.py:
maintainers: agross mhuysamen Gaetan2907
$modules/keyring.py:
maintainers: ahussey-redhat
$modules/keyring_info.py:
maintainers: ahussey-redhat
$modules/kibana_plugin.py:
maintainers: barryib
$modules/krb_ticket.py:
maintainers: abakanovskii
$modules/launchd.py:
maintainers: martinm82
$modules/layman.py:
@@ -885,8 +725,6 @@ files:
maintainers: drybjed jtyr noles
$modules/ldap_entry.py:
maintainers: jtyr
$modules/ldap_inc.py:
maintainers: pduveau
$modules/ldap_passwd.py:
maintainers: KellerFuchs jtyr
$modules/ldap_search.py:
@@ -913,12 +751,6 @@ files:
maintainers: nerzhul
$modules/lvg.py:
maintainers: abulimov
$modules/lvm_pv.py:
maintainers: klention
$modules/lvm_pv_move_data.py:
maintainers: klention
$modules/lvg_rename.py:
maintainers: lszomor
$modules/lvol.py:
maintainers: abulimov jhoekx zigaSRC unkaputtbar112
$modules/lxc_container.py:
@@ -1003,7 +835,7 @@ files:
$modules/nmcli.py:
maintainers: alcamie101
$modules/nomad_:
maintainers: chris93111 apecnascimento
maintainers: chris93111
$modules/nosh.py:
maintainers: tacatac
$modules/npm.py:
@@ -1032,8 +864,6 @@ files:
maintainers: $team_opennebula
$modules/one_host.py:
maintainers: rvalle
$modules/one_vnet.py:
maintainers: abakanovskii
$modules/oneandone_:
maintainers: aajdinov edevenport
$modules/onepassword_info.py:
@@ -1071,13 +901,7 @@ files:
$modules/ovh_monthly_billing.py:
maintainers: fraff
$modules/pacemaker_cluster.py:
maintainers: matbu munchtoast
$modules/pacemaker_info.py:
maintainers: munchtoast
$modules/pacemaker_resource.py:
maintainers: munchtoast
$modules/pacemaker_stonith.py:
maintainers: munchtoast
maintainers: matbu
$modules/packet_:
maintainers: nurfet-becirevic t0mk
$modules/packet_device.py:
@@ -1096,7 +920,7 @@ files:
labels: pagerduty
maintainers: suprememoocow thaumos
$modules/pagerduty_alert.py:
maintainers: ApsOps xshen1
maintainers: ApsOps
$modules/pagerduty_change.py:
maintainers: adamvaughan
$modules/pagerduty_user.py:
@@ -1139,9 +963,6 @@ files:
maintainers: $team_solaris dermute
$modules/pmem.py:
maintainers: mizumm
$modules/pnpm.py:
ignore: chrishoffman
maintainers: aretrosen
$modules/portage.py:
ignore: sayap
labels: portage
@@ -1153,6 +974,27 @@ files:
maintainers: $team_bsd berenddeboer
$modules/pritunl_:
maintainers: Lowess
$modules/profitbricks:
maintainers: baldwinSPC
$modules/proxmox:
keywords: kvm libvirt proxmox qemu
labels: proxmox virt
maintainers: $team_virt
$modules/proxmox.py:
ignore: skvidal
maintainers: UnderGreen
$modules/proxmox_disk.py:
maintainers: castorsky
$modules/proxmox_kvm.py:
ignore: skvidal
maintainers: helldorado
$modules/proxmox_nic.py:
maintainers: Kogelvis
$modules/proxmox_tasks_info:
maintainers: paginabianca
$modules/proxmox_template.py:
ignore: skvidal
maintainers: UnderGreen
$modules/pubnub_blocks.py:
maintainers: parfeon pubnub
$modules/pulp_repo.py:
@@ -1167,6 +1009,46 @@ files:
$modules/python_requirements_info.py:
ignore: ryansb
maintainers: willthames
$modules/rax:
ignore: ryansb sivel
$modules/rax.py:
maintainers: omgjlk sivel
$modules/rax_cbs.py:
maintainers: claco
$modules/rax_cbs_attachments.py:
maintainers: claco
$modules/rax_cdb.py:
maintainers: jails
$modules/rax_cdb_database.py:
maintainers: jails
$modules/rax_cdb_user.py:
maintainers: jails
$modules/rax_clb.py:
maintainers: claco
$modules/rax_clb_nodes.py:
maintainers: neuroid
$modules/rax_clb_ssl.py:
maintainers: smashwilson
$modules/rax_files.py:
maintainers: angstwad
$modules/rax_files_objects.py:
maintainers: angstwad
$modules/rax_identity.py:
maintainers: claco
$modules/rax_mon_alarm.py:
maintainers: smashwilson
$modules/rax_mon_check.py:
maintainers: smashwilson
$modules/rax_mon_entity.py:
maintainers: smashwilson
$modules/rax_mon_notification.py:
maintainers: smashwilson
$modules/rax_mon_notification_plan.py:
maintainers: smashwilson
$modules/rax_network.py:
maintainers: claco omgjlk
$modules/rax_queue.py:
maintainers: claco
$modules/read_csv.py:
maintainers: dagwieers
$modules/redfish_:
@@ -1191,6 +1073,12 @@ files:
keywords: kvm libvirt proxmox qemu
labels: rhevm virt
maintainers: $team_virt TimothyVandenbrande
$modules/rhn_channel.py:
labels: rhn_channel
maintainers: vincentvdk alikins $team_rhn
$modules/rhn_register.py:
labels: rhn_register
maintainers: jlaska $team_rhn
$modules/rhsm_release.py:
maintainers: seandst $team_rhsm
$modules/rhsm_repository.py:
@@ -1215,6 +1103,10 @@ files:
maintainers: nerzhul
$modules/runit.py:
maintainers: jsumners
$modules/sap_task_list_execute:
maintainers: rainerleber
$modules/sapcar_extract.py:
maintainers: RainerLeber
$modules/say.py:
maintainers: $team_ansible_core
ignore: mpdehaan
@@ -1223,9 +1115,9 @@ files:
$modules/scaleway_compute_private_network.py:
maintainers: pastral
$modules/scaleway_container.py:
maintainers: Lunik
maintainers: Lunik
$modules/scaleway_container_info.py:
maintainers: Lunik
maintainers: Lunik
$modules/scaleway_container_namespace.py:
maintainers: Lunik
$modules/scaleway_container_namespace_info.py:
@@ -1289,8 +1181,6 @@ files:
ignore: ryansb
$modules/shutdown.py:
maintainers: nitzmahone samdoran aminvakil
$modules/simpleinit_msb.py:
maintainers: vaygr
$modules/sl_vm.py:
maintainers: mcltn
$modules/slack.py:
@@ -1303,7 +1193,7 @@ files:
maintainers: $team_solaris
$modules/snap.py:
labels: snap
maintainers: angristan vcarceler russoz
maintainers: angristan vcarceler
$modules/snap_alias.py:
labels: snap
maintainers: russoz
@@ -1325,6 +1215,8 @@ files:
maintainers: farhan7500 gautamphegde
$modules/ssh_config.py:
maintainers: gaqzi Akasurde
$modules/stackdriver.py:
maintainers: bwhaley
$modules/stacki_host.py:
labels: stacki_host
maintainers: bsanders bbyhuy
@@ -1354,12 +1246,6 @@ files:
maintainers: precurse
$modules/sysrc.py:
maintainers: dlundgren
$modules/systemd_creds_decrypt.py:
maintainers: konstruktoid
$modules/systemd_creds_encrypt.py:
maintainers: konstruktoid
$modules/systemd_info.py:
maintainers: NomakCooper
$modules/sysupgrade.py:
maintainers: precurse
$modules/taiga_issue.py:
@@ -1385,25 +1271,20 @@ files:
maintainers: nate-kingsley
$modules/urpmi.py:
maintainers: pmakowski
$modules/usb_facts.py:
maintainers: maxopoly
$modules/utm_:
keywords: sophos utm
maintainers: $team_e_spirit
$modules/utm_ca_host_key_cert.py:
ignore: stearz
maintainers: $team_e_spirit
maintainers: stearz
$modules/utm_ca_host_key_cert_info.py:
ignore: stearz
maintainers: $team_e_spirit
maintainers: stearz
$modules/utm_network_interface_address.py:
maintainers: steamx
$modules/utm_network_interface_address_info.py:
maintainers: steamx
$modules/utm_proxy_auth_profile.py:
keywords: sophos utm
ignore: stearz
maintainers: $team_e_spirit
maintainers: $team_e_spirit stearz
$modules/utm_proxy_exception.py:
keywords: sophos utm
maintainers: $team_e_spirit RickS-C137
@@ -1426,6 +1307,8 @@ files:
maintainers: $team_wdc
$modules/wdc_redfish_info.py:
maintainers: $team_wdc
$modules/webfaction_:
maintainers: quentinsf
$modules/xattr.py:
labels: xattr
maintainers: bcoca
@@ -1433,8 +1316,6 @@ files:
maintainers: dinoocch the-maldridge
$modules/xcc_:
maintainers: panyy3 renxulei
$modules/xdg_mime.py:
maintainers: mhalano
$modules/xenserver_:
maintainers: bvitnik
$modules/xenserver_facts.py:
@@ -1467,8 +1348,6 @@ files:
maintainers: natefoo
$modules/znode.py:
maintainers: treyperry
$modules/zpool.py:
maintainers: tomhesse
$modules/zpool_facts:
keywords: beadm dladm illumos ipadm nexenta omnios openindiana pfexec smartos solaris sunos zfs zpool
labels: solaris
@@ -1481,90 +1360,10 @@ files:
ignore: matze
labels: zypper
maintainers: $team_suse
$plugin_utils/ansible_type.py:
maintainers: vbotka
$modules/zypper_repository_info.py:
labels: zypper
maintainers: $team_suse TobiasZeuch181
$plugin_utils/keys_filter.py:
maintainers: vbotka
$plugin_utils/unsafe.py:
maintainers: felixfontein
$tests/a_module.py:
maintainers: felixfontein
$tests/ansible_type.py:
maintainers: vbotka
$tests/fqdn_valid.py:
maintainers: vbotka
#########################
docs/docsite/rst/filter_guide.rst: {}
docs/docsite/rst/filter_guide_abstract_informations.rst: {}
docs/docsite/rst/filter_guide_abstract_informations_counting_elements_in_sequence.rst:
maintainers: keilr
docs/docsite/rst/filter_guide_abstract_informations_dictionaries.rst:
maintainers: felixfontein giner
docs/docsite/rst/filter_guide_abstract_informations_grouping.rst:
maintainers: felixfontein
docs/docsite/rst/filter_guide_abstract_informations_lists_helper.rst:
maintainers: cfiehe
docs/docsite/rst/filter_guide-abstract_informations-lists_of_dictionaries-keep_keys.rst:
maintainers: vbotka
docs/docsite/rst/filter_guide-abstract_informations-lists_of_dictionaries-remove_keys.rst:
maintainers: vbotka
docs/docsite/rst/filter_guide-abstract_informations-lists_of_dictionaries-replace_keys.rst:
maintainers: vbotka
docs/docsite/rst/filter_guide-abstract_informations-lists_of_dictionaries.rst:
maintainers: vbotka
docs/docsite/rst/filter_guide_abstract_informations_merging_lists_of_dictionaries.rst:
maintainers: vbotka
docs/docsite/rst/filter_guide_conversions.rst:
maintainers: Ajpantuso kellyjonbrazil
docs/docsite/rst/filter_guide_creating_identifiers.rst:
maintainers: Ajpantuso
docs/docsite/rst/filter_guide_paths.rst: {}
docs/docsite/rst/filter_guide_selecting_json_data.rst: {}
docs/docsite/rst/filter_guide_working_with_times.rst:
maintainers: resmo
docs/docsite/rst/filter_guide_working_with_unicode.rst:
maintainers: Ajpantuso
docs/docsite/rst/filter_guide_working_with_versions.rst:
maintainers: ericzolf
docs/docsite/rst/guide_alicloud.rst:
maintainers: xiaozhu36
docs/docsite/rst/guide_cmdrunner.rst:
maintainers: russoz
docs/docsite/rst/guide_deps.rst:
maintainers: russoz
docs/docsite/rst/guide_iocage.rst:
maintainers: russoz felixfontein
docs/docsite/rst/guide_iocage_inventory.rst:
maintainers: vbotka
docs/docsite/rst/guide_iocage_inventory_aliases.rst:
maintainers: vbotka
docs/docsite/rst/guide_iocage_inventory_basics.rst:
maintainers: vbotka
docs/docsite/rst/guide_iocage_inventory_dhcp.rst:
maintainers: vbotka
docs/docsite/rst/guide_iocage_inventory_hooks.rst:
maintainers: vbotka
docs/docsite/rst/guide_iocage_inventory_properties.rst:
maintainers: vbotka
docs/docsite/rst/guide_iocage_inventory_tags.rst:
maintainers: vbotka
docs/docsite/rst/guide_modulehelper.rst:
maintainers: russoz
docs/docsite/rst/guide_online.rst:
maintainers: remyleone
docs/docsite/rst/guide_packet.rst:
maintainers: baldwinSPC nurfet-becirevic t0mk teebes
docs/docsite/rst/guide_scaleway.rst:
maintainers: $team_scaleway
docs/docsite/rst/guide_uthelper.rst:
maintainers: russoz
docs/docsite/rst/guide_vardict.rst:
maintainers: russoz
docs/docsite/rst/test_guide.rst:
maintainers: felixfontein
#########################
tests/:
labels: tests
@@ -1594,16 +1393,16 @@ macros:
team_ansible_core:
team_aix: MorrisA bcoca d-little flynn1973 gforster kairoaraujo marvin-sinister mator molekuul ramooncamacho wtcross
team_bsd: JoergFiedler MacLemon bcoca dch jasperla mekanix opoplawski overhacked tuxillo
team_consul: sgargan apollo13 Ilgmi
team_consul: sgargan
team_cyberark_conjur: jvanderhoof ryanprior
team_e_spirit: MatrixCrawler getjack
team_flatpak: JayKayy oolongbrothers
team_gitlab: Lunik Shaps marwatk waheedi zanssa scodeman metanovii sh0shin nejch lgatellier suukit
team_hpux: bcoca davx8342
team_huawei: QijunPan TommyLike edisonxiang freesky-edward hwDCN niuzhenguo xuxiaowei0512 yanzhangi zengchen1024 zhongjun2
team_ipa: Akasurde Nosmoht justchris1
team_ipa: Akasurde Nosmoht fxfitz justchris1
team_jboss: Wolfant jairojunior wbrefvem
team_keycloak: eikef ndclt mattock thomasbach-dev
team_keycloak: eikef ndclt mattock
team_linode: InTheCloudDan decentral1se displague rmcintosh Charliekenney23 LBGarber
team_macos: Akasurde kyleabenson martinm82 danieljaouen indrajitr
team_manageiq: abellotti cben gtanzillo yaacov zgalor dkorn evertmulder
@@ -1612,9 +1411,10 @@ macros:
team_oracle: manojmeda mross22 nalsaber
team_purestorage: bannaych dnix101 genegr lionmax opslounge raekins sdodsley sile16
team_redfish: mraineri tomasg2012 xmadsen renxulei rajeevkallur bhavya06 jyundt
team_rhn: FlossWare alikins barnabycourt vritant
team_rhsm: cnsnyder ptoscano
team_scaleway: remyleone abarbare
team_solaris: bcoca fishman jasperla jpdasma mator scathatheworm troy2914 xen0l
team_suse: commel evrardjp lrupp AnderEnder alxgu andytom sealor
team_virt: joshainglis karmab Thulium-Drake Ajpantuso
team_suse: commel evrardjp lrupp toabctl AnderEnder alxgu andytom sealor
team_virt: joshainglis karmab tleguern Thulium-Drake Ajpantuso
team_wdc: mikemoerk

View File

@@ -7,147 +7,147 @@ name: Bug report
description: Create a report to help us improve
body:
- type: markdown
attributes:
value: |
Verify first that your issue is not [already reported on GitHub][issue search].
Also test if the latest release and devel branch are affected too.
*Complete **all** sections as described, this form is processed automatically.*
- type: markdown
attributes:
value: |
Verify first that your issue is not [already reported on GitHub][issue search].
Also test if the latest release and devel branch are affected too.
*Complete **all** sections as described, this form is processed automatically.*
[issue search]: https://github.com/ansible-collections/community.general/search?q=is%3Aissue&type=issues
[issue search]: https://github.com/ansible-collections/community.general/search?q=is%3Aissue&type=issues
- type: textarea
attributes:
label: Summary
description: Explain the problem briefly below.
placeholder: >-
When I try to do X with the collection from the main branch on GitHub, Y
breaks in a way Z under the env E. Here are all the details I know
about this problem...
validations:
- type: textarea
attributes:
label: Summary
description: Explain the problem briefly below.
placeholder: >-
When I try to do X with the collection from the main branch on GitHub, Y
breaks in a way Z under the env E. Here are all the details I know
about this problem...
validations:
required: true
- type: dropdown
attributes:
label: Issue Type
# FIXME: Once GitHub allows defining the default choice, update this
options:
- Bug Report
validations:
required: true
- type: textarea
attributes:
# For smaller collections we could use a multi-select and hardcode the list
# May generate this list via GitHub action and walking files under https://github.com/ansible-collections/community.general/tree/main/plugins
# Select from list, filter as you type (`mysql` would only show the 3 mysql components)
# OR freeform - doesn't seem to be supported in adaptivecards
label: Component Name
description: >-
Write the short name of the module, plugin, task or feature below,
*use your best guess if unsure*.
placeholder: dnf, apt, yum, pip, user etc.
validations:
required: true
- type: textarea
attributes:
label: Ansible Version
description: >-
Paste verbatim output from `ansible --version` between
tripple backticks.
value: |
```console (paste below)
$ ansible --version
```
validations:
required: true
- type: textarea
attributes:
label: Community.general Version
description: >-
Paste verbatim output from "ansible-galaxy collection list community.general"
between tripple backticks.
value: |
```console (paste below)
$ ansible-galaxy collection list community.general
```
validations:
required: true
- type: textarea
attributes:
label: Configuration
description: >-
If this issue has an example piece of YAML that can help to reproduce this problem, please provide it.
This can be a piece of YAML from, e.g., an automation, script, scene or configuration.
Paste verbatim output from `ansible-config dump --only-changed` between quotes
value: |
```console (paste below)
$ ansible-config dump --only-changed
```
- type: textarea
attributes:
label: OS / Environment
description: >-
Provide all relevant information below, e.g. target OS versions,
network device firmware, etc.
placeholder: RHEL 8, CentOS Stream etc.
validations:
required: false
- type: textarea
attributes:
label: Steps to Reproduce
description: |
Describe exactly how to reproduce the problem, using a minimal test-case. It would *really* help us understand your problem if you could also passed any playbooks, configs and commands you used.
**HINT:** You can paste https://gist.github.com links for larger files.
value: |
<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
```
validations:
required: true
- type: textarea
attributes:
label: Expected Results
description: >-
Describe what you expected to happen when running the steps above.
placeholder: >-
I expected X to happen because I assumed Y.
that it did not.
validations:
required: true
- type: textarea
attributes:
label: Actual Results
description: |
Describe what actually happened. If possible run with extra verbosity (`-vvvv`).
Paste verbatim command output between quotes.
value: |
```console (paste below)
```
- type: checkboxes
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.
options:
- label: I agree to follow the Ansible Code of Conduct
required: true
- type: dropdown
attributes:
label: Issue Type
# FIXME: Once GitHub allows defining the default choice, update this
options:
- Bug Report
validations:
required: true
- type: textarea
attributes:
# For smaller collections we could use a multi-select and hardcode the list
# May generate this list via GitHub action and walking files under https://github.com/ansible-collections/community.general/tree/main/plugins
# Select from list, filter as you type (`mysql` would only show the 3 mysql components)
# OR freeform - doesn't seem to be supported in adaptivecards
label: Component Name
description: >-
Write the short name of the module, plugin, task or feature below,
*use your best guess if unsure*. Do not include `community.general.`!
placeholder: dnf, apt, yum, pip, user etc.
validations:
required: true
- type: textarea
attributes:
label: Ansible Version
description: >-
Paste verbatim output from `ansible --version` between
tripple backticks.
value: |
```console (paste below)
$ ansible --version
```
validations:
required: true
- type: textarea
attributes:
label: Community.general Version
description: >-
Paste verbatim output from "ansible-galaxy collection list community.general"
between tripple backticks.
value: |
```console (paste below)
$ ansible-galaxy collection list community.general
```
validations:
required: true
- type: textarea
attributes:
label: Configuration
description: >-
If this issue has an example piece of YAML that can help to reproduce this problem, please provide it.
This can be a piece of YAML from, e.g., an automation, script, scene or configuration.
Paste verbatim output from `ansible-config dump --only-changed` between quotes
value: |
```console (paste below)
$ ansible-config dump --only-changed
```
- type: textarea
attributes:
label: OS / Environment
description: >-
Provide all relevant information below, e.g. target OS versions,
network device firmware, etc.
placeholder: RHEL 8, CentOS Stream etc.
validations:
required: false
- type: textarea
attributes:
label: Steps to Reproduce
description: |
Describe exactly how to reproduce the problem, using a minimal test-case. It would *really* help us understand your problem if you could also passed any playbooks, configs and commands you used.
**HINT:** You can paste https://gist.github.com links for larger files.
value: |
<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
```
validations:
required: true
- type: textarea
attributes:
label: Expected Results
description: >-
Describe what you expected to happen when running the steps above.
placeholder: >-
I expected X to happen because I assumed Y.
that it did not.
validations:
required: true
- type: textarea
attributes:
label: Actual Results
description: |
Describe what actually happened. If possible run with extra verbosity (`-vvvv`).
Paste verbatim command output between quotes.
value: |
```console (paste below)
```
- type: checkboxes
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.
options:
- label: I agree to follow the Ansible Code of Conduct
required: true
...

View File

@@ -6,26 +6,26 @@
# Ref: https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser
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
about: |
Please learn how to report security vulnerabilities here.
- 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
about: |
Please learn how to report security vulnerabilities here.
For all security related bugs, email security@ansible.com
instead of using this issue tracker and you will receive
a prompt response.
For all security related bugs, email security@ansible.com
instead of using this issue tracker and you will receive
a prompt response.
For more information, see
https://docs.ansible.com/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
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
about: Please ask and answer usage questions here
- name: Working groups
url: https://github.com/ansible/community/wiki
about: Interested in improving a specific area? Become a part of a working group!
- name: For Enterprise
url: https://www.ansible.com/products/engine?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
about: Red Hat offers support for the Ansible Automation Platform
For more information, see
https://docs.ansible.com/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
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
about: Please ask and answer usage questions here
- name: Working groups
url: https://github.com/ansible/community/wiki
about: Interested in improving a specific area? Become a part of a working group!
- name: For Enterprise
url: https://www.ansible.com/products/engine?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
about: Red Hat offers support for the Ansible Automation Platform

View File

@@ -8,122 +8,122 @@ description: Ask us about docs
# NOTE: issue body is enabled to allow screenshots
body:
- type: markdown
attributes:
value: |
Verify first that your issue is not [already reported on GitHub][issue search].
Also test if the latest release and devel branch are affected too.
*Complete **all** sections as described, this form is processed automatically.*
- type: markdown
attributes:
value: |
Verify first that your issue is not [already reported on GitHub][issue search].
Also test if the latest release and devel branch are affected too.
*Complete **all** sections as described, this form is processed automatically.*
[issue search]: https://github.com/ansible-collections/community.general/search?q=is%3Aissue&type=issues
[issue search]: https://github.com/ansible-collections/community.general/search?q=is%3Aissue&type=issues
- type: textarea
attributes:
label: Summary
description: |
Explain the problem briefly below, add suggestions to wording or structure.
- type: textarea
attributes:
label: Summary
description: |
Explain the problem briefly below, add suggestions to wording or structure.
**HINT:** Did you know the documentation has an `Edit on GitHub` link on every page?
placeholder: >-
I was reading the Collection documentation of version X and I'm having
problems understanding Y. It would be very helpful if that got
rephrased as Z.
validations:
**HINT:** Did you know the documentation has an `Edit on GitHub` link on every page?
placeholder: >-
I was reading the Collection documentation of version X and I'm having
problems understanding Y. It would be very helpful if that got
rephrased as Z.
validations:
required: true
- type: dropdown
attributes:
label: Issue Type
# FIXME: Once GitHub allows defining the default choice, update this
options:
- Documentation Report
validations:
required: true
- type: input
attributes:
label: Component Name
description: >-
Write the short name of the rst file, module, plugin, task or
feature below, *use your best guess if unsure*.
placeholder: mysql_user
validations:
required: true
- type: textarea
attributes:
label: Ansible Version
description: >-
Paste verbatim output from `ansible --version` between
tripple backticks.
value: |
```console (paste below)
$ ansible --version
```
validations:
required: false
- type: textarea
attributes:
label: Community.general Version
description: >-
Paste verbatim output from "ansible-galaxy collection list community.general"
between tripple backticks.
value: |
```console (paste below)
$ ansible-galaxy collection list community.general
```
validations:
required: true
- type: textarea
attributes:
label: Configuration
description: >-
Paste verbatim output from `ansible-config dump --only-changed` between quotes.
value: |
```console (paste below)
$ ansible-config dump --only-changed
```
validations:
required: false
- type: textarea
attributes:
label: OS / Environment
description: >-
Provide all relevant information below, e.g. OS version,
browser, etc.
placeholder: Fedora 33, Firefox etc.
validations:
required: false
- type: textarea
attributes:
label: Additional Information
description: |
Describe how this improves the documentation, e.g. before/after situation or screenshots.
**Tip:** It's not possible to upload the screenshot via this field directly but you can use the last textarea in this form to attach them.
**HINT:** You can paste https://gist.github.com links for larger files.
placeholder: >-
When the improvement is applied, it makes it more straightforward
to understand X.
validations:
required: false
- type: checkboxes
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.
options:
- label: I agree to follow the Ansible Code of Conduct
required: true
- type: dropdown
attributes:
label: Issue Type
# FIXME: Once GitHub allows defining the default choice, update this
options:
- Documentation Report
validations:
required: true
- type: input
attributes:
label: Component Name
description: >-
Write the short name of the file, module, plugin, task or feature below,
*use your best guess if unsure*. Do not include `community.general.`!
placeholder: mysql_user
validations:
required: true
- type: textarea
attributes:
label: Ansible Version
description: >-
Paste verbatim output from `ansible --version` between
tripple backticks.
value: |
```console (paste below)
$ ansible --version
```
validations:
required: false
- type: textarea
attributes:
label: Community.general Version
description: >-
Paste verbatim output from "ansible-galaxy collection list community.general"
between tripple backticks.
value: |
```console (paste below)
$ ansible-galaxy collection list community.general
```
validations:
required: true
- type: textarea
attributes:
label: Configuration
description: >-
Paste verbatim output from `ansible-config dump --only-changed` between quotes.
value: |
```console (paste below)
$ ansible-config dump --only-changed
```
validations:
required: false
- type: textarea
attributes:
label: OS / Environment
description: >-
Provide all relevant information below, e.g. OS version,
browser, etc.
placeholder: Fedora 33, Firefox etc.
validations:
required: false
- type: textarea
attributes:
label: Additional Information
description: |
Describe how this improves the documentation, e.g. before/after situation or screenshots.
**Tip:** It's not possible to upload the screenshot via this field directly but you can use the last textarea in this form to attach them.
**HINT:** You can paste https://gist.github.com links for larger files.
placeholder: >-
When the improvement is applied, it makes it more straightforward
to understand X.
validations:
required: false
- type: checkboxes
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.
options:
- label: I agree to follow the Ansible Code of Conduct
required: true
...

View File

@@ -7,67 +7,67 @@ name: Feature request
description: Suggest an idea for this project
body:
- type: markdown
attributes:
value: |
Verify first that your issue is not [already reported on GitHub][issue search].
Also test if the latest release and devel branch are affected too.
*Complete **all** sections as described, this form is processed automatically.*
- type: markdown
attributes:
value: |
Verify first that your issue is not [already reported on GitHub][issue search].
Also test if the latest release and devel branch are affected too.
*Complete **all** sections as described, this form is processed automatically.*
[issue search]: https://github.com/ansible-collections/community.general/search?q=is%3Aissue&type=issues
[issue search]: https://github.com/ansible-collections/community.general/search?q=is%3Aissue&type=issues
- type: textarea
attributes:
label: Summary
description: Describe the new feature/improvement briefly below.
placeholder: >-
I am trying to do X with the collection from the main branch on GitHub and
I think that implementing a feature Y would be very helpful for me and
every other user of community.general because of Z.
validations:
- type: textarea
attributes:
label: Summary
description: Describe the new feature/improvement briefly below.
placeholder: >-
I am trying to do X with the collection from the main branch on GitHub and
I think that implementing a feature Y would be very helpful for me and
every other user of community.general because of Z.
validations:
required: true
- type: dropdown
attributes:
label: Issue Type
# FIXME: Once GitHub allows defining the default choice, update this
options:
- Feature Idea
validations:
required: true
- type: input
attributes:
label: Component Name
description: >-
Write the short name of the module, plugin, task or feature below,
*use your best guess if unsure*.
placeholder: dnf, apt, yum, pip, user etc.
validations:
required: true
- type: textarea
attributes:
label: Additional Information
description: |
Describe how the feature would be used, why it is needed and what it would solve.
**HINT:** You can paste https://gist.github.com links for larger files.
value: |
<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
```
validations:
required: false
- type: checkboxes
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.
options:
- label: I agree to follow the Ansible Code of Conduct
required: true
- type: dropdown
attributes:
label: Issue Type
# FIXME: Once GitHub allows defining the default choice, update this
options:
- Feature Idea
validations:
required: true
- type: input
attributes:
label: Component Name
description: >-
Write the short name of the module or plugin, or which other part(s) of the collection this feature affects.
*use your best guess if unsure*. Do not include `community.general.`!
placeholder: dnf, apt, yum, pip, user etc.
validations:
required: true
- type: textarea
attributes:
label: Additional Information
description: |
Describe how the feature would be used, why it is needed and what it would solve.
**HINT:** You can paste https://gist.github.com links for larger files.
value: |
<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
```
validations:
required: false
- type: checkboxes
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.
options:
- label: I agree to follow the Ansible Code of Conduct
required: true
...

View File

@@ -9,7 +9,3 @@ updates:
directory: "/"
schedule:
interval: "weekly"
groups:
ci:
patterns:
- "*"

View File

@@ -1,32 +0,0 @@
##### SUMMARY
<!--- Describe the change below, including rationale and design decisions -->
<!--- 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
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.
-->
##### ISSUE TYPE
<!--- Pick one or more below and delete the rest.
'Test Pull Request' is for PRs that add/extend tests without code changes. -->
- Bugfix Pull Request
- Docs Pull Request
- Feature Pull Request
- New Module/Plugin Pull Request
- Refactoring Pull Request
- Test Pull Request
##### COMPONENT NAME
<!--- Write the SHORT NAME of the module, plugin, task or feature below. -->
##### ADDITIONAL INFORMATION
<!--- Include additional information to help people understand the change here -->
<!--- A step-by-step reproduction of the problem is helpful if there is no related issue -->
<!--- Paste verbatim command output below, e.g. before and after your change -->
```paste below
```

View File

@@ -1,181 +0,0 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# For the comprehensive list of the inputs supported by the ansible-community/ansible-test-gh-action GitHub Action, see
# https://github.com/marketplace/actions/ansible-test
name: EOL CI
"on":
# Run EOL CI against all pushes (direct commits, also merged PRs), Pull Requests
push:
branches:
- main
- stable-*
pull_request:
# Run EOL CI once per day (at 08:00 UTC)
schedule:
- cron: '0 8 * * *'
concurrency:
# Make sure there is at most one active run per PR, but do not cancel any non-PR runs
group: ${{ github.workflow }}-${{ (github.head_ref && github.event.number) || github.run_id }}
cancel-in-progress: true
jobs:
sanity:
name: EOL Sanity (Ⓐ${{ matrix.ansible }})
strategy:
matrix:
ansible:
- '2.16'
runs-on: ubuntu-latest
steps:
- name: Perform sanity testing
uses: felixfontein/ansible-test-gh-action@main
with:
ansible-core-version: stable-${{ matrix.ansible }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
coverage: ${{ github.event_name == 'schedule' && 'always' || 'never' }}
pull-request-change-detection: 'true'
testing-type: sanity
pre-test-cmd: >-
git clone --depth=1 --single-branch https://github.com/ansible-collections/community.internal_test_tools.git ../../community/internal_test_tools
units:
runs-on: ubuntu-latest
name: EOL Units (Ⓐ${{ matrix.ansible }}+py${{ matrix.python }})
strategy:
# As soon as the first unit test fails, cancel the others to free up the CI queue
fail-fast: true
matrix:
ansible:
- ''
python:
- ''
exclude:
- ansible: ''
include:
- ansible: '2.16'
python: '2.7'
- ansible: '2.16'
python: '3.6'
- ansible: '2.16'
python: '3.11'
steps:
- name: >-
Perform unit testing against
Ansible version ${{ matrix.ansible }}
uses: felixfontein/ansible-test-gh-action@main
with:
ansible-core-version: stable-${{ matrix.ansible }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
coverage: ${{ github.event_name == 'schedule' && 'always' || 'never' }}
pre-test-cmd: >-
mkdir -p ../../ansible
;
git clone --depth=1 --single-branch https://github.com/ansible-collections/community.internal_test_tools.git ../../community/internal_test_tools
pull-request-change-detection: 'true'
target-python-version: ${{ matrix.python }}
testing-type: units
integration:
runs-on: ubuntu-latest
name: EOL I (Ⓐ${{ matrix.ansible }}+${{ matrix.docker }}+py${{ matrix.python }}:${{ matrix.target }})
strategy:
fail-fast: false
matrix:
ansible:
- ''
docker:
- ''
python:
- ''
target:
- ''
exclude:
- ansible: ''
include:
# 2.16
# CentOS 7 does not work in GHA, that's why it's not listed here.
- ansible: '2.16'
docker: fedora38
python: ''
target: azp/posix/1/
- ansible: '2.16'
docker: fedora38
python: ''
target: azp/posix/2/
- ansible: '2.16'
docker: fedora38
python: ''
target: azp/posix/3/
- ansible: '2.16'
docker: opensuse15
python: ''
target: azp/posix/1/
- ansible: '2.16'
docker: opensuse15
python: ''
target: azp/posix/2/
- ansible: '2.16'
docker: opensuse15
python: ''
target: azp/posix/3/
- ansible: '2.16'
docker: alpine3
python: ''
target: azp/posix/1/
- ansible: '2.16'
docker: alpine3
python: ''
target: azp/posix/2/
- ansible: '2.16'
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/
steps:
- name: >-
Perform integration testing against
Ansible version ${{ matrix.ansible }}
under Python ${{ matrix.python }}
uses: felixfontein/ansible-test-gh-action@main
with:
ansible-core-version: stable-${{ matrix.ansible }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
coverage: ${{ github.event_name == 'schedule' && 'always' || 'never' }}
docker-image: ${{ matrix.docker }}
integration-continue-on-error: 'false'
integration-diff: 'false'
integration-retry-on-error: 'true'
# TODO: remove "--branch stable-2" from community.crypto install once we're only using ansible-core 2.17 or newer!
pre-test-cmd: >-
mkdir -p ../../ansible
;
git clone --depth=1 --single-branch https://github.com/ansible-collections/ansible.posix.git ../../ansible/posix
;
git clone --depth=1 --single-branch --branch stable-2 https://github.com/ansible-collections/community.crypto.git ../../community/crypto
;
git clone --depth=1 --single-branch https://github.com/ansible-collections/community.docker.git ../../community/docker
;
git clone --depth=1 --single-branch https://github.com/ansible-collections/community.internal_test_tools.git ../../community/internal_test_tools
pull-request-change-detection: 'true'
target: ${{ matrix.target }}
target-python-version: ${{ matrix.python }}
testing-type: integration

View File

@@ -1,38 +0,0 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
name: "Code scanning - action"
"on":
schedule:
- cron: '26 19 * * 1'
workflow_dispatch:
permissions:
contents: read
jobs:
CodeQL-Build:
permissions:
actions: read # for github/codeql-action/init to get workflow details
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/autobuild to send a status report
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
persist-credentials: false
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: python
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3

View File

@@ -1,28 +0,0 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
name: nox
'on':
push:
branches:
- main
- stable-*
pull_request:
# Run CI once per day (at 08:00 UTC)
schedule:
- cron: '0 8 * * *'
workflow_dispatch:
jobs:
nox:
runs-on: ubuntu-latest
name: "Run extra sanity tests"
steps:
- name: Check out collection
uses: actions/checkout@v5
with:
persist-credentials: false
- name: Run nox
uses: ansible-community/antsibull-nox@main

19
.gitignore vendored
View File

@@ -383,16 +383,6 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
### Python Patch ###
# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
poetry.toml
# ruff
.ruff_cache/
# LSP config files
pyrightconfig.json
### Vim ###
# Swap
[._]*.s[a-v][a-z]
@@ -492,10 +482,6 @@ tags
# https://plugins.jetbrains.com/plugin/12206-codestream
.idea/codestream.xml
# Azure Toolkit for IntelliJ plugin
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
.idea/**/azureSettings.xml
### Windows ###
# Windows thumbnail cache files
Thumbs.db
@@ -526,8 +512,3 @@ $RECYCLE.BIN/
# Integration tests cloud configs
tests/integration/cloud-config-*.ini
# VSCode specific extensions
.vscode/settings.json
.ansible

5
.reuse/dep5 Normal file
View File

@@ -0,0 +1,5 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Files: changelogs/fragments/*
Copyright: Ansible Project
License: GPL-3.0-or-later

View File

@@ -1,52 +0,0 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
extends: default
ignore: |
/changelogs/
rules:
line-length:
max: 1000
level: error
document-start: disable
document-end: disable
truthy:
level: error
allowed-values:
- 'true'
- 'false'
indentation:
spaces: 2
indent-sequences: true
key-duplicates: enable
trailing-spaces: enable
new-line-at-end-of-file: disable
hyphens:
max-spaces-after: 1
empty-lines:
max: 2
max-start: 0
max-end: 0
commas:
max-spaces-before: 0
min-spaces-after: 1
max-spaces-after: 1
colons:
max-spaces-before: 0
max-spaces-after: 1
brackets:
min-spaces-inside: 0
max-spaces-inside: 0
braces:
min-spaces-inside: 0
max-spaces-inside: 1
octal-values:
forbid-implicit-octal: true
forbid-explicit-octal: true
comments:
min-spaces-from-content: 1
comments-indentation: false

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -31,9 +31,7 @@ Also, consider taking up a valuable, reviewed, but abandoned pull request which
* 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).
* 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 :) )
* Make sure your PR includes a [changelog fragment](https://docs.ansible.com/ansible/devel/community/development_process.html#creating-changelog-fragments). (You must not include a fragment for new modules or new plugins, except for test and filter 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 :) )
* 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).
@@ -44,49 +42,7 @@ If you want to test a PR locally, refer to [our testing guide](https://github.co
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/).
(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
The following commands show how to run ansible-test sanity tests:
```.bash
# Run basic sanity tests for all files in the collection:
nox -Re ansible-test-sanity-devel
# Run basic sanity tests for the given files and directories:
nox -Re ansible-test-sanity-devel -- plugins/modules/system/pids.py tests/integration/targets/pids/
# Run all other sanity tests for all files in the collection:
nox -R
```
If you replace `-Re` with `-e`, respectively. If you leave `-R` away, then the virtual environments will be re-created. The `-R` re-uses them (if they already exist).
### Unit tests
The following commands show how to run unit tests:
```.bash
# Run all unit tests:
nox -Re ansible-test-units-devel
# Run all unit tests for one Python version (a lot faster):
nox -Re ansible-test-units-devel -- --python 3.13
# Run a specific unit test (for the nmcli module) for one Python version:
nox -Re ansible-test-units-devel -- --python 3.13 tests/unit/plugins/modules/net_tools/test_nmcli.py
```
If you replace `-Re` with `-e`, then the virtual environments will be re-created. The `-R` re-uses them (if they already exist).
## Run basic sanity, unit or integration tests locally (with ansible-test)
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.
## Run sanity, unit or integration tests locally
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:
@@ -98,27 +54,16 @@ cd ~/dev/ansible_collections/community/general
Then you can run `ansible-test` (which is a part of [ansible-core](https://pypi.org/project/ansible-core/)) inside the checkout. The following example commands expect that you have installed Docker or Podman. Note that Podman has only been supported by more recent ansible-core releases. If you are using Docker, the following will work with Ansible 2.9+.
### Basic sanity tests
The following commands show how to run basic sanity tests:
The following commands show how to run sanity tests:
```.bash
# Run basic sanity tests for all files in the collection:
# Run sanity tests for all files in the collection:
ansible-test sanity --docker -v
# Run basic sanity tests for the given files and directories:
# Run sanity tests for the given files and directories:
ansible-test sanity --docker -v plugins/modules/system/pids.py tests/integration/targets/pids/
```
### Unit tests
Note that for running unit tests, you need to install required collections in the same folder structure that `community.general` is checked out in.
Right now, you need to install [`community.internal_test_tools`](https://github.com/ansible-collections/community.internal_test_tools).
If you want to use the latest version from GitHub, you can run:
```
git clone https://github.com/ansible-collections/community.internal_test_tools.git ~/dev/ansible_collections/community/internal_test_tools
```
The following commands show how to run unit tests:
```.bash
@@ -132,42 +77,13 @@ ansible-test units --docker -v --python 3.8
ansible-test units --docker -v --python 3.8 tests/unit/plugins/modules/net_tools/test_nmcli.py
```
### Integration tests
Note that for running integration tests, you need to install required collections in the same folder structure that `community.general` is checked out in.
Right now, depending on the test, you need to install [`ansible.posix`](https://github.com/ansible-collections/ansible.posix), [`community.crypto`](https://github.com/ansible-collections/community.crypto), and [`community.docker`](https://github.com/ansible-collections/community.docker):
If you want to use the latest versions from GitHub, you can run:
```
mkdir -p ~/dev/ansible_collections/ansible
git clone https://github.com/ansible-collections/ansible.posix.git ~/dev/ansible_collections/ansible/posix
git clone https://github.com/ansible-collections/community.crypto.git ~/dev/ansible_collections/community/crypto
git clone https://github.com/ansible-collections/community.docker.git ~/dev/ansible_collections/community/docker
```
The following commands show how to run integration tests:
#### In Docker
Integration tests on Docker have the following parameters:
- `image_name` (required): The name of the Docker image. To get the list of supported Docker images, run
`ansible-test integration --help` and look for _target docker images_.
- `test_name` (optional): The name of the integration test.
For modules, this equals the short name of the module; for example, `pacman` in case of `community.general.pacman`.
For plugins, the plugin type is added before the plugin's short name, for example `callback_yaml` for the `community.general.yaml` callback.
```.bash
# Test all plugins/modules on fedora40
ansible-test integration -v --docker fedora40
# Run integration tests for the interfaces_files module in a Docker container using the
# fedora35 operating system image (the supported images depend on your ansible-core version):
ansible-test integration --docker fedora35 -v interfaces_file
# Template
ansible-test integration -v --docker image_name test_name
# Example community.general.ini_file module on fedora40 Docker image:
ansible-test integration -v --docker fedora40 ini_file
```
#### Without isolation
```.bash
# Run integration tests for the flattened lookup **without any isolation**:
ansible-test integration -v lookup_flattened
```

View File

@@ -6,10 +6,8 @@ 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/)
[![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)
[![Build Status](https://dev.azure.com/ansible/community.general/_apis/build/status/CI?branchName=stable-6)](https://dev.azure.com/ansible/community.general/_build?definitionId=31)
[![EOL CI](https://github.com/ansible-collections/community.general/workflows/EOL%20CI/badge.svg?event=push)](https://github.com/ansible-collections/community.general/actions)
[![Codecov](https://img.shields.io/codecov/c/github/ansible-collections/community.general)](https://codecov.io/gh/ansible-collections/community.general)
[![REUSE status](https://api.reuse.software/badge/github.com/ansible-collections/community.general)](https://api.reuse.software/info/github.com/ansible-collections/community.general)
@@ -25,21 +23,11 @@ We follow [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/comm
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.
## Communication
* Join the Ansible forum:
* [Get Help](https://forum.ansible.com/c/help/6): get help or help others. This is for questions about modules or plugins in the collection. Please add appropriate tags if you start new discussions.
* [Tag `community-general`](https://forum.ansible.com/tag/community-general): discuss the *collection itself*, instead of specific modules or plugins.
* [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.
For more information about communication, see the [Ansible communication guide](https://docs.ansible.com/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.11, ansible-core 2.12, ansible-core 2.13, ansible-core 2.14, ansible-core 2.15, and ansible-core 2.16 releases. Ansible-core versions before 2.11.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
Parts of this collection will not work with ansible-core 2.11 on Python 3.12+.
## External requirements
@@ -86,13 +74,13 @@ We are actively accepting new contributors.
All types of contributions are very welcome.
You don't know how to start? Refer to our [contribution guide](https://github.com/ansible-collections/community.general/blob/main/CONTRIBUTING.md)!
You don't know how to start? Refer to our [contribution guide](https://github.com/ansible-collections/community.general/blob/stable-6/CONTRIBUTING.md)!
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.
The current maintainers are listed in the [commit-rights.md](https://github.com/ansible-collections/community.general/blob/stable-6/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).
Also for some notes specific to this collection see [our CONTRIBUTING documentation](https://github.com/ansible-collections/community.general/blob/main/CONTRIBUTING.md).
Also for some notes specific to this collection see [our CONTRIBUTING documentation](https://github.com/ansible-collections/community.general/blob/stable-6/CONTRIBUTING.md).
### Running tests
@@ -102,7 +90,7 @@ See [here](https://docs.ansible.com/ansible/devel/dev_guide/developing_collectio
To learn how to maintain / become a maintainer of this collection, refer to:
* [Committer guidelines](https://github.com/ansible-collections/community.general/blob/main/commit-rights.md).
* [Committer guidelines](https://github.com/ansible-collections/community.general/blob/stable-6/commit-rights.md).
* [Maintainer guidelines](https://github.com/ansible/community-docs/blob/main/maintaining.rst).
It is necessary for maintainers of this collection to be subscribed to:
@@ -112,13 +100,25 @@ It is necessary for maintainers of this collection to be subscribed to:
They also should be subscribed to Ansible's [The Bullhorn newsletter](https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn).
## Communication
We announce important development changes and releases through Ansible's [The Bullhorn newsletter](https://eepurl.com/gZmiEP). If you are a collection developer, be sure you are subscribed.
Join us in the `#ansible` (general use questions and support), `#ansible-community` (community and collection development questions), and other [IRC channels](https://docs.ansible.com/ansible/devel/community/communication.html#irc-channels) on [Libera.chat](https://libera.chat).
We take part in the global quarterly [Ansible Contributor Summit](https://github.com/ansible/community/wiki/Contributor-Summit) virtually or in-person. Track [The Bullhorn newsletter](https://eepurl.com/gZmiEP) and join us.
For more information about communities, meetings and agendas see [Community Wiki](https://github.com/ansible/community/wiki/Community).
For more information about communication, refer to Ansible's the [Communication guide](https://docs.ansible.com/ansible/devel/community/communication.html).
## Publishing New Version
See the [Releasing guidelines](https://github.com/ansible/community-docs/blob/main/releasing_collections.rst) to learn how to release this collection.
## Release notes
See the [changelog](https://github.com/ansible-collections/community.general/blob/stable-11/CHANGELOG.md).
See the [changelog](https://github.com/ansible-collections/community.general/blob/stable-6/CHANGELOG.md).
## Roadmap
@@ -137,8 +137,8 @@ See [this issue](https://github.com/ansible-collections/community.general/issues
This collection is primarily licensed and distributed as a whole under the GNU General Public License v3.0 or later.
See [LICENSES/GPL-3.0-or-later.txt](https://github.com/ansible-collections/community.general/blob/stable-11/COPYING) for the full text.
See [LICENSES/GPL-3.0-or-later.txt](https://github.com/ansible-collections/community.general/blob/stable-6/COPYING) for the full text.
Parts of the collection are licensed under the [BSD 2-Clause license](https://github.com/ansible-collections/community.general/blob/stable-11/LICENSES/BSD-2-Clause.txt), the [MIT license](https://github.com/ansible-collections/community.general/blob/stable-11/LICENSES/MIT.txt), and the [PSF 2.0 license](https://github.com/ansible-collections/community.general/blob/stable-11/LICENSES/PSF-2.0.txt).
Parts of the collection are licensed under the [BSD 2-Clause license](https://github.com/ansible-collections/community.general/blob/stable-6/LICENSES/BSD-2-Clause.txt), the [MIT license](https://github.com/ansible-collections/community.general/blob/stable-6/LICENSES/MIT.txt), and the [PSF 2.0 license](https://github.com/ansible-collections/community.general/blob/stable-6/LICENSES/PSF-2.0.txt).
All files have a machine readable `SDPX-License-Identifier:` comment denoting its respective license(s) or an equivalent entry in an accompanying `.license` file. Only changelog fragments (which will not be part of a release) are covered by a blanket statement in `REUSE.toml`. This conforms to the [REUSE specification](https://reuse.software/spec/).
All files have a machine readable `SDPX-License-Identifier:` comment denoting its respective license(s) or an equivalent entry in an accompanying `.license` file. Only changelog fragments (which will not be part of a release) are covered by a blanket statement in `.reuse/dep5`. This conforms to the [REUSE specification](https://reuse.software/spec/).

View File

@@ -1,11 +0,0 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
version = 1
[[annotations]]
path = "changelogs/fragments/**"
precedence = "aggregate"
SPDX-FileCopyrightText = "Ansible Project"
SPDX-License-Identifier = "GPL-3.0-or-later"

View File

@@ -1,94 +0,0 @@
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2025 Felix Fontein <felix@fontein.de>
[collection_sources]
"ansible.posix" = "git+https://github.com/ansible-collections/ansible.posix.git,main"
"community.crypto" = "git+https://github.com/ansible-collections/community.crypto.git,main"
"community.docker" = "git+https://github.com/ansible-collections/community.docker.git,main"
"community.internal_test_tools" = "git+https://github.com/ansible-collections/community.internal_test_tools.git,main"
[collection_sources_per_ansible.'2.16']
# community.crypto's main branch needs ansible-core >= 2.17
"community.crypto" = "git+https://github.com/ansible-collections/community.crypto.git,stable-2"
[sessions]
[sessions.lint]
run_isort = false
run_black = false
run_flake8 = false
run_pylint = false
run_yamllint = true
yamllint_config = ".yamllint"
# yamllint_config_plugins = ".yamllint-docs"
# yamllint_config_plugins_examples = ".yamllint-examples"
run_mypy = false
[sessions.docs_check]
validate_collection_refs="all"
codeblocks_restrict_types = [
"ansible-output",
"console",
"ini",
"json",
"python",
"shell",
"yaml",
"yaml+jinja",
"text",
]
codeblocks_restrict_type_exact_case = true
codeblocks_allow_without_type = false
codeblocks_allow_literal_blocks = false
[sessions.license_check]
[sessions.extra_checks]
run_no_unwanted_files = true
no_unwanted_files_module_extensions = [".py"]
no_unwanted_files_yaml_extensions = [".yml"]
run_action_groups = true
run_no_trailing_whitespace = true
no_trailing_whitespace_skip_paths = [
"tests/integration/targets/iso_extract/files/test.iso",
"tests/integration/targets/java_cert/files/testpkcs.p12",
"tests/integration/targets/one_host/files/testhost/tmp/opennebula-fixtures.json.gz",
"tests/integration/targets/one_template/files/testhost/tmp/opennebula-fixtures.json.gz",
"tests/integration/targets/setup_flatpak_remote/files/repo.tar.xz",
]
no_trailing_whitespace_skip_directories = [
"tests/unit/plugins/modules/interfaces_file/interfaces_file_fixtures/golden_output/",
"tests/unit/plugins/modules/interfaces_file/interfaces_file_fixtures/input/",
]
[[sessions.extra_checks.action_groups_config]]
name = "consul"
pattern = "^consul_.*$"
exclusions = [
"consul_acl_bootstrap",
"consul_kv",
]
doc_fragment = "community.general.consul.actiongroup_consul"
[[sessions.extra_checks.action_groups_config]]
name = "keycloak"
pattern = "^keycloak_.*$"
exclusions = [
"keycloak_realm_info",
]
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
[sessions.ansible_test_sanity]
include_devel = true
[sessions.ansible_test_units]
include_devel = true

File diff suppressed because it is too large Load Diff

View File

@@ -7,9 +7,9 @@ changelog_filename_template: ../CHANGELOG.rst
changelog_filename_version_depth: 0
changes_file: changelog.yaml
changes_format: combined
ignore_other_fragment_extensions: true
keep_fragments: false
mention_ancestor: true
flatmap: true
new_plugins_after_name: removed_features
notesdir: fragments
output_formats:
@@ -18,26 +18,20 @@ output_formats:
prelude_section_name: release_summary
prelude_section_title: Release Summary
sections:
- - major_changes
- Major Changes
- - minor_changes
- Minor Changes
- - breaking_changes
- Breaking Changes / Porting Guide
- - deprecated_features
- Deprecated Features
- - removed_features
- Removed Features (previously deprecated)
- - security_fixes
- Security Fixes
- - bugfixes
- Bugfixes
- - known_issues
- Known Issues
- - major_changes
- Major Changes
- - minor_changes
- Minor Changes
- - breaking_changes
- Breaking Changes / Porting Guide
- - deprecated_features
- Deprecated Features
- - removed_features
- Removed Features (previously deprecated)
- - security_fixes
- Security Fixes
- - bugfixes
- Bugfixes
- - known_issues
- Known Issues
title: Community General
trivial_section_name: trivial
use_fqcn: true
add_plugin_period: true
changelog_nice_yaml: true
changelog_sort: version
vcs: auto

View File

@@ -8,17 +8,3 @@ sections:
toctree:
- filter_guide
- test_guide
- title: Technology Guides
toctree:
- guide_alicloud
- guide_iocage
- guide_online
- guide_packet
- guide_scaleway
- title: Developer Guides
toctree:
- guide_deps
- guide_vardict
- guide_cmdrunner
- guide_modulehelper
- guide_uthelper

View File

@@ -3,4 +3,16 @@
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
openjdk_pkg: openjdk17-jre-headless
list1:
- name: foo
extra: true
- name: bar
extra: false
- name: meh
extra: true
list2:
- name: foo
path: /foo
- name: baz
path: /baz

View File

@@ -0,0 +1,24 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
list1:
- name: myname01
param01:
x: default_value
y: default_value
list:
- default_value
- name: myname02
param01: [1, 1, 2, 3]
list2:
- name: myname01
param01:
y: patch_value
z: patch_value
list:
- patch_value
- name: myname02
param01: [3, 4, 4, {key: value}]

View File

@@ -0,0 +1,14 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: 1. Merge two lists by common attribute 'name'
include_vars:
dir: example-001_vars
- debug:
var: list3
when: debug|d(false)|bool
- template:
src: list3.out.j2
dest: example-001.out

View File

@@ -0,0 +1 @@
../default-common.yml

View File

@@ -3,4 +3,5 @@
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
openjdk_pkg: jre17-openjdk-headless
list3: "{{ list1|
community.general.lists_mergeby(list2, 'name') }}"

View File

@@ -0,0 +1,14 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: 2. Merge two lists by common attribute 'name'
include_vars:
dir: example-002_vars
- debug:
var: list3
when: debug|d(false)|bool
- template:
src: list3.out.j2
dest: example-002.out

View File

@@ -0,0 +1 @@
../default-common.yml

View File

@@ -3,6 +3,5 @@
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
dependencies:
- setup_pkg_mgr
- setup_remote_tmp_dir
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name') }}"

View File

@@ -0,0 +1,14 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: 3. Merge recursive by 'name', replace lists (default)
include_vars:
dir: example-003_vars
- debug:
var: list3
when: debug|d(false)|bool
- template:
src: list3.out.j2
dest: example-003.out

View File

@@ -0,0 +1 @@
../default-recursive-true.yml

View File

@@ -3,5 +3,6 @@
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
changelog:
write_changelog: true
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true) }}"

View File

@@ -0,0 +1,14 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: 4. Merge recursive by 'name', keep lists
include_vars:
dir: example-004_vars
- debug:
var: list3
when: debug|d(false)|bool
- template:
src: list3.out.j2
dest: example-004.out

View File

@@ -0,0 +1 @@
../default-recursive-true.yml

View File

@@ -0,0 +1,9 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='keep') }}"

View File

@@ -0,0 +1,14 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: 5. Merge recursive by 'name', append lists
include_vars:
dir: example-005_vars
- debug:
var: list3
when: debug|d(false)|bool
- template:
src: list3.out.j2
dest: example-005.out

View File

@@ -0,0 +1 @@
../default-recursive-true.yml

View File

@@ -0,0 +1,9 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='append') }}"

View File

@@ -0,0 +1,14 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: 6. Merge recursive by 'name', prepend lists
include_vars:
dir: example-006_vars
- debug:
var: list3
when: debug|d(false)|bool
- template:
src: list3.out.j2
dest: example-006.out

View File

@@ -0,0 +1 @@
../default-recursive-true.yml

View File

@@ -0,0 +1,9 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='prepend') }}"

View File

@@ -0,0 +1,14 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: 7. Merge recursive by 'name', append lists 'remove present'
include_vars:
dir: example-007_vars
- debug:
var: list3
when: debug|d(false)|bool
- template:
src: list3.out.j2
dest: example-007.out

View File

@@ -0,0 +1 @@
../default-recursive-true.yml

View File

@@ -0,0 +1,9 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='append_rp') }}"

View File

@@ -0,0 +1,14 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: 8. Merge recursive by 'name', prepend lists 'remove present'
include_vars:
dir: example-008_vars
- debug:
var: list3
when: debug|d(false)|bool
- template:
src: list3.out.j2
dest: example-008.out

View File

@@ -0,0 +1 @@
../default-recursive-true.yml

View File

@@ -0,0 +1,9 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='prepend_rp') }}"

View File

@@ -0,0 +1,54 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
examples:
- label: 'In the example below the lists are merged by the attribute ``name``:'
file: example-001_vars/list3.yml
lang: 'yaml+jinja'
- label: 'This produces:'
file: example-001.out
lang: 'yaml'
- label: 'It is possible to use a list of lists as an input of the filter:'
file: example-002_vars/list3.yml
lang: 'yaml+jinja'
- label: 'This produces the same result as in the previous example:'
file: example-002.out
lang: 'yaml'
- label: 'Example ``list_merge=replace`` (default):'
file: example-003_vars/list3.yml
lang: 'yaml+jinja'
- label: 'This produces:'
file: example-003.out
lang: 'yaml'
- label: 'Example ``list_merge=keep``:'
file: example-004_vars/list3.yml
lang: 'yaml+jinja'
- label: 'This produces:'
file: example-004.out
lang: 'yaml'
- label: 'Example ``list_merge=append``:'
file: example-005_vars/list3.yml
lang: 'yaml+jinja'
- label: 'This produces:'
file: example-005.out
lang: 'yaml'
- label: 'Example ``list_merge=prepend``:'
file: example-006_vars/list3.yml
lang: 'yaml+jinja'
- label: 'This produces:'
file: example-006.out
lang: 'yaml'
- label: 'Example ``list_merge=append_rp``:'
file: example-007_vars/list3.yml
lang: 'yaml+jinja'
- label: 'This produces:'
file: example-007.out
lang: 'yaml'
- label: 'Example ``list_merge=prepend_rp``:'
file: example-008_vars/list3.yml
lang: 'yaml+jinja'
- label: 'This produces:'
file: example-008.out
lang: 'yaml'

View File

@@ -3,13 +3,11 @@
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_iocage:
{% for i in examples %}
{{ i.label }}
************
Iocage Guide
************
.. code-block:: {{ i.lang }}
.. toctree::
:maxdepth: 1
{{ lookup('file', i.file)|indent(2) }}
guide_iocage_inventory
{% endfor %}

View File

@@ -0,0 +1,62 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
Merging lists of dictionaries
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you have two or more lists of dictionaries and want to combine them into a list of merged dictionaries, where the dictionaries are merged by an attribute, you can use the ``lists_mergeby`` filter.
.. note:: The output of the examples in this section use the YAML callback plugin. Quoting: "Ansible output that can be quite a bit easier to read than the default JSON formatting." See :ref:`the documentation for the community.general.yaml callback plugin <ansible_collections.community.general.yaml_callback>`.
Let us use the lists below in the following examples:
.. code-block:: yaml
{{ lookup('file', 'default-common.yml')|indent(2) }}
{% for i in examples[0:2] %}
{{ i.label }}
.. code-block:: {{ i.lang }}
{{ lookup('file', i.file)|indent(2) }}
{% endfor %}
.. versionadded:: 2.0.0
{% for i in examples[2:4] %}
{{ i.label }}
.. code-block:: {{ i.lang }}
{{ lookup('file', i.file)|indent(2) }}
{% endfor %}
The filter also accepts two optional parameters: ``recursive`` and ``list_merge``. These parameters are only supported when used with ansible-base 2.10 or ansible-core, but not with Ansible 2.9. This is available since community.general 4.4.0.
**recursive**
Is a boolean, default to ``False``. Should the ``community.general.lists_mergeby`` recursively merge nested hashes. Note: It does not depend on the value of the ``hash_behaviour`` setting in ``ansible.cfg``.
**list_merge**
Is a string, its possible values are ``replace`` (default), ``keep``, ``append``, ``prepend``, ``append_rp`` or ``prepend_rp``. It modifies the behaviour of ``community.general.lists_mergeby`` when the hashes to merge contain arrays/lists.
The examples below set ``recursive=true`` and display the differences among all six options of ``list_merge``. Functionality of the parameters is exactly the same as in the filter ``combine``. See :ref:`Combining hashes/dictionaries <combine_filter>` to learn details about these options.
Let us use the lists below in the following examples
.. code-block:: yaml
{{ lookup('file', 'default-recursive-true.yml')|indent(2) }}
{% for i in examples[4:16] %}
{{ i.label }}
.. code-block:: {{ i.lang }}
{{ lookup('file', i.file)|indent(2) }}
{% endfor %}

View File

@@ -1,3 +1,7 @@
{#
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
#}
list3:
{{ list3|to_nice_yaml(indent=0) }}

View File

@@ -0,0 +1,62 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# 1) Run all examples and create example-XXX.out
# shell> ansible-playbook playbook.yml -e examples=true
#
# 2) Optionally, for testing, create examples_all.rst
# shell> ansible-playbook playbook.yml -e examples_all=true
#
# 3) Create docs REST files
# shell> ansible-playbook playbook.yml -e merging_lists_of_dictionaries=true
#
# Notes:
# * Use YAML callback, e.g. set ANSIBLE_STDOUT_CALLBACK=community.general.yaml
# * Use sphinx-view to render and review the REST files
# shell> sphinx-view <path_to_helper>/examples_all.rst
# * Proofread and copy completed docs *.rst files into the directory rst.
# * Then delete the *.rst and *.out files from this directory. Do not
# add *.rst and *.out in this directory to the version control.
#
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# community.general/docs/docsite/helper/lists_mergeby/playbook.yml
- hosts: localhost
gather_facts: false
tasks:
- block:
- import_tasks: example-001.yml
tags: t001
- import_tasks: example-002.yml
tags: t002
- import_tasks: example-003.yml
tags: t003
- import_tasks: example-004.yml
tags: t004
- import_tasks: example-005.yml
tags: t005
- import_tasks: example-006.yml
tags: t006
- import_tasks: example-007.yml
tags: t007
- import_tasks: example-008.yml
tags: t008
when: examples|d(false)|bool
- block:
- include_vars: examples.yml
- template:
src: examples_all.rst.j2
dest: examples_all.rst
when: examples_all|d(false)|bool
- block:
- include_vars: examples.yml
- template:
src: filter_guide_abstract_informations_merging_lists_of_dictionaries.rst.j2
dest: filter_guide_abstract_informations_merging_lists_of_dictionaries.rst
when: merging_lists_of_dictionaries|d(false)|bool

View File

@@ -9,8 +9,6 @@ edit_on_github:
path_prefix: ''
extra_links:
- description: Ask for help
url: https://forum.ansible.com/c/help/6/none
- description: Submit a bug report
url: https://github.com/ansible-collections/community.general/issues/new?assignees=&labels=&template=bug_report.yml
- description: Request a feature
@@ -24,10 +22,6 @@ communication:
- topic: General usage and support questions
network: Libera
channel: '#ansible'
forums:
- topic: "Ansible Forum: General usage and support questions"
# The following URL directly points to the "Get Help" section
url: https://forum.ansible.com/c/help/6/none
- topic: "Ansible Forum: Discussions about the collection itself, not for specific modules or plugins"
# The following URL directly points to the "community-general" tag
url: https://forum.ansible.com/tag/community-general
mailing_lists:
- topic: Ansible Project List
url: https://groups.google.com/g/ansible-project

View File

@@ -1,151 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
keep_keys
"""""""""
Use the filter :ansplugin:`community.general.keep_keys#filter` if you have a list of dictionaries and want to keep certain keys only.
.. note:: The output of the examples in this section use the YAML callback plugin. Quoting: "Ansible output that can be quite a bit easier to read than the default JSON formatting." See :ansplugin:`the documentation for the community.general.yaml callback plugin <community.general.yaml#callback>`.
Let us use the below list in the following examples:
.. code-block:: yaml
input:
- k0_x0: A0
k1_x1: B0
k2_x2: [C0]
k3_x3: foo
- k0_x0: A1
k1_x1: B1
k2_x2: [C1]
k3_x3: bar
* By default, match keys that equal any of the items in the target.
.. code-block:: yaml+jinja
:emphasize-lines: 1
target: ['k0_x0', 'k1_x1']
result: "{{ input | community.general.keep_keys(target=target) }}"
gives
.. code-block:: yaml
:emphasize-lines: 1-
result:
- {k0_x0: A0, k1_x1: B0}
- {k0_x0: A1, k1_x1: B1}
.. versionadded:: 9.1.0
* The results of the below examples 1-5 are all the same:
.. code-block:: yaml
:emphasize-lines: 1-
result:
- {k0_x0: A0, k1_x1: B0}
- {k0_x0: A1, k1_x1: B1}
1. Match keys that equal any of the items in the target.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: equal
target: ['k0_x0', 'k1_x1']
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
2. Match keys that start with any of the items in the target.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: starts_with
target: ['k0', 'k1']
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
3. Match keys that end with any of the items in target.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: ends_with
target: ['x0', 'x1']
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
4. Match keys by the regex.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: regex
target: ['^.*[01]_x.*$']
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
5. Match keys by the regex.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: regex
target: ^.*[01]_x.*$
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
* The results of the below examples 6-9 are all the same:
.. code-block:: yaml
:emphasize-lines: 1-
result:
- {k0_x0: A0}
- {k0_x0: A1}
6. Match keys that equal the target.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: equal
target: k0_x0
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
7. Match keys that start with the target.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: starts_with
target: k0
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
8. Match keys that end with the target.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: ends_with
target: x0
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
9. Match keys by the regex.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: regex
target: ^.*0_x.*$
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"

View File

@@ -1,159 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
remove_keys
"""""""""""
Use the filter :ansplugin:`community.general.remove_keys#filter` if you have a list of dictionaries and want to remove certain keys.
.. note:: The output of the examples in this section use the YAML callback plugin. Quoting: "Ansible output that can be quite a bit easier to read than the default JSON formatting." See See :ansplugin:`the documentation for the community.general.yaml callback plugin <community.general.yaml#callback>`.
Let us use the below list in the following examples:
.. code-block:: yaml
input:
- k0_x0: A0
k1_x1: B0
k2_x2: [C0]
k3_x3: foo
- k0_x0: A1
k1_x1: B1
k2_x2: [C1]
k3_x3: bar
* By default, match keys that equal any of the items in the target.
.. code-block:: yaml+jinja
:emphasize-lines: 1
target: ['k0_x0', 'k1_x1']
result: "{{ input | community.general.remove_keys(target=target) }}"
gives
.. code-block:: yaml
:emphasize-lines: 1-
result:
- k2_x2: [C0]
k3_x3: foo
- k2_x2: [C1]
k3_x3: bar
.. versionadded:: 9.1.0
* The results of the below examples 1-5 are all the same:
.. code-block:: yaml
:emphasize-lines: 1-
result:
- k2_x2: [C0]
k3_x3: foo
- k2_x2: [C1]
k3_x3: bar
1. Match keys that equal any of the items in the target.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: equal
target: ['k0_x0', 'k1_x1']
result: "{{ input | community.general.remove_keys(target=target, matching_parameter=mp) }}"
2. Match keys that start with any of the items in the target.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: starts_with
target: ['k0', 'k1']
result: "{{ input | community.general.remove_keys(target=target, matching_parameter=mp) }}"
3. Match keys that end with any of the items in target.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: ends_with
target: ['x0', 'x1']
result: "{{ input | community.general.remove_keys(target=target, matching_parameter=mp) }}"
4. Match keys by the regex.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: regex
target: ['^.*[01]_x.*$']
result: "{{ input | community.general.remove_keys(target=target, matching_parameter=mp) }}"
5. Match keys by the regex.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: regex
target: ^.*[01]_x.*$
result: "{{ input | community.general.remove_keys(target=target, matching_parameter=mp) }}"
* The results of the below examples 6-9 are all the same:
.. code-block:: yaml
:emphasize-lines: 1-
result:
- k1_x1: B0
k2_x2: [C0]
k3_x3: foo
- k1_x1: B1
k2_x2: [C1]
k3_x3: bar
6. Match keys that equal the target.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: equal
target: k0_x0
result: "{{ input | community.general.remove_keys(target=target, matching_parameter=mp) }}"
7. Match keys that start with the target.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: starts_with
target: k0
result: "{{ input | community.general.remove_keys(target=target, matching_parameter=mp) }}"
8. Match keys that end with the target.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: ends_with
target: x0
result: "{{ input | community.general.remove_keys(target=target, matching_parameter=mp) }}"
9. Match keys by the regex.
.. code-block:: yaml+jinja
:emphasize-lines: 1,2
mp: regex
target: ^.*0_x.*$
result: "{{ input | community.general.remove_keys(target=target, matching_parameter=mp) }}"

View File

@@ -1,175 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
replace_keys
""""""""""""
Use the filter :ansplugin:`community.general.replace_keys#filter` if you have a list of dictionaries and want to replace certain keys.
.. note:: The output of the examples in this section use the YAML callback plugin. Quoting: "Ansible output that can be quite a bit easier to read than the default JSON formatting." See :ansplugin:`the documentation for the community.general.yaml callback plugin <community.general.yaml#callback>`.
Let us use the below list in the following examples:
.. code-block:: yaml
input:
- k0_x0: A0
k1_x1: B0
k2_x2: [C0]
k3_x3: foo
- k0_x0: A1
k1_x1: B1
k2_x2: [C1]
k3_x3: bar
* By default, match keys that equal any of the attributes before.
.. code-block:: yaml+jinja
:emphasize-lines: 1-3
target:
- {after: a0, before: k0_x0}
- {after: a1, before: k1_x1}
result: "{{ input | community.general.replace_keys(target=target) }}"
gives
.. code-block:: yaml
:emphasize-lines: 1-
result:
- a0: A0
a1: B0
k2_x2: [C0]
k3_x3: foo
- a0: A1
a1: B1
k2_x2: [C1]
k3_x3: bar
.. versionadded:: 9.1.0
* The results of the below examples 1-3 are all the same:
.. code-block:: yaml
:emphasize-lines: 1-
result:
- a0: A0
a1: B0
k2_x2: [C0]
k3_x3: foo
- a0: A1
a1: B1
k2_x2: [C1]
k3_x3: bar
1. Replace keys that starts with any of the attributes before.
.. code-block:: yaml+jinja
:emphasize-lines: 1-4
mp: starts_with
target:
- {after: a0, before: k0}
- {after: a1, before: k1}
result: "{{ input | community.general.replace_keys(target=target, matching_parameter=mp) }}"
2. Replace keys that ends with any of the attributes before.
.. code-block:: yaml+jinja
:emphasize-lines: 1-4
mp: ends_with
target:
- {after: a0, before: x0}
- {after: a1, before: x1}
result: "{{ input | community.general.replace_keys(target=target, matching_parameter=mp) }}"
3. Replace keys that match any regex of the attributes before.
.. code-block:: yaml+jinja
:emphasize-lines: 1-4
mp: regex
target:
- {after: a0, before: ^.*0_x.*$}
- {after: a1, before: ^.*1_x.*$}
result: "{{ input | community.general.replace_keys(target=target, matching_parameter=mp) }}"
* The results of the below examples 4-5 are the same:
.. code-block:: yaml
:emphasize-lines: 1-
result:
- {X: foo}
- {X: bar}
4. If more keys match the same attribute before the last one will be used.
.. code-block:: yaml+jinja
:emphasize-lines: 1-3
mp: regex
target:
- {after: X, before: ^.*_x.*$}
result: "{{ input | community.general.replace_keys(target=target, matching_parameter=mp) }}"
5. If there are items with equal attribute before the first one will be used.
.. code-block:: yaml+jinja
:emphasize-lines: 1-3
mp: regex
target:
- {after: X, before: ^.*_x.*$}
- {after: Y, before: ^.*_x.*$}
result: "{{ input | community.general.replace_keys(target=target, matching_parameter=mp) }}"
6. If there are more matches for a key the first one will be used.
.. code-block:: yaml
:emphasize-lines: 1-
input:
- {aaa1: A, bbb1: B, ccc1: C}
- {aaa2: D, bbb2: E, ccc2: F}
.. code-block:: yaml+jinja
:emphasize-lines: 1-4
mp: starts_with
target:
- {after: X, before: a}
- {after: Y, before: aa}
result: "{{ input | community.general.replace_keys(target=target, matching_parameter=mp) }}"
gives
.. code-block:: yaml
:emphasize-lines: 1-
result:
- {X: A, bbb1: B, ccc1: C}
- {X: D, bbb2: E, ccc2: F}

View File

@@ -1,18 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.filter_guide.filter_guide_abstract_informations.lists_of_dicts:
Lists of dictionaries
^^^^^^^^^^^^^^^^^^^^^
Filters to manage keys in a list of dictionaries:
.. toctree::
:maxdepth: 1
filter_guide-abstract_informations-lists_of_dictionaries-keep_keys
filter_guide-abstract_informations-lists_of_dictionaries-remove_keys
filter_guide-abstract_informations-lists_of_dictionaries-replace_keys

View File

@@ -8,7 +8,7 @@
community.general Filter Guide
==============================
The :anscollection:`community.general collection <community.general#collection>` offers several useful filter plugins.
The :ref:`community.general collection <plugins_in_community.general>` offers several useful filter plugins.
.. toctree::
:maxdepth: 2

View File

@@ -11,7 +11,5 @@ Abstract transformations
filter_guide_abstract_informations_dictionaries
filter_guide_abstract_informations_grouping
filter_guide-abstract_informations-lists_of_dictionaries
filter_guide_abstract_informations_merging_lists_of_dictionaries
filter_guide_abstract_informations_lists_helper
filter_guide_abstract_informations_counting_elements_in_sequence

View File

@@ -6,7 +6,7 @@
Counting elements in a sequence
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The :ansplugin:`community.general.counter filter plugin <community.general.counter#filter>` allows you to count (hashable) elements in a sequence. Elements are returned as dictionary keys and their counts are stored as dictionary values.
The ``community.general.counter`` filter plugin allows you to count (hashable) elements in a sequence. Elements are returned as dictionary keys and their counts are stored as dictionary values.
.. code-block:: yaml+jinja

View File

@@ -6,7 +6,7 @@
Dictionaries
^^^^^^^^^^^^
You can use the :ansplugin:`community.general.dict_kv filter <community.general.dict_kv#filter>` to create a single-entry dictionary with ``value | community.general.dict_kv(key)``:
You can use the ``dict_kv`` filter to create a single-entry dictionary with ``value | community.general.dict_kv(key)``:
.. code-block:: yaml+jinja
@@ -26,8 +26,8 @@ You can use the :ansplugin:`community.general.dict_kv filter <community.general.
type: host
database: all
myservers:
- server1
- server2
- server1
- server2
This produces:
@@ -58,7 +58,7 @@ This produces:
.. versionadded:: 2.0.0
If you need to convert a list of key-value pairs to a dictionary, you can use the ``dict`` function. Unfortunately, this function cannot be used with ``map``. For this, the :ansplugin:`community.general.dict filter <community.general.dict#filter>` can be used:
If you need to convert a list of key-value pairs to a dictionary, you can use the ``dict`` function. Unfortunately, this function cannot be used with ``map``. For this, the ``community.general.dict`` filter can be used:
.. code-block:: yaml+jinja

View File

@@ -6,7 +6,7 @@
Grouping
^^^^^^^^
If you have a list of dictionaries, the Jinja2 ``groupby`` filter allows to group the list by an attribute. This results in a list of ``(grouper, list)`` namedtuples, where ``list`` contains all dictionaries where the selected attribute equals ``grouper``. If you know that for every ``grouper``, there will be a most one entry in that list, you can use the :ansplugin:`community.general.groupby_as_dict filter <community.general.groupby_as_dict#filter>` to convert the original list into a dictionary which maps ``grouper`` to the corresponding dictionary.
If you have a list of dictionaries, the Jinja2 ``groupby`` filter allows to group the list by an attribute. This results in a list of ``(grouper, list)`` namedtuples, where ``list`` contains all dictionaries where the selected attribute equals ``grouper``. If you know that for every ``grouper``, there will be a most one entry in that list, you can use the ``community.general.groupby_as_dict`` filter to convert the original list into a dictionary which maps ``grouper`` to the corresponding dictionary.
One example is ``ansible_facts.mounts``, which is a list of dictionaries where each has one ``device`` element to indicate the device which is mounted. Therefore, ``ansible_facts.mounts | community.general.groupby_as_dict('device')`` is a dictionary mapping a device to the mount information:

View File

@@ -1,81 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
Union, intersection and difference of lists
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Starting with Ansible Core 2.16, the builtin filters :ansplugin:`ansible.builtin.union#filter`, :ansplugin:`ansible.builtin.intersect#filter`, :ansplugin:`ansible.builtin.difference#filter` and :ansplugin:`ansible.builtin.symmetric_difference#filter` began to behave differently and do no longer preserve the item order. Items in the resulting lists are returned in arbitrary order and the order can vary between subsequent runs.
The Ansible community.general collection provides the following additional list filters:
- :ansplugin:`community.general.lists_union#filter`
- :ansplugin:`community.general.lists_intersect#filter`
- :ansplugin:`community.general.lists_difference#filter`
- :ansplugin:`community.general.lists_symmetric_difference#filter`
These filters preserve the item order, eliminate duplicates and are an extended version of the builtin ones, because they can operate on more than two lists.
.. note:: Stick to the builtin filters, when item order is not important or when you do not need the n-ary operating mode. The builtin filters are faster, because they rely mostly on sets as their underlying datastructure.
Let us use the lists below in the following examples:
.. code-block:: yaml
A: [9, 5, 7, 1, 9, 4, 10, 5, 9, 7]
B: [4, 1, 2, 8, 3, 1, 7]
C: [10, 2, 1, 9, 1]
The union of ``A`` and ``B`` can be written as:
.. code-block:: yaml+jinja
result: "{{ A | community.general.lists_union(B) }}"
This statement produces:
.. code-block:: yaml
result: [9, 5, 7, 1, 4, 10, 2, 8, 3]
If you want to calculate the intersection of ``A``, ``B`` and ``C``, you can use the following statement:
.. code-block:: yaml+jinja
result: "{{ A | community.general.lists_intersect(B, C) }}"
Alternatively, you can use a list of lists as an input of the filter
.. code-block:: yaml+jinja
result: "{{ [A, B] | community.general.lists_intersect(C) }}"
or
.. code-block:: yaml+jinja
result: "{{ [A, B, C] | community.general.lists_intersect(flatten=true) }}"
All three statements are equivalent and give:
.. code-block:: yaml
result: [1]
.. note:: Be aware that in most cases, filter calls without any argument require ``flatten=true``, otherwise the input is returned as result. The reason for this is, that the input is considered as a variable argument and is wrapped by an additional outer list. ``flatten=true`` ensures that this list is removed before the input is processed by the filter logic.
The filters :ansplugin:`community.general.lists_difference#filter` or :ansplugin:`community.general.lists_symmetric_difference#filter` can be used in the same way as the filters in the examples above. They calculate the difference or the symmetric difference between two or more lists and preserve the item order.
For example, the symmetric difference of ``A``, ``B`` and ``C`` may be written as:
.. code-block:: yaml+jinja
result: "{{ A | community.general.lists_symmetric_difference(B, C) }}"
This gives:
.. code-block:: yaml
result: [5, 8, 3, 1]

View File

@@ -6,30 +6,33 @@
Merging lists of dictionaries
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you have two or more lists of dictionaries and want to combine them into a list of merged dictionaries, where the dictionaries are merged by an attribute, you can use the :ansplugin:`community.general.lists_mergeby <community.general.lists_mergeby#filter>` filter.
If you have two or more lists of dictionaries and want to combine them into a list of merged dictionaries, where the dictionaries are merged by an attribute, you can use the ``lists_mergeby`` filter.
.. note:: The output of the examples in this section use the YAML callback plugin. Quoting: "Ansible output that can be quite a bit easier to read than the default JSON formatting." See the documentation for the :ansplugin:`community.general.yaml callback plugin <community.general.yaml#callback>`.
.. note:: The output of the examples in this section use the YAML callback plugin. Quoting: "Ansible output that can be quite a bit easier to read than the default JSON formatting." See :ref:`the documentation for the community.general.yaml callback plugin <ansible_collections.community.general.yaml_callback>`.
Let us use the lists below in the following examples:
.. code-block:: yaml
list1:
- {name: foo, extra: true}
- {name: bar, extra: false}
- {name: meh, extra: true}
- name: foo
extra: true
- name: bar
extra: false
- name: meh
extra: true
list2:
- {name: foo, path: /foo}
- {name: baz, path: /baz}
- name: foo
path: /foo
- name: baz
path: /baz
Two lists
"""""""""
In the example below the lists are merged by the attribute ``name``:
.. code-block:: yaml+jinja
list3: "{{ list1 |
list3: "{{ list1|
community.general.lists_mergeby(list2, 'name') }}"
This produces:
@@ -37,21 +40,24 @@ This produces:
.. code-block:: yaml
list3:
- {name: bar, extra: false}
- {name: baz, path: /baz}
- {name: foo, extra: true, path: /foo}
- {name: meh, extra: true}
- extra: false
name: bar
- name: baz
path: /baz
- extra: true
name: foo
path: /foo
- extra: true
name: meh
.. versionadded:: 2.0.0
List of two lists
"""""""""""""""""
It is possible to use a list of lists as an input of the filter:
.. code-block:: yaml+jinja
list3: "{{ [list1, list2] |
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name') }}"
This produces the same result as in the previous example:
@@ -59,40 +65,26 @@ This produces the same result as in the previous example:
.. code-block:: yaml
list3:
- {name: bar, extra: false}
- {name: baz, path: /baz}
- {name: foo, extra: true, path: /foo}
- {name: meh, extra: true}
Single list
"""""""""""
It is possible to merge single list:
.. code-block:: yaml+jinja
list3: "{{ [list1 + list2, []] |
community.general.lists_mergeby('name') }}"
This produces the same result as in the previous example:
.. code-block:: yaml
list3:
- {name: bar, extra: false}
- {name: baz, path: /baz}
- {name: foo, extra: true, path: /foo}
- {name: meh, extra: true}
- extra: false
name: bar
- name: baz
path: /baz
- extra: true
name: foo
path: /foo
- extra: true
name: meh
The filter also accepts two optional parameters: :ansopt:`community.general.lists_mergeby#filter:recursive` and :ansopt:`community.general.lists_mergeby#filter:list_merge`. This is available since community.general 4.4.0.
The filter also accepts two optional parameters: ``recursive`` and ``list_merge``. These parameters are only supported when used with ansible-base 2.10 or ansible-core, but not with Ansible 2.9. This is available since community.general 4.4.0.
**recursive**
Is a boolean, default to ``false``. Should the :ansplugin:`community.general.lists_mergeby#filter` filter recursively merge nested hashes. Note: It does not depend on the value of the ``hash_behaviour`` setting in ``ansible.cfg``.
Is a boolean, default to ``False``. Should the ``community.general.lists_mergeby`` recursively merge nested hashes. Note: It does not depend on the value of the ``hash_behaviour`` setting in ``ansible.cfg``.
**list_merge**
Is a string, its possible values are :ansval:`replace` (default), :ansval:`keep`, :ansval:`append`, :ansval:`prepend`, :ansval:`append_rp` or :ansval:`prepend_rp`. It modifies the behaviour of :ansplugin:`community.general.lists_mergeby#filter` when the hashes to merge contain arrays/lists.
Is a string, its possible values are ``replace`` (default), ``keep``, ``append``, ``prepend``, ``append_rp`` or ``prepend_rp``. It modifies the behaviour of ``community.general.lists_mergeby`` when the hashes to merge contain arrays/lists.
The examples below set :ansopt:`community.general.lists_mergeby#filter:recursive=true` and display the differences among all six options of :ansopt:`community.general.lists_mergeby#filter:list_merge`. Functionality of the parameters is exactly the same as in the filter :ansplugin:`ansible.builtin.combine#filter`. See :ref:`Combining hashes/dictionaries <combine_filter>` to learn details about these options.
The examples below set ``recursive=true`` and display the differences among all six options of ``list_merge``. Functionality of the parameters is exactly the same as in the filter ``combine``. See :ref:`Combining hashes/dictionaries <combine_filter>` to learn details about these options.
Let us use the lists below in the following examples
@@ -103,7 +95,8 @@ Let us use the lists below in the following examples
param01:
x: default_value
y: default_value
list: [default_value]
list:
- default_value
- name: myname02
param01: [1, 1, 2, 3]
@@ -112,17 +105,16 @@ Let us use the lists below in the following examples
param01:
y: patch_value
z: patch_value
list: [patch_value]
list:
- patch_value
- name: myname02
param01: [3, 4, 4]
param01: [3, 4, 4, {key: value}]
list_merge=replace (default)
""""""""""""""""""""""""""""
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=replace` (default):
Example ``list_merge=replace`` (default):
.. code-block:: yaml+jinja
list3: "{{ [list1, list2] |
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true) }}"
@@ -131,22 +123,25 @@ This produces:
.. code-block:: yaml
list3:
- name: myname01
param01:
x: default_value
y: patch_value
list: [patch_value]
z: patch_value
- name: myname02
param01: [3, 4, 4]
- name: myname01
param01:
list:
- patch_value
x: default_value
y: patch_value
z: patch_value
- name: myname02
param01:
- 3
- 4
- 4
- key: value
list_merge=keep
"""""""""""""""
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=keep`:
Example ``list_merge=keep``:
.. code-block:: yaml+jinja
list3: "{{ [list1, list2] |
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='keep') }}"
@@ -156,22 +151,25 @@ This produces:
.. code-block:: yaml
list3:
- name: myname01
param01:
x: default_value
y: patch_value
list: [default_value]
z: patch_value
- name: myname02
param01: [1, 1, 2, 3]
- name: myname01
param01:
list:
- default_value
x: default_value
y: patch_value
z: patch_value
- name: myname02
param01:
- 1
- 1
- 2
- 3
list_merge=append
"""""""""""""""""
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=append`:
Example ``list_merge=append``:
.. code-block:: yaml+jinja
list3: "{{ [list1, list2] |
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='append') }}"
@@ -181,22 +179,30 @@ This produces:
.. code-block:: yaml
list3:
- name: myname01
param01:
x: default_value
y: patch_value
list: [default_value, patch_value]
z: patch_value
- name: myname02
param01: [1, 1, 2, 3, 3, 4, 4]
- name: myname01
param01:
list:
- default_value
- patch_value
x: default_value
y: patch_value
z: patch_value
- name: myname02
param01:
- 1
- 1
- 2
- 3
- 3
- 4
- 4
- key: value
list_merge=prepend
""""""""""""""""""
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=prepend`:
Example ``list_merge=prepend``:
.. code-block:: yaml+jinja
list3: "{{ [list1, list2] |
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='prepend') }}"
@@ -206,22 +212,30 @@ This produces:
.. code-block:: yaml
list3:
- name: myname01
param01:
x: default_value
y: patch_value
list: [patch_value, default_value]
z: patch_value
- name: myname02
param01: [3, 4, 4, 1, 1, 2, 3]
- name: myname01
param01:
list:
- patch_value
- default_value
x: default_value
y: patch_value
z: patch_value
- name: myname02
param01:
- 3
- 4
- 4
- key: value
- 1
- 1
- 2
- 3
list_merge=append_rp
""""""""""""""""""""
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=append_rp`:
Example ``list_merge=append_rp``:
.. code-block:: yaml+jinja
list3: "{{ [list1, list2] |
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='append_rp') }}"
@@ -231,22 +245,29 @@ This produces:
.. code-block:: yaml
list3:
- name: myname01
param01:
x: default_value
y: patch_value
list: [default_value, patch_value]
z: patch_value
- name: myname02
param01: [1, 1, 2, 3, 4, 4]
- name: myname01
param01:
list:
- default_value
- patch_value
x: default_value
y: patch_value
z: patch_value
- name: myname02
param01:
- 1
- 1
- 2
- 3
- 4
- 4
- key: value
list_merge=prepend_rp
"""""""""""""""""""""
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=prepend_rp`:
Example ``list_merge=prepend_rp``:
.. code-block:: yaml+jinja
list3: "{{ [list1, list2] |
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='prepend_rp') }}"
@@ -256,12 +277,21 @@ This produces:
.. code-block:: yaml
list3:
- name: myname01
param01:
x: default_value
y: patch_value
list: [patch_value, default_value]
z: patch_value
- name: myname02
param01: [3, 4, 4, 1, 1, 2]
- name: myname01
param01:
list:
- patch_value
- default_value
x: default_value
y: patch_value
z: patch_value
- name: myname02
param01:
- 3
- 4
- 4
- key: value
- 1
- 1
- 2

View File

@@ -9,7 +9,7 @@ Conversions
Parsing CSV files
^^^^^^^^^^^^^^^^^
Ansible offers the :ansplugin:`community.general.read_csv module <community.general.read_csv#module>` to read CSV files. Sometimes you need to convert strings to CSV files instead. For this, the :ansplugin:`community.general.from_csv filter <community.general.from_csv#filter>` exists.
Ansible offers the :ref:`community.general.read_csv module <ansible_collections.community.general.read_csv_module>` to read CSV files. Sometimes you need to convert strings to CSV files instead. For this, the ``from_csv`` filter exists.
.. code-block:: yaml+jinja
@@ -42,7 +42,7 @@ This produces:
]
}
The :ansplugin:`community.general.from_csv filter <community.general.from_csv#filter>` has several keyword arguments to control its behavior:
The ``from_csv`` filter has several keyword arguments to control its behavior:
:dialect: Dialect of the CSV file. Default is ``excel``. Other possible choices are ``excel-tab`` and ``unix``. If one of ``delimiter``, ``skipinitialspace`` or ``strict`` is specified, ``dialect`` is ignored.
:fieldnames: A set of column names to use. If not provided, the first line of the CSV is assumed to contain the column names.
@@ -55,7 +55,7 @@ The :ansplugin:`community.general.from_csv filter <community.general.from_csv#fi
Converting to JSON
^^^^^^^^^^^^^^^^^^
`JC <https://pypi.org/project/jc/>`_ is a CLI tool and Python library which allows to interpret output of various CLI programs as JSON. It is also available as a filter in community.general, called :ansplugin:`community.general.jc#filter`. This filter needs the `jc Python library <https://pypi.org/project/jc/>`_ installed on the controller.
`JC <https://pypi.org/project/jc/>`_ is a CLI tool and Python library which allows to interpret output of various CLI programs as JSON. It is also available as a filter in community.general. This filter needs the `jc Python library <https://pypi.org/project/jc/>`_ installed on the controller.
.. code-block:: yaml+jinja

View File

@@ -11,7 +11,7 @@ The following filters allow to create identifiers.
Hashids
^^^^^^^
`Hashids <https://hashids.org/>`_ allow to convert sequences of integers to short unique string identifiers. The :ansplugin:`community.general.hashids_encode#filter` and :ansplugin:`community.general.hashids_decode#filter` filters need the `hashids Python library <https://pypi.org/project/hashids/>`_ installed on the controller.
`Hashids <https://hashids.org/>`_ allow to convert sequences of integers to short unique string identifiers. This filter needs the `hashids Python library <https://pypi.org/project/hashids/>`_ installed on the controller.
.. code-block:: yaml+jinja
@@ -52,7 +52,7 @@ The hashids filters accept keyword arguments to allow fine-tuning the hashids ge
Random MACs
^^^^^^^^^^^
You can use the :ansplugin:`community.general.random_mac filter <community.general.random_mac#filter>` to complete a partial `MAC address <https://en.wikipedia.org/wiki/MAC_address>`_ to a random 6-byte MAC address.
You can use the ``random_mac`` filter to complete a partial `MAC address <https://en.wikipedia.org/wiki/MAC_address>`_ to a random 6-byte MAC address.
.. code-block:: yaml+jinja

View File

@@ -6,4 +6,14 @@
Paths
-----
The :ansplugin:`ansible.builtin.path_join filter <ansible.builtin.path_join#filter>` has been added in ansible-base 2.10. Community.general 3.0.0 and newer contains an alias ``community.general.path_join`` for this filter that could be used on Ansible 2.9 as well. Since community.general no longer supports Ansible 2.9, this is now a simple redirect to :ansplugin:`ansible.builtin.path_join filter <ansible.builtin.path_join#filter>`.
The ``path_join`` filter has been added in ansible-base 2.10. If you want to use this filter, but also need to support Ansible 2.9, you can use ``community.general``'s ``path_join`` shim, ``community.general.path_join``. This filter redirects to ``path_join`` for ansible-base 2.10 and ansible-core 2.11 or newer, and re-implements the filter for Ansible 2.9.
.. code-block:: yaml+jinja
# ansible-base 2.10 or newer:
path: {{ ('/etc', path, 'subdir', file) | path_join }}
# Also works with Ansible 2.9:
path: {{ ('/etc', path, 'subdir', file) | community.general.path_join }}
.. versionadded:: 3.0.0

View File

@@ -8,7 +8,7 @@
Selecting JSON data: JSON queries
---------------------------------
To select a single element or a data subset from a complex data structure in JSON format (for example, Ansible facts), use the :ansplugin:`community.general.json_query filter <community.general.json_query#filter>`. The :ansplugin:`community.general.json_query#filter` filter lets you query a complex JSON structure and iterate over it using a loop structure.
To select a single element or a data subset from a complex data structure in JSON format (for example, Ansible facts), use the ``json_query`` filter. The ``json_query`` filter lets you query a complex JSON structure and iterate over it using a loop structure.
.. note:: You must manually install the **jmespath** dependency on the Ansible controller before using this filter. This filter is built upon **jmespath**, and you can use the same syntax. For examples, see `jmespath examples <http://jmespath.org/examples.html>`_.
@@ -17,50 +17,50 @@ Consider this data structure:
.. code-block:: yaml+jinja
{
"domain_definition": {
"domain": {
"cluster": [
{
"name": "cluster1"
},
{
"name": "cluster2"
"domain_definition": {
"domain": {
"cluster": [
{
"name": "cluster1"
},
{
"name": "cluster2"
}
],
"server": [
{
"name": "server11",
"cluster": "cluster1",
"port": "8080"
},
{
"name": "server12",
"cluster": "cluster1",
"port": "8090"
},
{
"name": "server21",
"cluster": "cluster2",
"port": "9080"
},
{
"name": "server22",
"cluster": "cluster2",
"port": "9090"
}
],
"library": [
{
"name": "lib1",
"target": "cluster1"
},
{
"name": "lib2",
"target": "cluster2"
}
]
}
],
"server": [
{
"name": "server11",
"cluster": "cluster1",
"port": "8080"
},
{
"name": "server12",
"cluster": "cluster1",
"port": "8090"
},
{
"name": "server21",
"cluster": "cluster2",
"port": "9080"
},
{
"name": "server22",
"cluster": "cluster2",
"port": "9090"
}
],
"library": [
{
"name": "lib1",
"target": "cluster1"
},
{
"name": "lib2",
"target": "cluster2"
}
]
}
}
}
To extract all clusters from this structure, you can use the following query:
@@ -124,7 +124,7 @@ To get a hash map with all ports and names of a cluster:
var: item
loop: "{{ domain_definition | community.general.json_query(server_name_cluster1_query) }}"
vars:
server_name_cluster1_query: "domain.server[?cluster=='cluster1'].{name: name, port: port}"
server_name_cluster1_query: "domain.server[?cluster=='cluster2'].{name: name, port: port}"
To extract ports from all clusters with name starting with 'server1':
@@ -146,4 +146,4 @@ To extract ports from all clusters with name containing 'server1':
vars:
server_name_query: "domain.server[?contains(name,'server1')].port"
.. note:: while using ``starts_with`` and ``contains``, you have to use ``to_json | from_json`` filter for correct parsing of data structure.
.. note:: while using ``starts_with`` and ``contains``, you have to use `` to_json | from_json `` filter for correct parsing of data structure.

View File

@@ -6,9 +6,9 @@
Working with times
------------------
The :ansplugin:`community.general.to_time_unit filter <community.general.to_time_unit#filter>` allows to convert times from a human-readable string to a unit. For example, ``'4h 30min 12second' | community.general.to_time_unit('hour')`` gives the number of hours that correspond to 4 hours, 30 minutes and 12 seconds.
The ``to_time_unit`` filter allows to convert times from a human-readable string to a unit. For example, ``'4h 30min 12second' | community.general.to_time_unit('hour')`` gives the number of hours that correspond to 4 hours, 30 minutes and 12 seconds.
There are shorthands to directly convert to various units, like :ansplugin:`community.general.to_hours#filter`, :ansplugin:`community.general.to_minutes#filter`, :ansplugin:`community.general.to_seconds#filter`, and so on. The following table lists all units that can be used:
There are shorthands to directly convert to various units, like ``to_hours``, ``to_minutes``, ``to_seconds``, and so on. The following table lists all units that can be used:
.. list-table:: Units
:widths: 25 25 25 25
@@ -21,37 +21,37 @@ There are shorthands to directly convert to various units, like :ansplugin:`comm
* - Millisecond
- 1/1000 second
- ``ms``, ``millisecond``, ``milliseconds``, ``msec``, ``msecs``, ``msecond``, ``mseconds``
- :ansplugin:`community.general.to_milliseconds#filter`
- ``to_milliseconds``
* - Second
- 1 second
- ``s``, ``sec``, ``secs``, ``second``, ``seconds``
- :ansplugin:`community.general.to_seconds#filter`
- ``to_seconds``
* - Minute
- 60 seconds
- ``m``, ``min``, ``mins``, ``minute``, ``minutes``
- :ansplugin:`community.general.to_minutes#filter`
- ``to_minutes``
* - Hour
- 60*60 seconds
- ``h``, ``hour``, ``hours``
- :ansplugin:`community.general.to_hours#filter`
- ``to_hours``
* - Day
- 24*60*60 seconds
- ``d``, ``day``, ``days``
- :ansplugin:`community.general.to_days#filter`
- ``to_days``
* - Week
- 7*24*60*60 seconds
- ``w``, ``week``, ``weeks``
- :ansplugin:`community.general.to_weeks#filter`
- ``to_weeks``
* - Month
- 30*24*60*60 seconds
- ``mo``, ``month``, ``months``
- :ansplugin:`community.general.to_months#filter`
- ``to_months``
* - Year
- 365*24*60*60 seconds
- ``y``, ``year``, ``years``
- :ansplugin:`community.general.to_years#filter`
- ``to_years``
Note that months and years are using a simplified representation: a month is 30 days, and a year is 365 days. If you need different definitions of months or years, you can pass them as keyword arguments. For example, if you want a year to be 365.25 days, and a month to be 30.5 days, you can write ``'11months 4' | community.general.to_years(year=365.25, month=30.5)``. These keyword arguments can be specified to :ansplugin:`community.general.to_time_unit#filter` and to all shorthand filters.
Note that months and years are using a simplified representation: a month is 30 days, and a year is 365 days. If you need different definitions of months or years, you can pass them as keyword arguments. For example, if you want a year to be 365.25 days, and a month to be 30.5 days, you can write ``'11months 4' | community.general.to_years(year=365.25, month=30.5)``. These keyword arguments can be specified to ``to_time_unit`` and to all shorthand filters.
.. code-block:: yaml+jinja

View File

@@ -6,9 +6,9 @@
Working with Unicode
---------------------
`Unicode <https://unicode.org/main.html>`_ makes it possible to produce two strings which may be visually equivalent, but are comprised of distinctly different characters/character sequences. To address this Unicode defines `normalization forms <https://unicode.org/reports/tr15/>`_ which avoid these distinctions by choosing a unique character sequence for a given visual representation.
`Unicode <https://unicode.org/main.html>`_ makes it possible to produce two strings which may be visually equivalent, but are comprised of distinctly different characters/character sequences. To address this ``Unicode`` defines `normalization forms <https://unicode.org/reports/tr15/>`_ which avoid these distinctions by choosing a unique character sequence for a given visual representation.
You can use the :ansplugin:`community.general.unicode_normalize filter <community.general.unicode_normalize#filter>` to normalize Unicode strings within your playbooks.
You can use the ``community.general.unicode_normalize`` filter to normalize ``Unicode`` strings within your playbooks.
.. code-block:: yaml+jinja
@@ -28,7 +28,7 @@ This produces:
"msg": true
}
The :ansplugin:`community.general.unicode_normalize filter <community.general.unicode_normalize#filter>` accepts a keyword argument :ansopt:`community.general.unicode_normalize#filter:form` to select the Unicode form used to normalize the input string.
The ``community.general.unicode_normalize`` filter accepts a keyword argument to select the ``Unicode`` form used to normalize the input string.
:form: One of ``'NFC'`` (default), ``'NFD'``, ``'NFKC'``, or ``'NFKD'``. See the `Unicode reference <https://unicode.org/reports/tr15/>`_ for more information.

View File

@@ -6,7 +6,7 @@
Working with versions
---------------------
If you need to sort a list of version numbers, the Jinja ``sort`` filter is problematic. Since it sorts lexicographically, ``2.10`` will come before ``2.9``. To treat version numbers correctly, you can use the :ansplugin:`community.general.version_sort filter <community.general.version_sort#filter>`:
If you need to sort a list of version numbers, the Jinja ``sort`` filter is problematic. Since it sorts lexicographically, ``2.10`` will come before ``2.9``. To treat version numbers correctly, you can use the ``version_sort`` filter:
.. code-block:: yaml+jinja

View File

@@ -1,96 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_alicloud:
Alibaba Cloud Compute Services Guide
====================================
Introduction
````````````
The community.general collection contains several modules for controlling and managing Alibaba Cloud Compute Services (Alicloud). This guide
explains how to use the Alicloud Ansible modules together.
All Alicloud modules require ``footmark`` - install it on your control machine with ``pip install footmark``.
Cloud modules, including Alicloud modules, are usually executed on your local machine (the control machine) with ``connection: local``, rather than on remote machines defined in your hosts.
Normally, you'll use the following pattern for plays that provision Alicloud resources:
.. code-block:: yaml
- hosts: localhost
connection: local
vars:
- ...
tasks:
- ...
Authentication
``````````````
You can specify your Alicloud authentication credentials (access key and secret key) by passing them as
environment variables or by storing them in a vars file.
To pass authentication credentials as environment variables:
.. code-block:: console
export ALICLOUD_ACCESS_KEY='Alicloud123'
export ALICLOUD_SECRET_KEY='AlicloudSecret123'
To store authentication credentials in a vars file, encrypt them with :ref:`Ansible Vault <vault>` to keep them secure, then list them:
.. code-block:: yaml
---
alicloud_access_key: "--REMOVED--"
alicloud_secret_key: "--REMOVED--"
Note that if you store your credentials in a vars file, you need to refer to them in each Alicloud module. For example:
.. code-block:: yaml+jinja
- community.general.ali_instance:
alicloud_access_key: "{{ alicloud_access_key }}"
alicloud_secret_key: "{{ alicloud_secret_key }}"
image_id: "..."
Provisioning
````````````
Alicloud modules create Alicloud ECS instances (:ansplugin:`community.general.ali_instance#module`) and retrieve information on these (:ansplugin:`community.general.ali_instance_info#module`).
You can use the ``count`` parameter to control the number of resources you create or terminate. For example, if you want exactly 5 instances tagged ``NewECS``, set the ``count`` of instances to 5 and the ``count_tag`` to ``NewECS``, as shown in the last task of the example playbook below. If there are no instances with the tag ``NewECS``, the task creates 5 new instances. If there are 2 instances with that tag, the task creates 3 more. If there are 8 instances with that tag, the task terminates 3 of those instances.
If you do not specify a ``count_tag``, the task creates the number of instances you specify in ``count`` with the ``instance_name`` you provide.
.. code-block:: yaml+jinja
# alicloud_setup.yml
- hosts: localhost
connection: local
tasks:
- name: Create a set of instances
community.general.ali_instance:
instance_type: ecs.n4.small
image_id: "{{ ami_id }}"
instance_name: "My-new-instance"
instance_tags:
Name: NewECS
Version: 0.0.1
count: 5
count_tag:
Name: NewECS
allocate_public_ip: true
max_bandwidth_out: 50
register: create_instance
In the example playbook above, data about the instances created by this playbook is saved in the variable defined by the ``register`` keyword in the task.
Each Alicloud module offers a variety of parameter options. Not all options are demonstrated in the above example. See each individual module for further details and examples.

View File

@@ -1,529 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_cmdrunner:
Command Runner guide
====================
Introduction
^^^^^^^^^^^^
The ``ansible_collections.community.general.plugins.module_utils.cmd_runner`` module util provides the
``CmdRunner`` class to help execute external commands. The class is a wrapper around
the standard ``AnsibleModule.run_command()`` method, handling command arguments, localization setting,
output processing output, check mode, and other features.
It is even more useful when one command is used in multiple modules, so that you can define all options
in a module util file, and each module uses the same runner with different arguments.
For the sake of clarity, throughout this guide, unless otherwise specified, we use the term *option* when referring to
Ansible module options, and the term *argument* when referring to the command line arguments for the external command.
Quickstart
""""""""""
``CmdRunner`` defines a command and a set of coded instructions on how to format
the command-line arguments, in which specific order, for a particular execution.
It relies on ``ansible.module_utils.basic.AnsibleModule.run_command()`` to actually execute the command.
There are other features, see more details throughout this document.
To use ``CmdRunner`` you must start by creating an object. The example below is a simplified
version of the actual code in :ansplugin:`community.general.ansible_galaxy_install#module`:
.. code-block:: python
from ansible_collections.community.general.plugins.module_utils.cmd_runner import CmdRunner, cmd_runner_fmt
runner = CmdRunner(
module,
command="ansible-galaxy",
arg_formats=dict(
type=cmd_runner_fmt.as_func(lambda v: [] if v == 'both' else [v]),
galaxy_cmd=cmd_runner_fmt.as_list(),
upgrade=cmd_runner_fmt.as_bool("--upgrade"),
requirements_file=cmd_runner_fmt.as_opt_val('-r'),
dest=cmd_runner_fmt.as_opt_val('-p'),
force=cmd_runner_fmt.as_bool("--force"),
no_deps=cmd_runner_fmt.as_bool("--no-deps"),
version=cmd_runner_fmt.as_fixed("--version"),
name=cmd_runner_fmt.as_list(),
)
)
This is meant to be done once, then every time you need to execute the command you create a context and pass values as needed:
.. code-block:: python
# Run the command with these arguments, when values exist for them
with runner("type galaxy_cmd upgrade force no_deps dest requirements_file name", output_process=process) as ctx:
ctx.run(galaxy_cmd="install", upgrade=upgrade)
# version is fixed, requires no value
with runner("version") as ctx:
dummy, stdout, dummy = ctx.run()
# passes arg 'data' to AnsibleModule.run_command()
with runner("type name", data=stdin_data) as ctx:
dummy, stdout, dummy = ctx.run()
# Another way of expressing it
dummy, stdout, dummy = runner("version").run()
Note that you can pass values for the arguments when calling ``run()``, otherwise ``CmdRunner``
uses the module options with the exact same names to provide values for the runner arguments.
If no value is passed and no module option is found for the name specified, then an exception is raised, unless
the argument is using ``cmd_runner_fmt.as_fixed`` as format function like the ``version`` in the example above.
See more about it below.
In the first example, values of ``type``, ``force``, ``no_deps`` and others
are taken straight from the module, whilst ``galaxy_cmd`` and ``upgrade`` are
passed explicitly.
.. note::
It is not possible to automatically retrieve values of suboptions.
That generates a resulting command line similar to (example taken from the
output of an integration test):
.. code-block:: python
[
"<venv>/bin/ansible-galaxy",
"collection",
"install",
"--upgrade",
"-p",
"<collection-install-path>",
"netbox.netbox",
]
Argument formats
^^^^^^^^^^^^^^^^
As seen in the example, ``CmdRunner`` expects a parameter named ``arg_formats``
defining how to format each CLI named argument.
An "argument format" is nothing but a function to transform the value of a variable
into something formatted for the command line.
Argument format function
""""""""""""""""""""""""
An ``arg_format`` function is defined in the form similar to:
.. code-block:: python
def func(value):
return ["--some-param-name", value]
The parameter ``value`` can be of any type - although there are convenience
mechanisms to help handling sequence and mapping objects.
The result is expected to be of the type ``Sequence[str]`` type (most commonly
``list[str]`` or ``tuple[str]``), otherwise it is considered to be a ``str``,
and it is coerced into ``list[str]``.
This resulting sequence of strings is added to the command line when that
argument is actually used.
For example, if ``func`` returns:
- ``["nee", 2, "shruberries"]``, the command line adds arguments ``"nee" "2" "shruberries"``.
- ``2 == 2``, the command line adds argument ``True``.
- ``None``, the command line adds argument ``None``.
- ``[]``, the command line adds no command line argument for that particular argument.
Convenience format methods
""""""""""""""""""""""""""
In the same module as ``CmdRunner`` there is a class ``cmd_runner_fmt`` which
provides a set of convenience methods that return format functions for common cases.
In the first block of code in the `Quickstart`_ section you can see the importing of
that class:
.. code-block:: python
from ansible_collections.community.general.plugins.module_utils.cmd_runner import CmdRunner, cmd_runner_fmt
The same example shows how to make use of some of them in the instantiation of the ``CmdRunner`` object.
A description of each one of the convenience methods available and examples of how to use them is found below.
In these descriptions ``value`` refers to the single parameter passed to the formatting function.
- ``cmd_runner_fmt.as_list()``
This method does not receive any parameter, function returns ``value`` as-is.
- Creation:
``cmd_runner_fmt.as_list()``
- Examples:
+----------------------+---------------------+
| Value | Outcome |
+======================+=====================+
| ``["foo", "bar"]`` | ``["foo", "bar"]`` |
+----------------------+---------------------+
| ``"foobar"`` | ``["foobar"]`` |
+----------------------+---------------------+
- ``cmd_runner_fmt.as_bool()``
This method receives two different parameters: ``args_true`` and ``args_false``, latter being optional.
If the boolean evaluation of ``value`` is ``True``, the format function returns ``args_true``.
If the boolean evaluation is ``False``, then the function returns ``args_false`` if it was provided, or ``[]`` otherwise.
- Creation (one arg):
``cmd_runner_fmt.as_bool("--force")``
- Examples:
+------------+--------------------+
| Value | Outcome |
+============+====================+
| ``True`` | ``["--force"]`` |
+------------+--------------------+
| ``False`` | ``[]`` |
+------------+--------------------+
- Creation (two args, ``None`` treated as ``False``):
``cmd_runner_fmt.as_bool("--relax", "--dont-do-it")``
- Examples:
+------------+----------------------+
| Value | Outcome |
+============+======================+
| ``True`` | ``["--relax"]`` |
+------------+----------------------+
| ``False`` | ``["--dont-do-it"]`` |
+------------+----------------------+
| | ``["--dont-do-it"]`` |
+------------+----------------------+
- Creation (two args, ``None`` is ignored):
``cmd_runner_fmt.as_bool("--relax", "--dont-do-it", ignore_none=True)``
- Examples:
+------------+----------------------+
| Value | Outcome |
+============+======================+
| ``True`` | ``["--relax"]`` |
+------------+----------------------+
| ``False`` | ``["--dont-do-it"]`` |
+------------+----------------------+
| | ``[]`` |
+------------+----------------------+
- ``cmd_runner_fmt.as_bool_not()``
This method receives one parameter, which is returned by the function when the boolean evaluation
of ``value`` is ``False``.
- Creation:
``cmd_runner_fmt.as_bool_not("--no-deps")``
- Examples:
+-------------+---------------------+
| Value | Outcome |
+=============+=====================+
| ``True`` | ``[]`` |
+-------------+---------------------+
| ``False`` | ``["--no-deps"]`` |
+-------------+---------------------+
- ``cmd_runner_fmt.as_optval()``
This method receives one parameter ``arg``, the function returns the string concatenation
of ``arg`` and ``value``.
- Creation:
``cmd_runner_fmt.as_optval("-i")``
- Examples:
+---------------+---------------------+
| Value | Outcome |
+===============+=====================+
| ``3`` | ``["-i3"]`` |
+---------------+---------------------+
| ``foobar`` | ``["-ifoobar"]`` |
+---------------+---------------------+
- ``cmd_runner_fmt.as_opt_val()``
This method receives one parameter ``arg``, the function returns ``[arg, value]``.
- Creation:
``cmd_runner_fmt.as_opt_val("--name")``
- Examples:
+--------------+--------------------------+
| Value | Outcome |
+==============+==========================+
| ``abc`` | ``["--name", "abc"]`` |
+--------------+--------------------------+
- ``cmd_runner_fmt.as_opt_eq_val()``
This method receives one parameter ``arg``, the function returns the string of the form
``{arg}={value}``.
- Creation:
``cmd_runner_fmt.as_opt_eq_val("--num-cpus")``
- Examples:
+------------+-------------------------+
| Value | Outcome |
+============+=========================+
| ``10`` | ``["--num-cpus=10"]`` |
+------------+-------------------------+
- ``cmd_runner_fmt.as_fixed()``
This method defines one or more fixed arguments that are returned by the generated function
regardless whether ``value`` is passed to it or not.
This method accepts these arguments in one of three forms:
* one scalar parameter ``arg``, which will be returned as ``[arg]`` by the function, or
* one sequence parameter, such as a list, ``arg``, which will be returned by the function as ``arg[0]``, or
* multiple parameters ``args``, which will be returned as ``args`` directly by the function.
See the examples below for each one of those forms. And, stressing that the generated function expects no ``value`` - if one
is provided then it is ignored.
- Creation (one scalar argument):
* ``cmd_runner_fmt.as_fixed("--version")``
- Examples:
+---------+--------------------------------------+
| Value | Outcome |
+=========+======================================+
| | * ``["--version"]`` |
+---------+--------------------------------------+
| 57 | * ``["--version"]`` |
+---------+--------------------------------------+
- Creation (one sequence argument):
* ``cmd_runner_fmt.as_fixed(["--list", "--json"])``
- Examples:
+---------+--------------------------------------+
| Value | Outcome |
+=========+======================================+
| | * ``["--list", "--json"]`` |
+---------+--------------------------------------+
| True | * ``["--list", "--json"]`` |
+---------+--------------------------------------+
- Creation (multiple arguments):
* ``cmd_runner_fmt.as_fixed("--one", "--two", "--three")``
- Examples:
+---------+--------------------------------------+
| Value | Outcome |
+=========+======================================+
| | * ``["--one", "--two", "--three"]`` |
+---------+--------------------------------------+
| False | * ``["--one", "--two", "--three"]`` |
+---------+--------------------------------------+
- Note:
This is the only special case in which a value can be missing for the formatting function.
The first example here comes from the code in `Quickstart`_.
In that case, the module has code to determine the command's version so that it can assert compatibility.
There is no *value* to be passed for that CLI argument.
- ``cmd_runner_fmt.as_map()``
This method receives one parameter ``arg`` which must be a dictionary, and an optional parameter ``default``.
The function returns the evaluation of ``arg[value]``.
If ``value not in arg``, then it returns ``default`` if defined, otherwise ``[]``.
- Creation:
``cmd_runner_fmt.as_map(dict(a=1, b=2, c=3), default=42)``
- Examples:
+---------------------+---------------+
| Value | Outcome |
+=====================+===============+
| ``"b"`` | ``["2"]`` |
+---------------------+---------------+
| ``"yabadabadoo"`` | ``["42"]`` |
+---------------------+---------------+
- Note:
If ``default`` is not specified, invalid values return an empty list, meaning they are silently ignored.
- ``cmd_runner_fmt.as_func()``
This method receives one parameter ``arg`` which is itself is a format function and it must abide by the rules described above.
- Creation:
``cmd_runner_fmt.as_func(lambda v: [] if v == 'stable' else ['--channel', '{0}'.format(v)])``
- Note:
The outcome for that depends entirely on the function provided by the developer.
Other features for argument formatting
""""""""""""""""""""""""""""""""""""""
Some additional features are available as decorators:
- ``cmd_runner_fmt.unpack args()``
This decorator unpacks the incoming ``value`` as a list of elements.
For example, in ``ansible_collections.community.general.plugins.module_utils.puppet``, it is used as:
.. code-block:: python
@cmd_runner_fmt.unpack_args
def execute_func(execute, manifest):
if execute:
return ["--execute", execute]
else:
return [manifest]
runner = CmdRunner(
module,
command=_prepare_base_cmd(),
path_prefix=_PUPPET_PATH_PREFIX,
arg_formats=dict(
# ...
_execute=cmd_runner_fmt.as_func(execute_func),
# ...
),
)
Then, in :ansplugin:`community.general.puppet#module` it is put to use with:
.. code-block:: python
with runner(args_order) as ctx:
rc, stdout, stderr = ctx.run(_execute=[p['execute'], p['manifest']])
- ``cmd_runner_fmt.unpack_kwargs()``
Conversely, this decorator unpacks the incoming ``value`` as a ``dict``-like object.
- ``cmd_runner_fmt.stack()``
This decorator assumes ``value`` is a sequence and concatenates the output
of the wrapped function applied to each element of the sequence.
For example, in :ansplugin:`community.general.django_check#module`, the argument format for ``database``
is defined as:
.. code-block:: python
arg_formats = dict(
# ...
database=cmd_runner_fmt.stack(cmd_runner_fmt.as_opt_val)("--database"),
# ...
)
When receiving a list ``["abc", "def"]``, the output is:
.. code-block:: python
["--database", "abc", "--database", "def"]
Command Runner
^^^^^^^^^^^^^^
Settings that can be passed to the ``CmdRunner`` constructor are:
- ``module: AnsibleModule``
Module instance. Mandatory parameter.
- ``command: str | list[str]``
Command to be executed. It can be a single string, the executable name, or a list
of strings containing the executable name as the first element and, optionally, fixed parameters.
Those parameters are used in all executions of the runner.
The *executable* pointed by this parameter (whether itself when ``str`` or its first element when ``list``) is
processed using ``AnsibleModule.get_bin_path()`` *unless* it is an absolute path or contains the character ``/``.
- ``arg_formats: dict``
Mapping of argument names to formatting functions.
- ``default_args_order: str``
As the name suggests, a default ordering for the arguments. When
this is passed, the context can be created without specifying ``args_order``. Defaults to ``()``.
- ``check_rc: bool``
When ``True``, if the return code from the command is not zero, the module exits
with an error. Defaults to ``False``.
- ``path_prefix: list[str]``
If the command being executed is installed in a non-standard directory path,
additional paths might be provided to search for the executable. Defaults to ``None``.
- ``environ_update: dict``
Pass additional environment variables to be set during the command execution.
Defaults to ``None``.
- ``force_lang: str``
It is usually important to force the locale to one specific value, so that responses are consistent and, therefore, parseable.
Please note that using this option (which is enabled by default) overwrites the environment variables ``LANGUAGE`` and ``LC_ALL``.
To disable this mechanism, set this parameter to ``None``.
In community.general 9.1.0 a special value ``auto`` was introduced for this parameter, with the effect
that ``CmdRunner`` then tries to determine the best parseable locale for the runtime.
It should become the default value in the future, but for the time being the default value is ``C``.
When creating a context, the additional settings that can be passed to the call are:
- ``args_order: str``
Establishes the order in which the arguments are rendered in the command line.
This parameter is mandatory unless ``default_args_order`` was provided to the runner instance.
- ``output_process: func``
Function to transform the output of the executable into different values or formats.
See examples in section below.
- ``check_mode_skip: bool``
Whether to skip the actual execution of the command when the module is in check mode.
Defaults to ``False``.
- ``check_mode_return: any``
If ``check_mode_skip=True``, then return this value instead.
- valid named arguments to ``AnsibleModule.run_command()``
Other than ``args``, any valid argument to ``run_command()`` can be passed when setting up the run context.
For example, ``data`` can be used to send information to the command's standard input.
Or ``cwd`` can be used to run the command inside a specific working directory.
Additionally, any other valid parameters for ``AnsibleModule.run_command()`` may be passed, but unexpected behavior
might occur if redefining options already present in the runner or its context creation. Use with caution.
Processing results
^^^^^^^^^^^^^^^^^^
As mentioned, ``CmdRunner`` uses ``AnsibleModule.run_command()`` to execute the external command,
and it passes the return value from that method back to caller. That means that,
by default, the result is going to be a tuple ``(rc, stdout, stderr)``.
If you need to transform or process that output, you can pass a function to the context,
as the ``output_process`` parameter. It must be a function like:
.. code-block:: python
def process(rc, stdout, stderr):
# do some magic
return processed_value # whatever that is
In that case, the return of ``run()`` is the ``processed_value`` returned by the function.
PythonRunner
^^^^^^^^^^^^
The ``PythonRunner`` class is a specialized version of ``CmdRunner``, geared towards the execution of
Python scripts. It features two extra and mutually exclusive parameters ``python`` and ``venv`` in its constructor:
.. code-block:: python
from ansible_collections.community.general.plugins.module_utils.python_runner import PythonRunner
from ansible_collections.community.general.plugins.module_utils.cmd_runner import cmd_runner_fmt
runner = PythonRunner(
module,
command=["-m", "django"],
arg_formats=dict(...),
python="python",
venv="/path/to/some/venv",
)
The default value for ``python`` is the string ``python``, and the for ``venv`` it is ``None``.
The command line produced by such a command with ``python="python3.12"`` is something like:
.. code-block:: shell
/usr/bin/python3.12 -m django <arg1> <arg2> ...
And the command line for ``venv="/work/venv"`` is like:
.. code-block:: shell
/work/venv/bin/python -m django <arg1> <arg2> ...
You may provide the value of the ``command`` argument as a string (in that case the string is used as a script name)
or as a list, in which case the elements of the list must be valid arguments for the Python interpreter, as in the example above.
See `Command line and environment <https://docs.python.org/3/using/cmdline.html>`_ for more details.
If the parameter ``python`` is an absolute path, or contains directory separators, such as ``/``, then it is used
as-is, otherwise the runtime ``PATH`` is searched for that command name.
Other than that, everything else works as in ``CmdRunner``.
.. versionadded:: 4.8.0

View File

@@ -1,75 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_deps:
``deps`` Guide
==============
Using ``deps``
^^^^^^^^^^^^^^
The ``ansible_collections.community.general.plugins.module_utils.deps`` module util simplifies
the importing of code as described in :ref:`Importing and using shared code <shared_code>`.
Please notice that ``deps`` is meant to be used specifically with Ansible modules, and not other types of plugins.
The same example from the Developer Guide would become:
.. code-block:: python
from ansible_collections.community.general.plugins.module_utils import deps
with deps.declare("foo"):
import foo
Then in ``main()``, just after the argspec (or anywhere in the code, for that matter), do
.. code-block:: python
deps.validate(module) # assuming module is a valid AnsibleModule instance
By default, ``deps`` will rely on ``ansible.module_utils.basic.missing_required_lib`` to generate
a message about a failing import. That function accepts parameters ``reason`` and ``url``, and
and so does ``deps```:
.. code-block:: python
with deps.declare("foo", reason="foo is needed to properly bar", url="https://foo.bar.io"):
import foo
If you would rather write a custom message instead of using ``missing_required_lib`` then do:
.. code-block:: python
with deps.declare("foo", msg="Custom msg explaining why foo is needed"):
import foo
``deps`` allows for multiple dependencies to be declared:
.. code-block:: python
with deps.declare("foo"):
import foo
with deps.declare("bar"):
import bar
with deps.declare("doe"):
import doe
By default, ``deps.validate()`` will check on all the declared dependencies, but if so desired,
they can be validated selectively by doing:
.. code-block:: python
deps.validate(module, "foo") # only validates the "foo" dependency
deps.validate(module, "doe:bar") # only validates the "doe" and "bar" dependencies
deps.validate(module, "-doe:bar") # validates all dependencies except "doe" and "bar"
.. versionadded:: 6.1.0

View File

@@ -1,31 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory:
community.general.iocage inventory plugin
=========================================
The inventory plugin :ansplugin:`community.general.iocage#inventory` gets the inventory hosts from the iocage jail manager.
See:
* `iocage - A FreeBSD Jail Manager <https://iocage.readthedocs.io/en/latest>`_
* `man iocage <https://man.freebsd.org/cgi/man.cgi?query=iocage>`_
* `Jails and Containers <https://docs.freebsd.org/en/books/handbook/jails>`_
.. note::
The output of the examples is YAML formatted. See the option :ansopt:`ansible.builtin.default#callback:result_format`.
.. toctree::
:caption: Table of Contents
:maxdepth: 1
guide_iocage_inventory_basics
guide_iocage_inventory_dhcp
guide_iocage_inventory_hooks
guide_iocage_inventory_properties
guide_iocage_inventory_tags
guide_iocage_inventory_aliases

View File

@@ -1,200 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory.guide_iocage_inventory_aliases:
Aliases
-------
Quoting :ref:`inventory_aliases`:
The ``inventory_hostname`` is the unique identifier for a host in Ansible, this can be an IP or a hostname, but also just an 'alias' or short name for the host.
As root at the iocage host, stop and destroy all jails:
.. code-block:: console
shell> iocage stop ALL
* Stopping srv_1
+ Executing prestop OK
+ Stopping services OK
+ Tearing down VNET OK
+ Removing devfs_ruleset: 1000 OK
+ Removing jail process OK
+ Executing poststop OK
* Stopping srv_2
+ Executing prestop OK
+ Stopping services OK
+ Tearing down VNET OK
+ Removing devfs_ruleset: 1001 OK
+ Removing jail process OK
+ Executing poststop OK
* Stopping srv_3
+ Executing prestop OK
+ Stopping services OK
+ Tearing down VNET OK
+ Removing devfs_ruleset: 1002 OK
+ Removing jail process OK
+ Executing poststop OK
ansible_client is not running!
shell> iocage destroy -f srv_1 srv_2 srv_3
Destroying srv_1
Destroying srv_2
Destroying srv_3
Create three VNET jails with a DHCP interface from the template *ansible_client*. Use the option ``--count``:
.. code-block:: console
shell> iocage create --short --template ansible_client --count 3 bpf=1 dhcp=1 vnet=1
1c11de2d successfully created!
9d94cc9e successfully created!
052b9557 successfully created!
The names are random. Start the jails:
.. code-block:: console
shell> iocage start ALL
No default gateway found for ipv6.
* Starting 052b9557
+ Started OK
+ Using devfs_ruleset: 1000 (iocage generated default)
+ Configuring VNET OK
+ Using IP options: vnet
+ Starting services OK
+ Executing poststart OK
+ DHCP Address: 10.1.0.137/24
No default gateway found for ipv6.
* Starting 1c11de2d
+ Started OK
+ Using devfs_ruleset: 1001 (iocage generated default)
+ Configuring VNET OK
+ Using IP options: vnet
+ Starting services OK
+ Executing poststart OK
+ DHCP Address: 10.1.0.146/24
No default gateway found for ipv6.
* Starting 9d94cc9e
+ Started OK
+ Using devfs_ruleset: 1002 (iocage generated default)
+ Configuring VNET OK
+ Using IP options: vnet
+ Starting services OK
+ Executing poststart OK
+ DHCP Address: 10.1.0.115/24
Please convert back to a jail before trying to start ansible_client
List the jails:
.. code-block:: console
shell> iocage list -l
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+=====+==========+======+=======+======+=================+====================+=====+================+==========+
| 207 | 052b9557 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.137 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 208 | 1c11de2d | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.146 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 209 | 9d94cc9e | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.115 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
Set notes. The tag *alias* will be used to create inventory aliases:
.. code-block:: console
shell> iocage set notes="vmm=iocage_02 project=foo alias=srv_1" 052b9557
notes: none -> vmm=iocage_02 project=foo alias=srv_1
shell> iocage set notes="vmm=iocage_02 project=foo alias=srv_2" 1c11de2d
notes: none -> vmm=iocage_02 project=foo alias=srv_2
shell> iocage set notes="vmm=iocage_02 project=bar alias=srv_3" 9d94cc9e
notes: none -> vmm=iocage_02 project=bar alias=srv_3
Update the inventory configuration. Set the option
:ansopt:`community.general.iocage#inventory:inventory_hostname_tag` to :ansval:`alias`. This tag keeps the
value of the alias. The option :ansopt:`community.general.iocage#inventory:get_properties` must be
enabled. For example, ``hosts/02_iocage.yml`` contains:
.. code-block:: yaml
plugin: community.general.iocage
host: 10.1.0.73
user: admin
get_properties: true
inventory_hostname_tag: alias
hooks_results:
- /var/db/dhclient-hook.address.epair0b
compose:
ansible_host: (iocage_hooks.0 == '-') | ternary(iocage_ip4, iocage_hooks.0)
iocage_tags: dict(iocage_properties.notes | split | map('split', '='))
keyed_groups:
- prefix: vmm
key: iocage_tags.vmm
- prefix: project
key: iocage_tags.project
Display tags and groups. Create a playbook ``pb-test-groups.yml`` with the following content:
.. code-block:: yaml+jinja
- hosts: all
remote_user: admin
vars:
ansible_python_interpreter: auto_silent
tasks:
- debug:
var: iocage_tags
- debug:
msg: |
{% for group in groups %}
{{ group }}: {{ groups[group] }}
{% endfor %}
run_once: true
Run the playbook:
.. code-block:: console
shell> ansible-playbook -i hosts/02_iocage.yml pb-test-groups.yml
PLAY [all] **********************************************************************************************************
TASK [debug] ********************************************************************************************************
ok: [srv_1] =>
iocage_tags:
alias: srv_1
project: foo
vmm: iocage_02
ok: [srv_2] =>
iocage_tags:
alias: srv_2
project: foo
vmm: iocage_02
ok: [srv_3] =>
iocage_tags:
alias: srv_3
project: bar
vmm: iocage_02
TASK [debug] ********************************************************************************************************
ok: [srv_1] =>
msg: |-
all: ['srv_1', 'srv_2', 'srv_3']
ungrouped: []
vmm_iocage_02: ['srv_1', 'srv_2', 'srv_3']
project_foo: ['srv_1', 'srv_2']
project_bar: ['srv_3']
PLAY RECAP **********************************************************************************************************
srv_1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
srv_2 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
srv_3 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

View File

@@ -1,128 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory.guide_iocage_inventory_basics:
Basics
------
As root at the iocage host, create three VNET jails with a DHCP interface from the template
*ansible_client*:
.. code-block:: console
shell> iocage create --template ansible_client --name srv_1 bpf=1 dhcp=1 vnet=1
srv_1 successfully created!
shell> iocage create --template ansible_client --name srv_2 bpf=1 dhcp=1 vnet=1
srv_2 successfully created!
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>`_.
As admin at the controller, list the jails:
.. code-block:: console
shell> ssh admin@10.1.0.73 iocage list -l
+------+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+======+=======+======+=======+======+=================+====================+=====+================+==========+
| None | srv_1 | off | down | jail | 14.2-RELEASE-p3 | DHCP (not running) | - | ansible_client | no |
+------+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| None | srv_2 | off | down | jail | 14.2-RELEASE-p3 | DHCP (not running) | - | ansible_client | no |
+------+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| None | srv_3 | off | down | jail | 14.2-RELEASE-p3 | DHCP (not running) | - | ansible_client | no |
+------+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
Create the inventory file ``hosts/02_iocage.yml``
.. code-block:: yaml
plugin: community.general.iocage
host: 10.1.0.73
user: admin
Display the inventory:
.. code-block:: console
shell> ansible-inventory -i hosts/02_iocage.yml --list --yaml
all:
children:
ungrouped:
hosts:
srv_1:
iocage_basejail: 'no'
iocage_boot: 'off'
iocage_ip4: '-'
iocage_ip4_dict:
ip4: []
msg: DHCP (not running)
iocage_ip6: '-'
iocage_jid: None
iocage_release: 14.2-RELEASE-p3
iocage_state: down
iocage_template: ansible_client
iocage_type: jail
srv_2:
iocage_basejail: 'no'
iocage_boot: 'off'
iocage_ip4: '-'
iocage_ip4_dict:
ip4: []
msg: DHCP (not running)
iocage_ip6: '-'
iocage_jid: None
iocage_release: 14.2-RELEASE-p3
iocage_state: down
iocage_template: ansible_client
iocage_type: jail
srv_3:
iocage_basejail: 'no'
iocage_boot: 'off'
iocage_ip4: '-'
iocage_ip4_dict:
ip4: []
msg: DHCP (not running)
iocage_ip6: '-'
iocage_jid: None
iocage_release: 14.2-RELEASE-p3
iocage_state: down
iocage_template: ansible_client
iocage_type: jail
Optionally, create shared IP jails:
.. code-block:: console
shell> iocage create --template ansible_client --name srv_1 ip4_addr="em0|10.1.0.101/24"
srv_1 successfully created!
shell> iocage create --template ansible_client --name srv_2 ip4_addr="em0|10.1.0.102/24"
srv_2 successfully created!
shell> iocage create --template ansible_client --name srv_3 ip4_addr="em0|10.1.0.103/24"
srv_3 successfully created!
shell> iocage list -l
+------+-------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+======+=======+======+=======+======+=================+===================+=====+================+==========+
| None | srv_1 | off | down | jail | 14.2-RELEASE-p3 | em0|10.1.0.101/24 | - | ansible_client | no |
+------+-------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
| None | srv_2 | off | down | jail | 14.2-RELEASE-p3 | em0|10.1.0.102/24 | - | ansible_client | no |
+------+-------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
| 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>`_
If iocage needs environment variable(s), use the option :ansopt:`community.general.iocage#inventory:env`. For example,
.. code-block:: yaml
plugin: community.general.iocage
host: 10.1.0.73
user: admin
env:
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1

View File

@@ -1,175 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory.guide_iocage_inventory_dhcp:
DHCP
----
As root at the iocage host, start the jails:
.. code-block:: console
shell> iocage start ALL
No default gateway found for ipv6.
* Starting srv_1
+ Started OK
+ Using devfs_ruleset: 1000 (iocage generated default)
+ Configuring VNET OK
+ Using IP options: vnet
+ Starting services OK
+ Executing poststart OK
+ DHCP Address: 10.1.0.183/24
No default gateway found for ipv6.
* Starting srv_2
+ Started OK
+ Using devfs_ruleset: 1001 (iocage generated default)
+ Configuring VNET OK
+ Using IP options: vnet
+ Starting services OK
+ Executing poststart OK
+ DHCP Address: 10.1.0.204/24
No default gateway found for ipv6.
* Starting srv_3
+ Started OK
+ Using devfs_ruleset: 1002 (iocage generated default)
+ Configuring VNET OK
+ Using IP options: vnet
+ Starting services OK
+ Executing poststart OK
+ DHCP Address: 10.1.0.169/24
Please convert back to a jail before trying to start ansible_client
List the jails:
.. code-block:: console
shell> iocage list -l
+-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+=====+=======+======+=======+======+=================+====================+=====+================+==========+
| 204 | srv_1 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.183 | - | ansible_client | no |
+-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 205 | srv_2 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.204 | - | ansible_client | no |
+-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 206 | srv_3 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.169 | - | ansible_client | no |
+-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
As admin at the controller, list the jails. The IP4 tab says "... address requires root":
.. code-block:: console
shell> ssh admin@10.1.0.73 iocage list -l
+-----+-------+------+-------+------+-----------------+-----------------------------------------+-----+----------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+=====+=======+======+=======+======+=================+=========================================+=====+================+==========+
| 204 | srv_1 | off | up | jail | 14.2-RELEASE-p3 | DHCP (running -- address requires root) | - | ansible_client | no |
+-----+-------+------+-------+------+-----------------+-----------------------------------------+-----+----------------+----------+
| 205 | srv_2 | off | up | jail | 14.2-RELEASE-p3 | DHCP (running -- address requires root) | - | ansible_client | no |
+-----+-------+------+-------+------+-----------------+-----------------------------------------+-----+----------------+----------+
| 206 | srv_3 | off | up | jail | 14.2-RELEASE-p3 | DHCP (running -- address requires root) | - | ansible_client | no |
+-----+-------+------+-------+------+-----------------+-----------------------------------------+-----+----------------+----------+
Use sudo if enabled:
.. code-block:: console
shell> ssh admin@10.1.0.73 sudo iocage list -l
+-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+=====+=======+======+=======+======+=================+====================+=====+================+==========+
| 204 | srv_1 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.183 | - | ansible_client | no |
+-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 205 | srv_2 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.204 | - | ansible_client | no |
+-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 206 | srv_3 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.169 | - | ansible_client | no |
+-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
Create the inventory file ``hosts/02_iocage.yml``. Use the option
:ansopt:`community.general.iocage#inventory:sudo`:
.. code-block:: yaml
plugin: community.general.iocage
host: 10.1.0.73
user: admin
sudo: true
Display the inventory:
.. code-block:: console
shell> ansible-inventory -i hosts/02_iocage.yml --list --yaml
all:
children:
ungrouped:
hosts:
srv_1:
iocage_basejail: 'no'
iocage_boot: 'off'
iocage_ip4: 10.1.0.183
iocage_ip4_dict:
ip4:
- ifc: epair0b
ip: 10.1.0.183
mask: '-'
msg: ''
iocage_ip6: '-'
iocage_jid: '204'
iocage_release: 14.2-RELEASE-p3
iocage_state: up
iocage_template: ansible_client
iocage_type: jail
srv_2:
iocage_basejail: 'no'
iocage_boot: 'off'
iocage_ip4: 10.1.0.204
iocage_ip4_dict:
ip4:
- ifc: epair0b
ip: 10.1.0.204
mask: '-'
msg: ''
iocage_ip6: '-'
iocage_jid: '205'
iocage_release: 14.2-RELEASE-p3
iocage_state: up
iocage_template: ansible_client
iocage_type: jail
srv_3:
iocage_basejail: 'no'
iocage_boot: 'off'
iocage_ip4: 10.1.0.169
iocage_ip4_dict:
ip4:
- ifc: epair0b
ip: 10.1.0.169
mask: '-'
msg: ''
iocage_ip6: '-'
iocage_jid: '206'
iocage_release: 14.2-RELEASE-p3
iocage_state: up
iocage_template: ansible_client
iocage_type: jail
Note: If the option :ansopt:`community.general.iocage#inventory:env` is used and :ansopt:`community.general.iocage#inventory:sudo` is enabled, enable also :ansopt:`community.general.iocage#inventory:sudo_preserve_env`. For example,
.. code-block:: yaml
plugin: community.general.iocage
host: 10.1.0.73
user: admin
env:
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
sudo: true
sudo_preserve_env: true
In this case, make sure the sudo tag ``SETENV`` is used:
.. code-block:: console
shell> ssh admin@10.1.0.73 sudo cat /usr/local/etc/sudoers | grep admin
admin ALL=(ALL) NOPASSWD:SETENV: ALL

View File

@@ -1,187 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory.guide_iocage_inventory_hooks:
Hooks
-----
The iocage utility internally opens a console to a jail to get the jail's DHCP address. This
requires root. If you run the command ``iocage list -l`` as unprivileged user, you'll see the
message ``DHCP (running -- address requires root)``. If you are not granted the root privilege, use
``/etc/dhclient-exit-hooks``. For example, in the jail *srv_1*, create the file
``/zroot/iocage/jails/srv_1/root/etc/dhclient-exit-hooks``
.. code-block:: shell
case "$reason" in
"BOUND"|"REBIND"|"REBOOT"|"RENEW")
echo $new_ip_address > /var/db/dhclient-hook.address.$interface
;;
esac
where ``/zroot/iocage`` is the activated pool.
.. code-block:: console
shell> zfs list | grep /zroot/iocage
zroot/iocage 4.69G 446G 5.08M /zroot/iocage
zroot/iocage/download 927M 446G 384K /zroot/iocage/download
zroot/iocage/download/14.1-RELEASE 465M 446G 465M /zroot/iocage/download/14.1-RELEASE
zroot/iocage/download/14.2-RELEASE 462M 446G 462M /zroot/iocage/download/14.2-RELEASE
zroot/iocage/images 384K 446G 384K /zroot/iocage/images
zroot/iocage/jails 189M 446G 480K /zroot/iocage/jails
zroot/iocage/jails/srv_1 62.9M 446G 464K /zroot/iocage/jails/srv_1
zroot/iocage/jails/srv_1/root 62.4M 446G 3.53G /zroot/iocage/jails/srv_1/root
zroot/iocage/jails/srv_2 62.8M 446G 464K /zroot/iocage/jails/srv_2
zroot/iocage/jails/srv_2/root 62.3M 446G 3.53G /zroot/iocage/jails/srv_2/root
zroot/iocage/jails/srv_3 62.8M 446G 464K /zroot/iocage/jails/srv_3
zroot/iocage/jails/srv_3/root 62.3M 446G 3.53G /zroot/iocage/jails/srv_3/root
zroot/iocage/log 688K 446G 688K /zroot/iocage/log
zroot/iocage/releases 2.93G 446G 384K /zroot/iocage/releases
zroot/iocage/releases/14.2-RELEASE 2.93G 446G 384K /zroot/iocage/releases/14.2-RELEASE
zroot/iocage/releases/14.2-RELEASE/root 2.93G 446G 2.88G /zroot/iocage/releases/14.2-RELEASE/root
zroot/iocage/templates 682M 446G 416K /zroot/iocage/templates
zroot/iocage/templates/ansible_client 681M 446G 432K /zroot/iocage/templates/ansible_client
zroot/iocage/templates/ansible_client/root 681M 446G 3.53G /zroot/iocage/templates/ansible_client/root
See: `man dhclient-script <https://man.freebsd.org/cgi/man.cgi?dhclient-script>`_
Create the inventory configuration. Use the option :ansopt:`community.general.iocage#inventory:hooks_results` instead of :ansopt:`community.general.iocage#inventory:sudo`:
.. code-block:: console
shell> cat hosts/02_iocage.yml
.. code-block:: yaml
plugin: community.general.iocage
host: 10.1.0.73
user: admin
hooks_results:
- /var/db/dhclient-hook.address.epair0b
.. note::
The option :ansopt:`community.general.iocage#inventory:hooks_results` expects the poolname to be mounted to ``/poolname``. For example, if you
activate the pool iocage, this plugin expects to find the :ansopt:`community.general.iocage#inventory:hooks_results` items in the path
/iocage/iocage/jails/<name>/root. If you mount the poolname to a different path, the easiest
remedy is to create a symlink.
As admin at the controller, display the inventory:
.. code-block:: console
shell> ansible-inventory -i hosts/02_iocage.yml --list --yaml
all:
children:
ungrouped:
hosts:
srv_1:
iocage_basejail: 'no'
iocage_boot: 'off'
iocage_hooks:
- 10.1.0.183
iocage_ip4: '-'
iocage_ip4_dict:
ip4: []
msg: DHCP (running -- address requires root)
iocage_ip6: '-'
iocage_jid: '204'
iocage_release: 14.2-RELEASE-p3
iocage_state: up
iocage_template: ansible_client
iocage_type: jail
srv_2:
iocage_basejail: 'no'
iocage_boot: 'off'
iocage_hooks:
- 10.1.0.204
iocage_ip4: '-'
iocage_ip4_dict:
ip4: []
msg: DHCP (running -- address requires root)
iocage_ip6: '-'
iocage_jid: '205'
iocage_release: 14.2-RELEASE-p3
iocage_state: up
iocage_template: ansible_client
iocage_type: jail
srv_3:
iocage_basejail: 'no'
iocage_boot: 'off'
iocage_hooks:
- 10.1.0.169
iocage_ip4: '-'
iocage_ip4_dict:
ip4: []
msg: DHCP (running -- address requires root)
iocage_ip6: '-'
iocage_jid: '206'
iocage_release: 14.2-RELEASE-p3
iocage_state: up
iocage_template: ansible_client
iocage_type: jail
Compose the variable ``ansible_host``. For example, ``hosts/02_iocage.yml`` could look like:
.. code-block:: yaml+jinja
plugin: community.general.iocage
host: 10.1.0.73
user: admin
hooks_results:
- /var/db/dhclient-hook.address.epair0b
compose:
ansible_host: (iocage_hooks.0 == '-') | ternary(iocage_ip4, iocage_hooks.0)
Test the jails. Create a playbook ``pb-test-uname.yml``:
.. code-block:: yaml
- hosts: all
remote_user: admin
vars:
ansible_python_interpreter: auto_silent
tasks:
- command: uname -a
register: out
- debug:
var: out.stdout
See: :ref:`working_with_bsd`
Run the playbook:
.. code-block:: console
shell> ansible-playbook -i hosts/02_iocage.yml pb-test-uname.yml
PLAY [all] **********************************************************************************************************
TASK [command] ******************************************************************************************************
changed: [srv_3]
changed: [srv_1]
changed: [srv_2]
TASK [debug] ********************************************************************************************************
ok: [srv_1] =>
out.stdout: FreeBSD srv-1 14.2-RELEASE-p1 FreeBSD 14.2-RELEASE-p1 GENERIC amd64
ok: [srv_3] =>
out.stdout: FreeBSD srv-3 14.2-RELEASE-p1 FreeBSD 14.2-RELEASE-p1 GENERIC amd64
ok: [srv_2] =>
out.stdout: FreeBSD srv-2 14.2-RELEASE-p1 FreeBSD 14.2-RELEASE-p1 GENERIC amd64
PLAY RECAP **********************************************************************************************************
srv_1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
srv_2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
srv_3 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Note: This playbook and the inventory configuration works also for the *Shared IP Jails*.

View File

@@ -1,201 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory.guide_iocage_inventory_properties:
Properties
----------
Optionally, in the inventory file ``hosts/02_iocage.yml``, get the iocage properties. Enable
:ansopt:`community.general.iocage#inventory:get_properties`:
.. code-block:: yaml+jinja
plugin: community.general.iocage
host: 10.1.0.73
user: admin
get_properties: true
hooks_results:
- /var/db/dhclient-hook.address.epair0b
compose:
ansible_host: (iocage_hooks.0 == '-') | ternary(iocage_ip4, iocage_hooks.0)
Display the properties. Create the playbook ``pb-test-properties.yml``:
.. code-block:: yaml
- hosts: all
remote_user: admin
vars:
ansible_python_interpreter: auto_silent
tasks:
- debug:
var: iocage_properties
Run the playbook. Limit the inventory to *srv_3*:
.. code-block:: console
shell> ansible-playbook -i hosts/02_iocage.yml -l srv_3 pb-test-properties.yml
PLAY [all] **********************************************************************************************************
TASK [debug] ********************************************************************************************************
ok: [srv_3] =>
iocage_properties:
CONFIG_VERSION: '33'
allow_chflags: '0'
allow_mlock: '0'
allow_mount: '1'
allow_mount_devfs: '0'
allow_mount_fdescfs: '0'
allow_mount_fusefs: '0'
allow_mount_linprocfs: '0'
allow_mount_linsysfs: '0'
allow_mount_nullfs: '0'
allow_mount_procfs: '0'
allow_mount_tmpfs: '0'
allow_mount_zfs: '0'
allow_nfsd: '0'
allow_quotas: '0'
allow_raw_sockets: '0'
allow_set_hostname: '1'
allow_socket_af: '0'
allow_sysvipc: '0'
allow_tun: '0'
allow_vmm: '0'
assign_localhost: '0'
available: readonly
basejail: '0'
boot: '0'
bpf: '1'
children_max: '0'
cloned_release: 14.2-RELEASE
comment: none
compression: 'on'
compressratio: readonly
coredumpsize: 'off'
count: '1'
cpuset: 'off'
cputime: 'off'
datasize: 'off'
dedup: 'off'
defaultrouter: auto
defaultrouter6: auto
depends: none
devfs_ruleset: '4'
dhcp: '1'
enforce_statfs: '2'
exec_clean: '1'
exec_created: /usr/bin/true
exec_fib: '0'
exec_jail_user: root
exec_poststart: /usr/bin/true
exec_poststop: /usr/bin/true
exec_prestart: /usr/bin/true
exec_prestop: /usr/bin/true
exec_start: /bin/sh /etc/rc
exec_stop: /bin/sh /etc/rc.shutdown
exec_system_jail_user: '0'
exec_system_user: root
exec_timeout: '60'
host_domainname: none
host_hostname: srv-3
host_hostuuid: srv_3
host_time: '1'
hostid: ea2ba7d1-4fcd-f13f-82e4-8b32c0a03403
hostid_strict_check: '0'
interfaces: vnet0:bridge0
ip4: new
ip4_addr: none
ip4_saddrsel: '1'
ip6: new
ip6_addr: none
ip6_saddrsel: '1'
ip_hostname: '0'
jail_zfs: '0'
jail_zfs_dataset: iocage/jails/srv_3/data
jail_zfs_mountpoint: none
last_started: '2025-06-11 04:29:23'
localhost_ip: none
login_flags: -f root
mac_prefix: 02a098
maxproc: 'off'
memorylocked: 'off'
memoryuse: 'off'
min_dyn_devfs_ruleset: '1000'
mount_devfs: '1'
mount_fdescfs: '1'
mount_linprocfs: '0'
mount_procfs: '0'
mountpoint: readonly
msgqqueued: 'off'
msgqsize: 'off'
nat: '0'
nat_backend: ipfw
nat_forwards: none
nat_interface: none
nat_prefix: '172.16'
nmsgq: 'off'
notes: none
nsem: 'off'
nsemop: 'off'
nshm: 'off'
nthr: 'off'
openfiles: 'off'
origin: readonly
owner: root
pcpu: 'off'
plugin_name: none
plugin_repository: none
priority: '99'
pseudoterminals: 'off'
quota: none
readbps: 'off'
readiops: 'off'
release: 14.2-RELEASE-p3
reservation: none
resolver: /etc/resolv.conf
rlimits: 'off'
rtsold: '0'
securelevel: '2'
shmsize: 'off'
source_template: ansible_client
stacksize: 'off'
state: up
stop_timeout: '30'
swapuse: 'off'
sync_state: none
sync_target: none
sync_tgt_zpool: none
sysvmsg: new
sysvsem: new
sysvshm: new
template: '0'
type: jail
used: readonly
vmemoryuse: 'off'
vnet: '1'
vnet0_mac: 02a0983da05d 02a0983da05e
vnet0_mtu: auto
vnet1_mac: none
vnet1_mtu: auto
vnet2_mac: none
vnet2_mtu: auto
vnet3_mac: none
vnet3_mtu: auto
vnet_default_interface: auto
vnet_default_mtu: '1500'
vnet_interfaces: none
wallclock: 'off'
writebps: 'off'
writeiops: 'off'
PLAY RECAP **********************************************************************************************************
srv_3 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

View File

@@ -1,117 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory.guide_iocage_inventory_tags:
Tags
----
Quoting `man iocage <https://man.freebsd.org/cgi/man.cgi?query=iocage>`_
.. code-block:: text
PROPERTIES
...
notes="any string"
Custom notes for miscellaneous tagging.
Default: none
Source: local
We will use the format `notes="tag1=value1 tag2=value2 ..."`.
.. note::
The iocage tags have nothing to do with the :ref:`tags`.
As root at the iocage host, set notes. For example,
.. code-block:: console
shell> iocage set notes="vmm=iocage_02 project=foo" srv_1
notes: none -> vmm=iocage_02 project=foo
shell> iocage set notes="vmm=iocage_02 project=foo" srv_2
notes: none -> vmm=iocage_02 project=foo
shell> iocage set notes="vmm=iocage_02 project=bar" srv_3
notes: none -> vmm=iocage_02 project=bar
Update the inventory configuration. Compose a dictionary *iocage_tags* and create groups. The option
:ansopt:`community.general.iocage#inventory:get_properties` must be enabled.
For example, ``hosts/02_iocage.yml`` could look like:
.. code-block:: yaml
plugin: community.general.iocage
host: 10.1.0.73
user: admin
get_properties: true
hooks_results:
- /var/db/dhclient-hook.address.epair0b
compose:
ansible_host: (iocage_hooks.0 == '-') | ternary(iocage_ip4, iocage_hooks.0)
iocage_tags: dict(iocage_properties.notes | split | map('split', '='))
keyed_groups:
- prefix: vmm
key: iocage_tags.vmm
- prefix: project
key: iocage_tags.project
Display tags and groups. Create a playbook ``pb-test-groups.yml``:
.. code-block:: yaml+jinja
- hosts: all
remote_user: admin
vars:
ansible_python_interpreter: auto_silent
tasks:
- debug:
var: iocage_tags
- debug:
msg: |
{% for group in groups %}
{{ group }}: {{ groups[group] }}
{% endfor %}
run_once: true
Run the playbook:
.. code-block:: console
shell> ansible-playbook -i hosts/02_iocage.yml pb-test-groups.yml
PLAY [all] **********************************************************************************************************
TASK [debug] ********************************************************************************************************
ok: [srv_1] =>
iocage_tags:
project: foo
vmm: iocage_02
ok: [srv_2] =>
iocage_tags:
project: foo
vmm: iocage_02
ok: [srv_3] =>
iocage_tags:
project: bar
vmm: iocage_02
TASK [debug] ********************************************************************************************************
ok: [srv_1] =>
msg: |-
all: ['srv_1', 'srv_2', 'srv_3']
ungrouped: []
vmm_iocage_02: ['srv_1', 'srv_2', 'srv_3']
project_foo: ['srv_1', 'srv_2']
project_bar: ['srv_3']
PLAY RECAP **********************************************************************************************************
srv_1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
srv_2 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
srv_3 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

View File

@@ -1,559 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_modulehelper:
Module Helper guide
===================
Introduction
^^^^^^^^^^^^
Writing a module for Ansible is largely described in existing documentation.
However, a good part of that is boilerplate code that needs to be repeated every single time.
That is where ``ModuleHelper`` comes to assistance: a lot of that boilerplate code is done.
.. _ansible_collections.community.general.docsite.guide_modulehelper.quickstart:
Quickstart
""""""""""
See the `example from Ansible documentation <https://docs.ansible.com/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:
.. code-block:: python
from ansible_collections.community.general.plugins.module_utils.module_helper import ModuleHelper
class MyTest(ModuleHelper):
module = dict(
argument_spec=dict(
name=dict(type='str', required=True),
new=dict(type='bool', required=False, default=False),
),
supports_check_mode=True,
)
def __run__(self):
self.vars.original_message = ''
self.vars.message = ''
if self.check_mode:
return
self.vars.original_message = self.vars.name
self.vars.message = 'goodbye'
self.changed = self.vars['new']
if self.vars.name == "fail me":
self.do_raise("You requested this to fail")
def main():
MyTest.execute()
if __name__ == '__main__':
main()
Module Helper
^^^^^^^^^^^^^
Introduction
""""""""""""
``ModuleHelper`` is a wrapper around the standard ``AnsibleModule``, providing extra features and conveniences.
The basic structure of a module using ``ModuleHelper`` is as shown in the
:ref:`ansible_collections.community.general.docsite.guide_modulehelper.quickstart`
section above, but there are more elements that will take part in it.
.. code-block:: python
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 = ()
change_params = ()
diff_params = ()
facts_params = ()
facts_name = None # used if generating facts, from parameters or otherwise
module = dict(
argument_spec=dict(...),
# ...
)
After importing the ``ModuleHelper`` class, you need to declare your own class extending it.
.. seealso::
There is a variation called ``StateModuleHelper``, which builds on top of the features provided by MH.
See :ref:`ansible_collections.community.general.docsite.guide_modulehelper.statemh` below for more details.
The easiest way of specifying the module is to create the class variable ``module`` with a dictionary
containing the exact arguments that would be passed as parameters to ``AnsibleModule``.
If you prefer to create the ``AnsibleModule`` object yourself, just assign it to the ``module`` class variable.
MH also accepts a parameter ``module`` in its constructor, if that parameter is used used,
then it will override the class variable. The parameter can either be ``dict`` or ``AnsibleModule`` as well.
Beyond the definition of the module, there are other variables that can be used to control aspects
of MH's behavior. These variables should be set at the very beginning of the class, and their semantics are
explained through this document.
The main logic of MH happens in the ``ModuleHelper.run()`` method, which looks like:
.. code-block:: python
@module_fails_on_exception
def run(self):
self.__init_module__()
self.__run__()
self.__quit_module__()
output = self.output
if 'failed' not in output:
output['failed'] = False
self.module.exit_json(changed=self.has_changed(), **output)
The method ``ModuleHelper.__run__()`` must be implemented by the module and most
modules will be able to perform their actions implementing only that MH method.
However, in some cases, you might want to execute actions before or after the main tasks, in which cases
you should implement ``ModuleHelper.__init_module__()`` and ``ModuleHelper.__quit_module__()`` respectively.
Note that the output comes from ``self.output``, which is a ``@property`` method.
By default, that property will collect all the variables that are marked for output and return them in a dictionary with their values.
Moreover, the default ``self.output`` will also handle Ansible ``facts`` and *diff mode*.
Also note the changed status comes from ``self.has_changed()``, which is usually calculated from variables that are marked
to track changes in their content.
.. seealso::
More details in sections
:ref:`ansible_collections.community.general.docsite.guide_modulehelper.paramvaroutput` and
:ref:`ansible_collections.community.general.docsite.guide_modulehelper.changes` below.
.. seealso::
See more about the decorator
:ref:`ansible_collections.community.general.docsite.guide_modulehelper.modulefailsdeco` below.
Another way to write the example from the
:ref:`ansible_collections.community.general.docsite.guide_modulehelper.quickstart`
would be:
.. code-block:: python
def __init_module__(self):
self.vars.original_message = ''
self.vars.message = ''
def __run__(self):
if self.check_mode:
return
self.vars.original_message = self.vars.name
self.vars.message = 'goodbye'
self.changed = self.vars['new']
def __quit_module__(self):
if self.vars.name == "fail me":
self.do_raise("You requested this to fail")
Notice that there are no calls to ``module.exit_json()`` nor ``module.fail_json()``: if the module fails, raise an exception.
You can use the convenience method ``self.do_raise()`` or raise the exception as usual in Python to do that.
If no exception is raised, then the module succeeds.
.. seealso::
See more about exceptions in section
:ref:`ansible_collections.community.general.docsite.guide_modulehelper.exceptions` below.
Ansible modules must have a ``main()`` function and the usual test for ``'__main__'``. When using MH that should look like:
.. code-block:: python
def main():
MyTest.execute()
if __name__ == '__main__':
main()
The class method ``execute()`` is nothing more than a convenience shorcut for:
.. code-block:: python
m = MyTest()
m.run()
Optionally, an ``AnsibleModule`` may be passed as parameter to ``execute()``.
.. _ansible_collections.community.general.docsite.guide_modulehelper.paramvaroutput:
Parameters, variables, and output
"""""""""""""""""""""""""""""""""
All the parameters automatically become variables in the ``self.vars`` attribute, which is of the ``VarDict`` type.
By using ``self.vars``, you get a central mechanism to access the parameters but also to expose variables as return values of the module.
As described in :ref:`ansible_collections.community.general.docsite.guide_vardict`, variables in ``VarDict`` have metadata associated to them.
One of the attributes in that metadata marks the variable for output, and MH makes use of that to generate the module's return values.
.. note::
The ``VarDict`` class was introduced in community.general 7.1.0, as part of ``ModuleHelper`` itself.
However, it has been factored out to become an utility on its own, described in :ref:`ansible_collections.community.general.docsite.guide_vardict`,
and the older implementation was removed in community.general 11.0.0.
Some code might still refer to the class variables ``use_old_vardict`` and ``mute_vardict_deprecation``, used for the transtition to the new
implementation but from community.general 11.0.0 onwards they are no longer used and can be safely removed from the code.
Contrary to new variables created in ``VarDict``, module parameters are not set for output by default.
If you want to include some module parameters in the output, list them in the ``output_params`` class variable.
.. code-block:: python
class MyTest(ModuleHelper):
output_params = ('state', 'name')
...
.. important::
The variable names listed in ``output_params`` **must be module parameters**, as in parameters listed in the module's ``argument_spec``.
Names not found in ``argument_spec`` are silently ignored.
Another neat feature provided by MH by using ``VarDict`` is the automatic tracking of changes when setting the metadata ``change=True``.
Again, to enable this feature for module parameters, you must list them in the ``change_params`` class variable.
.. code-block:: python
class MyTest(ModuleHelper):
# example from community.general.xfconf
change_params = ('value', )
...
.. important::
The variable names listed in ``change_params`` **must be module parameters**, as in parameters listed in the module's ``argument_spec``.
Names not found in ``argument_spec`` are silently ignored.
.. seealso::
See more about this in
:ref:`ansible_collections.community.general.docsite.guide_modulehelper.changes` below.
Similarly, if you want to use Ansible's diff mode, you can set the metadata ``diff=True`` and ``diff_params`` for module parameters.
With that, MH will automatically generate the diff output for variables that have changed.
.. code-block:: python
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)
.. important::
The variable names listed in ``diff_params`` **must be module parameters**, as in parameters listed in the module's ``argument_spec``.
Names not found in ``argument_spec`` are silently ignored.
Moreover, if a module is set to return *facts* instead of return values, then again use the metadata ``fact=True`` and ``fact_params`` for module parameters.
Additionally, you must specify ``facts_name``, as in:
.. code-block:: python
class VolumeFacts(ModuleHelper):
facts_name = 'volume_facts'
def __init_module__(self):
self.vars.set("volume", 123, fact=True)
That generates an Ansible fact like:
.. code-block:: yaml+jinja
- name: Obtain volume facts
some.collection.volume_facts:
# parameters
- name: Print volume facts
debug:
msg: Volume fact is {{ ansible_facts.volume_facts.volume }}
.. important::
The variable names listed in ``fact_params`` **must be module parameters**, as in parameters listed in the module's ``argument_spec``.
Names not found in ``argument_spec`` are silently ignored.
.. important::
If ``facts_name`` is not set, the module does not generate any facts.
.. _ansible_collections.community.general.docsite.guide_modulehelper.changes:
Handling changes
""""""""""""""""
In MH there are many ways to indicate change in the module execution. Here they are:
Tracking changes in variables
-----------------------------
As explained above, you can enable change tracking in any number of variables in ``self.vars``.
By the end of the module execution, if any of those variables has a value different then the first value assigned to them,
then that will be picked up by MH and signalled as changed at the module output.
See the example below to learn how you can enabled change tracking in variables:
.. code-block:: python
# using __init_module__() as example, it works the same in __run__() and __quit_module__()
def __init_module__(self):
# example from community.general.ansible_galaxy_install
self.vars.set("new_roles", {}, change=True)
# example of "hidden" variable used only to track change in a value from community.general.gconftool2
self.vars.set('_value', self.vars.previous_value, output=False, change=True)
# enable change-tracking without assigning value
self.vars.set_meta("new_roles", change=True)
# if you must forcibly set an initial value to the variable
self.vars.set_meta("new_roles", initial_value=[])
...
If the end value of any variable marked ``change`` is different from its initial value, then MH will return ``changed=True``.
Indicating changes with ``changed``
-----------------------------------
If you want to indicate change directly in the code, then use the ``self.changed`` property in MH.
Beware that this is a ``@property`` method in MH, with both a *getter* and a *setter*.
By default, that hidden field is set to ``False``.
Effective change
----------------
The effective outcome for the module is determined in the ``self.has_changed()`` method, and it consists of the logical *OR* operation
between ``self.changed`` and the change calculated from ``self.vars``.
.. _ansible_collections.community.general.docsite.guide_modulehelper.exceptions:
Exceptions
""""""""""
In MH, instead of calling ``module.fail_json()`` you can just raise an exception.
The output variables are collected the same way they would be for a successful execution.
However, you can set output variables specifically for that exception, if you so choose.
.. code-block:: python
from ansible_collections.community.general.plugins.module_utils.module_helper import ModuleHelperException
def __init_module__(self):
if not complex_validation():
self.do_raise("Validation failed!")
# Or passing output variables
awesomeness = calculate_awesomeness()
if awesomeness > 1000:
self.do_raise("Over awesome, I cannot handle it!", update_output={"awesomeness": awesomeness})
# which is just a convenience shortcut for
raise ModuleHelperException("...", update_output={...})
All exceptions derived from ``Exception`` are captured and translated into a ``fail_json()`` call.
However, if you do want to call ``self.module.fail_json()`` yourself it will work,
just keep in mind that there will be no automatic handling of output variables in that case.
Behind the curtains, all ``do_raise()`` does is to raise a ``ModuleHelperException``.
If you want to create specialized error handling for your code, the best way is to extend that clas and raise it when needed.
.. _ansible_collections.community.general.docsite.guide_modulehelper.statemh:
StateModuleHelper
^^^^^^^^^^^^^^^^^
Many modules use a parameter ``state`` that effectively controls the exact action performed by the module, such as
``state=present`` or ``state=absent`` for installing or removing packages.
By using ``StateModuleHelper`` you can make your code like the excerpt from the ``gconftool2`` below:
.. code-block:: python
from ansible_collections.community.general.plugins.module_utils.module_helper import StateModuleHelper
class GConftool(StateModuleHelper):
...
module = dict(
...
)
def __init_module__(self):
self.runner = gconftool2_runner(self.module, check_rc=True)
...
self.vars.set('previous_value', self._get(), fact=True)
self.vars.set('value_type', self.vars.value_type)
self.vars.set('_value', self.vars.previous_value, output=False, change=True)
self.vars.set_meta('value', initial_value=self.vars.previous_value)
self.vars.set('playbook_value', self.vars.value, fact=True)
...
def state_absent(self):
with self.runner("state key", output_process=self._make_process(False)) as ctx:
ctx.run()
self.vars.set('run_info', ctx.run_info, verbosity=4)
self.vars.set('new_value', None, fact=True)
self.vars._value = None
def state_present(self):
with self.runner("direct config_source value_type state key value", output_process=self._make_process(True)) as ctx:
ctx.run()
self.vars.set('run_info', ctx.run_info, verbosity=4)
self.vars.set('new_value', self._get(), fact=True)
self.vars._value = self.vars.new_value
Note that the method ``__run__()`` is implemented in ``StateModuleHelper``, all you need to implement are the methods ``state_<state_value>``.
In the example above, :ansplugin:`community.general.gconftool2#module` only has two states, ``present`` and ``absent``, thus, ``state_present()`` and ``state_absent()``.
If the controlling parameter is not called ``state``, like in :ansplugin:`community.general.jira#module` module, just let SMH know about it:
.. code-block:: python
class JIRA(StateModuleHelper):
state_param = 'operation'
def operation_create(self):
...
def operation_search(self):
...
Lastly, if the module is called with ``state=somevalue`` and the method ``state_somevalue``
is not implemented, SMH will resort to call a method called ``__state_fallback__()``.
By default, this method will raise a ``ValueError`` indicating the method was not found.
Naturally, you can override that method to write a default implementation, as in :ansplugin:`community.general.locale_gen#module`:
.. code-block:: python
def __state_fallback__(self):
if self.vars.state_tracking == self.vars.state:
return
if self.vars.ubuntu_mode:
self.apply_change_ubuntu(self.vars.state, self.vars.name)
else:
self.apply_change(self.vars.state, self.vars.name)
That module has only the states ``present`` and ``absent`` and the code for both is the one in the fallback method.
.. note::
The name of the fallback method **does not change** if you set a different value of ``state_param``.
Other Conveniences
^^^^^^^^^^^^^^^^^^
Delegations to AnsibleModule
""""""""""""""""""""""""""""
The MH properties and methods below are delegated as-is to the underlying ``AnsibleModule`` instance in ``self.module``:
- ``check_mode``
- ``get_bin_path()``
- ``warn()``
- ``deprecate()``
Additionally, MH will also delegate:
- ``diff_mode`` to ``self.module._diff``
- ``verbosity`` to ``self.module._verbosity``
Starting in community.general 10.3.0, MH will also delegate the method ``debug`` to ``self.module``.
If any existing module already has a ``debug`` attribute defined, a warning message will be generated,
requesting it to be renamed. Upon the release of community.general 12.0.0, the delegation will be
preemptive and will override any existing method or property in the subclasses.
Decorators
""""""""""
The following decorators should only be used within ``ModuleHelper`` class.
@cause_changes
--------------
This decorator will control whether the outcome of the method will cause the module to signal change in its output.
If the method completes without raising an exception it is considered to have succeeded, otherwise, it will have failed.
The decorator has a parameter ``when`` that accepts three different values: ``success``, ``failure``, and ``always``.
There are also two legacy parameters, ``on_success`` and ``on_failure``, that will be deprecated, so do not use them.
The value of ``changed`` in the module output will be set to ``True``:
- ``when="success"`` and the method completes without raising an exception.
- ``when="failure"`` and the method raises an exception.
- ``when="always"``, regardless of the method raising an exception or not.
.. code-block:: python
from ansible_collections.community.general.plugins.module_utils.module_helper import cause_changes
# adapted excerpt from the community.general.jira module
class JIRA(StateModuleHelper):
@cause_changes(when="success")
def operation_create(self):
...
If ``when`` has a different value or no parameters are specificied, the decorator will have no effect whatsoever.
.. _ansible_collections.community.general.docsite.guide_modulehelper.modulefailsdeco:
@module_fails_on_exception
--------------------------
In a method using this decorator, if an exception is raised, the text message of that exception will be captured
by the decorator and used to call ``self.module.fail_json()``.
In most of the cases there will be no need to use this decorator, because ``ModuleHelper.run()`` already uses it.
@check_mode_skip
----------------
If the module is running in check mode, this decorator will prevent the method from executing.
The return value in that case is ``None``.
.. code-block:: python
from ansible_collections.community.general.plugins.module_utils.module_helper import check_mode_skip
# adapted excerpt from the community.general.locale_gen module
class LocaleGen(StateModuleHelper):
@check_mode_skip
def __state_fallback__(self):
...
@check_mode_skip_returns
------------------------
This decorator is similar to the previous one, but the developer can control the return value for the method when running in check mode.
It is used with one of two parameters. One is ``callable`` and the return value in check mode will be ``callable(self, *args, **kwargs)``,
where ``self`` is the ``ModuleHelper`` instance and the union of ``args`` and ``kwargs`` will contain all the parameters passed to the method.
The other option is to use the parameter ``value``, in which case the method will return ``value`` when in check mode.
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>`_
- :ref:`ansible_collections.community.general.docsite.guide_vardict`
.. versionadded:: 3.1.0

View File

@@ -1,49 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_online:
****************
Online.net Guide
****************
Introduction
============
Online is a French hosting company mainly known for providing bare-metal servers named Dedibox.
Check it out: `https://www.online.net/en <https://www.online.net/en>`_
Dynamic inventory for Online resources
--------------------------------------
Ansible has a dynamic inventory plugin that can list your resources.
1. Create a YAML configuration such as ``online_inventory.yml`` with this content:
.. code-block:: yaml
plugin: community.general.online
2. Set your ``ONLINE_TOKEN`` environment variable with your token.
You need to open an account and log into it before you can get a token.
You can find your token at the following page: `https://console.online.net/en/api/access <https://console.online.net/en/api/access>`_
3. You can test that your inventory is working by running:
.. code-block:: console
$ ansible-inventory -v -i online_inventory.yml --list
4. Now you can run your playbook or any other module with this inventory:
.. code-block:: ansible-output
$ ansible all -i online_inventory.yml -m ping
sd-96735 | SUCCESS => {
"changed": false,
"ping": "pong"
}

View File

@@ -1,214 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_packet:
**********************************
Packet.net Guide
**********************************
Introduction
============
`Packet.net <https://packet.net>`_ is a bare metal infrastructure host that is supported by the community.general collection through six cloud modules. The six modules are:
- :ansplugin:`community.general.packet_device#module`: manages servers on Packet. You can use this module to create, restart and delete devices.
- :ansplugin:`community.general.packet_ip_subnet#module`: assign IP subnet to a bare metal server
- :ansplugin:`community.general.packet_project#module`: create/delete a project in Packet host
- :ansplugin:`community.general.packet_sshkey#module`: adds a public SSH key from file or value to the Packet infrastructure. Every subsequently-created device will have this public key installed in .ssh/authorized_keys.
- :ansplugin:`community.general.packet_volume#module`: create/delete a volume in Packet host
- :ansplugin:`community.general.packet_volume_attachment#module`: attach/detach a volume to a device in the Packet host
Note, this guide assumes you are familiar with Ansible and how it works. If you are not, have a look at their :ref:`docs <ansible_documentation>` before getting started.
Requirements
============
The Packet modules connect to the Packet API using the `packet-python package <https://pypi.org/project/packet-python/>`_. You can install it with pip:
.. code-block:: console
$ pip install packet-python
In order to check the state of devices created by Ansible on Packet, it is a good idea to install one of the `Packet CLI clients <https://www.packet.net/developers/integrations/>`_. Otherwise you can check them through the `Packet portal <https://app.packet.net/portal>`_.
To use the modules you will need a Packet API token. You can generate an API token through the Packet portal `here <https://app.packet.net/portal#/api-keys>`__. The simplest way to authenticate yourself is to set the Packet API token in an environment variable:
.. code-block:: console
$ export PACKET_API_TOKEN=Bfse9F24SFtfs423Gsd3ifGsd43sSdfs
If you are not comfortable exporting your API token, you can pass it as a parameter to the modules.
On Packet, devices and reserved IP addresses belong to `projects <https://www.packet.com/developers/api/#projects>`_. In order to use the packet_device module, you need to specify the UUID of the project in which you want to create or manage devices. You can find a project's UUID in the Packet portal `here <https://app.packet.net/portal#/projects/list/table/>`_ (it is just under the project table) or through one of the available `CLIs <https://www.packet.net/developers/integrations/>`_.
If you want to use a new SSH key pair in this tutorial, you can generate it to ``./id_rsa`` and ``./id_rsa.pub`` as:
.. code-block:: console
$ ssh-keygen -t rsa -f ./id_rsa
If you want to use an existing key pair, just copy the private and public key over to the playbook directory.
Device Creation
===============
The following code block is a simple playbook that creates one `Type 0 <https://www.packet.com/cloud/servers/t1-small/>`_ server (the ``plan`` parameter). You have to supply ``plan`` and ``operating_system``. ``location`` defaults to ``ewr1`` (Parsippany, NJ). You can find all the possible values for the parameters through a `CLI client <https://www.packet.net/developers/integrations/>`_.
.. code-block:: yaml+jinja
# playbook_create.yml
- name: Create Ubuntu device
hosts: localhost
tasks:
- community.general.packet_sshkey:
key_file: ./id_rsa.pub
label: tutorial key
- community.general.packet_device:
project_id: <your_project_id>
hostnames: myserver
operating_system: ubuntu_16_04
plan: baremetal_0
facility: sjc1
After running ``ansible-playbook playbook_create.yml``, you should have a server provisioned on Packet. You can verify through a CLI or in the `Packet portal <https://app.packet.net/portal#/projects/list/table>`__.
If you get an error with the message "failed to set machine state present, error: Error 404: Not Found", please verify your project UUID.
Updating Devices
================
The two parameters used to uniquely identify Packet devices are: "device_ids" and "hostnames". Both parameters accept either a single string (later converted to a one-element list), or a list of strings.
The ``device_ids`` and ``hostnames`` parameters are mutually exclusive. The following values are all acceptable:
- device_ids: ``a27b7a83-fc93-435b-a128-47a5b04f2dcf``
- hostnames: ``mydev1``
- device_ids: ``[a27b7a83-fc93-435b-a128-47a5b04f2dcf, 4887130f-0ccd-49a0-99b0-323c1ceb527b]``
- hostnames: ``[mydev1, mydev2]``
In addition, hostnames can contain a special ``%d`` formatter along with a ``count`` parameter that lets you easily expand hostnames that follow a simple name and number pattern; in other words, ``hostnames: "mydev%d", count: 2`` will expand to [mydev1, mydev2].
If your playbook acts on existing Packet devices, you can only pass the ``hostname`` and ``device_ids`` parameters. The following playbook shows how you can reboot a specific Packet device by setting the ``hostname`` parameter:
.. code-block:: yaml+jinja
# playbook_reboot.yml
- name: reboot myserver
hosts: localhost
tasks:
- community.general.packet_device:
project_id: <your_project_id>
hostnames: myserver
state: rebooted
You can also identify specific Packet devices with the ``device_ids`` parameter. The device's UUID can be found in the `Packet Portal <https://app.packet.net/portal>`_ or by using a `CLI <https://www.packet.net/developers/integrations/>`_. The following playbook removes a Packet device using the ``device_ids`` field:
.. code-block:: yaml+jinja
# playbook_remove.yml
- name: remove a device
hosts: localhost
tasks:
- community.general.packet_device:
project_id: <your_project_id>
device_ids: <myserver_device_id>
state: absent
More Complex Playbooks
======================
In this example, we will create a CoreOS cluster with `user data <https://packet.com/developers/docs/servers/key-features/user-data/>`_.
The CoreOS cluster will use `etcd <https://etcd.io/>`_ for discovery of other servers in the cluster. Before provisioning your servers, you will need to generate a discovery token for your cluster:
.. code-block:: console
$ curl -w "\n" 'https://discovery.etcd.io/new?size=3'
The following playbook will create an SSH key, 3 Packet servers, and then wait until SSH is ready (or until 5 minutes passed). Make sure to substitute the discovery token URL in ``user_data``, and the ``project_id`` before running ``ansible-playbook``. Also, feel free to change ``plan`` and ``facility``.
.. code-block:: yaml+jinja
# playbook_coreos.yml
- name: Start 3 CoreOS nodes in Packet and wait until SSH is ready
hosts: localhost
tasks:
- community.general.packet_sshkey:
key_file: ./id_rsa.pub
label: new
- community.general.packet_device:
hostnames: [coreos-one, coreos-two, coreos-three]
operating_system: coreos_beta
plan: baremetal_0
facility: ewr1
project_id: <your_project_id>
wait_for_public_IPv: 4
user_data: |
# cloud-config
coreos:
etcd2:
discovery: https://discovery.etcd.io/<token>
advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
initial-advertise-peer-urls: http://$private_ipv4:2380
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
listen-peer-urls: http://$private_ipv4:2380
fleet:
public-ip: $private_ipv4
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start
register: newhosts
- name: wait for ssh
ansible.builtin.wait_for:
delay: 1
host: "{{ item.public_ipv4 }}"
port: 22
state: started
timeout: 500
loop: "{{ newhosts.results[0].devices }}"
As with most Ansible modules, the default states of the Packet modules are idempotent, meaning the resources in your project will remain the same after re-runs of a playbook. Thus, we can keep the ``packet_sshkey`` module call in our playbook. If the public key is already in your Packet account, the call will have no effect.
The second module call provisions 3 Packet Type 0 (specified using the ``plan`` parameter) servers in the project identified by the ``project_id`` parameter. The servers are all provisioned with CoreOS beta (the ``operating_system`` parameter) and are customized with cloud-config user data passed to the ``user_data`` parameter.
The ``packet_device`` module has a ``wait_for_public_IPv`` that is used to specify the version of the IP address to wait for (valid values are ``4`` or ``6`` for IPv4 or IPv6). If specified, Ansible will wait until the GET API call for a device contains an Internet-routeable IP address of the specified version. When referring to an IP address of a created device in subsequent module calls, it is wise to use the ``wait_for_public_IPv`` parameter, or ``state: active`` in the packet_device module call.
Run the playbook:
.. code-block:: console
$ ansible-playbook playbook_coreos.yml
Once the playbook quits, your new devices should be reachable through SSH. Try to connect to one and check if etcd has started properly:
.. code-block:: console
tomk@work $ ssh -i id_rsa core@$one_of_the_servers_ip
core@coreos-one ~ $ etcdctl cluster-health
If you have any questions or comments let us know! help@packet.net

View File

@@ -1,320 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_scaleway:
**************
Scaleway Guide
**************
Introduction
============
`Scaleway <https://scaleway.com>`_ is a cloud provider supported by the community.general collection through a set of plugins and modules.
Those modules are:
- :ansplugin:`community.general.scaleway_compute#module`: manages servers on Scaleway. You can use this module to create, restart and delete servers.
- :ansplugin:`community.general.scaleway_compute_private_network#module`
- :ansplugin:`community.general.scaleway_container#module`
- :ansplugin:`community.general.scaleway_container_info#module`
- :ansplugin:`community.general.scaleway_container_namespace_info#module`
- :ansplugin:`community.general.scaleway_container_namespace#module`
- :ansplugin:`community.general.scaleway_container_registry_info#module`
- :ansplugin:`community.general.scaleway_container_registry#module`
- :ansplugin:`community.general.scaleway_database_backup#module`
- :ansplugin:`community.general.scaleway_function#module`
- :ansplugin:`community.general.scaleway_function_info#module`
- :ansplugin:`community.general.scaleway_function_namespace_info#module`
- :ansplugin:`community.general.scaleway_function_namespace#module`
- :ansplugin:`community.general.scaleway_image_info#module`
- :ansplugin:`community.general.scaleway_ip#module`
- :ansplugin:`community.general.scaleway_ip_info#module`
- :ansplugin:`community.general.scaleway_lb#module`
- :ansplugin:`community.general.scaleway_organization_info#module`
- :ansplugin:`community.general.scaleway_private_network#module`
- :ansplugin:`community.general.scaleway_security_group#module`
- :ansplugin:`community.general.scaleway_security_group_info#module`
- :ansplugin:`community.general.scaleway_security_group_rule#module`
- :ansplugin:`community.general.scaleway_server_info#module`
- :ansplugin:`community.general.scaleway_snapshot_info#module`
- :ansplugin:`community.general.scaleway_sshkey#module`: adds a public SSH key from a file or value to the Packet infrastructure. Every subsequently-created device will have this public key installed in .ssh/authorized_keys.
- :ansplugin:`community.general.scaleway_user_data#module`
- :ansplugin:`community.general.scaleway_volume#module`: manages volumes on Scaleway.
- :ansplugin:`community.general.scaleway_volume_info#module`
The plugins are:
- :ansplugin:`community.general.scaleway#inventory`: inventory plugin
.. note::
This guide assumes you are familiar with Ansible and how it works.
If you are not, have a look at :ref:`ansible_documentation` before getting started.
Requirements
============
The Scaleway modules and inventory script connect to the Scaleway API using `Scaleway REST API <https://developer.scaleway.com>`_.
To use the modules and inventory script you will need a Scaleway API token.
You can generate an API token through the `Scaleway console's credential page <https://cloud.scaleway.com/#/credentials>`__.
The simplest way to authenticate yourself is to set the Scaleway API token in an environment variable:
.. code-block:: console
$ export SCW_TOKEN=00000000-1111-2222-3333-444444444444
If you are not comfortable exporting your API token, you can pass it as a parameter to the modules using the ``api_token`` argument.
If you want to use a new SSH key pair in this tutorial, you can generate it to ``./id_rsa`` and ``./id_rsa.pub`` as:
.. code-block:: console
$ ssh-keygen -t rsa -f ./id_rsa
If you want to use an existing key pair, just copy the private and public key over to the playbook directory.
How to add an SSH key?
======================
Connection to Scaleway Compute nodes use Secure Shell.
SSH keys are stored at the account level, which means that you can reuse the same SSH key in multiple nodes.
The first step to configure Scaleway compute resources is to have at least one SSH key configured.
:ansplugin:`community.general.scaleway_sshkey#module` is a module that manages SSH keys on your Scaleway account.
You can add an SSH key to your account by including the following task in a playbook:
.. code-block:: yaml+jinja
- name: "Add SSH key"
community.general.scaleway_sshkey:
ssh_pub_key: "ssh-rsa AAAA..."
state: "present"
The ``ssh_pub_key`` parameter contains your ssh public key as a string. Here is an example inside a playbook:
.. code-block:: yaml+jinja
- name: Test SSH key lifecycle on a Scaleway account
hosts: localhost
gather_facts: false
environment:
SCW_API_KEY: ""
tasks:
- community.general.scaleway_sshkey:
ssh_pub_key: "ssh-rsa AAAAB...424242 developer@example.com"
state: present
register: result
- ansible.builtin.assert:
that:
- result is success and result is changed
How to create a compute instance?
=================================
Now that we have an SSH key configured, the next step is to spin up a server!
:ansplugin:`community.general.scaleway_compute#module` is a module that can create, update and delete Scaleway compute instances:
.. code-block:: yaml+jinja
- name: Create a server
community.general.scaleway_compute:
name: foobar
state: present
image: 00000000-1111-2222-3333-444444444444
organization: 00000000-1111-2222-3333-444444444444
region: ams1
commercial_type: START1-S
Here are the parameter details for the example shown above:
- ``name`` is the name of the instance (the one that will show up in your web console).
- ``image`` is the UUID of the system image you would like to use.
A list of all images is available for each availability zone.
- ``organization`` represents the organization that your account is attached to.
- ``region`` represents the Availability Zone which your instance is in (for this example, ``par1`` and ``ams1``).
- ``commercial_type`` represents the name of the commercial offers.
You can check out the Scaleway pricing page to find which instance is right for you.
Take a look at this short playbook to see a working example using ``scaleway_compute``:
.. code-block:: yaml+jinja
- name: Test compute instance lifecycle on a Scaleway account
hosts: localhost
gather_facts: false
environment:
SCW_API_KEY: ""
tasks:
- name: Create a server
register: server_creation_task
community.general.scaleway_compute:
name: foobar
state: present
image: 00000000-1111-2222-3333-444444444444
organization: 00000000-1111-2222-3333-444444444444
region: ams1
commercial_type: START1-S
wait: true
- ansible.builtin.debug:
var: server_creation_task
- ansible.builtin.assert:
that:
- server_creation_task is success
- server_creation_task is changed
- name: Run it
community.general.scaleway_compute:
name: foobar
state: running
image: 00000000-1111-2222-3333-444444444444
organization: 00000000-1111-2222-3333-444444444444
region: ams1
commercial_type: START1-S
wait: true
tags:
- web_server
register: server_run_task
- ansible.builtin.debug:
var: server_run_task
- ansible.builtin.assert:
that:
- server_run_task is success
- server_run_task is changed
Dynamic Inventory Plugin
========================
Ansible ships with :ansplugin:`community.general.scaleway#inventory`.
You can now get a complete inventory of your Scaleway resources through this plugin and filter it on
different parameters (``regions`` and ``tags`` are currently supported).
Let us create an example!
Suppose that we want to get all hosts that got the tag web_server.
Create a file named ``scaleway_inventory.yml`` with the following content:
.. code-block:: yaml+jinja
plugin: community.general.scaleway
regions:
- ams1
- par1
tags:
- web_server
This inventory means that we want all hosts that got the tag ``web_server`` on the zones ``ams1`` and ``par1``.
Once you have configured this file, you can get the information using the following command:
.. code-block:: console
$ ansible-inventory --list -i scaleway_inventory.yml
The output will be:
.. code-block:: json
{
"_meta": {
"hostvars": {
"dd8e3ae9-0c7c-459e-bc7b-aba8bfa1bb8d": {
"ansible_verbosity": 6,
"arch": "x86_64",
"commercial_type": "START1-S",
"hostname": "foobar",
"ipv4": "192.0.2.1",
"organization": "00000000-1111-2222-3333-444444444444",
"state": "running",
"tags": [
"web_server"
]
}
}
},
"all": {
"children": [
"ams1",
"par1",
"ungrouped",
"web_server"
]
},
"ams1": {},
"par1": {
"hosts": [
"dd8e3ae9-0c7c-459e-bc7b-aba8bfa1bb8d"
]
},
"ungrouped": {},
"web_server": {
"hosts": [
"dd8e3ae9-0c7c-459e-bc7b-aba8bfa1bb8d"
]
}
}
As you can see, we get different groups of hosts.
``par1`` and ``ams1`` are groups based on location.
``web_server`` is a group based on a tag.
In case a filter parameter is not defined, the plugin supposes all values possible are wanted.
This means that for each tag that exists on your Scaleway compute nodes, a group based on each tag will be created.
Scaleway S3 object storage
==========================
`Object Storage <https://www.scaleway.com/object-storage>`_ allows you to store any kind of objects (documents, images, videos, and so on).
As the Scaleway API is S3 compatible, Ansible supports it natively through the amazon.aws modules: :ansplugin:`amazon.aws.s3_bucket#module`, :ansplugin:`amazon.aws.s3_object#module`.
You can find many examples in the `scaleway_s3 integration tests <https://github.com/ansible/ansible-legacy-tests/tree/devel/test/legacy/roles/scaleway_s3>`_.
.. code-block:: yaml+jinja
- hosts: myserver
vars:
scaleway_region: nl-ams
s3_url: https://s3.nl-ams.scw.cloud
environment:
# AWS_ACCESS_KEY matches your scaleway organization id available at https://cloud.scaleway.com/#/account
AWS_ACCESS_KEY: 00000000-1111-2222-3333-444444444444
# AWS_SECRET_KEY matches a secret token that you can retrieve at https://cloud.scaleway.com/#/credentials
AWS_SECRET_KEY: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
module_defaults:
group/amazon.aws.aws:
s3_url: '{{ s3_url }}'
region: '{{ scaleway_region }}'
tasks:
# use a fact instead of a variable, otherwise template is evaluate each time variable is used
- ansible.builtin.set_fact:
bucket_name: "{{ 99999999 | random | to_uuid }}"
# "requester_pays:" is mandatory because Scaleway does not implement related API
# another way is to use amazon.aws.s3_object and "mode: create" !
- amazon.aws.s3_bucket:
name: '{{ bucket_name }}'
requester_pays:
- name: Another way to create the bucket
amazon.aws.s3_object:
bucket: '{{ bucket_name }}'
mode: create
encrypt: false
register: bucket_creation_check
- name: add something in the bucket
amazon.aws.s3_object:
mode: put
bucket: '{{ bucket_name }}'
src: /tmp/test.txt # needs to be created before
object: test.txt
encrypt: false # server side encryption must be disabled

View File

@@ -1,394 +0,0 @@
..
Copyright (c) Ansible Project
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
SPDX-License-Identifier: GPL-3.0-or-later
.. _ansible_collections.community.general.docsite.guide_uthelper:
UTHelper Guide
==============
Introduction
^^^^^^^^^^^^
``UTHelper`` was written to reduce the boilerplate code used in unit tests for modules.
It was originally written to handle tests of modules that run external commands using ``AnsibleModule.run_command()``.
At the time of writing (Feb 2025) that remains the only type of tests you can use
``UTHelper`` for, but it aims to provide support for other types of interactions.
Until now, there are many different ways to implement unit tests that validate a module based on the execution of external commands. See some examples:
* `test_apk.py <https://github.com/ansible-collections/community.general/blob/10.3.0/tests/unit/plugins/modules/test_apk.py>`_ - A very simple one
* `test_bootc_manage.py <https://github.com/ansible-collections/community.general/blob/10.3.0/tests/unit/plugins/modules/test_bootc_manage.py>`_ -
This one has more test cases, but do notice how the code is repeated amongst them.
* `test_modprobe.py <https://github.com/ansible-collections/community.general/blob/10.3.0/tests/unit/plugins/modules/test_modprobe.py>`_ -
This one has 15 tests in it, but to achieve that it declares 8 classes repeating quite a lot of code.
As you can notice, there is no consistency in the way these tests are executed -
they all do the same thing eventually, but each one is written in a very distinct way.
``UTHelper`` aims to:
* provide a consistent idiom to define unit tests
* reduce the code to a bare minimal, and
* define tests as data instead
* allow the test cases definition to be expressed not only as a Python data structure but also as YAML content
Quickstart
""""""""""
To use UTHelper, your test module will need only a bare minimal of code:
.. code-block:: python
# tests/unit/plugin/modules/test_ansible_module.py
from ansible_collections.community.general.plugins.modules import ansible_module
from .uthelper import UTHelper, RunCommandMock
UTHelper.from_module(ansible_module, __name__, mocks=[RunCommandMock])
Then, in the test specification file, you have:
.. code-block:: yaml
# tests/unit/plugin/modules/test_ansible_module.yaml
test_cases:
- id: test_ansible_module
flags:
diff: true
input:
state: present
name: Roger the Shrubber
output:
shrubbery:
looks: nice
price: not too expensive
changed: true
diff:
before:
shrubbery: null
after:
shrubbery:
looks: nice
price: not too expensive
mocks:
run_command:
- command: [/testbin/shrubber, --version]
rc: 0
out: "2.80.0\n"
err: ''
- command: [/testbin/shrubber, --make-shrubbery]
rc: 0
out: 'Shrubbery created'
err: ''
.. note::
If you prefer to pick a different YAML file for the test cases, or if you prefer to define them in plain Python,
you can use the convenience methods ``UTHelper.from_file()`` and ``UTHelper.from_spec()``, respectively.
See more details below.
Using ``UTHelper``
^^^^^^^^^^^^^^^^^^
Test Module
"""""""""""
``UTHelper`` is **strictly for unit tests**. To use it, you import the ``.uthelper.UTHelper`` class.
As mentioned in different parts of this guide, there are three different mechanisms to load the test cases.
.. seealso::
See the UTHelper class reference below for API details on the three different mechanisms.
The easies and most recommended way of using ``UTHelper`` is literally the example shown.
See a real world example at
`test_gconftool2.py <https://github.com/ansible-collections/community.general/blob/10.3.0/tests/unit/plugins/modules/test_gconftool2.py>`_.
The ``from_module()`` method will pick the filename of the test module up (in the example above, ``tests/unit/plugins/modules/test_gconftool2.py``)
and it will search for ``tests/unit/plugins/modules/test_gconftool2.yaml`` (or ``.yml`` if that is not found).
In that file it will expect to find the test specification expressed in YAML format, conforming to the structure described below LINK LINK LINK.
If you prefer to read the test specifications a different file path, use ``from_file()`` passing the file handle for the YAML file.
And, if for any reason you prefer or need to pass the data structure rather than dealing with YAML files, use the ``from_spec()`` method.
A real world example for that can be found at
`test_snap.py <https://github.com/ansible-collections/community.general/blob/main/tests/unit/plugins/modules/test_snap.py>`_.
Test Specification
""""""""""""""""""
The structure of the test specification data is described below.
Top level
---------
At the top level there are two accepted keys:
- ``anchors: dict``
Optional. Placeholder for you to define YAML anchors that can be repeated in the test cases.
Its contents are never accessed directly by test Helper.
- ``test_cases: list``
Mandatory. List of test cases, see below for definition.
Test cases
----------
You write the test cases with five elements:
- ``id: str``
Mandatory. Used to identify the test case.
- ``flags: dict``
Optional. Flags controling the behavior of the test case. All flags are optional. Accepted flags:
* ``check: bool``: set to ``true`` if the module is to be executed in **check mode**.
* ``diff: bool``: set to ``true`` if the module is to be executed in **diff mode**.
* ``skip: str``: set the test case to be skipped, providing the message for ``pytest.skip()``.
* ``xfail: str``: set the test case to expect failure, providing the message for ``pytest.xfail()``.
- ``input: dict``
Optional. Parameters for the Ansible module, it can be empty.
- ``output: dict``
Optional. Expected return values from the Ansible module.
All RV names are used here are expected to be found in the module output, but not all RVs in the output must be here.
It can include special RVs such as ``changed`` and ``diff``.
It can be empty.
- ``mocks: dict``
Optional. Mocked interactions, ``run_command`` being the only one supported for now.
Each key in this dictionary refers to one subclass of ``TestCaseMock`` and its
structure is dictated by the ``TestCaseMock`` subclass implementation.
All keys are expected to be named using snake case, as in ``run_command``.
The ``TestCaseMock`` subclass is responsible for defining the name used in the test specification.
The structure for that specification is dependent on the implementing class.
See more details below for the implementation of ``RunCommandMock``
Example using YAML
------------------
We recommend you use ``UTHelper`` reading the test specifications from a YAML file.
See an example below of how one actually looks like (excerpt from ``test_opkg.yaml``):
.. code-block:: yaml
---
anchors:
environ: &env-def {environ_update: {LANGUAGE: C, LC_ALL: C}, check_rc: false}
test_cases:
- id: install_zlibdev
input:
name: zlib-dev
state: present
output:
msg: installed 1 package(s)
mocks:
run_command:
- command: [/testbin/opkg, --version]
environ: *env-def
rc: 0
out: ''
err: ''
- command: [/testbin/opkg, list-installed, zlib-dev]
environ: *env-def
rc: 0
out: ''
err: ''
- command: [/testbin/opkg, install, zlib-dev]
environ: *env-def
rc: 0
out: |
Installing zlib-dev (1.2.11-6) to root...
Downloading https://downloads.openwrt.org/releases/22.03.0/packages/mips_24kc/base/zlib-dev_1.2.11-6_mips_24kc.ipk
Installing zlib (1.2.11-6) to root...
Downloading https://downloads.openwrt.org/releases/22.03.0/packages/mips_24kc/base/zlib_1.2.11-6_mips_24kc.ipk
Configuring zlib.
Configuring zlib-dev.
err: ''
- command: [/testbin/opkg, list-installed, zlib-dev]
environ: *env-def
rc: 0
out: |
zlib-dev - 1.2.11-6
err: ''
- id: install_zlibdev_present
input:
name: zlib-dev
state: present
output:
msg: package(s) already present
mocks:
run_command:
- command: [/testbin/opkg, --version]
environ: *env-def
rc: 0
out: ''
err: ''
- command: [/testbin/opkg, list-installed, zlib-dev]
environ: *env-def
rc: 0
out: |
zlib-dev - 1.2.11-6
err: ''
TestCaseMocks Specifications
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``TestCaseMock`` subclass is free to define the expected data structure.
RunCommandMock Specification
""""""""""""""""""""""""""""
``RunCommandMock`` mocks can be specified with the key ``run_command`` and it expects a ``list`` in which elements follow the structure:
- ``command: Union[list, str]``
Mandatory. The command that is expected to be executed by the module. It corresponds to the parameter ``args`` of the ``AnsibleModule.run_command()`` call.
It can be either a list or a string, though the list form is generally recommended.
- ``environ: dict``
Mandatory. All other parameters passed to the ``AnsibleModule.run_command()`` call.
Most commonly used are ``environ_update`` and ``check_rc``.
Must include all parameters the Ansible module uses in the ``AnsibleModule.run_command()`` call, otherwise the test will fail.
- ``rc: int``
Mandatory. The return code for the command execution.
As per usual in bash scripting, a value of ``0`` means success, whereas any other number is an error code.
- ``out: str``
Mandatory. The *stdout* result of the command execution, as one single string containing zero or more lines.
- ``err: str``
Mandatory. The *stderr* result of the command execution, as one single string containing zero or more lines.
``UTHelper`` Reference
^^^^^^^^^^^^^^^^^^^^^^
.. py:module:: .uthelper
.. py:class:: UTHelper
A class to encapsulate unit tests.
.. py:staticmethod:: from_spec(ansible_module, test_module, test_spec, mocks=None)
Creates an ``UTHelper`` instance from a given test specification.
:param ansible_module: The Ansible module to be tested.
:type ansible_module: module
:param test_module: The test module.
:type test_module: module
:param test_spec: The test specification.
:type test_spec: dict
:param mocks: List of ``TestCaseMocks`` to be used during testing. Currently only ``RunCommandMock`` exists.
:type mocks: list or None
:return: An ``UTHelper`` instance.
:rtype: UTHelper
Example usage of ``from_spec()``:
.. code-block:: python
import sys
from ansible_collections.community.general.plugins.modules import ansible_module
from .uthelper import UTHelper, RunCommandMock
TEST_SPEC = dict(
test_cases=[
...
]
)
helper = UTHelper.from_spec(ansible_module, sys.modules[__name__], TEST_SPEC, mocks=[RunCommandMock])
.. py:staticmethod:: from_file(ansible_module, test_module, test_spec_filehandle, mocks=None)
Creates an ``UTHelper`` instance from a test specification file.
:param ansible_module: The Ansible module to be tested.
:type ansible_module: module
:param test_module: The test module.
:type test_module: module
:param test_spec_filehandle: A file handle to an file stream handle providing the test specification in YAML format.
:type test_spec_filehandle: file
:param mocks: List of ``TestCaseMocks`` to be used during testing. Currently only ``RunCommandMock`` exists.
:type mocks: list or None
:return: An ``UTHelper`` instance.
:rtype: UTHelper
Example usage of ``from_file()``:
.. code-block:: python
import sys
from ansible_collections.community.general.plugins.modules import ansible_module
from .uthelper import UTHelper, RunCommandMock
with open("test_spec.yaml", "r") as test_spec_filehandle:
helper = UTHelper.from_file(ansible_module, sys.modules[__name__], test_spec_filehandle, mocks=[RunCommandMock])
.. py:staticmethod:: from_module(ansible_module, test_module_name, mocks=None)
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
: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.
:type mocks: list or None
:return: An ``UTHelper`` instance.
:rtype: UTHelper
Example usage of ``from_module()``:
.. code-block:: python
from ansible_collections.community.general.plugins.modules import ansible_module
from .uthelper import UTHelper, RunCommandMock
# Example usage
helper = UTHelper.from_module(ansible_module, __name__, mocks=[RunCommandMock])
Creating TestCaseMocks
^^^^^^^^^^^^^^^^^^^^^^
To create a new ``TestCaseMock`` you must extend that class and implement the relevant parts:
.. code-block:: python
class ShrubberyMock(TestCaseMock):
# this name is mandatory, it is the name used in the test specification
name = "shrubbery"
def setup(self, mocker):
# perform setup, commonly using mocker to patch some other piece of code
...
def check(self, test_case, results):
# verify the tst execution met the expectations of the test case
# for example the function was called as many times as it should
...
def fixtures(self):
# returns a dict mapping names to pytest fixtures that should be used for the test case
# for example, in RunCommandMock it creates a fixture that patches AnsibleModule.get_bin_path
...
Caveats
^^^^^^^
Known issues/opportunities for improvement:
* Only one ``UTHelper`` per test module: UTHelper injects a test function with a fixed name into the module's namespace,
so placing a second ``UTHelper`` instance is going to overwrite the function created by the first one.
* Order of elements in module's namespace is not consistent across executions in Python 3.5, so if adding more tests to the test module
might make Test Helper add its function before or after the other test functions.
In the community.general collection the CI processes uses ``pytest-xdist`` to paralellize and distribute the tests,
and it requires the order of the tests to be consistent.
.. versionadded:: 7.5.0

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