[stable-9] docs: add notes that dnf_* modules do not work with dnf5 (#10238) (#10248)
docs: add notes that dnf_* modules do not work with dnf5 (#10238)
* Add notes that dnf_* modules do not work with dnf5.
* Apply suggestions from code review.
---------
(cherry picked from commit 1956815884)
(cherry picked from commit cb26c50d65)
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
CI: Use community.crypto 2.x.y for ansible-core 2.16 and before (#10086)
* Use community.crypto 2.x.y for ansible-core 2.16 and before.
* Also use stable-2 for ubuntu2004 tests.
(cherry picked from commit 60f1169d42)
[stable-9] crypttab: removes jijna delimiters from example using when (#10079) (#10081)
crypttab: removes jijna delimiters from example using when (#10079)
The current example includes extra jinja delimiters which
result in double-interpretation of the statement.
Fixes: #10078
(cherry picked from commit 1936fe5181)
(cherry picked from commit 8222f1f064)
Signed-off-by: Abhijeet Kasurde <Akasurde@redhat.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com>
Mark supervisorctl tests as unstable (#10057)
Mark supervisorctl tests as unstable.
(cherry picked from commit a720e99482)
Co-authored-by: Felix Fontein <felix@fontein.de>
Remove FreeBSD 14.0 from CI (#10051)
Remove FreeBSD 14.0 from CI.
In ansible-core it has been replaced with 14.1, but we're already testing against that.
Ref: 3546111f2d
(cherry picked from commit 4a2920b0fd)
Co-authored-by: Felix Fontein <felix@fontein.de>
* Remove blanket skips for Python 3 in CI (#10043)
* Remove blanket skips for Python 3 in CI.
* Try to fix hg tests.
* Disable hg tests.
* Drop restriction of supervisor to <4.0.0.
This was introduced in https://github.com/ansible/ansible/pull/54935.
* Make tests work with supervisorctl 4.0.0.
According to https://supervisord.org/changes.html#id12,
"supervisorctl will now set its exit code to a non-zero value when an error condition occurs."
I'm not sure why a stopped service in 'status' constitutes an error condition,
but whatever 🤷...
* Use correct Python executable.
* Skip RHEL/macOS; diff on config write.
* Skip CentOS 7 and OpenSuSE on ansible-core 2.16.
(cherry picked from commit 2a5abab738)
* Skip OpenSuSE 15/Python 2 on ansible-core 2.13.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
[stable-9] The yarn module is Yarn Classic only at the moment (#9928)
The yarn module is Yarn Classic only at the moment (#9926)
The yarn module is Yarn Classic only.
(cherry picked from commit cb776e7cd5)
(cherry picked from commit 961a7cea8b)
Co-authored-by: Felix Fontein <felix@fontein.de>
sysrc: extend the list of FreeBSD releases where the jail test fails (#9900)
Extend the list of FreeBSD releases where the jail test fails.
(cherry picked from commit 6a2d9ccd99)
Co-authored-by: Felix Fontein <felix@fontein.de>
keycloak: repair integration tests by removing jinja2 templating from conditionals (#9726) (#9727)
* fix: remove jinja2 templating from conditionals in keycloak_role module integration tests (#9726)
* fix: remove jinja2 templating in conditional in keycloak clientsecret info integration test (#9726)
This test needs a further fix; see #9744. Left for a future PR for now.
* fix: remove jinja2 templating in conditional in keycloak clientsecret regenerate integration test (#9726)
* chore: remove jinja2 templating in conditional in keycloak user federation integration test (#9726)
These instances of templating were not causing failures,
but this removes the warnings.
* chore: remove jinja2 templating in conditional in keycloak user rolemapping integration test (#9726)
These instances of templating were not causing failures,
but this removes the warnings.
* docs: add changelog fragment (#9726)
* docs: repair changelog fragment yaml (#9726)
* docs: actually repair changelog fragment yaml (#9726)
* chore: remove changelog fragment for test only pr (#9726)
(cherry picked from commit 910c57aaa0)
Co-authored-by: Mark Armstrong <markparmstrong@gmail.com>
CI: Cleanup AZP config similarly to ansible-core did some years ago (#9722)
Cleanup AZP config similarly to ansible-core did some years ago.
(cherry picked from commit d756aeb6ce)
Co-authored-by: Felix Fontein <felix@fontein.de>
filesystem tests: reiserfsprogs is no longer available on Arch Linux (#9699)
reiserfsprogs is no longer available on Arch Linux.
(cherry picked from commit 10c15d31f7)
Co-authored-by: Felix Fontein <felix@fontein.de>
Also disable snap_alias tests for RHEL 8.8 (#9686)
Also disable snap_alias tests for RHEL 8.8.
(cherry picked from commit 0b4337c13d)
Co-authored-by: Felix Fontein <felix@fontein.de>
Add hkariti to notifications ignore list (#9542)
* Add hkariti to notifications ignore list
* Update .github/BOTMETA.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 81ea9f69bf)
Co-authored-by: Hagai Kariti <hkariti@gmail.com>
remove stearz as maintainer (#9518)
* remove stearz as maintainer
As I do not work with Sophos UTMs anymore I am no longer able to test/maintain. - I added team_e_spirit as maintainer as I think they are still using and willing to support the modules.
* added ignore lines to remove stearz as maintainer
(cherry picked from commit d7da0ae7f6)
Co-authored-by: Stephan Schwarz <22387558+stearz@users.noreply.github.com>
Polish botmeta extra sanity test and make it work without warnings on Python 3.13 (#9297)
Polish botmeta and make it work without warnings on Python 3.13.
(cherry picked from commit d2088ccfcc)
Co-authored-by: Felix Fontein <felix@fontein.de>
random_words integration tests: avoid test failure due to valid result (#9271)
Avoid test failure due to valid result.
(cherry picked from commit 50b25f8c01)
Co-authored-by: Felix Fontein <felix@fontein.de>
Drop myself from team_suse (#9259)
I no longer work with ansible and/or SUSE so drop me from the team.
(cherry picked from commit 65827bdc96)
Co-authored-by: Thomas Bechtold <thomasbechtold@jpberlin.de>
CI: Fix some issues pointed out by zizmor (#9250)
Fix some issues pointed out by zizmor.
(cherry picked from commit f6dae1fc4d)
Co-authored-by: Felix Fontein <felix@fontein.de>
sysrc: add another exclusion for ezjail (#9243)
Add another exclusion.
(cherry picked from commit 9df4ef9a9c)
Co-authored-by: Felix Fontein <felix@fontein.de>
modprobe: document when 'persistent' was added. (#9144)
This is based on `git tag --contains
29f5033737a7fd86349ff3daab7d7ee7db66ad00`.
(cherry picked from commit 54194ccb24)
Co-authored-by: Max Gautier <mg@max.gautier.name>
Stop using ansible.module_utils.compat.importlib (#9085)
Stop using ansible.module_utils.compat.importlib.
(cherry picked from commit 9553dd9ddf)
Co-authored-by: Felix Fontein <felix@fontein.de>
Update documentation in apk.py (#9045)
* Update apk.py
Fix for issue #9017
* Update plugins/modules/apk.py
Added a line break to fix the issue of the line being too long.
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit ccf7f62325)
Co-authored-by: Navaneeth S <navisk13@gmail.com>
Skip timezone test on RHEL 7.9 VMs (#9035)
Skip timezone test on RHEL 7.9 VMs.
(cherry picked from commit b1f4604067)
Co-authored-by: Felix Fontein <felix@fontein.de>
cloudflare_dns: Update SRV record handling for Cloudflare API changes (#8948)
(cherry picked from commit 1bdf8fc025)
Co-authored-by: salty <salty@salty.dk>
udm_user, homectl: use legacycrypt on Python 3.13+ (#8987)
Use legacycrypt on Python 3.13+.
(cherry picked from commit 29a2df8e6b)
Co-authored-by: Felix Fontein <felix@fontein.de>
dig lookup plugin: Fix using only last nameserver specified (#8970)
* dig plugin: Fix using only last nameserver given
Currently, when specifying multiple nameservers
either using multiple `@ns.example.com` arguments
or by specifying multiple nameservers in a single
argument (@ns1.example.com,ns2.example.com), due
to a bug only the very last nameserver that is
specified is actually used.
This is because for every iteration of the
for ns in nsset
loop, the local list of nameservers is cleared
and after adding the currently processed nameserver
entry, the whole `nameservers` list of the Resolver
instance is overridden with that new list with just
one element. And as far as I can see, when setting
that `nameserver` property, the dnspython library
actually overrides the existing list and doesn't
do some trickery to append the new nameservers or
something like that.
Therefore, the assignment of the `nameservers`
property of the Resolver is moved after the argument
processing so all nameservers are added and then
collectively written to the `nameservers` property
of the Resolver.
* Add CHANGELOG fragment
(cherry picked from commit 8610223d03)
Co-authored-by: JaegerMaKn <max.jaeger@knauf.com>
keycloak_user_federation: remove `lastSync` param from kc API responses (#8812)
* remove `lastSync` param from kc API responses
* add blank line to satisfy sanity check
* add changelog fragment
* fix NoneType error introduced by changed normalize func return value
(cherry picked from commit 5d9a7ab240)
Co-authored-by: fgruenbauer <gruenbauer@b1-systems.de>
Pass absolute paths to atomic_move() (#8925)
Pass absolute paths to atmoic_move().
(cherry picked from commit 7c913b239a)
Co-authored-by: Felix Fontein <felix@fontein.de>
keycloak_user_federation: set `krbPrincipalAttribute` to `''` if unset in kc responses (#8785)
* set `krbPrincipalAttribute` to `''` if unset in kc before and after responses
* add changelog fragment
* Update changelogs/fragments/8785-keycloak_user_federation-set-krbPrincipalAttribute-to-empty-string-if-missing.yaml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit ac302eb77d)
Co-authored-by: fgruenbauer <gruenbauer@b1-systems.de>
gitlab_runner: update requirements in docs (#8860)
* Update gitlab_runner.py
Be specific related requirements for package version. This difference change the whole dependency chain for playbook.
* Update plugins/modules/gitlab_runner.py
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f93883aa20)
Co-authored-by: Péter Mikáczó <petermikaczo@gmail.com>
Remove private key and certificates from documentation (#8870)
* Remove private key and certificate from example.
* Censor certificates in examples.
(cherry picked from commit 2f1df973a6)
Co-authored-by: Felix Fontein <felix@fontein.de>
keycloak_user_federation: get the before mappers from `before_comp` to fix `UnboundLocalError` (#8831)
* fix: get the before mappers from `before_comp`
* add changelog fragment
* Adjust changelog fragment.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 2ae41fa83f)
Co-authored-by: fgruenbauer <gruenbauer@b1-systems.de>
keycloak_user_federation: sort desired and after mappers by name (#8761)
* sort desired mappers by name
* sort mappers fetched after update by name
* only sort mapper list if there are desired mappers specified
* add fallback `''` in case `name` is not a key or `None` when sorting mappers
* add changelog fragment
(cherry picked from commit 982b8d89b7)
Co-authored-by: fgruenbauer <gruenbauer@b1-systems.de>
Fix and enable test for datadog_downtime (#8815)
The test has been disabled because it started to fail after an update of
the Datadog API client. The issue itself (id cannot be set in
constructor) and other issues (module name, additional attribute in API
responses) are now fixed. The test is now working fine again.
Fixes#3219.
(cherry picked from commit 593d302f0b)
Co-authored-by: Stefan Birkner <github@stefan-birkner.de>
Fix gitlab access token crash in check mode for new tokens (#8796)
Fix crash in check mode when attempting to create a new gitlab access token
(cherry picked from commit e9071e9871)
Co-authored-by: Veikko Virrankoski <71337077+vvirrank@users.noreply.github.com>
keycloak_user_federation: fix key error when removing mappers in update (#8762)
* remove new mappers without an id from list comprehension
* add changelog fragment
* Update changelogs/fragments/8762-keycloac_user_federation-fix-key-error-when-updating.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b79ac4f0ac)
Co-authored-by: fgruenbauer <gruenbauer@b1-systems.de>
one_template: update name in copyright (#8770)
finally got it changed this year :)
(cherry picked from commit 14e86bde07)
Co-authored-by: Jyrki Gadinger <nilsding@nilsding.org>
README: Add Communication section with Forum information (#8732)
* README: Add Communication section with Forum information
* Changelog fragment isn't needed for README change.
* Distinguish between Get Help and the community-general tag.
* Update links.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 4cb4c608d0)
Co-authored-by: Andrew Klychkov <aklychko@redhat.com>
keycloak_identity_provider: get cleartext clientsecret (#8735)
* get cleartext `clientSecret` from full realm info
* add mock get_realm call to existing tests; add new no_change_when_present test
* add changelog fragment
* remove blank lines
* Update changelog.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 57e28e5a73)
Co-authored-by: fgruenbauer <gruenbauer@b1-systems.de>
Namespace the passwordstore lockfile (#8689)
* Namespace the lockfile
When passwordstore needs to grab a lock, it creates a statically file (within /tmp, typically). This is unfortunate, when there might be more than one user using the passwordstore functionality on that machine. Prepend the user to the filename, to bypass further issues.
* Update plugins/lookup/passwordstore.py
specifically reference the argument number in the format string.
Co-authored-by: Felix Fontein <felix@fontein.de>
* Add changelog fragment for PR#8689
* Update 8689-passwordstore-lock-naming.yml
I was sure that was a copy/paste.
* Update changelogs/fragments/8689-passwordstore-lock-naming.yml
specify the type of plugin
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 8989b6c4d4)
Co-authored-by: Adam Tygart <adam.tygart@gmail.com>
keycloak_user_federation: add mapper removal (#8695)
* add unwanted mapper removal
* check for mapper updates in already fetched data to remove unnecessary API calls
* added mock answers and updated request count to match the added delete and fetch after_comp calls
* fix sanity issues
* add changelog fragment
* removed automatic field numbering from format
* replace filter expression with list comprehension
Co-authored-by: Felix Fontein <felix@fontein.de>
* add module name, link to issue and link to PR to changelog
Co-authored-by: Felix Fontein <felix@fontein.de>
* Use list comprehension.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 2942eda8e0)
Co-authored-by: fgruenbauer <gruenbauer@b1-systems.de>
django_manage: rely on package idempotency to install virtualenv (#8644)
* rely on package idempotency to install virtualenv
* improve os package name logic in integration tests
* add os families debian, redhat
* add os families archlinux
* fix pkg name in archlinux
* improvement from PR
* typo
* Update tests/integration/targets/setup_os_pkg_name/tasks/debian.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update tests/integration/targets/setup_os_pkg_name/tasks/redhat.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 9f340861ad)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Clarify contribution guide on integration tests (#8718)
* Clarify contribution guide on integration tests
* Improve test guide in CONTRIBUTING.md
* Uppercase Docker
Co-authored-by: Felix Fontein <felix@fontein.de>
* Improve test_name documentation
* Use working example in ansible-test integration docs
Co-authored-by: Felix Fontein <felix@fontein.de>
* Fix test_name in ansible-test integration being documented as required
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b16263ebd7)
Co-authored-by: Matthias Kunnen <matthias.kunnen@gmail.com>
Fix pylint and pep8 issues exposed by latest ansible-core's ansible-test sanity checks (#8720)
* Remove bad whitespace.
* 'Fixing' various used-before-assignment issues that pylint flagged.
(cherry picked from commit 9a16eaf9ba)
Update proxmox.py (#8657)
* Update proxmox.py
Added an example to create a new container with more network options (with ipv6 static configuration)
* Update proxmox.py
Made the linter happy.
* cleaned up dictionaries
Changed dictionaries from this format:
netif: '{"net0":"name=eth0,g...
to this:
netif:
net0: "name=eth0,g...
* Update proxmox.py
false intendation and trailing whitespaces
(cherry picked from commit 7bbf32dc0e)
Co-authored-by: inDane <inDane@users.noreply.github.com>
Update timezone.py (#8692)
in order to set a timezone, root priviliages are needed on most distros, therefore i suggest to change an example to make it plug and play ready.
(cherry picked from commit fd811df414)
Co-authored-by: Mateusz Kiersnowski <82416937+Ganji00@users.noreply.github.com>
Fix pipx tests (#8665)
* fix pipx tests
* enable pipx int tests
* replace ansible-lint with pylint in pipx test
* install jupyter in freebsd
* replace jupyter with mkdocs in pipx test
* adjust installed dependency for mkdocs
* fix pipx_info tests as well
(cherry picked from commit 58f9860ba7)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
nsupdate: fix 'index out of range' error when changing NS records (#8614)
* nsupdate: fix 'index out of range' error when changing NS records
* add clog fragment
* Update changelogs/fragments/8614-nsupdate-index-out-of-range.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 9dd2b71d04)
Co-authored-by: Art Win <art@make.lv>
Add example to rpm_ostree_pkg (#8556)
* Update rpm_ostree_pkg.py
expand examples list with 'until' example
* Apply suggestions from code review.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 9f3103e891)
Co-authored-by: Daskan <kevin81991@web.de>
redfish_utils: fix language check (#8613)
* redfish_utils: fix language check
* add fragment file
* typo
* improve words
* improve words based on suggestion
---------
Co-authored-by: Mike Koreneff <mkoreneff@hudson-trading.com>
(cherry picked from commit ca8ecb1df1)
Co-authored-by: Mike Koreneff <mkoreneff@users.noreply.github.com>
Remove EOL'ed FreeBSD 13.2 from CI (#8607)
Remove EOL'ed FreeBSD 13.2 from CI.
Apparently the packages are no longer available.
(cherry picked from commit 8451fc36ca)
Co-authored-by: Felix Fontein <felix@fontein.de>
merge_variables: correct misleading short description (#8580)
The short description makes it sound like the plugin would only support
matching a given suffix, while the actual description clarifies the
actual matching capabilities (suffix, prefix or regular expression).
Update the short description accordingly.
(cherry picked from commit a3989095af)
Co-authored-by: Elias Probst <mail@eliasprobst.eu>
CI: Replace FreeBSD 14.0 with 14.1; add 14.0 for stable-2.17 (#8550)
* Replace FreeBSD 14.0 with 14.1; add 14.0 for stable-2.17.
* Skip tests that do not work.
(cherry picked from commit 9e38161400)
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update CI for ansible-core devel (#8534)
* Update CI for ansible-core devel.
* Uncomment platforms that cause problems.
(cherry picked from commit 86f19cb5d3)
* Finish updating CI (#8537)
* Uncomment TODO entries.
* Exclude some tests that fail or are known to fail.
* Also run extra VM tests on Ubuntu 24.04.
* Fix condition.
* More adjustments.
(cherry picked from commit ecb68aa5d2)
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
proxmox_kvm: document that force requires archive (#8503)
* proxmox_kvm: document that force requires archive
As per `qm(1)`, the force option requires `archive`. Add this
information in the `proxmox_kvm` module so one will know they have to
define `archive` when using `force`.
* fix: parameter is an option O(archive)
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 3314d5c8db)
Co-authored-by: Bruno Travouillon <devel@travouillon.fr>
pacman: do not fail if there is nothing to do (#8514)
Do not fail if there is nothing to do.
(cherry picked from commit df7fe19bbe)
Co-authored-by: Felix Fontein <felix@fontein.de>
Fix OpenNebula inventory crash when NIC does not have IP (#8489)
* Fix OpenNebula inventory crash when NIC does not have IP
Match IPv6 behaviour.
When a NIC does not have an IP:
File "ansible/inventory/manager.py", line 292, in parse_source
plugin.parse(self._inventory, self._loader, source, cache=cache)
File "ansible-cm/plugins/inventory/opennebula.py", line 263, in parse
self._populate()
File "ansible-cm/plugins/inventory/opennebula.py", line 226, in _populate
servers = self._retrieve_servers(filter_by_label)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "ansible-cm/plugins/inventory/opennebula.py", line 210, in _retrieve_servers
server['v4_first_ip'] = self._get_vm_ipv4(vm)
^^^^^^^^^^^^^^^^^^^^^
File "ansible-cm/plugins/inventory/opennebula.py", line 154, in _get_vm_ipv4
return net['IP']
* Update to call to match IPv6 and add changelog fragment
* Update changelog fragment.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 3716187fc3)
Co-authored-by: Tom Paine <github@aioue.net>
CI: Bump Azure test container to 6.0.0 (#8483)
Bump Azure test container to 6.0.0.
(cherry picked from commit 1ae6c82558)
Co-authored-by: Felix Fontein <felix@fontein.de>
git_config: fix state=absent if value is present (#8452)
* Fix state=absent if value is present.
* Update changelog fragment.
(cherry picked from commit 2a3819a696)
Co-authored-by: Felix Fontein <felix@fontein.de>
fix(opentelemetry): remove request from the logs (#8430)
* fix(opentelemetry): remove request from the logs
* add changelog
* filter by task
* add new bugfix
* rename
* support legacy and shortcat ansible tasks
* Update plugins/callback/opentelemetry.py
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 5041ebe5b2)
Co-authored-by: Victor Martinez <victormartinezrubio@gmail.com>
Fix the homebrew module failing because of warnings (#8406)
Instead of checking if there is an error message, which can also be a
warning, we now check the return code.
This commit fixes#8229#7044
Co-authored-by: Strahinja Kustudic <strahinjak@nordeus.com>
(cherry picked from commit 43cb5a0d54)
Co-authored-by: Strahinja Kustudic <kustodian@gmail.com>
keycloak_client: avoid TypeError if `result["attributes"]` is a list (#8403)
* fix(keycloak_client): avoid TypeError if attributes is a list
As sanitize_cr might be executed after normalise_cr, result['attributes'] can be of type list and we
run into:
TypeError: list indices must be integers or slices, not str
* Update changelog fragment.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 572caeaa39)
Co-authored-by: Thomas Bach <63091663+thomasbach-dev@users.noreply.github.com>
Update lxd_container.py documentation. (#8309)
remove dead link from debian example
(cherry picked from commit d96b2642bc)
Co-authored-by: Herschdorfer <herschdorfer@gmail.com>
docs: add seealso and notes for yaml callback plugin (#8396)
* docs: add seealso and notes for yaml callback plugin
* docs: correct links to parameters
Co-authored-by: Felix Fontein <felix@fontein.de>
* docs: shorten the long lines
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 4792e21416)
Co-authored-by: kurokobo <kuro664@gmail.com>
* From now on automatically add period to new plugins in changelog, and use FQCNs (#8392)
From now on automatically add period to new plugins in changelog, and use FQCNs.
(cherry picked from commit 704a5acc63)
* Update changelogs.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
fix(opentelemetry): close span even if no logs are sent (#8367)
* fix(opentelemetry): close span even if no logs are sent
* changelog
(cherry picked from commit 03240ad7dc)
Co-authored-by: Victor Martinez <victormartinezrubio@gmail.com>
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>
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>
bug(lookup/merge_variables): Fix rendering foreign variables (#8303)
* manually prepare variables of foreign host including hostvars property
* render variables from context of current host
* add integration test for cross host merge
* lint fixes
* adjust cross host merge unit tests to provide a tiny bit of the HostVars Class API
* add license information
* lint
* add changelog fragment
* Update tests/integration/targets/lookup_merge_variables/test_cross_host_merge_play.yml
Okay
Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com>
* Update tests/integration/targets/lookup_merge_variables/test_cross_host_merge_play.yml
Okay
Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com>
* Update tests/integration/targets/lookup_merge_variables/test_cross_host_merge_play.yml
Okay
Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com>
* rename _HostVars to HostVarsMock
* removing unnecessary task
---------
Co-authored-by: Gitlab CI <alexander.petrenz@posteo.de>
Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com>
(cherry picked from commit 136419c5c0)
Co-authored-by: Alexander Petrenz <petrenz.a@gmail.com>
CONTRIBUTING.md: update link for changelog fragments, and add more text on them (#8322)
Update link for changelog fragments, and add more text on them.
(cherry picked from commit bc7ad0f0ea)
Co-authored-by: Felix Fontein <felix@fontein.de>
Fix django_manage tests (#8325)
Ensure that manage.py is executable.
(cherry picked from commit feb443d260)
Co-authored-by: Felix Fontein <felix@fontein.de>
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>
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>
CI: Arch Linux switched to Python 3.12 (#8291)
Arch Linux switched to Python 3.12.
(cherry picked from commit fc2024d837)
Co-authored-by: Felix Fontein <felix@fontein.de>
use smaller snap, add disabled to aliases (#8237)
* use smaller snap, add disabled to aliases
* rollback tag disabled in aliases
* comment out the test_dangerous as it takes too long
* comment out the test_dangerous as it takes too long
* Update tests/integration/targets/snap/tasks/main.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 45c2e0f8d0)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
apt_rpm: add new states 'latest' and 'present_not_latest' (#8247)
* Add new states 'latest' and 'present_not_latest'.
* Improve documentation.
(cherry picked from commit 211688ef1b)
Co-authored-by: Felix Fontein <felix@fontein.de>
Add support for state=latest to flatpak module (#8221)
Fixes#6563 by extending the allowed values of the `state` parameter to
include `latest`. To do this, the `update_flat()` function is introduced
which borrows the majority of its implementation from both the existing
`install_flat()` and `remove_flat()` functions. The documentation and
examples have been expanded describing what to expect when using
`state=latest`.
(cherry picked from commit 0735656319)
Co-authored-by: Kenneth Benzie (Benie) <k.benzie83@gmail.com>
Add accept-new as valid option for ssh_config host key checking (#8257)
* Add accept-new as valid option for host key checking
* Add changelog fragment for #8257
* 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 af1c5dd785)
Co-authored-by: Maxopoly <max@dermax.org>
Add an explicit `select` option to `portage` module (#8236)
* Add an explicit `select` option to `portage` module
This is a fix for #6226
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* Default `select` option to None, making it more retrocompatible
* Add changelog fragment for the PR
* Update changelogs/fragments/8236-portage-select-feature.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit be11d0d409)
Co-authored-by: Thomas Langé <thomas.lange.oss@gmail.com>
bitwarden_secrets_manager: implement rate limit retry with backoff (#8238)
* bitwarden_secrets_manager: implement rate limit retry with backoff (#8230)
* bitwarden_secrets_manager: add changelog fragment for 90cd2d61 (#8238)
* bitwarden_secrets_manager: clarify "Too many requests" is an error condition (#8238)
* bitwarden_secrets_manager: avoid an extra _run_with_retry execution after the last (very long) delay
* bitwarden_secrets_manager: changelog fragment key and reference issue url
(cherry picked from commit a05a5982a6)
Co-authored-by: Matt Adams <matt@4dk.me>
bitwarden - add support for filtering by organization_id (#8188)
* bitwarden - add support for filtering by organization_id
* Update changelogs/fragments/8188-bitwarden-add-organization_id.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* implement PR discussion result on wording
* rewrite search_field filtering
To correctly handle organization_id and collection_id by passing both to bw.
Tests needed to be extended to filter organizations / collections and
the testdata needed changes to reflect that a collection always belongs to a
single organizaion
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 865de5baa0)
Co-authored-by: Kai <github@sistason.de>
puppet_utils: Do not force lang for cmd (#8001)
puppet_utils: Add option to set LANG for puppet execution
Add option `environment_lang` to force the LANG when executing the
puppet agent. The default is the `C` LANG
(cherry picked from commit 1b8e6bc95b)
Co-authored-by: Niklas Schwarz <schwarz.niklas@hotmail.de>
Add support for docker-v2 protocol in Keycloak modules (#8216)
* Add support for docker-v2 protocol in Keycloak modules
* use dash instead of underscore for the docker-v2
* Update documentation
* Add changelog fragment
* fix missing whitespace around operator
* Update changelogs/fragments/8215-add-docker-v2-protocol.yml
Update changelog fragment to reviewers suggestion, add refrence to issue and pull request
Co-authored-by: Felix Fontein <felix@fontein.de>
* Add documentation about adding docker-v2 value in community general 8.6.0
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit a5b2b5ce8c)
Co-authored-by: Anders Stiksrud Helmen <anders.s.helmen@gmail.com>
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>
Include changelog in docsite (#8234)
Include changelog in docsite.
(cherry picked from commit 12b76ead29)
Co-authored-by: Felix Fontein <felix@fontein.de>
passwordstore: Add missing_subkey parameter (#8166)
* passwordstore: Add missing_subkey parameter
Add ability to trigger error or warning when a subkey is missing in pass file.
By default the behavior is unchanged (if subkey is missing, None is returned).
This option can also be set in ansible.cfg
* passwordstore - missing_subkey: Update changelog/fragments file with PR number
* 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 da29ea151d)
Co-authored-by: Manuel Luzarreta <mluzarreta.pro@pm.me>
Support newer 'riak admin' sub-command beside legacy 'riak-admin' command (#8211)
* Support newer 'riak admin' sub-command
* Added changelog for riak admin sub-command
* Added blank line
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* replaced string commands with lists
added white space
removed white space
removed parenthesis
* Update changelogs/fragments/8211-riak-admin-sub-command-support.yml
Co-authored-by: Don Naro <dnaro@redhat.com>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Don Naro <dnaro@redhat.com>
(cherry picked from commit bafad8ecd4)
Co-authored-by: tobixx <tobixx@directbox.com>
Redfish: add `Multipart` bool return value to `FirmwareUpdateCapabilities` (#8195)
* Redfish: add Multipart bool return value to FirmwareUpdateCapabilities
Fixes#8194
Signed-off-by: Boris Glimcher <Boris.Glimcher@emc.com>
* Update changelogs/fragments/8194-redfish-add-multipart-to-capabilities.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Signed-off-by: Boris Glimcher <Boris.Glimcher@emc.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 6c8f949ba9)
Co-authored-by: Boris Glimcher <36732377+glimchb@users.noreply.github.com>
fix: Ensuring interpolation is disabled for ConfigParser (#8185)
* fix: Ensuring interpolation is disabled for ConfigParser
This PR disables interpolation of ConfigParser and adds test coverage for that.
* Adding changelog fragment
* Fixing missing extension of changelog fragment
* Adding issue link to changelog fragment
* Update changelogs/fragments/8183-from_ini_to_ini.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 9307b76e74)
Co-authored-by: Steffen Scheib <37306894+sscheib@users.noreply.github.com>
fix(aix_filesystem): remove extra param from running lsvg (#8176)
* fix(aix_filesystem): remove extra param from running lsvg
* chore: add new line to changlog file
* Update 8151-fix-lsvg_cmd-failed.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 8491bf7b49)
Co-authored-by: Peter Shen <xianpeng.shen@gmail.com>
Update nmcli.py to support OVS commands (#8154)
* Update nmcli.py to support OVS commands
Adding Openvswitch command support and documentation to the nmcli module
* Fixed versioning and documentation, added changelog fragment
* Update changelogs/fragments/8154-add-ovs-commands-to-nmcli-module.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/modules/nmcli.py
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 39ef949f27)
Co-authored-by: Codey Schoettle <165081359+c-cschoettle@users.noreply.github.com>
updated lxd_container.py docs (#8168)
linuxcontainer.org has phased out LXC/LXD support.
This edit reflects part of it in the docs.
(cherry picked from commit 610ecf9bf5)
Co-authored-by: Herschdorfer <herschdorfer@gmail.com>
CI: ansible-core devel removed Python 3.7 support, no longer allows 'vars:' with lists (#8190)
* Ansible-core devel removed Python 3.7 support.
* Do not use 'vars' with lists.
(cherry picked from commit 13d0310e91)
Co-authored-by: Felix Fontein <felix@fontein.de>
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>
gitlab modules: do not crash if python-gitlab isn't there (#8158)
Do not crash if python-gitlab isn't there.
(cherry picked from commit b463571902)
Co-authored-by: Felix Fontein <felix@fontein.de>
HAProxy skips the wait when drain=true and the backend is down - fix issue 8092 (#8100)
* fix issue 8092
* "is not" => "!="
* moved the drain & down cause to the wait
* added changelogs for PR 8100
* fixed yaml
* fixed file type
* Apply suggestions from code review
Removed a dot from a comment
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/modules/haproxy.py
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b2b8fc30bf)
Co-authored-by: RayJin2000 <rayjin2000@gmail.com>
inventory plugins: make data obtained from remote unsafe (#8098)
Make data obtained from remote unsafe.
(cherry picked from commit d62fe154d2)
Co-authored-by: Felix Fontein <felix@fontein.de>
snap: disable some tests that take way too long (#8148)
* Do not install microk8s in snap tests, as it is too slow.
* Do not install cider in snap tests, as it is slow.
(cherry picked from commit 609f28f791)
Co-authored-by: Felix Fontein <felix@fontein.de>
Added startup configuration option (#8038)
* Added startup configuration option
Added the option to configure startup behavior of lxc containers. Works well in conjunction with onboot and allows to set startup order, startup delay and shutdown delay
* Removed trailing whitespaces in documentation
* added changelog fragment
* Updated Documentation to suggested wording
Co-authored-by: Felix Fontein <felix@fontein.de>
* Improve documentation.
* Fix changelog fragment.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 795a855d0e)
Co-authored-by: Michael Cicogna <44257895+miccico@users.noreply.github.com>
Fix bond-slave honoring MTU (#8118)
The bond-slave type should honor the request
MTU value.
(cherry picked from commit a4b32d7b9c)
Co-authored-by: Tobias Urdin <tobias.urdin@gmail.com>
Fix check mode in iptables_state for incomplete iptables-save files along with integration tests (#8029)
* Implement integration test to reproduce #7463
* Make new iptables_state checks async
* Add missing commit to iptable_state integration test
* Remove async when using checkmode in iptables_state integration tests
* Do per table comparison in check mode for iptables_state
* Calculate changes of iptables state per table based on result
* Output target iptables state in checkmode
* Refactor calculation of invidual table states in iptables_state
* Add missing return for table calculation
* Add missing arg to regex check
* Remove leftover debug output for target iptable state
* Parse per table state from raw state string
* Join restored state for extration of table specific rules
* Switch arguments for joining restored iptable state
* Output final ip table state
* Compare content of tables
* Complete iptables partial tables test cases
* Correct order of test iptables data
* Update docu for iptables tables_after
* Add changelog fragment
* Appease the linting gods for iptables_state
* Adjust spelling and remove tables_after from return values
(cherry picked from commit 23396e62dc)
Co-authored-by: Maxopoly <max@dermax.org>
ini_file - support optional spaces around section names (#8075)
* ini_file - support optional spaces between section names and their surrounding brackets
Some ini files have spaces between some of their section names and the
brackets that enclose them. This is documented in the 'openssl.cnf(5)' man
page. In order to manage files such as /etc/ssl/openssl.cnf with ini_file
before now, one would have to include spaces in the section name like this:
section: ' crypto_policy '
option: Options
value: UnsafeLegacyRenegotiation
This change implements matching section headers with such optional spaces.
Existing tasks using the workaround above will continue to work, even in
cases where spaces in section headers are subsequently removed.
* readability improvement in the test content expressions
---------
Co-authored-by: Todd Lewis <todd_lewis@unc.edu>
(cherry picked from commit 4363f8764b)
Co-authored-by: Todd Lewis <utoddl@gmail.com>
Ignore pylint warnings for construct that does not work with Python 2 (#8130)
* Ignore pylint warnings for construct that does not work with Python 2.
* Revert "Ignore pylint warnings for construct that does not work with Python 2."
This reverts commit 51d559cc94.
* Different approach: use ignore.txt since otherwise ansible-core 2.14 tests fail.
(cherry picked from commit fb67df3051)
Co-authored-by: Felix Fontein <felix@fontein.de>
Implement usb_facts module (#8076)
* First implementation of usb module
* Rename to usb_facts
* Working tests
* Appease linter
* Fix author
* Remove splitlines arg for python 2.7 compat
* indent usb test further
* indent usb test a bit less
* Remove trailing whitespace
* Update plugins/modules/usb_facts.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/modules/usb_facts.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* Adjust usb_facts PR based on feedback
* Add usage example and extend correct documentation fragment
* Add myself to BOTMETA.yml
* 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 6298ad4faa)
Co-authored-by: Maxopoly <max@dermax.org>
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>
Add --diff support for ldap_attrs module (#8073)
* Add --diff support for ldap_attrs module
* Change diff_mode support in docstring to full
* Use _attrs suffix for old and new
* Add version added to ldap_attrs diff mode
* Add fragment for ldap_attrs diff mode
* Update fragment to include link to PR and lowercase start
* Update changelogs/fragments/8073-ldap-attrs-diff.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 09cded05e7)
Co-authored-by: StopMotionCuber <ruben.simons@web.de>
CI: add macOS 14.3 for devel, move 13.2 to stable-2.16 (#8084)
Add macOS 14.3 for devel, move 13.2 to stable-2.16.
(cherry picked from commit 6fab46710a)
Co-authored-by: Felix Fontein <felix@fontein.de>
fix(homebrew): give correct error message when become true used (#8048)
* fix(homebrew): give correct error message when become true used
This commit fixes#8047 by raising the exception coming from calling
homebrew with the `become: true` parameter set.
* chore(changelog): add changelog fragment
(cherry picked from commit fa30b02294)
Co-authored-by: Michael Wall <thewalla07@gmail.com>
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>
Updates `lxd_container` to support new LXD API (#7980)
* feat: ✨ adds support for /1.0/instances endpoint
* Update changelogs/fragments/lxd-instances-api-endpoint-added.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 74c15c1241)
Co-authored-by: Anthony Anderson <fnanderson93@gmail.com>
[FIX] proxmox_kvm: fetch vm status from node-specific API endpoint to ensure fresh state (#7953)
* proxmox_kvm: fetch vm status from node-specific API endpoint to ensure fresh state, fixes#7817
* changelog fragments
* Fix changelog fragment.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 248e2ff321)
Co-authored-by: nxet <nxet821@protonmail.com>
Fix instruction for distro Ubuntu and Debian for htpasswd depends (#8037)
* Fix instruction fo debian 12 for htpasswd depends
* Add range for python-passlib distro
(cherry picked from commit 05bf5ee1df)
Co-authored-by: Xavier Mitault <xavier.mitault@epitech.eu>
fix(modules/gitlab_runner): Use correct argument to list all runners (#7790)
* fix(modules/gitlab_runner): Use correct argument to list all runners
python-gitlab 4.0.0 removed support for the `as_list=False` parameter.
This functionality is now available as `iterator=True`.
Without this change, the module actually only retrieves the first
20 results, which can lead to non-idempotent behavior, such as
registering a runner again.
* Add changelog entry (#7790)
* gitlab_runner: Check python-gitlab version when listing runners
* gitlab: Add list_all_kwargs variable to module_utils
* refactor(gitlab modules): use list_all_kwargs where it helps (#7790)
I did not change every instance of all=True or all=False, only those
which could obviously benefit from simplifying:
* Code using `all=True` but then searching for any items that match a
condition (no need to collect the full list).
* Code that basically reimplements `all=True` with manual pagination.
(These could be changed to `all=True`, but `list_all_kwargs` also
sets per_page to 100, to gather data faster.)
* gitlab_instance_variable: Use list_all_kwargs
* Add new changelog entry for gitlab module changes (#7790)
(cherry picked from commit 787fa46217)
Co-authored-by: Mike Wadsten <mikewadsten@gmail.com>
Add templating support to Icinga2 Inventory (#7996)
* Add templating support to Icinga2 Inventory
* Added CHANGELOG fragment
* Linting after CI failure
* Update changelogs/fragments/7996-Add templating support to Icinga2 Inventory.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Error in variables'name
---------
Co-authored-by: Gianluca Salvo <gianluca.salvo@gruppomol.it>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 638a7fc199)
Co-authored-by: Gianluca Salvo <Gianlu@users.noreply.github.com>
Correct apk docu to not include spaces in package name (#8009)
* Correct apk docu to not include spaces in package name
* Update apk name docu as suggested in PR
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b5c3361be4)
Co-authored-by: Maxopoly <max@dermax.org>
Fix errors in hpe specific get methods (#7952)
* Fix errors in hpe specific get methods
* corrects reference to non existent `self.chassis_uri_list` to
`self.chassis_uris`
* corrects syntactically incorrect dereferences
* removes an uneccessary variable assignment to `chassis_uri_list`
in `get_psu_inventory` method
* adds changelog fragment for above indicating fix of issue #7951
* Update changelog.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit dd7c3ad10d)
Co-authored-by: Dave Rawks <dave@rawks.io>
cargo: use the correct path when checking installation status fixing idempotency issue. (#7970)
* cargo: use the correct path when checking installation status
* Add changelog fragment
* Update changelogs/fragments/7970-fix-cargo-path-idempotency.yaml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 9510988abc)
Co-authored-by: rbomze <14312790+rbomze@users.noreply.github.com>
Added transactional(rollback/commit) support to mssql_script module (#7976)
* Added transactional(rollback/commit) support to mssql_script module via optional boolean param 'transaction'
* Added changelog fragment
* Implemented PR Review comments by felixfontein
(cherry picked from commit beacd54b7b)
Co-authored-by: Udit Yadav <36297285+BlackHat786000@users.noreply.github.com>
New filters to calculate the union, intersection, difference and symmetric difference of lists by preserving the items order (#7985)
New filters lists_union, lists_intersect, lists_difference and lists_symmetric_difference added.
Signed-off-by: Christoph Fiehe <c.fiehe@eurodata.de>
Co-authored-by: Christoph Fiehe <c.fiehe@eurodata.de>
(cherry picked from commit 102a0857db)
Co-authored-by: cfiehe <cfiehe@users.noreply.github.com>
Add noexec support to sudoers (#7983)
* Add noexec support to sudoers
* Add changelog fragment #7983
* Fix yml formatting in fragment 7983
* 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 49bd9cbd3c)
Co-authored-by: adaniaud <adaniaud@users.noreply.github.com>
Redfish: Enhanced GetUpdateStatus to allow for empty responses to accomodate possible usage of 204 No Content (#8004)
* Added handling for 204 No Content in some circumstances
Signed-off-by: Mike Raineri <michael.raineri@dell.com>
* Correcting gzip usage; open_url does the decompression automatically
Signed-off-by: Mike Raineri <michael.raineri@dell.com>
* Changelog fragment
Signed-off-by: Mike Raineri <michael.raineri@dell.com>
* Removed imports no longer used
Signed-off-by: Mike Raineri <michael.raineri@dell.com>
* Updated data unpacking to dynamically check ansible-core version and response headers to see if gzip decompression is needed
Signed-off-by: Mike Raineri <michael.raineri@dell.com>
---------
Signed-off-by: Mike Raineri <michael.raineri@dell.com>
(cherry picked from commit 2a8da76907)
Co-authored-by: Mike Raineri <michael.raineri@dell.com>
Implement integration tests for apk (#7992)
* Implement integration tests for apk
* Add group for apk integration test
* Adjust integration tests of apk as suggested in PR
(cherry picked from commit ffa3d15881)
Co-authored-by: Maxopoly <max@dermax.org>
ipa_user: add how to remove userauthtype from an user (#7991)
(cherry picked from commit 551b0b9eea)
Co-authored-by: Parsa Yousefi <p.yousefi97@gmail.com>
Adding releases events option to gitlab_hook module (#7956)
* Adding releases events option to gitlab_hook module
* Fixing typo in documentation for gitlab_hook module
* No default value for releases_events
* Adding changelog fragment
(cherry picked from commit 1dd697bdc2)
Co-authored-by: Zoran Krleza <zoran.krleza@true-north.hr>
Fixes#1226 - keycloak_client detects changes on check_mode but not in run mode (#7881)
* Fix warning integrated
* Update Keycloak version intergrated test
* Exclude metadata from diff test
* Sanity
* Add fragments
* typo
* Add test
* Update changelogs/fragments/7881-fix-keycloak-client-ckeckmode.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Remove docker compose
* Update changelogs/fragments/7881-fix-keycloak-client-ckeckmode.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Andre Desrosiers <andre.desrosiers@ssss.gouv.qc.ca>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 001292c780)
Co-authored-by: desand01 <desrosiers.a@hotmail.com>
fixes#7918 - onepassword lookup fails if field name contains uppercase letters and section is specified (#7919)
* fix#7918
* Update plugins/lookup/onepassword.py
Co-authored-by: Sam Doran <github@samdoran.com>
* onepassword lookup: transform field ids to lowercase
* #7918: added unit tests
* #7919: add changelog fragment
* Update changelogs/fragments/7919-onepassword-fieldname-casing.yaml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Sam Doran <github@samdoran.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 6088e2dc0f)
Co-authored-by: Benjamin Mitzkus <b.mitzkus@gmx.de>
Add krauthosting as proxmox maintainer (#7965)
Add krauthosting as proxmox maintainer.
(cherry picked from commit bc383b8f7b)
Co-authored-by: Felix Fontein <felix@fontein.de>
proxmox_kvm - new param to support unsafe updates (#7843)
* proxmox_kvm - new param to support unsafe updates
* changelog fragments
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* improved docs
* updated `version_added`
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit c7a2e28daa)
Co-authored-by: nxet <nxet821@protonmail.com>
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)
Simplify regex for identifying order number in DN (#7646) (#7697)
Assume that if a string of digits occurs between curly braces anywhere
in the first component of the DN, that this is an order number. The
sequence does not necessarily have to occur after an equals sign.
(cherry picked from commit a5cd4ebea2)
Co-authored-by: Aaron Sowry <aeneby@users.noreply.github.com>
Fixes#7389 - NMCLI issue with creating a wifi bridge-slave (#7695)
* working mod
* added changelog fragment
* added link on fragment
* Update changelogs/fragments/7389-nmcli-issue-with-creating-a-wifi-bridge-slave.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* last fix
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 997e6345b5)
Co-authored-by: Gianmarco Mameli <57061995+gianmarco-mameli@users.noreply.github.com>
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>
Consul action group (#7897)
Added action group for new style consul modules.
(cherry picked from commit afd1988810)
Co-authored-by: Florian Apolloner <florian@apolloner.eu>
Detection of already installed homebrew cask (#7870)
* fix: detect already installed cask
Use json output v2 to check if formulae and casks are installed
chore: add changelog fragment
* test: add homebrew cask specific tests
* refactor: change cask used in tests
* chore: apply suggestions to changelog fragment
(cherry picked from commit be3bfd6fa5)
Co-authored-by: João Victor Silva <160127815@aluno.unb.br>
Add new consul modules and reuse code between them. (#7878)
Refactored consul modules and added new roles.
(cherry picked from commit 29f9865497)
Co-authored-by: Florian Apolloner <florian@apolloner.eu>
New module: gitlab_milestone (#7824)
* new module gitlab_milestone
* change BOTMETA
* remove blank line
* version_added field
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/modules/gitlab_milestone.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update description with reference
Co-authored-by: Felix Fontein <felix@fontein.de>
* Dates as string type
* Removed python 2.7 requirement
* Fixes from recent PR comments.
* milestones_obj returned on success
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 4298f2dd92)
Co-authored-by: Gabriele Pongelli <gpongelli@users.noreply.github.com>
fix proxmox update when setting does not already exist (#7872)
* fix proxmox update when setting does not already exist
* add changelog fragment
---------
Co-authored-by: Eric Trombly <etrombly@iomaxis.com>
(cherry picked from commit 2d3f99ec3a)
Co-authored-by: Eric Trombly <etrombly@yahoo.com>
New module: gitlab_label (#7657)
* gitlab project label first commit
* fixes from CI run
* fixing some sanity test
* sanity checks, removing typing
* remove default for required field
* fix indentation
* improving test set
* fixes to pass test set
* reuse compliancy
* fix sanity checks
* fix: method returns group, not project
* refactor: start adding group, test still pass
* updated module and tests to handle group labels
* update name to remove 'project'
* removing default
* typo
* generic name for returned dict
* returns also label object from library invocation
* remove unused var, updated doc
* fix output object name
* version_added
Co-authored-by: Felix Fontein <felix@fontein.de>
* Remove python 2.7
Co-authored-by: Felix Fontein <felix@fontein.de>
* Missing dot
Co-authored-by: Felix Fontein <felix@fontein.de>
* Remove version_added
Co-authored-by: Felix Fontein <felix@fontein.de>
* Remove useless doc
Co-authored-by: Felix Fontein <felix@fontein.de>
* Color is a string
* Fixes from recent PR comments.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 5c72ab34bf)
Co-authored-by: Gabriele Pongelli <gpongelli@users.noreply.github.com>
Refer to LXD containers/VMs as instances (#7873)
* plugins/connection/lxd: rename container to instance
Signed-off-by: Simon Deziel <simon.deziel@canonical.com>
* plugins/inventory/lxd: rename container to instance
It seems that a previous search and replace was done but it
missed those `containe_name` due to missing `r` in `container`.
Signed-off-by: Simon Deziel <simon.deziel@canonical.com>
---------
Signed-off-by: Simon Deziel <simon.deziel@canonical.com>
(cherry picked from commit 13e3161f2a)
Co-authored-by: Simon Deziel <simon.deziel@canonical.com>
Refactor of consul modules (#7826)
* Extract common functionality.
* Refactor duplicated code into module_utils.
* Fixed ansible-test issues.
* Address review comments.
* Revert changes to consul_acl.
It uses deprecated APIs disabled since Consul 1.11 (which is EOL), don't
bother updating the module anymore.
* Remove unused code.
* Merge token into default doc fragment.
* JSON all the way down.
* extract validation tests into custom file and prep for requests removal.
* Removed dependency on requests.
* Initial test for consul_kv.
* fixup license headers.
* Revert changes to consul.py since it utilizes python-consul.
* Disable the lookup test for now.
* Fix python 2.7 support.
* Address review comments.
* Address review comments.
* Addec changelog fragment.
* Mark ConsulModule as private.
(cherry picked from commit 44679e71a2)
Co-authored-by: Florian Apolloner <florian@apolloner.eu>
Add missing `id` parameter into pacman_key documentation examples. (#7855)
Key ID is a mandatory parameter, and the examples which miss it are
incorrect.
(cherry picked from commit cd77d67efb)
Co-authored-by: Danila Kiver <forumdan@mail.ru>
Use shared workflow for Galaxy import test (#7857)
Simplifiy workflows.
(cherry picked from commit 069b485b7e)
Co-authored-by: Felix Fontein <felix@fontein.de>
Make compatible with newer reuse versions (#7858)
Make compatible with newer reuse versions.
(cherry picked from commit 002208f425)
Co-authored-by: Felix Fontein <felix@fontein.de>
ipa_otptoken: fix wrong return value string to bool (#7795)
ipa_data is return ipatokendisable in boolean format and the module expects it as a string
this behavior causes a lack of idempotency and the get_diff module will fail in the second run.
(cherry picked from commit 31de16cee3)
Co-authored-by: Parsa Yousefi <p.yousefi97@gmail.com>
CI: remove ignore files for ansible-core 2.11 and 2.12 (#7837)
Remove ignore files for ansible-core 2.11 and 2.12.
(cherry picked from commit 76fde43fca)
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>
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>
CI: for some reason async-timeout doesn't seem to get installed on Python 3.11 (#7811)
For some reason async-timeout doesn't seem to get installed on Python 3.11.
(cherry picked from commit 9946f758af)
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)
Co-authored-by: Felix Fontein <felix@fontein.de>
mail module/callback: allow to configure the Message-ID header's domain name (#7765)
Allow to configure the Message-ID header's domain name.
(cherry picked from commit acddb190ba)
Co-authored-by: Felix Fontein <felix@fontein.de>
Add github_app_access_token lookup plugin (#7761)
* Add github_app_access_token lookup plugin
* Fix a typo in short_description
* Remove unused MockOpenUrl
* Fix MockJWT to be used on jwt_instance instead
* Fix a bunch of pep8 and pylint issue
* Remove JWT from requirements, also default jwt_instance and jwk_from_pem so they can be mocked
* Update version added
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update git reference in doc
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/lookup/github_app_access_token.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Expose token expiry as a configurable option
* Update BOTMETA.yml
* Update documentation
* Update example with var, so it is more readable
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 3318034403)
Co-authored-by: weisheng-p <weisheng-p@users.noreply.github.com>
Proxmox add storage content listing (#7725)
Add module to list content on proxmox storage
We first add a method to list storage content for proxmox, then use that
new methode to add an Ansible module to list content on storage attached
to a proxmox node. User can also use content filtering to define what
they want to list (backup, iso, images,...).
This commit also include the integration and unit test for that new
module.
Co-authored-by: Julian Vanden Broeck <julian.vandenbroeck@dalibo.com>
(cherry picked from commit 4f92f39720)
Co-authored-by: Julian <374571+l00ptr@users.noreply.github.com>
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>
Add proxmox_node_info module (#7689)
* Add proxmox_node_info module - restarted PR due to erroneous update/push of my local fork.
* Used wrong user ID.
* Changes requested by felixfontein:
- Capitalization and punctuation in documentation section
- trailing comma on line 125
- Re-order BOTMETA so it is alphabetical
* Mis-copied older version of code, correcting actual call
* Add tests for proxmox_node_info module
(cherry picked from commit 1a3c93f80c)
Co-authored-by: John Berninger <john.berninger@gmail.com>
Add keycloak_realm_rolemapping module to map realm roles to groups (#7663)
* Add keycloak_realm_rolemapping module to map realm roles to groups
* Whitespace
* Description in plain English
* Casing
* Update error reporting as per #7645
* Add agross as maintainer of keycloak_realm_rolemapping module
* cid and client_id are not used here
* Credit other authors
* mhuysamen submitted #7645
* Gaetan2907 authored keycloak_client_rolemapping.py which I took as a
basis
* Add integration tests
* With Keycloak 23 realmRoles are only returned if assigned
* Remove debug statement
* Add test verifying that unmap works when no realm roles are assigned
* Add license to readme
* Change version number this module was added
* Document which versions of the docker images have been tested
* Downgrade version_added
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f7bc6964be)
Co-authored-by: Alexander Groß <agross@therightstuff.de>
cloudflare_dns: announce removal of SPF support (#7773)
Announce removal of SPF support.
(cherry picked from commit 56a18a029a)
Co-authored-by: Felix Fontein <felix@fontein.de>
Bugfix: keycloak_identity_provider does not handle mapper changes properly (#7418)
* fix keycloak_identity_provider ITs to actually pass
- wrong identityProviderAlias in mapper configuration
* kc_identity_provider: add mapper reconfiguration regression tests
* test for removing an existing mapper
* test for adding a new mapper when others already exist
* test for module idempotency when mappers not ordered by name in ascending order
* kc_identity_provider: add bugfixes for mapper reconfigurations
* removing an existing mapper
* adding a new mapper when others already exist
* module idempotency when mappers not ordered by name in ascending order
* add changelog fragment
* prevent unnecessary update_mapper calls when there is no change
* Update changelogs/fragments/7418-kc_identity_provider-mapper-reconfiguration-fixes.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update changelogs/fragments/7418-kc_identity_provider-mapper-reconfiguration-fixes.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update changelogs/fragments/7418-kc_identity_provider-mapper-reconfiguration-fixes.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/modules/keycloak_identity_provider.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* kc_identity_provider: sort changeset mappers via name OR id to prevent potential failures in case name was not specified in playbook
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit fd0d05d6f2)
Co-authored-by: Jakub Danek <danekja@users.noreply.github.com>
Adding a new filter: to_ini, which allows conversion of a dictionary to an INI formatted string (#7744)
* Adding a new filter: to_ini, which allows conversion of a dictionary to an INI formatted string
* Adding to_ini maintainers into BOTMETA
* Correcting filter suffix
* Moving filter to correct path
* Adding error handling; Removing quotes from examples; Fixing RETURN documentation
* Removing the last newline char; Adding error handling for an empty dict
* Adding integration tests for to_ini
* Fixing F-String usage
* Fixing formatting
* Fixing whitespace
* Moving import statements below documentation; Adding a more generic Exception handling; Removing unused imports
* Removing not needed set_fact and replacing it with using vars:
* Replacing MutableMapping with Mapping
(cherry picked from commit ec12422fae)
Co-authored-by: Steffen Scheib <37306894+sscheib@users.noreply.github.com>
ipa_dnsmodule: Add support for ns record management (#7737)
* Add NS record type management to ipa_dnsrecord
* Add jwbernin to BOTMETA for ipa_ modules
* Add changelog fragment
* Rename changelog fragment with pull request number
* Commit changes suggested by felixfontein
(cherry picked from commit f79940c415)
Co-authored-by: John Berninger <john.berninger@gmail.com>
Adding a new filter: from_ini, which allows conversion of INI content to a dictionary (#7743)
* Adding a new filter: from_ini, which allows conversion of INI content to a dictionary
* Adding from_ini maintainers into BOTMETA
* Adding error handling; Removing quotes from examples; Fixing RETURN documentation
* Adding integration tests
* Moving imports below documentation; Adding a more general exception handling
(cherry picked from commit ec6dfe2fcd)
Co-authored-by: Steffen Scheib <37306894+sscheib@users.noreply.github.com>
improvements to the keycloak_realm_key module (#7698)
* add support for rsa enc key usage, more algorithms, and make certficate optional
* fix formatting
* adding changelog fragment
* made suggested code changes based on review
* fix typo and be more clear
* revert certificate to previous defined settings
(cherry picked from commit 702dd9bbda)
Co-authored-by: George Bolo <george.bolo@gmail.com>
keycloak_user: avoid error when trying to delete a non-existing user (#7696)
* avoid error when trying to delete a non-existing user
when force is set, but the user doesn't exist yet, this fails.
* 7696-avoid-attempt-to-delete-non-existing-user
add changelog entry
* rename changelog file
* Update changelogs/fragments/7696-avoid-attempt-to-delete-non-existing-user.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 1389bba459)
Co-authored-by: Michiel Dethmers <michiel@phplist.com>
using timeout parameter within community.general.mail module (#7731)
* using timeout parameter within community.general.mail module
* consolidated time-out example within an existing playbook
* consolidated time-out example within an existing playbook
* Update plugins/modules/mail.py
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 916f6f7c87)
Co-authored-by: Aditya Putta <puttaa@skiff.com>
Updated documentation to reflect new behaviour (#7685)
* Updated documentation to reflect new behaviour
Per issue [6027](https://github.com/ansible-collections/community.general/issues/6027), disk and storage should not be used together, and changes to the API make it so "disk" should be formatted like "<storage>:<size in gb>".
Documentation edited to reflect this new behavior.
* Apply suggestions from code review
Change format due to referencing options.
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 98b2d04348)
Co-authored-by: Wesley P <68830971+xhk416x@users.noreply.github.com>
Add Alicloud, Online, Packet, and Scaleway scenario guides (#7714)
* Add Alicloud, Packet, and Scaleway scenario guides.
These were taken from
3f12228c79/docs/docsite/rst/scenario_guides
and adjusted to reality.
* Fix references.
* Add Online guide.
* Add BOTMETA entries.
* Use FQCN.
* Improve code formatting and indentation.
* Update BOTMETA.
(cherry picked from commit 838e4e3f02)
Co-authored-by: Felix Fontein <felix@fontein.de>
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>
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>
Change tab to space in SSHFP requests (#7653)
* Change tab to space in SSHFP requests
Cloudflare uses space and not tab when you search for SSHFP records
Cloudflare changes fingerprint to uppercase
Create 7653-fix-cloudflare-lookup.yml
* Update changelog fragment.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 3d0da92784)
Co-authored-by: Kalle Møller <git@k-moeller.dk>
[proxmox_vm_info] Add ability to retrieve config (#7485)
* feat: add ability to retrieve config
Light refactor of get_vms_from_nodes function.
Added ability to retrieve configuration for existing machines (current or pending).
* Add changelog fragment
* Add changelog fragment (newline missed)
* Update changelogs/fragments/7485-proxmox_vm_info-config.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* Replaced two bool options with one three-state option
* Module args for the three-state option
* Remove trailing newline
* Make use of dict instead of list. Fix uncalled 'get config for lxc'.
* Sanity tests
* A couple of unit tests fixed
* Unit tests fixed
* Unit tests for p2.7 fixed. Test for config parameter added.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 68051774d8)
Co-authored-by: castorsky <csky57@gmail.com>
lvol: Change ``pvs`` argument type to list (of str) (#7676)
* lvol: Change ``pvs`` argument type to list (of str)
* Add changelog fragment
* Apply review suggestions
(cherry picked from commit a599afa384)
Co-authored-by: Laszlo Szomor <laszomor@gmail.com>
lvol: check return message in both stderr and stdout (#7601)
* lvol: check return message in both stderr and stdout
* add changelog frag
(cherry picked from commit 32558558c0)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
git_config: support multiple values for same name (#7260)
* Refactor the existing git_config.py
* Support multiple values for same name
(cherry picked from commit 07bac1777f)
Co-authored-by: Günther Grill <guenhter@users.noreply.github.com>
Lxd instance not found fix false positives (#7521)
* lxd: Add lxc command execution debug statement.
* lxd: avoid false positives in "instance not found" detection
Due to changes over time in the error message which lxd printed when an
instance wasn't found, the detection logic in the lxd connection plugin
matched any "not found" string. Unfortunately this also false triggered
on other errors e.g. "/usr/bin/python3: not found" from the payload,
giving a confusing error message "UNREACHABLE! ... instance not found"
to the ansible user.
* Update changelog fragment.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b4a2e9da50)
Co-authored-by: Tim Small <tim@seoss.co.uk>
apt_rpm: add check if package version is upgradable (ansible-collections#7414) (#7577)
* apt_rpm: add check if package version is upgradable (ansible-collections#7414)
* add changelog fragment
* apt_rpm: apply the recommended changes and fix the sanity checks
---------
Co-authored-by: Nikolay Burykin <bne@altlinux.org>
(cherry picked from commit ecea4a2f38)
Co-authored-by: burykinne <67783534+burykinne@users.noreply.github.com>
onepassword lookup - Make section and field case insensitive (#7564)
* onepassword lookup: Make section and field case insensitive
This was a regression in behavior when adding support for op v2.
* Return a string by default to avoid an exception if a field is missing
* Use a helper function to lower a value if possible
* Update changelog
(cherry picked from commit 241cc02fa8)
Co-authored-by: Sam Doran <sdoran@redhat.com>
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>
redhat_subscription: use D-Bus registration on RHEL 7 only on 7.4+ (#7624)
subscription-manager does not provide a D-Bus interface in versions of
RHEL 7 older than 7.4.
(cherry picked from commit af01b462d5)
Co-authored-by: Pino Toscano <ptoscano@redhat.com>
infiniband can be a slave too (#7569)
* infiniband can be a slave too
* adding changelog fragment
(cherry picked from commit 42e55e4f86)
Co-authored-by: mark-tomich <tomichms@nih.gov>
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)
Co-authored-by: Felix Fontein <felix@fontein.de>
Only disable cert validation in examples for local network access (#7576)
Only disable cert validation in examples for local network access!
(cherry picked from commit d9f3e7a2ec)
Co-authored-by: Felix Fontein <felix@fontein.de>
Add onepassword_doc lookup plugin (#7490)
* Add onepassword_doc lookup plugin
* Switch to a doc fragment
* Add unit test
* Update docs
* Move parameter validation to the OnePass object
This makes it built in for other lookup plugins using this class.
* Use kwargs for OnePass instantiation
There are enough parameters now that using them positionally can result in
odd behavior.
* Update tests
Correct conftest file name so fixtures are discovered and loaded correctly
Move constant so it doesn’t need to be imported
Add a patch since the parameter validation moved to part of the class init
* Use a lookup docs fragment
* Correct plugin description
(cherry picked from commit e0346d400f)
Co-authored-by: Sam Doran <sdoran@redhat.com>
interfaces_file: filter by address_familiy when updating method (#7612)
* When updating method, check address_family if provided.
* Also test modifying 'method' without address_family filter.
(cherry picked from commit 5adb7ab948)
Co-authored-by: Felix Fontein <felix@fontein.de>
Add option to proxmox dynamic inventory to exclude nodes (#7461)
* Create option to exclude proxmox nodes
* improve node exclusion by only remove the top level group
* add fragment
* Update changelogs/fragments/7437-proxmox-inventory-add-exclude-nodes.yaml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/inventory/proxmox.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Rework node exclusion
* Update fragement PR number
* include release version in option
Co-authored-by: Felix Fontein <felix@fontein.de>
* Clarify description
* Update unit test
* Fix typos in unit test
* Fix additonal typos in test
* Fix CI
* Fixing yet another whitespace pep error
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit d05932fb2c)
Co-authored-by: IamLunchbox <56757745+IamLunchbox@users.noreply.github.com>
ini_file: documentation for 'section' to stop mentioning that null can be passed (#7558)
Update ini_file's documentation for 'section' to stop mentioning that null can be passed.
(cherry picked from commit fce91ebbd4)
Co-authored-by: Felix Fontein <felix@fontein.de>
More docs cleanup (#7552)
* More docs improvements.
* timezone: mention which versions of AIX are supported.
(cherry picked from commit 58705d5ac3)
Co-authored-by: Felix Fontein <felix@fontein.de>
irc module: add validate_certs, rename use_ssl to use_tls (keeping use_ssl as an alias) (#7550)
* Rename use_ssl to use_tls, keep use_ssl as an alias.
* Add validate_certs option.
* Add changelog fragment and recommend setting TLS related settings to true.
* Fix formatting.
* Update documentation to use use_tls=true and validate_certs=true.
(cherry picked from commit f87777b9f5)
Co-authored-by: Felix Fontein <felix@fontein.de>
Set resources payload as a list (#7563)
* Set resources payload as a list
* Update changelogs/fragments/7151-fix-keycloak_authz_permission-incorrect-resource-payload.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 09b9ea466f)
Co-authored-by: fostermi <mfosterm@gmail.com>
Add support for loopback type in nmcli module (#7515)
* add support for loopback devices
* add support for loopback devices
* fix yamllint issue in changelog fragment
* Fix yamlint warning and add note about new connectin type in docs
* change order of lines in documentation so they are sorted
(cherry picked from commit 5147c49498)
Co-authored-by: Alex Groshev <38885591+haddystuff@users.noreply.github.com>
Clean up doc fragments a bit (#7551)
Clean up doc fragments a bit.
(cherry picked from commit a88f6f56c7)
Co-authored-by: Felix Fontein <felix@fontein.de>
ansible_galaxy_install: forgot to remove mentions of the no longer supported Ansible 2.9 in the docs (#7555)
Forgot to remove mentions of the no longer supported Ansible 2.9 in the docs.
(cherry picked from commit 404782c9d7)
Co-authored-by: Felix Fontein <felix@fontein.de>
ssl.wrap_socket() was removed in Python 3.12 (#7542)
* ssl.wrap_socket() was removed in Python 3.12.
* Make code for irc module backwards-compatible.
(cherry picked from commit 21cd65fccf)
Co-authored-by: Felix Fontein <felix@fontein.de>
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>
CI: remove skip/python2.6 from aliases (#7534)
Remove skip/python2.6 from aliases.
Since 8.0.0 we no longer support any ansible-core version that supports Python 2.6.
(cherry picked from commit 89f12c87eb)
Co-authored-by: Felix Fontein <felix@fontein.de>
Support 1Password Connect (#5588) (#7116)
* Support 1Password Connect (#5588)
- Support 1Password Connect with the opv2 client
* Follow pep8, be less explicit
* Update changelog to include PR
* 1Password Connect host and token are now also parameters
* Get argument values from the environment or lookup arguments
* Move imports
* Force using Connect token and host at the same time
* Update unit tests
* Update documentation
* Additional tests
(cherry picked from commit f8652571f7)
Co-authored-by: Xeryus Stokkel <XeryusTC@users.noreply.github.com>
CI: Add rhel/9.3 for devel, remove rhel/9.2 (#7524)
* Add rhel/9.3 for devel, remove rhel/9.2.
* Also skip rhel/9.3 when skipping rhel/9.2.
* snapd is also on available on RHEL 9.3.
(cherry picked from commit 32fa588f47)
Co-authored-by: Felix Fontein <felix@fontein.de>
Close elastic APM client to release connections (#7517)
* Close elastic APM client to release connections
* Changelog fragment
(cherry picked from commit 8d886b42ec)
Co-authored-by: Iuri de Silvio <iurisilvio@gmail.com>
Netcup DNS: Add support for additional record types (#7489)
* Netcup DNS: Add support for additional record types
* Netcup DNS: Add changelog fragment
* Netcup DNS: Include information on minimum required versions in module documentation
* 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 f8d8f691bc)
Co-authored-by: buzz-tee <11776936+buzz-tee@users.noreply.github.com>
infiniband and bond interfaces can receive MTU settings too (#7499)
* infiniband and bond interfaces can receive MTU settings too
* adding test for default mtu setting
* the mtu parameter for infiniband is different than for ethernet
* adding changelog fragment
* Update changelogs/fragments/7499-allow-mtu-setting-on-bond-and-infiniband-interfaces.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit d0870a022e)
Co-authored-by: mark-tomich <tomichms@nih.gov>
feat(gitlab_runner module): Add support for the new runner creation workflow (#7199)
feat(gitlab_runner module): Handle new runner creation workflow
(cherry picked from commit 6b00b76f32)
Co-authored-by: Léo GATELLIER <26511053+lgatellier@users.noreply.github.com>
Improve performance of the bitwarden lookup plugin (#7468)
* Improve performance of the bitwarden lookup plugin
When looking for items using an item id, we can access the item directly with
bw get item instead of searching through all items. This doubles the lookup
speed.
* Update changelogs/fragments/bitwarden-lookup-performance.yaml
Co-authored-by: Felix Fontein <felix@fontein.de>
* fix indentation
* Ensure backwards compatible behavior in case of errors when doing bitwarden lookup by id
* chore: Link to correct PR in changelog fragment
* Use identity check when comparing with None
---------
Co-authored-by: Richard Klose <richard.klose@gec.io>
Co-authored-by: Richard Klose <richard@klose.dev>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 65f58afbd9)
Co-authored-by: Pascal Hofmann <mail@pascalhofmann.de>
[ssh_config] Add support for ControlMaster (#7456)
* [ssh_config] Add support for ControlMaster
* Create separate function to convert bool
* Allow str values with yes/no options to also use bool
(cherry picked from commit c2f08c57e0)
Co-authored-by: Marcel <maleo@google.com>
Add options for password generation in the passwordstore module (#7426)
* feat: Add options for password generation.
* feat: Add documentations for options for password generation.
* fix: Remove newline from the end of the stored raw password
* fix: Define 'msg' variable before the reference inside the condition block
* feat: Add information when the 'timestamp' parameter was added
Co-authored-by: Felix Fontein <felix@fontein.de>
* feat: Add information when the 'preserve' parameter was added
Co-authored-by: Felix Fontein <felix@fontein.de>
* feat: Add changelog fragment for adding new parameters to the 'passwordstore' module
* feat: Change the evaluation of password modification conditions.
* feat: Change version of parameter 'timestamp' from 8.0.0 to 8.0.1
Co-authored-by: Felix Fontein <felix@fontein.de>
* feat: Change version of parameter 'preserve' from 8.0.0 to 8.0.1
Co-authored-by: Felix Fontein <felix@fontein.de>
* fix: Remove newline character from the timestamp message
Co-authored-by: Felix Fontein <felix@fontein.de>
* fix: Add newline character to the end of 'preserve' message.
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Michal Drobny <494056@muni.cz>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 6a514b6843)
Co-authored-by: Michal Drobny <70282353+drobnymichal@users.noreply.github.com>
add template option to proxmox and proxmox_kvm (#7143)
* add template option to proxmox and proxmox_kvm
* make recommended updates
* fix tests
* resolve comments on PR
* save changes to changelog fragment
* Update changelogs/fragments/7143-proxmox-template.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Eric Trombly <etrombly@iomaxis.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 07a47c047b)
Co-authored-by: Eric Trombly <etrombly@yahoo.com>
Use isinstance() instead of type() (#7501)
* Replace type comparisons with isinstance() checks.
* Add changelog.
(cherry picked from commit 48e860be20)
Co-authored-by: Felix Fontein <felix@fontein.de>
This changelog describes changes after version 7.0.0.
v8.6.11
=======
Release Summary
---------------
Maintenance release.
This is the last 8.x.y release. The 8.x.y release train is now effectively End of Life.
Thanks to everyone who contributed to the community.general 8.x.y releases!
v8.6.10
=======
Release Summary
---------------
Maintenance release with a security fix.
Security Fixes
--------------
- keycloak_client - Sanitize ``saml.encryption.private.key`` so it does not show in the logs (https://github.com/ansible-collections/community.general/pull/9621).
v8.6.9
======
Release Summary
---------------
Maintenance release with a security fix.
Security Fixes
--------------
- keycloak_authentication - API calls did not properly set the ``priority`` during update resulting in incorrectly sorted authentication flows. This apparently only affects Keycloak 25 or newer (https://github.com/ansible-collections/community.general/pull/9263).
v8.6.8
======
Release Summary
---------------
Maintenance release for inclusion in Ansible 9.13.0.
Bugfixes
--------
- github_key - in check mode, a faulty call to ```datetime.strftime(...)``` was being made which generated an exception (https://github.com/ansible-collections/community.general/issues/9185).
v8.6.7
======
Release Summary
---------------
Bugfix release.
Bugfixes
--------
- collection_version lookup plugin - use ``importlib`` directly instead of the deprecated and in ansible-core 2.19 removed ``ansible.module_utils.compat.importlib`` (https://github.com/ansible-collections/community.general/pull/9084).
- modprobe - fix check mode not being honored for ``persistent`` option (https://github.com/ansible-collections/community.general/issues/9051, https://github.com/ansible-collections/community.general/pull/9052).
v8.6.6
======
Release Summary
---------------
Regular bugfix release.
Note that this is the last regular bugfix release of community.general 8.x.y.
From now on, there will only be maintenance releases with major bugfixes and
security fixes.
Minor Changes
-------------
- redfish_confg - remove ``CapacityBytes`` from required paramaters of the ``CreateVolume`` command (https://github.com/ansible-collections/community.general/pull/8956).
Bugfixes
--------
- cloudflare_dns - fix changing Cloudflare SRV records (https://github.com/ansible-collections/community.general/issues/8679, https://github.com/ansible-collections/community.general/pull/8948).
- dig lookup plugin - fix using only the last nameserver specified (https://github.com/ansible-collections/community.general/pull/8970).
- homectl - the module now tries to use ``legacycrypt`` on Python 3.13+ (https://github.com/ansible-collections/community.general/issues/4691, https://github.com/ansible-collections/community.general/pull/8987).
- ini_file - pass absolute paths to ``module.atomic_move()`` (https://github.com/ansible/ansible/issues/83950, https://github.com/ansible-collections/community.general/pull/8925).
- ipa_hostgroup - fix ``enabled `` and ``disabled`` states (https://github.com/ansible-collections/community.general/issues/8408, https://github.com/ansible-collections/community.general/pull/8900).
- java_keystore - pass absolute paths to ``module.atomic_move()`` (https://github.com/ansible/ansible/issues/83950, https://github.com/ansible-collections/community.general/pull/8925).
- jenkins_plugin - pass absolute paths to ``module.atomic_move()`` (https://github.com/ansible/ansible/issues/83950, https://github.com/ansible-collections/community.general/pull/8925).
- kdeconfig - pass absolute paths to ``module.atomic_move()`` (https://github.com/ansible/ansible/issues/83950, https://github.com/ansible-collections/community.general/pull/8925).
- keycloak_realm - fix change detection in check mode by sorting the lists in the realms beforehand (https://github.com/ansible-collections/community.general/pull/8877).
- keycloak_user_federation - minimize change detection by setting ``krbPrincipalAttribute`` to ``''`` in Keycloak responses if missing (https://github.com/ansible-collections/community.general/pull/8785).
- keycloak_user_federation - remove ``lastSync`` parameter from Keycloak responses to minimize diff/changes (https://github.com/ansible-collections/community.general/pull/8812).
- one_service - fix service creation after it was deleted with ``unique`` parameter (https://github.com/ansible-collections/community.general/issues/3137, https://github.com/ansible-collections/community.general/pull/8887).
- pam_limits - pass absolute paths to ``module.atomic_move()`` (https://github.com/ansible/ansible/issues/83950, https://github.com/ansible-collections/community.general/pull/8925).
- udm_user - the module now tries to use ``legacycrypt`` on Python 3.13+ (https://github.com/ansible-collections/community.general/issues/4690, https://github.com/ansible-collections/community.general/pull/8987).
v8.6.5
======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- gitlab_group_access_token - fix crash in check mode caused by attempted access to a newly created access token (https://github.com/ansible-collections/community.general/pull/8796).
- gitlab_project_access_token - fix crash in check mode caused by attempted access to a newly created access token (https://github.com/ansible-collections/community.general/pull/8796).
- keycloak_realm_key - fix invalid usage of ``parent_id`` (https://github.com/ansible-collections/community.general/issues/7850, https://github.com/ansible-collections/community.general/pull/8823).
- keycloak_user_federation - fix key error when removing mappers during an update and new mappers are specified in the module args (https://github.com/ansible-collections/community.general/pull/8762).
- keycloak_user_federation - fix the ``UnboundLocalError`` that occurs when an ID is provided for a user federation mapper (https://github.com/ansible-collections/community.general/pull/8831).
- keycloak_user_federation - sort desired and after mapper list by name (analog to before mapper list) to minimize diff and make change detection more accurate (https://github.com/ansible-collections/community.general/pull/8761).
- proxmox inventory plugin - fixed a possible error on concatenating responses from proxmox. In case an API call unexpectedly returned an empty result, the inventory failed with a fatal error. Added check for empty response (https://github.com/ansible-collections/community.general/issues/8798, https://github.com/ansible-collections/community.general/pull/8794).
v8.6.4
======
Release Summary
---------------
Regular bugfix release.
Minor Changes
-------------
- passwordstore lookup plugin - add the current user to the lockfile file name to address issues on multi-user systems (https://github.com/ansible-collections/community.general/pull/8689).
Bugfixes
--------
- gitlab_runner - fix ``paused`` parameter being ignored (https://github.com/ansible-collections/community.general/pull/8648).
- keycloak_user_federation - get cleartext IDP ``clientSecret`` from full realm info to detect changes to it (https://github.com/ansible-collections/community.general/issues/8294, https://github.com/ansible-collections/community.general/pull/8735).
- keycloak_user_federation - remove existing user federation mappers if they are not present in the federation configuration and will not be updated (https://github.com/ansible-collections/community.general/issues/7169, https://github.com/ansible-collections/community.general/pull/8695).
v8.6.3
======
Release Summary
---------------
Regular bugfix release.
Minor Changes
-------------
- wdc_redfish_command - minor change to handle upgrade file for Redfish WD platforms (https://github.com/ansible-collections/community.general/pull/8444).
- keycloak_clientscope - remove IDs from clientscope and its protocol mappers on comparison for changed check (https://github.com/ansible-collections/community.general/pull/8545).
- nsupdate - fix 'index out of range' error when changing NS records by falling back to authority section of the response (https://github.com/ansible-collections/community.general/issues/8612, https://github.com/ansible-collections/community.general/pull/8614).
- redfish_utils module utils - do not fail when language is not exactly "en" (https://github.com/ansible-collections/community.general/pull/8613).
v8.6.2
======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- git_config - fix behavior of ``state=absent`` if ``value`` is present (https://github.com/ansible-collections/community.general/issues/8436, https://github.com/ansible-collections/community.general/pull/8452).
- homebrew - do not fail when brew prints warnings (https://github.com/ansible-collections/community.general/pull/8406, https://github.com/ansible-collections/community.general/issues/7044).
- keycloak_client - fix TypeError when sanitizing the ``saml.signing.private.key`` attribute in the module's diff or state output. The ``sanitize_cr`` function expected a dict where in some cases a list might occur (https://github.com/ansible-collections/community.general/pull/8403).
- keycloak_realm - add normalizations for ``attributes`` and ``protocol_mappers`` (https://github.com/ansible-collections/community.general/pull/8496).
- launched - correctly report changed status in check mode (https://github.com/ansible-collections/community.general/pull/8406).
- opennebula inventory plugin - fix invalid reference to IP when inventory runs against NICs with no IPv4 address (https://github.com/ansible-collections/community.general/pull/8489).
- opentelemetry callback - do not save the JSON response when using the ``ansible.builtin.uri`` module (https://github.com/ansible-collections/community.general/pull/8430).
- opentelemetry callback - do not save the content response when using the ``ansible.builtin.slurp`` module (https://github.com/ansible-collections/community.general/pull/8430).
- paman - do not fail if an empty list of packages has been provided and there is nothing to do (https://github.com/ansible-collections/community.general/pull/8514).
Known Issues
------------
- homectl - the module does not work under Python 3.13 or newer, since it relies on the removed ``crypt`` standard library module (https://github.com/ansible-collections/community.general/issues/4691, https://github.com/ansible-collections/community.general/pull/8497).
- udm_user - the module does not work under Python 3.13 or newer, since it relies on the removed ``crypt`` standard library module (https://github.com/ansible-collections/community.general/issues/4690, https://github.com/ansible-collections/community.general/pull/8497).
v8.6.1
======
Release Summary
---------------
Regular bugfix release.
Security Fixes
--------------
- keycloak_identity_provider - the client secret was not correctly sanitized by the module. The return values ``proposed``, ``existing``, and ``end_state``, as well as the diff, did contain the client secret unmasked (https://github.com/ansible-collections/community.general/pull/8355).
Bugfixes
--------
- keycloak_user_federation - fix diff of empty ``krbPrincipalAttribute`` (https://github.com/ansible-collections/community.general/pull/8320).
- merge_variables lookup plugin - fixing cross host merge: providing access to foreign hosts variables to the perspective of the host that is performing the merge (https://github.com/ansible-collections/community.general/pull/8303).
- opentelemetry callback plugin - close spans always (https://github.com/ansible-collections/community.general/pull/8367).
- opentelemetry callback plugin - honour the ``disable_logs`` option to avoid storing task results since they are not used regardless (https://github.com/ansible-collections/community.general/pull/8373).
v8.6.0
======
Release Summary
---------------
Regular bugfix and features release.
Minor Changes
-------------
- Use offset-aware ``datetime.datetime`` objects (with timezone UTC) instead of offset-naive UTC timestamps, which are deprecated in Python 3.12 (https://github.com/ansible-collections/community.general/pull/8222).
- apt_rpm - add new states ``latest`` and ``present_not_latest``. The value ``latest`` is equivalent to the current behavior of ``present``, which will upgrade a package if a newer version exists. ``present_not_latest`` does what most users would expect ``present`` to do: it does not upgrade if the package is already installed. The current behavior of ``present`` will be deprecated in a later version, and eventually changed to that of ``present_not_latest`` (https://github.com/ansible-collections/community.general/issues/8217, https://github.com/ansible-collections/community.general/pull/8247).
- bitwarden lookup plugin - add support to filter by organization ID (https://github.com/ansible-collections/community.general/pull/8188).
- filesystem - add bcachefs support (https://github.com/ansible-collections/community.general/pull/8126).
- ini_file - add an optional parameter ``section_has_values``. If the target ini file contains more than one ``section``, use ``section_has_values`` to specify which one should be updated (https://github.com/ansible-collections/community.general/pull/7505).
- nmcli - adds OpenvSwitch support with new ``type`` values ``ovs-port``, ``ovs-interface``, and ``ovs-bridge``, and new ``slave_type`` value ``ovs-port`` (https://github.com/ansible-collections/community.general/pull/8154).
- osx_defaults - add option ``check_types`` to enable changing the type of existing defaults on the fly (https://github.com/ansible-collections/community.general/pull/8173).
- passwordstore lookup - add ``missing_subkey`` parameter defining the behavior of the lookup when a passwordstore subkey is missing (https://github.com/ansible-collections/community.general/pull/8166).
- portage - adds the possibility to explicitely tell portage to write packages to world file (https://github.com/ansible-collections/community.general/issues/6226, https://github.com/ansible-collections/community.general/pull/8236).
- redfish_command - add command ``ResetToDefaults`` to reset manager to default state (https://github.com/ansible-collections/community.general/issues/8163).
- redfish_info - add boolean return value ``MultipartHttpPush`` to ``GetFirmwareUpdateCapabilities`` (https://github.com/ansible-collections/community.general/issues/8194, https://github.com/ansible-collections/community.general/pull/8195).
- ssh_config - allow ``accept-new`` as valid value for ``strict_host_key_checking`` (https://github.com/ansible-collections/community.general/pull/8257).
Deprecated Features
-------------------
- hipchat callback plugin - the hipchat service has been discontinued and the self-hosted variant has been End of Life since 2020. The callback plugin is therefore deprecated and will be removed from community.general 10.0.0 if nobody provides compelling reasons to still keep it (https://github.com/ansible-collections/community.general/issues/8184, https://github.com/ansible-collections/community.general/pull/8189).
Bugfixes
--------
- aix_filesystem - fix ``_validate_vg`` not passing VG name to ``lsvg_cmd`` (https://github.com/ansible-collections/community.general/issues/8151).
- apt_rpm - when checking whether packages were installed after running ``apt-get -y install <packages>``, only the last package name was checked (https://github.com/ansible-collections/community.general/pull/8263).
- bitwarden_secrets_manager lookup plugin - implements retry with exponential backoff to avoid lookup errors when Bitwardn's API rate limiting is encountered (https://github.com/ansible-collections/community.general/issues/8230, https://github.com/ansible-collections/community.general/pull/8238).
- from_ini filter plugin - disabling interpolation of ``ConfigParser`` to allow converting values with a ``%`` sign (https://github.com/ansible-collections/community.general/issues/8183, https://github.com/ansible-collections/community.general/pull/8185).
- gitlab_issue, gitlab_label, gitlab_milestone - avoid crash during version comparison when the python-gitlab Python module is not installed (https://github.com/ansible-collections/community.general/pull/8158).
- haproxy - fix an issue where HAProxy could get stuck in DRAIN mode when the backend was unreachable (https://github.com/ansible-collections/community.general/issues/8092).
- inventory plugins - add unsafe wrapper to avoid marking strings that do not contain ``{`` or ``}`` as unsafe, to work around a bug in AWX ((https://github.com/ansible-collections/community.general/issues/8212, https://github.com/ansible-collections/community.general/pull/8225).
- ipa - fix get version regex in IPA module_utils (https://github.com/ansible-collections/community.general/pull/8175).
- keycloak_client - add sorted ``defaultClientScopes`` and ``optionalClientScopes`` to normalizations (https://github.com/ansible-collections/community.general/pull/8223).
- keycloak_realm - add normalizations for ``enabledEventTypes`` and ``supportedLocales`` (https://github.com/ansible-collections/community.general/pull/8224).
- puppet - add option ``environment_lang`` to set the environment language encoding. Defaults to lang ``C``. It is recommended to set it to ``C.UTF-8`` or ``en_US.UTF-8`` depending on what is available on your system. (https://github.com/ansible-collections/community.general/issues/8000)
- riak - support ``riak admin`` sub-command in newer Riak KV versions beside the legacy ``riak-admin`` main command (https://github.com/ansible-collections/community.general/pull/8211).
- to_ini filter plugin - disabling interpolation of ``ConfigParser`` to allow converting values with a ``%`` sign (https://github.com/ansible-collections/community.general/issues/8183, https://github.com/ansible-collections/community.general/pull/8185).
- xml - make module work with lxml 5.1.1, which removed some internals that the module was relying on (https://github.com/ansible-collections/community.general/pull/8169).
New Modules
-----------
- community.general.keycloak_client_rolescope - Allows administration of Keycloak client roles scope to restrict the usage of certain roles to a other specific client applications.
v8.5.0
======
Release Summary
---------------
Regular feature and bugfix release with security fixes.
Minor Changes
-------------
- bitwarden lookup plugin - allows to fetch all records of a given collection ID, by allowing to pass an empty value for ``search_value`` when ``collection_id`` is provided (https://github.com/ansible-collections/community.general/pull/8013).
- icinga2 inventory plugin - adds new parameter ``group_by_hostgroups`` in order to make grouping by Icinga2 hostgroups optional (https://github.com/ansible-collections/community.general/pull/7998).
- ini_file - support optional spaces between section names and their surrounding brackets (https://github.com/ansible-collections/community.general/pull/8075).
- java_cert - enable ``owner``, ``group``, ``mode``, and other generic file arguments (https://github.com/ansible-collections/community.general/pull/8116).
- ldap_attrs - module now supports diff mode, showing which attributes are changed within an operation (https://github.com/ansible-collections/community.general/pull/8073).
- lxd_container - uses ``/1.0/instances`` API endpoint, if available. Falls back to ``/1.0/containers`` or ``/1.0/virtual-machines``. Fixes issue when using Incus or LXD 5.19 due to migrating to ``/1.0/instances`` endpoint (https://github.com/ansible-collections/community.general/pull/7980).
- proxmox - adds ``startup`` parameters to configure startup order, startup delay and shutdown delay (https://github.com/ansible-collections/community.general/pull/8038).
- revbitspss lookup plugin - removed a redundant unicode prefix. The prefix was not necessary for Python 3 and has been cleaned up to streamline the code (https://github.com/ansible-collections/community.general/pull/8087).
Security Fixes
--------------
- cobbler, gitlab_runners, icinga2, linode, lxd, nmap, online, opennebula, proxmox, scaleway, stackpath_compute, virtualbox, and xen_orchestra inventory plugin - make sure all data received from the remote servers is marked as unsafe, so remote code execution by obtaining texts that can be evaluated as templates is not possible (https://www.die-welt.net/2024/03/remote-code-execution-in-ansible-dynamic-inventory-plugins/, https://github.com/ansible-collections/community.general/pull/8098).
Bugfixes
--------
- aix_filesystem - fix issue with empty list items in crfs logic and option order (https://github.com/ansible-collections/community.general/pull/8052).
- consul_token - fix token creation without ``accessor_id`` (https://github.com/ansible-collections/community.general/pull/8091).
- homebrew - error returned from brew command was ignored and tried to parse empty JSON. Fix now checks for an error and raises it to give accurate error message to users (https://github.com/ansible-collections/community.general/issues/8047).
- ipa_hbacrule - the module uses a string for ``ipaenabledflag`` for new FreeIPA versions while the returned value is a boolean (https://github.com/ansible-collections/community.general/pull/7880).
- ipa_sudorule - the module uses a string for ``ipaenabledflag`` for new FreeIPA versions while the returned value is a boolean (https://github.com/ansible-collections/community.general/pull/7880).
- pacemaker_cluster - actually implement check mode, which the module claims to support. This means that until now the module also did changes in check mode (https://github.com/ansible-collections/community.general/pull/8081).
- pam_limits - when the file does not exist, do not create it in check mode (https://github.com/ansible-collections/community.general/issues/8050, https://github.com/ansible-collections/community.general/pull/8057).
- proxmox_kvm - fixed status check getting from node-specific API endpoint (https://github.com/ansible-collections/community.general/issues/7817).
New Modules
-----------
- community.general.usb_facts - Allows listing information about USB devices
v8.4.0
======
Release Summary
---------------
Regular bugfix and feature release.
Minor Changes
-------------
- bitwarden lookup plugin - add ``bw_session`` option, to pass session key instead of reading from env (https://github.com/ansible-collections/community.general/pull/7994).
- gitlab_deploy_key, gitlab_group_members, gitlab_group_variable, gitlab_hook, gitlab_instance_variable, gitlab_project_badge, gitlab_project_variable, gitlab_user - improve API pagination and compatibility with different versions of ``python-gitlab`` (https://github.com/ansible-collections/community.general/pull/7790).
- gitlab_hook - adds ``releases_events`` parameter for supporting Releases events triggers on GitLab hooks (https://github.com/ansible-collections/community.general/pull/7956).
- icinga2 inventory plugin - add Jinja2 templating support to ``url``, ``user``, and ``password`` paramenters (https://github.com/ansible-collections/community.general/issues/7074, https://github.com/ansible-collections/community.general/pull/7996).
- mssql_script - adds transactional (rollback/commit) support via optional boolean param ``transaction`` (https://github.com/ansible-collections/community.general/pull/7976).
- proxmox_kvm - add parameter ``update_unsafe`` to avoid limitations when updating dangerous values (https://github.com/ansible-collections/community.general/pull/7843).
- redfish_config - add command ``SetServiceIdentification`` to set service identification (https://github.com/ansible-collections/community.general/issues/7916).
- sudoers - add support for the ``NOEXEC`` tag in sudoers rules (https://github.com/ansible-collections/community.general/pull/7983).
- terraform - fix ``diff_mode`` in state ``absent`` and when terraform ``resource_changes`` does not exist (https://github.com/ansible-collections/community.general/pull/7963).
Bugfixes
--------
- cargo - fix idempotency issues when using a custom installation path for packages (using the ``--path`` parameter). The initial installation runs fine, but subsequent runs use the ``get_installed()`` function which did not check the given installation location, before running ``cargo install``. This resulted in a false ``changed`` state. Also the removal of packeges using ``state: absent`` failed, as the installation check did not use the given parameter (https://github.com/ansible-collections/community.general/pull/7970).
- gitlab_issue - fix behavior to search GitLab issue, using ``search`` keyword instead of ``title`` (https://github.com/ansible-collections/community.general/issues/7846).
- gitlab_runner - fix pagination when checking for existing runners (https://github.com/ansible-collections/community.general/pull/7790).
- keycloak_client - fixes issue when metadata is provided in desired state when task is in check mode (https://github.com/ansible-collections/community.general/issues/1226, https://github.com/ansible-collections/community.general/pull/7881).
- modprobe - listing modules files or modprobe files could trigger a FileNotFoundError if ``/etc/modprobe.d`` or ``/etc/modules-load.d`` did not exist. Relevant functions now return empty lists if the directories do not exist to avoid crashing the module (https://github.com/ansible-collections/community.general/issues/7717).
- onepassword lookup plugin - failed for fields that were in sections and had uppercase letters in the label/ID. Field lookups are now case insensitive in all cases (https://github.com/ansible-collections/community.general/pull/7919).
- pkgin - pkgin (pkgsrc package manager used by SmartOS) raises erratic exceptions and spurious ``changed=true`` (https://github.com/ansible-collections/community.general/pull/7971).
- redfish_info - allow for a GET operation invoked by ``GetUpdateStatus`` to allow for an empty response body for cases where a service returns 204 No Content (https://github.com/ansible-collections/community.general/issues/8003).
- redfish_info - correct uncaught exception when attempting to retrieve ``Chassis`` information (https://github.com/ansible-collections/community.general/pull/7952).
New Plugins
-----------
Callback
~~~~~~~~
- community.general.default_without_diff - The default ansible callback without diff output
Filter
~~~~~~
- community.general.lists_difference - Difference of lists with a predictive order
- community.general.lists_intersect - Intersection of lists with a predictive order
- community.general.lists_symmetric_difference - Symmetric Difference of lists with a predictive order
- community.general.lists_union - Union of lists with a predictive order
New Modules
-----------
- community.general.gitlab_group_access_token - Manages GitLab group access tokens
- consul_policy - added support for diff and check mode (https://github.com/ansible-collections/community.general/pull/7878).
- consul_policy, consul_role, consul_session - removed dependency on ``requests`` and factored out common parts (https://github.com/ansible-collections/community.general/pull/7826, https://github.com/ansible-collections/community.general/pull/7878).
- consul_role - ``node_identities`` now expects a ``node_name`` option to match the Consul API, the old ``name`` is still supported as alias (https://github.com/ansible-collections/community.general/pull/7878).
- consul_role - ``service_identities`` now expects a ``service_name`` option to match the Consul API, the old ``name`` is still supported as alias (https://github.com/ansible-collections/community.general/pull/7878).
- consul_role - added support for diff mode (https://github.com/ansible-collections/community.general/pull/7878).
- consul_role - added support for templated policies (https://github.com/ansible-collections/community.general/pull/7878).
- redfish_info - add command ``GetServiceIdentification`` to get service identification (https://github.com/ansible-collections/community.general/issues/7882).
- terraform - add support for ``diff_mode`` for terraform resource_changes (https://github.com/ansible-collections/community.general/pull/7896).
Deprecated Features
-------------------
- consul_acl - the module has been deprecated and will be removed in community.general 10.0.0. ``consul_token`` and ``consul_policy`` can be used instead (https://github.com/ansible-collections/community.general/pull/7901).
Bugfixes
--------
- homebrew - detect already installed formulae and casks using JSON output from ``brew info`` (https://github.com/ansible-collections/community.general/issues/864).
- incus connection plugin - treats ``inventory_hostname`` as a variable instead of a literal in remote connections (https://github.com/ansible-collections/community.general/issues/7874).
- ipa_otptoken - the module expect ``ipatokendisabled`` as string but the ``ipatokendisabled`` value is returned as a boolean (https://github.com/ansible-collections/community.general/pull/7795).
- ldap - previously the order number (if present) was expected to follow an equals sign in the DN. This makes it so the order number string is identified correctly anywhere within the DN (https://github.com/ansible-collections/community.general/issues/7646).
- mssql_script - make the module work with Python 2 (https://github.com/ansible-collections/community.general/issues/7818, https://github.com/ansible-collections/community.general/pull/7821).
- nmcli - fix ``connection.slave-type`` wired to ``bond`` and not with parameter ``slave_type`` in case of connection type ``wifi`` (https://github.com/ansible-collections/community.general/issues/7389).
- proxmox - fix updating a container config if the setting does not already exist (https://github.com/ansible-collections/community.general/pull/7872).
New Modules
-----------
- community.general.consul_acl_bootstrap - Bootstrap ACLs in Consul
- community.general.consul_auth_method - Manipulate Consul auth methods
- community.general.consul_binding_rule - Manipulate Consul binding rules
- community.general.consul_token - Manipulate Consul tokens
- community.general.gitlab_label - Creates/updates/deletes GitLab Labels belonging to project or group.
- community.general.gitlab_milestone - Creates/updates/deletes GitLab Milestones belonging to project or group
v8.2.0
======
Release Summary
---------------
Regular bugfix and feature release.
Minor Changes
-------------
- ipa_dnsrecord - adds ability to manage NS record types (https://github.com/ansible-collections/community.general/pull/7737).
- ipa_pwpolicy - refactor module and exchange a sequence ``if`` statements with a ``for`` loop (https://github.com/ansible-collections/community.general/pull/7723).
- ipa_pwpolicy - update module to support ``maxrepeat``, ``maxsequence``, ``dictcheck``, ``usercheck``, ``gracelimit`` parameters in FreeIPA password policies (https://github.com/ansible-collections/community.general/pull/7723).
- keycloak_realm_key - the ``config.algorithm`` option now supports 8 additional key algorithms (https://github.com/ansible-collections/community.general/pull/7698).
- keycloak_realm_key - the ``config.certificate`` option value is no longer defined with ``no_log=True`` (https://github.com/ansible-collections/community.general/pull/7698).
- keycloak_realm_key - the ``provider_id`` option now supports RSA encryption key usage (value ``rsa-enc``) (https://github.com/ansible-collections/community.general/pull/7698).
- keycloak_user_federation - allow custom user storage providers to be set through ``provider_id`` (https://github.com/ansible-collections/community.general/pull/7789).
- mail - add ``Message-ID`` header; which is required by some mail servers (https://github.com/ansible-collections/community.general/pull/7740).
- mail module, mail callback plugin - allow to configure the domain name of the Message-ID header with a new ``message_id_domain`` option (https://github.com/ansible-collections/community.general/pull/7765).
- ssh_config - new feature to set ``AddKeysToAgent`` option to ``yes`` or ``no`` (https://github.com/ansible-collections/community.general/pull/7703).
- ssh_config - new feature to set ``IdentitiesOnly`` option to ``yes`` or ``no`` (https://github.com/ansible-collections/community.general/pull/7704).
- xcc_redfish_command - added support for raw POSTs (``command=PostResource`` in ``category=Raw``) without a specific action info (https://github.com/ansible-collections/community.general/pull/7746).
Bugfixes
--------
- keycloak_identity_provider - ``mappers`` processing was not idempotent if the mappers configuration list had not been sorted by name (in ascending order). Fix resolves the issue by sorting mappers in the desired state using the same key which is used for obtaining existing state (https://github.com/ansible-collections/community.general/pull/7418).
- keycloak_identity_provider - it was not possible to reconfigure (add, remove) ``mappers`` once they were created initially. Removal was ignored, adding new ones resulted in dropping the pre-existing unmodified mappers. Fix resolves the issue by supplying correct input to the internal update call (https://github.com/ansible-collections/community.general/pull/7418).
- keycloak_user - when ``force`` is set, but user does not exist, do not try to delete it (https://github.com/ansible-collections/community.general/pull/7696).
- proxmox_kvm - running ``state=template`` will first check whether VM is already a template (https://github.com/ansible-collections/community.general/pull/7792).
- statusio_maintenance - fix error caused by incorrectly formed API data payload. Was raising "Failed to create maintenance HTTP Error 400 Bad Request" caused by bad data type for date/time and deprecated dict keys (https://github.com/ansible-collections/community.general/pull/7754).
New Plugins
-----------
Connection
~~~~~~~~~~
- community.general.incus - Run tasks in Incus instances via the Incus CLI.
Filter
~~~~~~
- community.general.from_ini - Converts INI text input into a dictionary
- community.general.to_ini - Converts a dictionary to the INI file format
- community.general.dnf_config_manager - Enable or disable dnf repositories using config-manager
- community.general.keycloak_component_info - Retrive component info in Keycloak
- community.general.keycloak_realm_rolemapping - Allows administration of Keycloak realm role mappings into groups with the Keycloak API
- community.general.proxmox_node_info - Retrieve information about one or more Proxmox VE nodes
- community.general.proxmox_storage_contents_info - List content from a Proxmox VE storage
v8.1.0
======
Release Summary
---------------
Regular bugfix and feature release.
Minor Changes
-------------
- bitwarden lookup plugin - when looking for items using an item ID, the item is now accessed directly with ``bw get item`` instead of searching through all items. This doubles the lookup speed (https://github.com/ansible-collections/community.general/pull/7468).
- elastic callback plugin - close elastic client to not leak resources (https://github.com/ansible-collections/community.general/pull/7517).
- git_config - allow multiple git configs for the same name with the new ``add_mode`` option (https://github.com/ansible-collections/community.general/pull/7260).
- git_config - the ``after`` and ``before`` fields in the ``diff`` of the return value can be a list instead of a string in case more configs with the same key are affected (https://github.com/ansible-collections/community.general/pull/7260).
- git_config - when a value is unset, all configs with the same key are unset (https://github.com/ansible-collections/community.general/pull/7260).
- ipa_sudorule - adds options to include denied commands or command groups (https://github.com/ansible-collections/community.general/pull/7415).
- ipa_user - adds ``idp`` and ``passkey`` choice to ``ipauserauthtype`` parameter's choices (https://github.com/ansible-collections/community.general/pull/7589).
- irc - add ``validate_certs`` option, and rename ``use_ssl`` to ``use_tls``, while keeping ``use_ssl`` as an alias. The default value for ``validate_certs`` is ``false`` for backwards compatibility. We recommend to every user of this module to explicitly set ``use_tls=true`` and `validate_certs=true`` whenever possible, especially when communicating to IRC servers over the internet (https://github.com/ansible-collections/community.general/pull/7550).
- keycloak module utils - expose error message from Keycloak server for HTTP errors in some specific situations (https://github.com/ansible-collections/community.general/pull/7645).
- keycloak_user_federation - add option for ``krbPrincipalAttribute`` (https://github.com/ansible-collections/community.general/pull/7538).
- lvol - change ``pvs`` argument type to list of strings (https://github.com/ansible-collections/community.general/pull/7676, https://github.com/ansible-collections/community.general/issues/7504).
- lxd connection plugin - tighten the detection logic for lxd ``Instance not found`` errors, to avoid false detection on unrelated errors such as ``/usr/bin/python3: not found`` (https://github.com/ansible-collections/community.general/pull/7521).
- netcup_dns - adds support for record types ``OPENPGPKEY``, ``SMIMEA``, and ``SSHFP`` (https://github.com/ansible-collections/community.general/pull/7489).
- nmcli - add support for new connection type ``loopback`` (https://github.com/ansible-collections/community.general/issues/6572).
- nmcli - allow for ``infiniband`` slaves of ``bond`` interface types (https://github.com/ansible-collections/community.general/pull/7569).
- nmcli - allow for the setting of ``MTU`` for ``infiniband`` and ``bond`` interface types (https://github.com/ansible-collections/community.general/pull/7499).
- onepassword lookup plugin - support 1Password Connect with the opv2 client by setting the connect_host and connect_token parameters (https://github.com/ansible-collections/community.general/pull/7116).
- onepassword_raw lookup plugin - support 1Password Connect with the opv2 client by setting the connect_host and connect_token parameters (https://github.com/ansible-collections/community.general/pull/7116)
- passwordstore - adds ``timestamp`` and ``preserve`` parameters to modify the stored password format (https://github.com/ansible-collections/community.general/pull/7426).
- proxmox - adds ``template`` value to the ``state`` parameter, allowing conversion of container to a template (https://github.com/ansible-collections/community.general/pull/7143).
- proxmox - adds ``update`` parameter, allowing update of an already existing containers configuration (https://github.com/ansible-collections/community.general/pull/7540).
- proxmox inventory plugin - adds an option to exclude nodes from the dynamic inventory generation. The new setting is optional, not using this option will behave as usual (https://github.com/ansible-collections/community.general/issues/6714, https://github.com/ansible-collections/community.general/pull/7461).
- proxmox_disk - add ability to manipulate CD-ROM drive (https://github.com/ansible-collections/community.general/pull/7495).
- proxmox_kvm - adds ``template`` value to the ``state`` parameter, allowing conversion of a VM to a template (https://github.com/ansible-collections/community.general/pull/7143).
- proxmox_kvm - support the ``hookscript`` parameter (https://github.com/ansible-collections/community.general/issues/7600).
- proxmox_ostype - it is now possible to specify the ``ostype`` when creating an LXC container (https://github.com/ansible-collections/community.general/pull/7462).
- proxmox_vm_info - add ability to retrieve configuration info (https://github.com/ansible-collections/community.general/pull/7485).
- redfish_info - adding the ``BootProgress`` property when getting ``Systems`` info (https://github.com/ansible-collections/community.general/pull/7626).
- ssh_config - adds ``controlmaster``, ``controlpath`` and ``controlpersist`` parameters (https://github.com/ansible-collections/community.general/pull/7456).
Bugfixes
--------
- apt-rpm - the module did not upgrade packages if a newer version exists. Now the package will be reinstalled if the candidate is newer than the installed version (https://github.com/ansible-collections/community.general/issues/7414).
- cloudflare_dns - fix Cloudflare lookup of SHFP records (https://github.com/ansible-collections/community.general/issues/7652).
- interface_files - also consider ``address_family`` when changing ``option=method`` (https://github.com/ansible-collections/community.general/issues/7610, https://github.com/ansible-collections/community.general/pull/7612).
- irc - replace ``ssl.wrap_socket`` that was removed from Python 3.12 with code for creating a proper SSL context (https://github.com/ansible-collections/community.general/pull/7542).
- keycloak_* - fix Keycloak API client to quote ``/`` properly (https://github.com/ansible-collections/community.general/pull/7641).
- keycloak_authz_permission - resource payload variable for scope-based permission was constructed as a string, when it needs to be a list, even for a single item (https://github.com/ansible-collections/community.general/issues/7151).
- log_entries callback plugin - replace ``ssl.wrap_socket`` that was removed from Python 3.12 with code for creating a proper SSL context (https://github.com/ansible-collections/community.general/pull/7542).
- lvol - test for output messages in both ``stdout`` and ``stderr`` (https://github.com/ansible-collections/community.general/pull/7601, https://github.com/ansible-collections/community.general/issues/7182).
- onepassword lookup plugin - field and section titles are now case insensitive when using op CLI version two or later. This matches the behavior of version one (https://github.com/ansible-collections/community.general/pull/7564).
- redhat_subscription - use the D-Bus registration on RHEL 7 only on 7.4 and
@@ -31,7 +31,9 @@ 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/development_process.html#creating-changelog-fragments). (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 :) )
* 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 :) )
* 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).
@@ -54,6 +56,8 @@ 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+.
### Sanity tests
The following commands show how to run sanity tests:
This repository contains the `community.general` Ansible Collection. The collection is a part of the Ansible package and includes many modules and plugins supported by Ansible community which are not part of more specialized community collections.
@@ -22,9 +24,21 @@ 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.13, ansible-core 2.14, ansible-core 2.15, ansible-core 2.16 releases and the current development version of ansible-core. Ansible-core versions before 2.13.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
Tested with the current ansible-core 2.13, ansible-core 2.14, ansible-core 2.15, ansible-core 2.16, ansible-core 2.17, and ansible-core 2.18 releases of ansible-core. Ansible-core versions before 2.13.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
## External requirements
@@ -97,25 +111,13 @@ 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-8/CHANGELOG.rst).
See the [changelog](https://github.com/ansible-collections/community.general/blob/stable-8/CHANGELOG.md).
## Roadmap
@@ -138,4 +140,4 @@ See [LICENSES/GPL-3.0-or-later.txt](https://github.com/ansible-collections/commu
Parts of the collection are licensed under the [BSD 2-Clause license](https://github.com/ansible-collections/community.general/blob/main/LICENSES/BSD-2-Clause.txt), the [MIT license](https://github.com/ansible-collections/community.general/blob/main/LICENSES/MIT.txt), and the [PSF 2.0 license](https://github.com/ansible-collections/community.general/blob/main/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/dep5`. 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.toml`. This conforms to the [REUSE specification](https://reuse.software/spec/).
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.
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.
.. 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>`.
.. 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>`.
Let us use the lists below in the following examples:
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.
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.
**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``.
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``.
**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.
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.
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.
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.
Let us use the lists below in the following examples
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:
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
..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) }}"
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 filter <community.general.lists_mergeby#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 :ansplugin:`community.general.lists_mergeby <community.general.lists_mergeby#filter>` 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>`.
..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>`.
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``:
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:
@@ -65,15 +59,29 @@ This produces the same result as in the previous example:
..code-block::yaml
list3:
- extra:false
name:bar
- name:baz
path:/baz
- extra:true
name:foo
path:/foo
- extra:true
name:meh
- {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}
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.
@@ -95,8 +103,7 @@ 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]
@@ -105,16 +112,17 @@ 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,{key:value}]
param01:[3,4,4]
list_merge=replace (default)
""""""""""""""""""""""""""""
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=replace` (default):
..code-block::yaml+jinja
list3: "{{ [list1, list2]|
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true) }}"
@@ -123,25 +131,22 @@ This produces:
..code-block::yaml
list3:
- name:myname01
param01:
list:
- patch_value
x:default_value
y:patch_value
z:patch_value
- name:myname02
param01:
- 3
- 4
- 4
- key:value
- name:myname01
param01:
x:default_value
y:patch_value
list:[patch_value]
z:patch_value
- name:myname02
param01:[3,4,4]
list_merge=keep
"""""""""""""""
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=keep`:
..code-block::yaml+jinja
list3: "{{ [list1, list2]|
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='keep') }}"
@@ -151,25 +156,22 @@ This produces:
..code-block::yaml
list3:
- name:myname01
param01:
list:
- default_value
x:default_value
y:patch_value
z:patch_value
- name:myname02
param01:
- 1
- 1
- 2
- 3
- name:myname01
param01:
x:default_value
y:patch_value
list:[default_value]
z:patch_value
- name:myname02
param01:[1,1,2,3]
list_merge=append
"""""""""""""""""
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=append`:
..code-block::yaml+jinja
list3: "{{ [list1, list2]|
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='append') }}"
@@ -179,30 +181,22 @@ This produces:
..code-block::yaml
list3:
- 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
- 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]
list_merge=prepend
""""""""""""""""""
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=prepend`:
..code-block::yaml+jinja
list3: "{{ [list1, list2]|
list3: "{{ [list1, list2]|
community.general.lists_mergeby('name',
recursive=true,
list_merge='prepend') }}"
@@ -212,30 +206,22 @@ This produces:
..code-block::yaml
list3:
- 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
- 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]
list_merge=append_rp
""""""""""""""""""""
Example :ansopt:`community.general.lists_mergeby#filter: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') }}"
@@ -245,29 +231,22 @@ This produces:
..code-block::yaml
list3:
- 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
- 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]
list_merge=prepend_rp
"""""""""""""""""""""
Example :ansopt:`community.general.lists_mergeby#filter:list_merge=prepend_rp`:
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.
`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:
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:
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:
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
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:
-: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.
``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
- If the value is not specified in the task, the value of environment variable E(IPA_PORT) will be used instead.
- If both the environment variable E(IPA_PORT) and the value are not specified in the task, then default value is set.
- Environment variable fallback mechanism is added in Ansible 2.5.
type: int
default: 443
ipa_host:
@@ -26,9 +25,8 @@ options:
- IP or hostname of IPA server.
- If the value is not specified in the task, the value of environment variable E(IPA_HOST) will be used instead.
- If both the environment variable E(IPA_HOST) and the value are not specified in the task, then DNS will be used to try to discover the FreeIPA server.
- The relevant entry needed in FreeIPA is the 'ipa-ca' entry.
- The relevant entry needed in FreeIPA is the C(ipa-ca) entry.
- If neither the DNS entry, nor the environment E(IPA_HOST), nor the value are available in the task, then the default value will be used.
- Environment variable fallback mechanism is added in Ansible 2.5.
type: str
default: ipa.example.com
ipa_user:
@@ -36,7 +34,6 @@ options:
- Administrative account used on IPA server.
- If the value is not specified in the task, the value of environment variable E(IPA_USER) will be used instead.
- If both the environment variable E(IPA_USER) and the value are not specified in the task, then default value is set.
- Environment variable fallback mechanism is added in Ansible 2.5.
type: str
default: admin
ipa_pass:
@@ -47,14 +44,12 @@ options:
- If the environment variable E(KRB5CCNAME) is available, the module will use this kerberos credentials cache to authenticate to the FreeIPA server.
- If the environment variable E(KRB5_CLIENT_KTNAME) is available, and E(KRB5CCNAME) is not; the module will use this kerberos keytab to authenticate.
- If GSSAPI is not available, the usage of O(ipa_pass) is required.
- Environment variable fallback mechanism is added in Ansible 2.5.
type: str
ipa_prot:
description:
- Protocol used by IPA server.
- If the value is not specified in the task, the value of environment variable E(IPA_PROT) will be used instead.
- If both the environment variable E(IPA_PROT) and the value are not specified in the task, then default value is set.
- Environment variable fallback mechanism is added in Ansible 2.5.
@@ -21,7 +21,7 @@ class ModuleDocFragment(object):
wait_until:
description: The lifecycle state to wait for the resource to transition into when O(wait=true). By default,
when O(wait=true), we wait for the resource to get into ACTIVE/ATTACHED/AVAILABLE/PROVISIONED/
RUNNING applicable lifecycle state during create operation & to get into DELETED/DETACHED/
RUNNING applicable lifecycle state during create operation and to get into DELETED/DETACHED/
TERMINATED lifecycle state during delete operation.
type: str
"""
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.