Compare commits
120 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 05e01efa85 | |||
| f9929de976 | |||
| f35d268874 | |||
| d6b5fb6ac8 | |||
| 9adf0c9ff6 | |||
| 4fbcdfda4e | |||
| 4a65443547 | |||
| d449c7b0bb | |||
| 91ca09beb0 | |||
| 92ee1fa499 | |||
| f7be90626d | |||
| 3b5a431998 | |||
| 45f486586e | |||
| b3a6e66edd | |||
| f3579e469c | |||
| c5118b6db0 | |||
| 5acd2b0ed3 | |||
| 31df1bb35c | |||
| f0fff1a533 | |||
| 589a3aa198 | |||
| 30651ecc26 | |||
| b9dfd1f77a | |||
| 5f0e551a8d | |||
| f0badf8970 | |||
| d954d15543 | |||
| 08d32bc3a2 | |||
| a87ccd74a1 | |||
| 3326397717 | |||
| 9e5294563d | |||
| 42cb55c8e7 | |||
| 0336eba0b8 | |||
| 142e46ce6b | |||
| 803cbccbc3 | |||
| 0200ccb586 | |||
| f35a9f2db3 | |||
| 063e28d11d | |||
| d6c188fd37 | |||
| 40d7c06fc2 | |||
| 898d210b62 | |||
| bf2ba2ce1a | |||
| cc7daa9ab2 | |||
| 149b068dfe | |||
| c9cdbe32fa | |||
| 52cd7c7cc3 | |||
| 68b4e139a1 | |||
| b078cb62ed | |||
| 0b1fb5ce61 | |||
| b8e6261cc5 | |||
| 0e435368ef | |||
| 025954f304 | |||
| 6a558de6e6 | |||
| d33bb8ebfd | |||
| 1f9dead60f | |||
| 874f2a4e4f | |||
| 99c2b11153 | |||
| a719ba7d8e | |||
| 4c9438293a | |||
| 03446c7f23 | |||
| f02fd32fe0 | |||
| 36e5b21807 | |||
| 4f96015ce0 | |||
| 9bf88488c0 | |||
| d428a932f8 | |||
| 7a9f14b19e | |||
| fa40503191 | |||
| d1c94fe110 | |||
| 9f9238373e | |||
| 5413924b14 | |||
| d37145f25f | |||
| 6966b53b5b | |||
| 850da817c5 | |||
| e90cfa4ed9 | |||
| ddadca052f | |||
| 022b425d86 | |||
| 2330c4386b | |||
| 5302e2cea2 | |||
| e8c6eb1f6f | |||
| fb4d28e000 | |||
| 22378a22ff | |||
| b0f56de75a | |||
| d055381c4a | |||
| 53bb6a2b3c | |||
| 10cd99e9c7 | |||
| b15c68418b | |||
| f3251c2f44 | |||
| a47a6ebc62 | |||
| e0244064ac | |||
| cad5663af1 | |||
| 92630e54ff | |||
| ca871fbc2c | |||
| 76c7dfd968 | |||
| 122d11491f | |||
| d8b4ff1684 | |||
| a26c0f7b50 | |||
| 955d166989 | |||
| 24a7dd9f2e | |||
| 8976724d89 | |||
| a7258d9bdc | |||
| d9fa3b225f | |||
| 7b9aa6ca0d | |||
| 9c14a7a3e4 | |||
| ee3dfd2d4a | |||
| f44d26f74c | |||
| 7c8941a86b | |||
| 18266a596a | |||
| 7768360a03 | |||
| 07ad1b2641 | |||
| 5c03b06aba | |||
| 86b1946b33 | |||
| 482648494e | |||
| 4448404b03 | |||
| ad2a1a5fbe | |||
| 065918698d | |||
| 9ba5d72432 | |||
| 41d3a40d4d | |||
| a429bc3e64 | |||
| 0ec694548b | |||
| fb01c69021 | |||
| 48b93c0c2f | |||
| 9e622ddb67 |
@ -31,7 +31,7 @@ variables:
|
||||
- name: fetchDepth
|
||||
value: 500
|
||||
- name: defaultContainer
|
||||
value: quay.io/ansible/azure-pipelines-test-container:4.0.1
|
||||
value: quay.io/ansible/azure-pipelines-test-container:6.0.0
|
||||
|
||||
pool: Standard
|
||||
|
||||
@ -193,8 +193,6 @@ stages:
|
||||
targets:
|
||||
- name: IOS Python
|
||||
test: ios/csr1000v/
|
||||
- name: VyOS Python
|
||||
test: vyos/1.1.8/
|
||||
- stage: Summary
|
||||
condition: succeededOrFailed()
|
||||
dependsOn:
|
||||
|
||||
@ -1 +0,0 @@
|
||||
network.sh
|
||||
422
changelogs/CHANGELOG-v2.17.rst
Normal file
422
changelogs/CHANGELOG-v2.17.rst
Normal file
@ -0,0 +1,422 @@
|
||||
==============================================
|
||||
ansible-core 2.17 "Gallows Pole" Release Notes
|
||||
==============================================
|
||||
|
||||
.. contents:: Topics
|
||||
|
||||
v2.17.6
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-11-04
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Improve container runtime probe error handling. When unexpected probe output is encountered, an error with more useful debugging information is provided.
|
||||
|
||||
Security Fixes
|
||||
--------------
|
||||
|
||||
- include_vars action - Ensure that result masking is correctly requested when vault-encrypted files are read. (CVE-2024-8775)
|
||||
- task result processing - Ensure that action-sourced result masking (``_ansible_no_log=True``) is preserved. (CVE-2024-8775)
|
||||
- user action won't allow ssh-keygen, chown and chmod to run on existing ssh public key file, avoiding traversal on existing symlinks (CVE-2024-9902).
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix disabling SSL verification when installing collections and roles from git repositories. If ``--ignore-certs`` isn't provided, the value for the ``GALAXY_IGNORE_CERTS`` configuration option will be used (https://github.com/ansible/ansible/issues/83326).
|
||||
- Improve performance on large inventories by reducing the number of implicit meta tasks.
|
||||
- Use the requested error message in the ansible.module_utils.facts.timeout timeout function instead of hardcoding one.
|
||||
- ansible-test - Enable the ``sys.unraisablehook`` work-around for the ``pylint`` sanity test on Python 3.11. Previously the work-around was only enabled for Python 3.12 and later. However, the same issue has been discovered on Python 3.11.
|
||||
- debconf - set empty password values (https://github.com/ansible/ansible/issues/83214).
|
||||
- facts - skip if distribution file path is directory, instead of raising error (https://github.com/ansible/ansible/issues/84006).
|
||||
- user action will now require O(force) to overwrite the public part of an ssh key when generating ssh keys, as was already the case for the private part.
|
||||
- user module now avoids changing ownership of files symlinked in provided home dir skeleton
|
||||
|
||||
v2.17.5
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-10-07
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Add descriptions for ``ansible-galaxy install --help` and ``ansible-galaxy role|collection install --help``.
|
||||
- Errors now preserve stacked error messages even when YAML is involved.
|
||||
- ``ansible-galaxy install --help`` - Fix the usage text and document that the requirements file passed to ``-r`` can include collections and roles.
|
||||
- copy - mtime/atime not updated. Fix now update mtime/atime(https://github.com/ansible/ansible/issues/83013)
|
||||
- delay keyword is now a float, matching the underlying 'time' API and user expectations.
|
||||
- dnf5 - re-introduce the ``state: installed`` alias to ``state: present`` (https://github.com/ansible/ansible/issues/83960)
|
||||
- module_utils atomic_move (used by most file based modules), now correctly handles permission copy and setting mtime correctly across all paths
|
||||
|
||||
v2.17.4
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-09-09
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix ``SemanticVersion.parse()`` to store the version string so that ``__repr__`` reports it instead of ``None`` (https://github.com/ansible/ansible/pull/83831).
|
||||
- Fix an issue where registered variable was not available for templating in ``loop_control.label`` on skipped looped tasks (https://github.com/ansible/ansible/issues/83619)
|
||||
- Fix for ``meta`` tasks breaking host/fork affinity with ``host_pinned`` strategy (https://github.com/ansible/ansible/issues/83294)
|
||||
- Fix using the current task's directory for looking up relative paths within roles (https://github.com/ansible/ansible/issues/82695).
|
||||
- atomic_move - fix using the setgid bit on the parent directory when creating files (https://github.com/ansible/ansible/issues/46742, https://github.com/ansible/ansible/issues/67177).
|
||||
- connection plugins using the 'extras' option feature would need variables to match the plugin's loaded name, sometimes requiring fqcn, which is not the same as the documented/declared/expected variables. Now we fall back to the 'basename' of the fqcn, but plugin authors can still set the expected value directly.
|
||||
- csvfile lookup - give an error when no search term is provided using modern config syntax (https://github.com/ansible/ansible/issues/83689).
|
||||
- include_tasks - Display location when attempting to load a task list where ``include_*`` did not specify any value - https://github.com/ansible/ansible/issues/83874
|
||||
- powershell - Improve CLIXML decoding to decode all control characters and unicode characters that are encoded as surrogate pairs.
|
||||
- psrp - Fix bug when attempting to fetch a file path that contains special glob characters like ``[]``
|
||||
- runtime-metadata sanity test - do not crash on deprecations if ``galaxy.yml`` contains an empty ``version`` field (https://github.com/ansible/ansible/pull/83831).
|
||||
- ssh - Fix bug when attempting to fetch a file path with characters that should be quoted when using the ``piped`` transfer method
|
||||
|
||||
v2.17.3
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-08-12
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Improve the error message shown when an unknown ``--remote`` or ``--docker`` option is given.
|
||||
- ansible-test - Removed the ``vyos/1.1.8`` network remote as it is no longer functional.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Warning now includes filename and line number of variable when specifying a list of dictionaries for vars (https://github.com/ansible/ansible/issues/82528).
|
||||
- config, restored the ability to set module compression via a variable
|
||||
- debconf - fix normalization of value representation for boolean vtypes in new packages (https://github.com/ansible/ansible/issues/83594)
|
||||
- linear strategy: fix handlers included via ``include_tasks`` handler to be executed in lockstep (https://github.com/ansible/ansible/issues/83019)
|
||||
|
||||
v2.17.2
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-07-15
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix a traceback when an environment variable contains certain special characters (https://github.com/ansible/ansible/issues/83498)
|
||||
- dnf - reverted incomplete fix from 2.17.2rc1 (https://github.com/ansible/ansible/pull/83504)
|
||||
- dnf, dnf5 - fix for installing a set of packages by specifying them using a wildcard character (https://github.com/ansible/ansible/issues/83373)
|
||||
- linear strategy now provides a properly templated task name to the v2_runner_on_started callback event.
|
||||
- package_facts - ignore warnings sent by apk on stderr (https://github.com/ansible/ansible/issues/83501).
|
||||
- replace - Updated before/after example (https://github.com/ansible/ansible/issues/83390).
|
||||
- templating hostvars under native jinja will not cause serialization errors anymore.
|
||||
|
||||
v2.17.1
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-06-17
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Update ``pypi-test-container`` to version 3.1.0.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix rapid memory usage growth when notifying handlers using the ``listen`` keyword (https://github.com/ansible/ansible/issues/83392)
|
||||
- Fix the task attribute ``resolved_action`` to show the FQCN instead of ``None`` when ``action`` or ``local_action`` is used in the playbook.
|
||||
- Fix using ``module_defaults`` with ``local_action``/``action`` (https://github.com/ansible/ansible/issues/81905).
|
||||
- fixed unit test test_borken_cowsay to address mock not been properly applied when existing unix system already have cowsay installed.
|
||||
- powershell - Implement more robust deletion mechanism for C# code compilation temporary files. This should avoid scenarios where the underlying temporary directory may be temporarily locked by antivirus tools or other IO problems. A failure to delete one of these temporary directories will result in a warning rather than an outright failure.
|
||||
- shell plugin - properly quote all needed components of shell commands (https://github.com/ansible/ansible/issues/82535)
|
||||
|
||||
v2.17.0
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-05-20
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
Major Changes
|
||||
-------------
|
||||
|
||||
- urls.py - Removed support for Python 2
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- Add ``dump`` and ``passno`` mount information to facts component (https://github.com/ansible/ansible/issues/80478)
|
||||
- Added MIRACLE LINUX 9.2 in RedHat OS Family.
|
||||
- Interpreter Discovery - Remove hardcoded references to specific python interpreters to use for certain distro versions, and modify logic for python3 to become the default.
|
||||
- Use Python's built-in ``functools.update_wrapper`` instead an inline copy from Python 3.7.
|
||||
- User can now set ansible.log to record higher verbosity than what is specified for display via new configuration item LOG_VERBOSITY.
|
||||
- ``DEFAULT_PRIVATE_ROLE_VARS`` is now overridden by explicit setting of ``public`` for ``include_roles`` and ``import_roles``.
|
||||
- ``ansible-galaxy role|collection init`` - accept ``--extra-vars`` to supplement/override the variables ``ansible-galaxy`` injects for templating ``.j2`` files in the skeleton.
|
||||
- ``import_role`` action now also gets a ``public`` option that controls variable exports, default depending on ``DEFAULT_PRIVATE_ROLE_VARS`` (if using defaults equates to ``public=True``).
|
||||
- added configuration item ``TARGET_LOG_INFO`` that allows the user/author to add an information string to the log output on targets.
|
||||
- ansible-doc - treat double newlines in documentation strings as paragraph breaks. This is useful to create multi-paragraph notes in module/plugin documentation (https://github.com/ansible/ansible/pull/82465).
|
||||
- ansible-doc output has been revamped to make it more visually pleasing when going to a terminal, also more concise, use -v to show extra information.
|
||||
- ansible-galaxy - Started normalizing build directory with a trailing separator when building collections, internally. (https://github.com/ansible/ansible/pull/81619).
|
||||
- ansible-galaxy dependency resolution messages have changed the unexplained 'virtual' collection for the specific type ('scm', 'dir', etc) that is more user friendly
|
||||
- ansible-test - Add Alpine 3.19 container.
|
||||
- ansible-test - Add Alpine 3.19 to remotes.
|
||||
- ansible-test - Add Fedora 39 container.
|
||||
- ansible-test - Add Fedora 39 remote.
|
||||
- ansible-test - Add a work-around for permission denied errors when using ``pytest >= 8`` on multi-user systems with an installed version of ``ansible-test``.
|
||||
- ansible-test - Add support for RHEL 9.3 remotes.
|
||||
- ansible-test - Added a macOS 14.3 remote VM.
|
||||
- ansible-test - Bump the ``nios-test-container`` from version 2.0.0 to version 3.0.0.
|
||||
- ansible-test - Containers and remotes managed by ansible-test will have their Python ``EXTERNALLY-MANAGED`` marker (PEP668) removed. This provides backwards compatibility for existing tests running in newer environments which mark their Python as externally managed. A future version of ansible-test may change this behavior, requiring tests to be adapted to such environments.
|
||||
- ansible-test - Make Python 3.12 the default version used in the ``base`` and ``default`` containers.
|
||||
- ansible-test - Remove Alpine 3(.18) container.
|
||||
- ansible-test - Remove Alpine 3.18 from remotes.
|
||||
- ansible-test - Remove Fedora 38 remote support.
|
||||
- ansible-test - Remove Fedora 38 test container.
|
||||
- ansible-test - Remove rhel/9.2 test remote
|
||||
- ansible-test - Remove the FreeBSD 13.2 remote.
|
||||
- ansible-test - Removed fallback to ``virtualenv`` when ``-m venv`` is non-functional.
|
||||
- ansible-test - Removed test remotes: macos/13.2
|
||||
- ansible-test - Removed the ``no-basestring`` sanity test. The test is no longer necessary now that Python 3 is required.
|
||||
- ansible-test - Removed the ``no-dict-iteritems``, ``no-dict-iterkeys`` and ``no-dict-itervalues`` sanity tests. The tests are no longer necessary since Python 3 is required.
|
||||
- ansible-test - Removed the ``no-main-display`` sanity test. The unwanted pattern is unlikely to occur, since the test has existed since Ansible 2.8.
|
||||
- ansible-test - Removed the ``no-unicode-literals`` sanity test. The test is unnecessary now that Python 3 is required and the ``unicode_literals`` feature has no effect.
|
||||
- ansible-test - Special handling for installation of ``cryptography`` has been removed, as it is no longer necessary.
|
||||
- ansible-test - The ``shellcheck`` sanity test no longer disables the ``SC2164`` check. In most cases, seeing this error means the script is missing ``set -e``.
|
||||
- ansible-test - The ``unidiomatic-typecheck`` rule has been enabled in the ``pylint`` sanity test.
|
||||
- ansible-test - The ``unidiomatic-typecheck`` rule has been removed from the ``validate-modules`` sanity test.
|
||||
- ansible-test - Update the base and default containers to use Ubuntu 22.04 for the base image. This also updates PowerShell to version 7.4.0 with .NET 8.0.0 and ShellCheck to version 0.8.0.
|
||||
- ansible-test - Updated the CloudStack test container to version 1.7.0.
|
||||
- ansible-test - Updated the distro test containers to version 6.3.0 to include coverage 7.3.2 for Python 3.8+. The alpine3 container is now based on 3.18 instead of 3.17 and includes Python 3.11 instead of Python 3.10.
|
||||
- ansible-test - Updated the distro test containers to version 7.1.0.
|
||||
- ansible-test - When ansible-test installs requirements, it now instructs pip to allow installs on externally managed environments as defined by PEP 668. This only occurs in ephemeral environments managed by ansible-test, such as containers, or when the `--requirements` option is used.
|
||||
- ansible-test - When invoking ``sleep`` in containers during container setup, the ``env`` command is used to avoid invoking the shell builtin, if present.
|
||||
- ansible-test - document block name now included in error message for YAML parsing errors (https://github.com/ansible/ansible/issues/82353).
|
||||
- ansible-test - sanity test allows ``EXAMPLES`` to be multi-document YAML (https://github.com/ansible/ansible/issues/82353).
|
||||
- ansible-test now has FreeBSD 13.3 and 14.0 support
|
||||
- ansible.builtin.user - Remove user not found warning (https://github.com/ansible/ansible/issues/80267)
|
||||
- apt_repository.py - use api.launchpad.net endpoint instead of launchpad.net/api
|
||||
- async tasks can now also support check mode at the same time.
|
||||
- async_status now supports check mode.
|
||||
- constructed inventory plugin - Adding a note that only group_vars of explicit groups are loaded (https://github.com/ansible/ansible/pull/82580).
|
||||
- csvfile - add a keycol parameter to specify in which column to search.
|
||||
- dnf - add the ``best`` option
|
||||
- dnf5 - add the ``best`` option
|
||||
- filter plugin - Add the count and mandatory_count parameters in the regex_replace filter
|
||||
- find - add a encoding parameter to specify which encoding of the files to be searched.
|
||||
- git module - gpg_allowlist name was added in 2.17 and we will eventually deprecate the gpg_whitelist alias.
|
||||
- import_role - allow subdirectories with ``_from`` options for parity with ``include_role`` (https://github.com/ansible/ansible/issues/82584).
|
||||
- module argument spec - Allow module authors to include arbitrary additional context in the argument spec, by making use of a new top level key called ``context``. This key should be a dict type. This allows for users to customize what they place in the argument spec, without having to ignore sanity tests that validate the schema.
|
||||
- modules - Add the ability for an action plugin to call ``self._execute_module(*, ignore_unknown_opts=True)`` to execute a module with options that may not be supported for the version being called. This tells the module basic wrapper to ignore validating the options provided match the arg spec.
|
||||
- package action now has a configuration that overrides the detected package manager, it is still overridden itself by the use option.
|
||||
- py3compat - Remove ``ansible.utils.py3compat`` as it is no longer necessary
|
||||
- removed the unused argument ``create_new_password`` from ``CLI.build_vault_ids`` (https://github.com/ansible/ansible/pull/82066).
|
||||
- urls - Add support for TLS 1.3 post handshake certificate authentication - https://github.com/ansible/ansible/issues/81782
|
||||
- urls - reduce complexity of ``Request.open``
|
||||
- user - accept yescrypt hash as user password
|
||||
- validate-modules tests now correctly handles ``choices`` in dictionary format.
|
||||
|
||||
Breaking Changes / Porting Guide
|
||||
--------------------------------
|
||||
|
||||
- assert - Nested templating may result in an inability for the conditional to be evaluated. See the porting guide for more information.
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- Old style vars plugins which use the entrypoints `get_host_vars` or `get_group_vars` are deprecated. The plugin should be updated to inherit from `BaseVarsPlugin` and define a `get_vars` method as the entrypoint.
|
||||
- The 'required' parameter in 'ansible.module_utils.common.process.get_bin_path' API is deprecated (https://github.com/ansible/ansible/issues/82464).
|
||||
- ``module_utils`` - importing the following convenience helpers from ``ansible.module_utils.basic`` has been deprecated: ``get_exception``, ``literal_eval``, ``_literal_eval``, ``datetime``, ``signal``, ``types``, ``chain``, ``repeat``, ``PY2``, ``PY3``, ``b``, ``binary_type``, ``integer_types``, ``iteritems``, ``string_types``, ``test_type``, ``map`` and ``shlex_quote``.
|
||||
- ansible-doc - role entrypoint attributes are deprecated and eventually will no longer be shown in ansible-doc from ansible-core 2.20 on (https://github.com/ansible/ansible/issues/82639, https://github.com/ansible/ansible/pull/82678).
|
||||
- paramiko connection plugin, configuration items in the global scope are being deprecated and will be removed in favor or the existing same options in the plugin itself. Users should not need to change anything (how to configure them are the same) but plugin authors using the global constants should move to using the plugin's get_option().
|
||||
|
||||
Removed Features (previously deprecated)
|
||||
----------------------------------------
|
||||
|
||||
- Remove deprecated APIs from ansible-docs (https://github.com/ansible/ansible/issues/81716).
|
||||
- Remove deprecated JINJA2_NATIVE_WARNING environment variable (https://github.com/ansible/ansible/issues/81714)
|
||||
- Remove deprecated ``scp_if_ssh`` from ssh connection plugin (https://github.com/ansible/ansible/issues/81715).
|
||||
- Remove deprecated crypt support from ansible.utils.encrypt (https://github.com/ansible/ansible/issues/81717)
|
||||
- Removed Python 2.7 and Python 3.6 as a supported remote version. Python 3.7+ is now required for target execution.
|
||||
- With the removal of Python 2 support, the yum module and yum action plugin are removed and redirected to ``dnf``.
|
||||
|
||||
Security Fixes
|
||||
--------------
|
||||
|
||||
- ANSIBLE_NO_LOG - Address issue where ANSIBLE_NO_LOG was ignored (CVE-2024-0690)
|
||||
- ansible-galaxy - Prevent roles from using symlinks to overwrite files outside of the installation directory (CVE-2023-5115)
|
||||
- templating - Address issues where internal templating can cause unsafe variables to lose their unsafe designation (CVE-2023-5764)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Add a version ceiling constraint for pypsrp to avoid potential breaking changes in the 1.0.0 release.
|
||||
- All core lookups now use set_option(s) even when doing their own custom parsing. This ensures that the options are always the proper type.
|
||||
- Allow for searching handler subdir for included task via include_role (https://github.com/ansible/ansible/issues/81722)
|
||||
- AnsibleModule.atomic_move - fix preserving extended ACLs of the destination when it exists (https://github.com/ansible/ansible/issues/72929).
|
||||
- Cache host_group_vars after instantiating it once and limit the amount of repetitive work it needs to do every time it runs.
|
||||
- Call PluginLoader.all() once for vars plugins, and load vars plugins that run automatically or are enabled specifically by name subsequently.
|
||||
- Consolidate systemd detection logic into one place (https://github.com/ansible/ansible/issues/80975).
|
||||
- Consolidated the list of internal static vars, centralized them as constant and completed from some missing entries.
|
||||
- Do not print undefined error message twice (https://github.com/ansible/ansible/issues/78703).
|
||||
- Enable file cache for vaulted files during vars lookup to fix a strong performance penalty in huge and complex playbboks.
|
||||
- Fix NEVRA parsing of package names that include digit(s) in them (https://github.com/ansible/ansible/issues/76463, https://github.com/ansible/ansible/issues/81018)
|
||||
- Fix ``force_handlers`` not working with ``any_errors_fatal`` (https://github.com/ansible/ansible/issues/36308)
|
||||
- Fix ``run_once`` being incorrectly interpreted on handlers (https://github.com/ansible/ansible/issues/81666)
|
||||
- Fix an issue when setting a plugin name from an unsafe source resulted in ``ValueError: unmarshallable object`` (https://github.com/ansible/ansible/issues/82708)
|
||||
- Fix check for missing _sub_plugin attribute in older connection plugins (https://github.com/ansible/ansible/pull/82954)
|
||||
- Fix condition for unquoting configuration strings from ini files (https://github.com/ansible/ansible/issues/82387).
|
||||
- Fix for when ``any_errors_fatal`` was ignored if error occurred in a block with always (https://github.com/ansible/ansible/issues/31543)
|
||||
- Fix handlers not being executed in lockstep using the linear strategy in some cases (https://github.com/ansible/ansible/issues/82307)
|
||||
- Fix handling missing urls in ansible.module_utils.urls.fetch_file for Python 3.
|
||||
- Fix issue where an ``include_tasks`` handler in a role was not able to locate a file in ``tasks/`` when ``tasks_from`` was used as a role entry point and ``main.yml`` was not present (https://github.com/ansible/ansible/issues/82241)
|
||||
- Fix issues when tasks withing nested blocks wouldn't run when ``force_handlers`` is set (https://github.com/ansible/ansible/issues/81533)
|
||||
- Fix loading vars_plugins in roles (https://github.com/ansible/ansible/issues/82239).
|
||||
- Fix notifying role handlers by listen keyword topics with the "role_name : " prefix (https://github.com/ansible/ansible/issues/82849).
|
||||
- Fix setting proper locale for git executable when running on non english systems, ensuring git output can always be parsed.
|
||||
- Fix tasks in always section not being executed for nested blocks with ``any_errors_fatal`` (https://github.com/ansible/ansible/issues/73246)
|
||||
- Fixes permission for cache json file from 600 to 644 (https://github.com/ansible/ansible/issues/82683).
|
||||
- Give the tombstone error for ``include`` pre-fork like other tombstoned action/module plugins.
|
||||
- Harden python templates for respawn and ansiballz around str literal quoting
|
||||
- Include the task location when a module or action plugin is deprecated (https://github.com/ansible/ansible/issues/82450).
|
||||
- Interpreter discovery - Add ``Amzn`` to ``OS_FAMILY_MAP`` for correct family fallback for interpreter discovery (https://github.com/ansible/ansible/issues/80882).
|
||||
- Mirror the behavior of dnf on the command line when handling NEVRAs with omitted epoch (https://github.com/ansible/ansible/issues/71808)
|
||||
- Plugin loader does not dedupe nor cache filter/test plugins by file basename, but full path name.
|
||||
- Properly template tags in parent blocks (https://github.com/ansible/ansible/issues/81053)
|
||||
- Provide additional information about the alternative plugin in the deprecation message (https://github.com/ansible/ansible/issues/80561).
|
||||
- Remove the galaxy_info field ``platforms`` from the role templates (https://github.com/ansible/ansible/issues/82453).
|
||||
- Restoring the ability of filters/tests can have same file base name but different tests/filters defined inside.
|
||||
- Reword the error message when the module fails to parse parameters in JSON format (https://github.com/ansible/ansible/issues/81188).
|
||||
- Reword warning if the reserved keyword _ansible_ used as a module parameter (https://github.com/ansible/ansible/issues/82514).
|
||||
- Run all handlers with the same ``listen`` topic, even when notified from another handler (https://github.com/ansible/ansible/issues/82363).
|
||||
- Slight optimization to hostvars (instantiate template only once per host, vs per call to var).
|
||||
- Stopped misleadingly advertising ``async`` mode support in the ``reboot`` module (https://github.com/ansible/ansible/issues/71517).
|
||||
- ``ansible-galaxy role import`` - fix using the ``role_name`` in a standalone role's ``galaxy_info`` metadata by disabling automatic removal of the ``ansible-role-`` prefix. This matches the behavior of the Galaxy UI which also no longer implicitly removes the ``ansible-role-`` prefix. Use the ``--role-name`` option or add a ``role_name`` to the ``galaxy_info`` dictionary in the role's ``meta/main.yml`` to use an alternate role name.
|
||||
- ``ansible-test sanity --test runtime-metadata`` - add ``action_plugin`` as a valid field for modules in the schema (https://github.com/ansible/ansible/pull/82562).
|
||||
- ``ansible.module_utils.service`` - ensure binary data transmission in ``daemonize()``
|
||||
- ``any_errors_fatal`` should fail all hosts and rescue all of them when a ``rescue`` section is specified (https://github.com/ansible/ansible/issues/80981)
|
||||
- ``include_role`` - properly execute ``v2_playbook_on_include`` and ``v2_runner_on_failed`` callbacks as well as increase ``ok`` and ``failed`` stats in the play recap, when appropriate (https://github.com/ansible/ansible/issues/77336)
|
||||
- allow_duplicates - fix evaluating if the current role allows duplicates instead of using the initial value from the duplicate's cached role.
|
||||
- ansible-config init will now dedupe ini entries from plugins.
|
||||
- ansible-config will now properly template defaults before dumping them.
|
||||
- ansible-doc - fixed "inicates" typo in output
|
||||
- ansible-doc - format top-level descriptions with multiple paragraphs as multiple paragraphs, instead of concatenating them (https://github.com/ansible/ansible/pull/83155).
|
||||
- ansible-galaxy - Deprecate use of the Galaxy v2 API (https://github.com/ansible/ansible/issues/81781)
|
||||
- ansible-galaxy - Provide a better error message when using a requirements file with an invalid format - https://github.com/ansible/ansible/issues/81901
|
||||
- ansible-galaxy - Resolve issue with the dataclass used for galaxy.yml manifest caused by using future annotations
|
||||
- ansible-galaxy - ensure path to ansible collection when installing or downloading doesn't have a backslash (https://github.com/ansible/ansible/pull/79705).
|
||||
- ansible-galaxy - started allowing the use of pre-releases for collections that do not have any stable versions published. (https://github.com/ansible/ansible/pull/81606)
|
||||
- ansible-galaxy - started allowing the use of pre-releases for dependencies on any level of the dependency tree that specifically demand exact pre-release versions of collections and not version ranges. (https://github.com/ansible/ansible/pull/81606)
|
||||
- ansible-galaxy error on dependency resolution will not error itself due to 'virtual' collections not having a name/namespace.
|
||||
- ansible-galaxy info - fix reporting no role found when lookup_role_by_name returns None.
|
||||
- ansible-galaxy role import - exit with 1 when the import fails (https://github.com/ansible/ansible/issues/82175).
|
||||
- ansible-galaxy role install - fix installing roles from Galaxy that have version ``None`` (https://github.com/ansible/ansible/issues/81832).
|
||||
- ansible-galaxy role install - fix symlinks (https://github.com/ansible/ansible/issues/82702, https://github.com/ansible/ansible/issues/81965).
|
||||
- ansible-galaxy role install - normalize tarfile paths and symlinks using ``ansible.utils.path.unfrackpath`` and consider them valid as long as the realpath is in the tarfile's role directory (https://github.com/ansible/ansible/issues/81965).
|
||||
- ansible-inventory - index available_hosts for major performance boost when dumping large inventories
|
||||
- ansible-pull now will expand relative paths for the ``-d|--directory`` option is now expanded before use.
|
||||
- ansible-pull will now correctly handle become and connection password file options for ansible-playbook.
|
||||
- ansible-test - Add a ``pylint`` plugin to work around a known issue on Python 3.12.
|
||||
- ansible-test - Explicitly supply ``ControlPath=none`` when setting up port forwarding over SSH to address the scenario where the local ssh configuration uses ``ControlPath`` for all hosts, and would prevent ports to be forwarded after the initial connection to the host.
|
||||
- ansible-test - Fix parsing of cgroup entries which contain a ``:`` in the path (https://github.com/ansible/ansible/issues/81977).
|
||||
- ansible-test - Include missing ``pylint`` requirements for Python 3.10.
|
||||
- ansible-test - Properly detect docker host when using ``ssh://`` protocol for connecting to the docker daemon.
|
||||
- ansible-test - The ``libexpat`` package is automatically upgraded during remote bootstrapping to maintain compatibility with newer Python packages.
|
||||
- ansible-test - The ``validate-modules`` sanity test no longer attempts to process files with unrecognized extensions as Python (resolves https://github.com/ansible/ansible/issues/82604).
|
||||
- ansible-test - Update ``pylint`` to version 3.0.1.
|
||||
- ansible-test ansible-doc sanity test - do not remove underscores from plugin names in collections before calling ``ansible-doc`` (https://github.com/ansible/ansible/pull/82574).
|
||||
- ansible-test validate-modules sanity test - do not treat leading underscores for plugin names in collections as an attempted deprecation (https://github.com/ansible/ansible/pull/82575).
|
||||
- ansible-test — Python 3.8–3.12 will use ``coverage`` v7.3.2.
|
||||
- ansible.builtin.apt - calling clean = true does not properly clean certain cache files such as /var/cache/apt/pkgcache.bin and /var/cache/apt/pkgcache.bin (https://github.com/ansible/ansible/issues/82611)
|
||||
- ansible.builtin.uri - the module was ignoring the ``force`` parameter and always requesting a cached copy (via the ``If-Modified-Since`` header) when downloading to an existing local file. Disable caching when ``force`` is ``true``, as documented (https://github.com/ansible/ansible/issues/82166).
|
||||
- ansible_managed restored it's 'templatability' by ensuring the possible injection routes are cut off earlier in the process.
|
||||
- apt - honor install_recommends and dpkg_options while installing python3-apt library (https://github.com/ansible/ansible/issues/40608).
|
||||
- apt - install recommended packages when installing package via deb file (https://github.com/ansible/ansible/issues/29726).
|
||||
- apt_repository - do not modify repo files if the file is a symlink (https://github.com/ansible/ansible/issues/49809).
|
||||
- apt_repository - update PPA URL to point to https URL (https://github.com/ansible/ansible/issues/82463).
|
||||
- assemble - fixed missing parameter 'content' in _get_diff_data API (https://github.com/ansible/ansible/issues/82359).
|
||||
- async - Fix bug that stopped running async task in ``--check`` when ``check_mode: False`` was set as a task attribute - https://github.com/ansible/ansible/issues/82811
|
||||
- blockinfile - when ``create=true`` is used with a filename without path, the module crashed (https://github.com/ansible/ansible/pull/81638).
|
||||
- check if there are attributes to set before attempting to set them (https://github.com/ansible/ansible/issues/76727)
|
||||
- copy action now also generates temprary files as hidden ('.' prefixed) to avoid accidental pickup by running services that glob by extension.
|
||||
- copy action now ensures that tempfiles use the same suffix as destination, to allow for ``validate`` to work with utilities that check extensions.
|
||||
- deb822_repository - handle idempotency if the order of parameters is changed (https://github.com/ansible/ansible/issues/82454).
|
||||
- debconf - allow user to specify a list for value when vtype is multiselect (https://github.com/ansible/ansible/issues/81345).
|
||||
- delegate_to when set to an empty or undefined variable will now give a proper error.
|
||||
- distribution.py - Recognize ALP-Dolomite as part of the SUSE OS family in Ansible, fixing its previous misidentification (https://github.com/ansible/ansible/pull/82496).
|
||||
- distro - bump bundled distro version from 1.6.0 to 1.8.0 (https://github.com/ansible/ansible/issues/81713).
|
||||
- dnf - fix an issue when cached RPMs were left in the cache directory even when the keepcache setting was unset (https://github.com/ansible/ansible/issues/81954)
|
||||
- dnf - fix an issue when installing a package by specifying a file it provides could result in installing a different package providing the same file than the package already installed resulting in resolution failure (https://github.com/ansible/ansible/issues/82461)
|
||||
- dnf - properly set gpg check options on enabled repositories according to the ``disable_gpg_check`` option (https://github.com/ansible/ansible/issues/80110)
|
||||
- dnf - properly skip unavailable packages when ``skip_broken`` is enabled (https://github.com/ansible/ansible/issues/80590)
|
||||
- dnf - the ``nobest`` option only overrides the distribution default when explicitly used, and is used for all supported operations (https://github.com/ansible/ansible/issues/82616)
|
||||
- dnf5 - replace removed API calls
|
||||
- dnf5 - respect ``allow_downgrade`` when installing packages directly from rpm files
|
||||
- dnf5 - the ``nobest`` option only overrides the distribution default when used
|
||||
- dwim functions for lookups should be better at detectging role context even in abscense of tasks/main.
|
||||
- ensure we have logger before we log when we have increased verbosity.
|
||||
- expect - fix argument spec error using timeout=null (https://github.com/ansible/ansible/issues/80982).
|
||||
- fact gathering on linux now handles thread count by using rounding vs dropping decimals, it should give slightly more accurate numbers.
|
||||
- facts - add a generic detection for VMware in product name.
|
||||
- facts - detect VMware ESXi 8.0 virtualization by product name VMware20,1
|
||||
- fetch - Do not calculate the file size for Windows fetch targets to improve performance.
|
||||
- fetch - add error message when using ``dest`` with a trailing slash that becomes a local directory - https://github.com/ansible/ansible/issues/82878
|
||||
- find - do not fail on Permission errors (https://github.com/ansible/ansible/issues/82027).
|
||||
- first_found lookup now always returns a full (absolute) and normalized path
|
||||
- first_found lookup now always takes into account k=v options
|
||||
- flush_handlers - properly handle a handler failure in a nested block when ``force_handlers`` is set (http://github.com/ansible/ansible/issues/81532)
|
||||
- galaxy - skip verification for unwanted Python compiled bytecode files (https://github.com/ansible/ansible/issues/81628).
|
||||
- handle exception raised while validating with elements='int' and value is not within choices (https://github.com/ansible/ansible/issues/82776).
|
||||
- include_tasks - include `ansible_loop_var` and `ansible_index_var` in a loop (https://github.com/ansible/ansible/issues/82655).
|
||||
- include_vars - fix calculating ``depth`` relative to the root and ensure all files are included (https://github.com/ansible/ansible/issues/80987).
|
||||
- interpreter_discovery - handle AnsibleError exception raised while interpreter discovery (https://github.com/ansible/ansible/issues/78264).
|
||||
- iptables - add option choices 'src,src' and 'dst,dst' in match_set_flags (https://github.com/ansible/ansible/issues/81281).
|
||||
- iptables - set jump to DSCP when set_dscp_mark or set_dscp_mark_class is set (https://github.com/ansible/ansible/issues/77077).
|
||||
- known_hosts - Fix issue with `@cert-authority` entries in known_hosts incorrectly being removed.
|
||||
- module no_log will no longer affect top level booleans, for example ``no_log_module_parameter='a'`` will no longer hide ``changed=False`` as a 'no log value' (matches 'a').
|
||||
- moved assemble, raw, copy, fetch, reboot, script and wait_for_connection to query task instead of play_context ensuring they get the lastest and most correct data.
|
||||
- reboot action now handles connections with 'timeout' vs only 'connection_timeout' settings.
|
||||
- role params now have higher precedence than host facts again, matching documentation, this had unintentionally changed in 2.15.
|
||||
- roles, code cleanup and performance optimization of dependencies, now cached, and ``public`` setting is now determined once, at role instantiation.
|
||||
- roles, the ``static`` property is now correctly set, this will fix issues with ``public`` and ``DEFAULT_PRIVATE_ROLE_VARS`` controls on exporting vars.
|
||||
- set_option method for plugins to update config now properly passes through type casting and validation.
|
||||
- ssh - add tests for the SSH connection plugin.
|
||||
- support url-encoded credentials in URLs like http://x%40:%40@example.com (https://github.com/ansible/ansible/pull/82552)
|
||||
- syslog - Handle ValueError exception raised when sending Null Characters to syslog with Python 3.12.
|
||||
- systemd_services - update documentation regarding required_one_of and required_by parameters (https://github.com/ansible/ansible/issues/82914).
|
||||
- template - Fix error when templating an unsafe string which corresponds to an invalid type in Python (https://github.com/ansible/ansible/issues/82600).
|
||||
- template action will also inherit the behavior from copy (as it uses it internally).
|
||||
- templating - ensure syntax errors originating from a template being compiled into Python code object result in a failure (https://github.com/ansible/ansible/issues/82606)
|
||||
- unarchive - add support for 8 character permission strings for zip archives (https://github.com/ansible/ansible/pull/81705).
|
||||
- unarchive - force unarchive if symlink target changes (https://github.com/ansible/ansible/issues/30420).
|
||||
- unarchive modules now uses zipinfo options without relying on implementation defaults, making it more compatible with all OS/distributions.
|
||||
- unsafe data - Address an incompatibility when iterating or getting a single index from ``AnsibleUnsafeBytes``
|
||||
- unsafe data - Address an incompatibility with ``AnsibleUnsafeText`` and ``AnsibleUnsafeBytes`` when pickling with ``protocol=0``
|
||||
- unsafe data - Enable directly using ``AnsibleUnsafeText`` with Python ``pathlib`` (https://github.com/ansible/ansible/issues/82414)
|
||||
- uri - update the documentation for follow_redirects.
|
||||
- uri action plugin now skipped during check mode (not supported) instead of even trying to execute the module, which already skipped, this does not really change the result, but returns much faster.
|
||||
- vars - handle exception while combining VarsWithSources and dict (https://github.com/ansible/ansible/issues/81659).
|
||||
- wait_for should not handle 'non mmapable files' again.
|
||||
- winrm - Better handle send input failures when communicating with hosts under load
|
||||
- winrm - Do not raise another exception during cleanup when a task is timed out - https://github.com/ansible/ansible/issues/81095
|
||||
- winrm - does not hang when attempting to get process output when stdin write failed
|
||||
@ -1,2 +1,990 @@
|
||||
ancestor: 2.16.0
|
||||
releases: {}
|
||||
releases:
|
||||
2.17.0:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2024-05-20
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.0_summary.yaml
|
||||
release_date: '2024-05-20'
|
||||
2.17.0b1:
|
||||
changes:
|
||||
breaking_changes:
|
||||
- assert - Nested templating may result in an inability for the conditional
|
||||
to be evaluated. See the porting guide for more information.
|
||||
bugfixes:
|
||||
- All core lookups now use set_option(s) even when doing their own custom parsing.
|
||||
This ensures that the options are always the proper type.
|
||||
- Allow for searching handler subdir for included task via include_role (https://github.com/ansible/ansible/issues/81722)
|
||||
- AnsibleModule.atomic_move - fix preserving extended ACLs of the destination
|
||||
when it exists (https://github.com/ansible/ansible/issues/72929).
|
||||
- Cache host_group_vars after instantiating it once and limit the amount of
|
||||
repetitive work it needs to do every time it runs.
|
||||
- Call PluginLoader.all() once for vars plugins, and load vars plugins that
|
||||
run automatically or are enabled specifically by name subsequently.
|
||||
- Consolidate systemd detection logic into one place (https://github.com/ansible/ansible/issues/80975).
|
||||
- Consolidated the list of internal static vars, centralized them as constant
|
||||
and completed from some missing entries.
|
||||
- Do not print undefined error message twice (https://github.com/ansible/ansible/issues/78703).
|
||||
- Enable file cache for vaulted files during vars lookup to fix a strong performance
|
||||
penalty in huge and complex playbboks.
|
||||
- Fix NEVRA parsing of package names that include digit(s) in them (https://github.com/ansible/ansible/issues/76463,
|
||||
https://github.com/ansible/ansible/issues/81018)
|
||||
- Fix ``force_handlers`` not working with ``any_errors_fatal`` (https://github.com/ansible/ansible/issues/36308)
|
||||
- Fix ``run_once`` being incorrectly interpreted on handlers (https://github.com/ansible/ansible/issues/81666)
|
||||
- 'Fix an issue when setting a plugin name from an unsafe source resulted in
|
||||
``ValueError: unmarshallable object`` (https://github.com/ansible/ansible/issues/82708)'
|
||||
- Fix check for missing _sub_plugin attribute in older connection plugins (https://github.com/ansible/ansible/pull/82954)
|
||||
- Fix condition for unquoting configuration strings from ini files (https://github.com/ansible/ansible/issues/82387).
|
||||
- Fix for when ``any_errors_fatal`` was ignored if error occurred in a block
|
||||
with always (https://github.com/ansible/ansible/issues/31543)
|
||||
- Fix handling missing urls in ansible.module_utils.urls.fetch_file for Python
|
||||
3.
|
||||
- Fix issue where an ``include_tasks`` handler in a role was not able to locate
|
||||
a file in ``tasks/`` when ``tasks_from`` was used as a role entry point and
|
||||
``main.yml`` was not present (https://github.com/ansible/ansible/issues/82241)
|
||||
- Fix issues when tasks withing nested blocks wouldn't run when ``force_handlers``
|
||||
is set (https://github.com/ansible/ansible/issues/81533)
|
||||
- Fix loading vars_plugins in roles (https://github.com/ansible/ansible/issues/82239).
|
||||
- 'Fix notifying role handlers by listen keyword topics with the "role_name
|
||||
: " prefix (https://github.com/ansible/ansible/issues/82849).'
|
||||
- Fix setting proper locale for git executable when running on non english systems,
|
||||
ensuring git output can always be parsed.
|
||||
- Fix tasks in always section not being executed for nested blocks with ``any_errors_fatal``
|
||||
(https://github.com/ansible/ansible/issues/73246)
|
||||
- Fixes permission for cache json file from 600 to 644 (https://github.com/ansible/ansible/issues/82683).
|
||||
- Give the tombstone error for ``include`` pre-fork like other tombstoned action/module
|
||||
plugins.
|
||||
- Harden python templates for respawn and ansiballz around str literal quoting
|
||||
- Include the task location when a module or action plugin is deprecated (https://github.com/ansible/ansible/issues/82450).
|
||||
- Interpreter discovery - Add ``Amzn`` to ``OS_FAMILY_MAP`` for correct family
|
||||
fallback for interpreter discovery (https://github.com/ansible/ansible/issues/80882).
|
||||
- Mirror the behavior of dnf on the command line when handling NEVRAs with omitted
|
||||
epoch (https://github.com/ansible/ansible/issues/71808)
|
||||
- Plugin loader does not dedupe nor cache filter/test plugins by file basename,
|
||||
but full path name.
|
||||
- Properly template tags in parent blocks (https://github.com/ansible/ansible/issues/81053)
|
||||
- Provide additional information about the alternative plugin in the deprecation
|
||||
message (https://github.com/ansible/ansible/issues/80561).
|
||||
- Remove the galaxy_info field ``platforms`` from the role templates (https://github.com/ansible/ansible/issues/82453).
|
||||
- Restoring the ability of filters/tests can have same file base name but different
|
||||
tests/filters defined inside.
|
||||
- Reword the error message when the module fails to parse parameters in JSON
|
||||
format (https://github.com/ansible/ansible/issues/81188).
|
||||
- Reword warning if the reserved keyword _ansible_ used as a module parameter
|
||||
(https://github.com/ansible/ansible/issues/82514).
|
||||
- Run all handlers with the same ``listen`` topic, even when notified from another
|
||||
handler (https://github.com/ansible/ansible/issues/82363).
|
||||
- Slight optimization to hostvars (instantiate template only once per host,
|
||||
vs per call to var).
|
||||
- Stopped misleadingly advertising ``async`` mode support in the ``reboot``
|
||||
module (https://github.com/ansible/ansible/issues/71517).
|
||||
- '``ansible-galaxy role import`` - fix using the ``role_name`` in a standalone
|
||||
role''s ``galaxy_info`` metadata by disabling automatic removal of the ``ansible-role-``
|
||||
prefix. This matches the behavior of the Galaxy UI which also no longer implicitly
|
||||
removes the ``ansible-role-`` prefix. Use the ``--role-name`` option or add
|
||||
a ``role_name`` to the ``galaxy_info`` dictionary in the role''s ``meta/main.yml``
|
||||
to use an alternate role name.'
|
||||
- '``ansible-test sanity --test runtime-metadata`` - add ``action_plugin`` as
|
||||
a valid field for modules in the schema (https://github.com/ansible/ansible/pull/82562).'
|
||||
- '``ansible.module_utils.service`` - ensure binary data transmission in ``daemonize()``'
|
||||
- '``any_errors_fatal`` should fail all hosts and rescue all of them when a
|
||||
``rescue`` section is specified (https://github.com/ansible/ansible/issues/80981)'
|
||||
- '``include_role`` - properly execute ``v2_playbook_on_include`` and ``v2_runner_on_failed``
|
||||
callbacks as well as increase ``ok`` and ``failed`` stats in the play recap,
|
||||
when appropriate (https://github.com/ansible/ansible/issues/77336)'
|
||||
- allow_duplicates - fix evaluating if the current role allows duplicates instead
|
||||
of using the initial value from the duplicate's cached role.
|
||||
- ansible-config init will now dedupe ini entries from plugins.
|
||||
- ansible-galaxy - Deprecate use of the Galaxy v2 API (https://github.com/ansible/ansible/issues/81781)
|
||||
- ansible-galaxy - Provide a better error message when using a requirements
|
||||
file with an invalid format - https://github.com/ansible/ansible/issues/81901
|
||||
- ansible-galaxy - Resolve issue with the dataclass used for galaxy.yml manifest
|
||||
caused by using future annotations
|
||||
- ansible-galaxy - ensure path to ansible collection when installing or downloading
|
||||
doesn't have a backslash (https://github.com/ansible/ansible/pull/79705).
|
||||
- ansible-galaxy - started allowing the use of pre-releases for collections
|
||||
that do not have any stable versions published. (https://github.com/ansible/ansible/pull/81606)
|
||||
- ansible-galaxy - started allowing the use of pre-releases for dependencies
|
||||
on any level of the dependency tree that specifically demand exact pre-release
|
||||
versions of collections and not version ranges. (https://github.com/ansible/ansible/pull/81606)
|
||||
- ansible-galaxy error on dependency resolution will not error itself due to
|
||||
'virtual' collections not having a name/namespace.
|
||||
- ansible-galaxy info - fix reporting no role found when lookup_role_by_name
|
||||
returns None.
|
||||
- ansible-galaxy role import - exit with 1 when the import fails (https://github.com/ansible/ansible/issues/82175).
|
||||
- ansible-galaxy role install - fix installing roles from Galaxy that have version
|
||||
``None`` (https://github.com/ansible/ansible/issues/81832).
|
||||
- ansible-galaxy role install - fix symlinks (https://github.com/ansible/ansible/issues/82702,
|
||||
https://github.com/ansible/ansible/issues/81965).
|
||||
- ansible-galaxy role install - normalize tarfile paths and symlinks using ``ansible.utils.path.unfrackpath``
|
||||
and consider them valid as long as the realpath is in the tarfile's role directory
|
||||
(https://github.com/ansible/ansible/issues/81965).
|
||||
- ansible-inventory - index available_hosts for major performance boost when
|
||||
dumping large inventories
|
||||
- ansible-pull now will expand relative paths for the ``-d|--directory`` option
|
||||
is now expanded before use.
|
||||
- ansible-pull will now correctly handle become and connection password file
|
||||
options for ansible-playbook.
|
||||
- ansible-test - Add a ``pylint`` plugin to work around a known issue on Python
|
||||
3.12.
|
||||
- ansible-test - Explicitly supply ``ControlPath=none`` when setting up port
|
||||
forwarding over SSH to address the scenario where the local ssh configuration
|
||||
uses ``ControlPath`` for all hosts, and would prevent ports to be forwarded
|
||||
after the initial connection to the host.
|
||||
- ansible-test - Fix parsing of cgroup entries which contain a ``:`` in the
|
||||
path (https://github.com/ansible/ansible/issues/81977).
|
||||
- ansible-test - Include missing ``pylint`` requirements for Python 3.10.
|
||||
- ansible-test - Properly detect docker host when using ``ssh://`` protocol
|
||||
for connecting to the docker daemon.
|
||||
- ansible-test - The ``libexpat`` package is automatically upgraded during remote
|
||||
bootstrapping to maintain compatibility with newer Python packages.
|
||||
- ansible-test - The ``validate-modules`` sanity test no longer attempts to
|
||||
process files with unrecognized extensions as Python (resolves https://github.com/ansible/ansible/issues/82604).
|
||||
- ansible-test - Update ``pylint`` to version 3.0.1.
|
||||
- ansible-test ansible-doc sanity test - do not remove underscores from plugin
|
||||
names in collections before calling ``ansible-doc`` (https://github.com/ansible/ansible/pull/82574).
|
||||
- ansible-test validate-modules sanity test - do not treat leading underscores
|
||||
for plugin names in collections as an attempted deprecation (https://github.com/ansible/ansible/pull/82575).
|
||||
- "ansible-test \u2014 Python 3.8\u20133.12 will use ``coverage`` v7.3.2."
|
||||
- ansible.builtin.apt - calling clean = true does not properly clean certain
|
||||
cache files such as /var/cache/apt/pkgcache.bin and /var/cache/apt/pkgcache.bin
|
||||
(https://github.com/ansible/ansible/issues/82611)
|
||||
- ansible.builtin.uri - the module was ignoring the ``force`` parameter and
|
||||
always requesting a cached copy (via the ``If-Modified-Since`` header) when
|
||||
downloading to an existing local file. Disable caching when ``force`` is ``true``,
|
||||
as documented (https://github.com/ansible/ansible/issues/82166).
|
||||
- apt - honor install_recommends and dpkg_options while installing python3-apt
|
||||
library (https://github.com/ansible/ansible/issues/40608).
|
||||
- apt - install recommended packages when installing package via deb file (https://github.com/ansible/ansible/issues/29726).
|
||||
- apt_repository - do not modify repo files if the file is a symlink (https://github.com/ansible/ansible/issues/49809).
|
||||
- apt_repository - update PPA URL to point to https URL (https://github.com/ansible/ansible/issues/82463).
|
||||
- assemble - fixed missing parameter 'content' in _get_diff_data API (https://github.com/ansible/ansible/issues/82359).
|
||||
- 'async - Fix bug that stopped running async task in ``--check`` when ``check_mode:
|
||||
False`` was set as a task attribute - https://github.com/ansible/ansible/issues/82811'
|
||||
- blockinfile - when ``create=true`` is used with a filename without path, the
|
||||
module crashed (https://github.com/ansible/ansible/pull/81638).
|
||||
- check if there are attributes to set before attempting to set them (https://github.com/ansible/ansible/issues/76727)
|
||||
- copy action now also generates temprary files as hidden ('.' prefixed) to
|
||||
avoid accidental pickup by running services that glob by extension.
|
||||
- copy action now ensures that tempfiles use the same suffix as destination,
|
||||
to allow for ``validate`` to work with utilities that check extensions.
|
||||
- deb822_repository - handle idempotency if the order of parameters is changed
|
||||
(https://github.com/ansible/ansible/issues/82454).
|
||||
- debconf - allow user to specify a list for value when vtype is multiselect
|
||||
(https://github.com/ansible/ansible/issues/81345).
|
||||
- delegate_to when set to an empty or undefined variable will now give a proper
|
||||
error.
|
||||
- distribution.py - Recognize ALP-Dolomite as part of the SUSE OS family in
|
||||
Ansible, fixing its previous misidentification (https://github.com/ansible/ansible/pull/82496).
|
||||
- distro - bump bundled distro version from 1.6.0 to 1.8.0 (https://github.com/ansible/ansible/issues/81713).
|
||||
- dnf - fix an issue when cached RPMs were left in the cache directory even
|
||||
when the keepcache setting was unset (https://github.com/ansible/ansible/issues/81954)
|
||||
- dnf - fix an issue when installing a package by specifying a file it provides
|
||||
could result in installing a different package providing the same file than
|
||||
the package already installed resulting in resolution failure (https://github.com/ansible/ansible/issues/82461)
|
||||
- dnf - properly set gpg check options on enabled repositories according to
|
||||
the ``disable_gpg_check`` option (https://github.com/ansible/ansible/issues/80110)
|
||||
- dnf - properly skip unavailable packages when ``skip_broken`` is enabled (https://github.com/ansible/ansible/issues/80590)
|
||||
- dnf - the ``nobest`` option only overrides the distribution default when explicitly
|
||||
used, and is used for all supported operations (https://github.com/ansible/ansible/issues/82616)
|
||||
- dnf5 - respect ``allow_downgrade`` when installing packages directly from
|
||||
rpm files
|
||||
- dnf5 - the ``nobest`` option only overrides the distribution default when
|
||||
used
|
||||
- dwim functions for lookups should be better at detectging role context even
|
||||
in abscense of tasks/main.
|
||||
- expect - fix argument spec error using timeout=null (https://github.com/ansible/ansible/issues/80982).
|
||||
- fact gathering on linux now handles thread count by using rounding vs dropping
|
||||
decimals, it should give slightly more accurate numbers.
|
||||
- facts - detect VMware ESXi 8.0 virtualization by product name VMware20,1
|
||||
- fetch - Do not calculate the file size for Windows fetch targets to improve
|
||||
performance.
|
||||
- fetch - add error message when using ``dest`` with a trailing slash that becomes
|
||||
a local directory - https://github.com/ansible/ansible/issues/82878
|
||||
- find - do not fail on Permission errors (https://github.com/ansible/ansible/issues/82027).
|
||||
- first_found lookup now always returns a full (absolute) and normalized path
|
||||
- first_found lookup now always takes into account k=v options
|
||||
- flush_handlers - properly handle a handler failure in a nested block when
|
||||
``force_handlers`` is set (http://github.com/ansible/ansible/issues/81532)
|
||||
- galaxy - skip verification for unwanted Python compiled bytecode files (https://github.com/ansible/ansible/issues/81628).
|
||||
- handle exception raised while validating with elements='int' and value is
|
||||
not within choices (https://github.com/ansible/ansible/issues/82776).
|
||||
- include_tasks - include `ansible_loop_var` and `ansible_index_var` in a loop
|
||||
(https://github.com/ansible/ansible/issues/82655).
|
||||
- include_vars - fix calculating ``depth`` relative to the root and ensure all
|
||||
files are included (https://github.com/ansible/ansible/issues/80987).
|
||||
- interpreter_discovery - handle AnsibleError exception raised while interpreter
|
||||
discovery (https://github.com/ansible/ansible/issues/78264).
|
||||
- iptables - add option choices 'src,src' and 'dst,dst' in match_set_flags (https://github.com/ansible/ansible/issues/81281).
|
||||
- iptables - set jump to DSCP when set_dscp_mark or set_dscp_mark_class is set
|
||||
(https://github.com/ansible/ansible/issues/77077).
|
||||
- known_hosts - Fix issue with `@cert-authority` entries in known_hosts incorrectly
|
||||
being removed.
|
||||
- module no_log will no longer affect top level booleans, for example ``no_log_module_parameter='a'``
|
||||
will no longer hide ``changed=False`` as a 'no log value' (matches 'a').
|
||||
- moved assemble, raw, copy, fetch, reboot, script and wait_for_connection to
|
||||
query task instead of play_context ensuring they get the lastest and most
|
||||
correct data.
|
||||
- reboot action now handles connections with 'timeout' vs only 'connection_timeout'
|
||||
settings.
|
||||
- role params now have higher precedence than host facts again, matching documentation,
|
||||
this had unintentionally changed in 2.15.
|
||||
- roles, code cleanup and performance optimization of dependencies, now cached, and
|
||||
``public`` setting is now determined once, at role instantiation.
|
||||
- roles, the ``static`` property is now correctly set, this will fix issues
|
||||
with ``public`` and ``DEFAULT_PRIVATE_ROLE_VARS`` controls on exporting vars.
|
||||
- set_option method for plugins to update config now properly passes through
|
||||
type casting and validation.
|
||||
- ssh - add tests for the SSH connection plugin.
|
||||
- support url-encoded credentials in URLs like http://x%40:%40@example.com (https://github.com/ansible/ansible/pull/82552)
|
||||
- syslog - Handle ValueError exception raised when sending Null Characters to
|
||||
syslog with Python 3.12.
|
||||
- systemd_services - update documentation regarding required_one_of and required_by
|
||||
parameters (https://github.com/ansible/ansible/issues/82914).
|
||||
- template - Fix error when templating an unsafe string which corresponds to
|
||||
an invalid type in Python (https://github.com/ansible/ansible/issues/82600).
|
||||
- template action will also inherit the behavior from copy (as it uses it internally).
|
||||
- templating - ensure syntax errors originating from a template being compiled
|
||||
into Python code object result in a failure (https://github.com/ansible/ansible/issues/82606)
|
||||
- unarchive - add support for 8 character permission strings for zip archives
|
||||
(https://github.com/ansible/ansible/pull/81705).
|
||||
- unarchive - force unarchive if symlink target changes (https://github.com/ansible/ansible/issues/30420).
|
||||
- unarchive modules now uses zipinfo options without relying on implementation
|
||||
defaults, making it more compatible with all OS/distributions.
|
||||
- unsafe data - Address an incompatibility when iterating or getting a single
|
||||
index from ``AnsibleUnsafeBytes``
|
||||
- unsafe data - Address an incompatibility with ``AnsibleUnsafeText`` and ``AnsibleUnsafeBytes``
|
||||
when pickling with ``protocol=0``
|
||||
- unsafe data - Enable directly using ``AnsibleUnsafeText`` with Python ``pathlib``
|
||||
(https://github.com/ansible/ansible/issues/82414)
|
||||
- uri action plugin now skipped during check mode (not supported) instead of
|
||||
even trying to execute the module, which already skipped, this does not really
|
||||
change the result, but returns much faster.
|
||||
- vars - handle exception while combining VarsWithSources and dict (https://github.com/ansible/ansible/issues/81659).
|
||||
- wait_for should not handle 'non mmapable files' again.
|
||||
- winrm - Better handle send input failures when communicating with hosts under
|
||||
load
|
||||
- winrm - Do not raise another exception during cleanup when a task is timed
|
||||
out - https://github.com/ansible/ansible/issues/81095
|
||||
- winrm - does not hang when attempting to get process output when stdin write
|
||||
failed
|
||||
deprecated_features:
|
||||
- Old style vars plugins which use the entrypoints `get_host_vars` or `get_group_vars`
|
||||
are deprecated. The plugin should be updated to inherit from `BaseVarsPlugin`
|
||||
and define a `get_vars` method as the entrypoint.
|
||||
- The 'required' parameter in 'ansible.module_utils.common.process.get_bin_path'
|
||||
API is deprecated (https://github.com/ansible/ansible/issues/82464).
|
||||
- '``module_utils`` - importing the following convenience helpers from ``ansible.module_utils.basic``
|
||||
has been deprecated: ``get_exception``, ``literal_eval``, ``_literal_eval``,
|
||||
``datetime``, ``signal``, ``types``, ``chain``, ``repeat``, ``PY2``, ``PY3``,
|
||||
``b``, ``binary_type``, ``integer_types``, ``iteritems``, ``string_types``,
|
||||
``test_type``, ``map`` and ``shlex_quote``.'
|
||||
- ansible-doc - role entrypoint attributes are deprecated and eventually will
|
||||
no longer be shown in ansible-doc from ansible-core 2.20 on (https://github.com/ansible/ansible/issues/82639,
|
||||
https://github.com/ansible/ansible/pull/82678).
|
||||
- paramiko connection plugin, configuration items in the global scope are being
|
||||
deprecated and will be removed in favor or the existing same options in the
|
||||
plugin itself. Users should not need to change anything (how to configure
|
||||
them are the same) but plugin authors using the global constants should move
|
||||
to using the plugin's get_option().
|
||||
major_changes:
|
||||
- urls.py - Removed support for Python 2
|
||||
minor_changes:
|
||||
- Add ``dump`` and ``passno`` mount information to facts component (https://github.com/ansible/ansible/issues/80478)
|
||||
- Added MIRACLE LINUX 9.2 in RedHat OS Family.
|
||||
- Interpreter Discovery - Remove hardcoded references to specific python interpreters
|
||||
to use for certain distro versions, and modify logic for python3 to become
|
||||
the default.
|
||||
- Use Python's built-in ``functools.update_wrapper`` instead an inline copy
|
||||
from Python 3.7.
|
||||
- User can now set ansible.log to record higher verbosity than what is specified
|
||||
for display via new configuration item LOG_VERBOSITY.
|
||||
- '``DEFAULT_PRIVATE_ROLE_VARS`` is now overridden by explicit setting of ``public``
|
||||
for ``include_roles`` and ``import_roles``.'
|
||||
- '``ansible-galaxy role|collection init`` - accept ``--extra-vars`` to supplement/override
|
||||
the variables ``ansible-galaxy`` injects for templating ``.j2`` files in the
|
||||
skeleton.'
|
||||
- '``import_role`` action now also gets a ``public`` option that controls variable
|
||||
exports, default depending on ``DEFAULT_PRIVATE_ROLE_VARS`` (if using defaults
|
||||
equates to ``public=True``).'
|
||||
- added configuration item ``TARGET_LOG_INFO`` that allows the user/author to
|
||||
add an information string to the log output on targets.
|
||||
- ansible-doc - treat double newlines in documentation strings as paragraph
|
||||
breaks. This is useful to create multi-paragraph notes in module/plugin documentation
|
||||
(https://github.com/ansible/ansible/pull/82465).
|
||||
- ansible-doc output has been revamped to make it more visually pleasing when
|
||||
going to a terminal, also more concise, use -v to show extra information.
|
||||
- ansible-galaxy - Started normalizing build directory with a trailing separator
|
||||
when building collections, internally. (https://github.com/ansible/ansible/pull/81619).
|
||||
- ansible-galaxy dependency resolution messages have changed the unexplained
|
||||
'virtual' collection for the specific type ('scm', 'dir', etc) that is more
|
||||
user friendly
|
||||
- ansible-test - Add Alpine 3.19 container.
|
||||
- ansible-test - Add Alpine 3.19 to remotes.
|
||||
- ansible-test - Add Fedora 39 container.
|
||||
- ansible-test - Add Fedora 39 remote.
|
||||
- ansible-test - Add a work-around for permission denied errors when using ``pytest
|
||||
>= 8`` on multi-user systems with an installed version of ``ansible-test``.
|
||||
- ansible-test - Add support for RHEL 9.3 remotes.
|
||||
- ansible-test - Added a macOS 14.3 remote VM.
|
||||
- ansible-test - Bump the ``nios-test-container`` from version 2.0.0 to version
|
||||
3.0.0.
|
||||
- ansible-test - Containers and remotes managed by ansible-test will have their
|
||||
Python ``EXTERNALLY-MANAGED`` marker (PEP668) removed. This provides backwards
|
||||
compatibility for existing tests running in newer environments which mark
|
||||
their Python as externally managed. A future version of ansible-test may change
|
||||
this behavior, requiring tests to be adapted to such environments.
|
||||
- ansible-test - Make Python 3.12 the default version used in the ``base`` and
|
||||
``default`` containers.
|
||||
- ansible-test - Remove Alpine 3(.18) container.
|
||||
- ansible-test - Remove Alpine 3.18 from remotes.
|
||||
- ansible-test - Remove Fedora 38 remote support.
|
||||
- ansible-test - Remove Fedora 38 test container.
|
||||
- ansible-test - Remove rhel/9.2 test remote
|
||||
- ansible-test - Remove the FreeBSD 13.2 remote.
|
||||
- ansible-test - Removed fallback to ``virtualenv`` when ``-m venv`` is non-functional.
|
||||
- 'ansible-test - Removed test remotes: macos/13.2'
|
||||
- ansible-test - Removed the ``no-basestring`` sanity test. The test is no longer
|
||||
necessary now that Python 3 is required.
|
||||
- ansible-test - Removed the ``no-dict-iteritems``, ``no-dict-iterkeys`` and
|
||||
``no-dict-itervalues`` sanity tests. The tests are no longer necessary since
|
||||
Python 3 is required.
|
||||
- ansible-test - Removed the ``no-main-display`` sanity test. The unwanted pattern
|
||||
is unlikely to occur, since the test has existed since Ansible 2.8.
|
||||
- ansible-test - Removed the ``no-unicode-literals`` sanity test. The test is
|
||||
unnecessary now that Python 3 is required and the ``unicode_literals`` feature
|
||||
has no effect.
|
||||
- ansible-test - Special handling for installation of ``cryptography`` has been
|
||||
removed, as it is no longer necessary.
|
||||
- ansible-test - The ``shellcheck`` sanity test no longer disables the ``SC2164``
|
||||
check. In most cases, seeing this error means the script is missing ``set
|
||||
-e``.
|
||||
- ansible-test - The ``unidiomatic-typecheck`` rule has been enabled in the
|
||||
``pylint`` sanity test.
|
||||
- ansible-test - The ``unidiomatic-typecheck`` rule has been removed from the
|
||||
``validate-modules`` sanity test.
|
||||
- ansible-test - Update the base and default containers to use Ubuntu 22.04
|
||||
for the base image. This also updates PowerShell to version 7.4.0 with .NET
|
||||
8.0.0 and ShellCheck to version 0.8.0.
|
||||
- ansible-test - Updated the CloudStack test container to version 1.7.0.
|
||||
- ansible-test - Updated the distro test containers to version 6.3.0 to include
|
||||
coverage 7.3.2 for Python 3.8+. The alpine3 container is now based on 3.18
|
||||
instead of 3.17 and includes Python 3.11 instead of Python 3.10.
|
||||
- ansible-test - Updated the distro test containers to version 7.1.0.
|
||||
- ansible-test - When ansible-test installs requirements, it now instructs pip
|
||||
to allow installs on externally managed environments as defined by PEP 668.
|
||||
This only occurs in ephemeral environments managed by ansible-test, such as
|
||||
containers, or when the `--requirements` option is used.
|
||||
- ansible-test - When invoking ``sleep`` in containers during container setup,
|
||||
the ``env`` command is used to avoid invoking the shell builtin, if present.
|
||||
- ansible-test - document block name now included in error message for YAML
|
||||
parsing errors (https://github.com/ansible/ansible/issues/82353).
|
||||
- ansible-test - sanity test allows ``EXAMPLES`` to be multi-document YAML (https://github.com/ansible/ansible/issues/82353).
|
||||
- ansible-test now has FreeBSD 13.3 and 14.0 support
|
||||
- ansible.builtin.user - Remove user not found warning (https://github.com/ansible/ansible/issues/80267)
|
||||
- apt_repository.py - use api.launchpad.net endpoint instead of launchpad.net/api
|
||||
- async tasks can now also support check mode at the same time.
|
||||
- async_status now supports check mode.
|
||||
- constructed inventory plugin - Adding a note that only group_vars of explicit
|
||||
groups are loaded (https://github.com/ansible/ansible/pull/82580).
|
||||
- csvfile - add a keycol parameter to specify in which column to search.
|
||||
- dnf - add the ``best`` option
|
||||
- dnf5 - add the ``best`` option
|
||||
- filter plugin - Add the count and mandatory_count parameters in the regex_replace
|
||||
filter
|
||||
- find - add a encoding parameter to specify which encoding of the files to
|
||||
be searched.
|
||||
- git module - gpg_allowlist name was added in 2.17 and we will eventually deprecate
|
||||
the gpg_whitelist alias.
|
||||
- import_role - allow subdirectories with ``_from`` options for parity with
|
||||
``include_role`` (https://github.com/ansible/ansible/issues/82584).
|
||||
- module argument spec - Allow module authors to include arbitrary additional
|
||||
context in the argument spec, by making use of a new top level key called
|
||||
``context``. This key should be a dict type. This allows for users to customize
|
||||
what they place in the argument spec, without having to ignore sanity tests
|
||||
that validate the schema.
|
||||
- modules - Add the ability for an action plugin to call ``self._execute_module(*,
|
||||
ignore_unknown_opts=True)`` to execute a module with options that may not
|
||||
be supported for the version being called. This tells the module basic wrapper
|
||||
to ignore validating the options provided match the arg spec.
|
||||
- package action now has a configuration that overrides the detected package
|
||||
manager, it is still overridden itself by the use option.
|
||||
- py3compat - Remove ``ansible.utils.py3compat`` as it is no longer necessary
|
||||
- removed the unused argument ``create_new_password`` from ``CLI.build_vault_ids``
|
||||
(https://github.com/ansible/ansible/pull/82066).
|
||||
- urls - Add support for TLS 1.3 post handshake certificate authentication -
|
||||
https://github.com/ansible/ansible/issues/81782
|
||||
- urls - reduce complexity of ``Request.open``
|
||||
- user - accept yescrypt hash as user password
|
||||
- validate-modules tests now correctly handles ``choices`` in dictionary format.
|
||||
release_summary: '| Release Date: 2024-04-08
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
removed_features:
|
||||
- Remove deprecated APIs from ansible-docs (https://github.com/ansible/ansible/issues/81716).
|
||||
- Remove deprecated JINJA2_NATIVE_WARNING environment variable (https://github.com/ansible/ansible/issues/81714)
|
||||
- Remove deprecated ``scp_if_ssh`` from ssh connection plugin (https://github.com/ansible/ansible/issues/81715).
|
||||
- Remove deprecated crypt support from ansible.utils.encrypt (https://github.com/ansible/ansible/issues/81717)
|
||||
- With the removal of Python 2 support, the yum module and yum action plugin
|
||||
are removed and redirected to ``dnf``.
|
||||
security_fixes:
|
||||
- ANSIBLE_NO_LOG - Address issue where ANSIBLE_NO_LOG was ignored (CVE-2024-0690)
|
||||
- ansible-galaxy - Prevent roles from using symlinks to overwrite files outside
|
||||
of the installation directory (CVE-2023-5115)
|
||||
- templating - Address issues where internal templating can cause unsafe variables
|
||||
to lose their unsafe designation (CVE-2023-5764)
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.0b1_summary.yaml
|
||||
- 49809_apt_repository.yml
|
||||
- 76727-chattr-fix-for-backups-of-symlinks.yml
|
||||
- 77077_iptables.yml
|
||||
- 77336-include_role-callbacks-stats.yml
|
||||
- 78703_undefined.yml
|
||||
- 79705-fix-ensure-path-to-collection-argument-doesnt-have-backslash.yml
|
||||
- 79945-host_group_vars-improvements.yml
|
||||
- 80110-repos-gpgcheck.yml
|
||||
- 80267-ansible_builtin_user-remove-user-not-found-warning.yml
|
||||
- 80478-extend-mount-info.yml
|
||||
- 80561.yml
|
||||
- 80590-dnf-skip_broken-unavailable-pkgs.yml
|
||||
- 80882-Amazon-os-family-compat.yaml
|
||||
- 80975-systemd-detect.yml
|
||||
- 80995-include-all-var-files.yml
|
||||
- 81053-templated-tags-inheritance.yml
|
||||
- 81188_better_error.yml
|
||||
- 81532-fix-nested-flush_handlers.yml
|
||||
- 81584-daemonize-follow-up-fixes.yml
|
||||
- 81606-ansible-galaxy-collection-pre-releases.yml
|
||||
- 81628_galaxy_verify.yml
|
||||
- 81638-blockinfile.yml
|
||||
- 81659_varswithsources.yml
|
||||
- 81666-handlers-run_once.yml
|
||||
- 81699-zip-permission.yml
|
||||
- 81713-distro.yml
|
||||
- 81714-remove-deprecated-jinja2_native_warning.yml
|
||||
- 81716-ansible-doc.yml
|
||||
- 81717-remove-deprecated-crypt-support.yml
|
||||
- 81722-handler-subdir-include_tasks.yml
|
||||
- 81732-cloudstack-test-container-1.7.0.yml
|
||||
- 81775-add-regex_replace-parameters.yml
|
||||
- 81901-galaxy-requirements-format.yml
|
||||
- 81931-locale-related-parsing-error-git.yml
|
||||
- 81954-dnf-keepcache.yml
|
||||
- 81978-launchpad-api-endpoint.yml
|
||||
- 81995-enable_file_cache.yml
|
||||
- 82027_find.yml
|
||||
- 82066.yml
|
||||
- 82175-fix-ansible-galaxy-role-import-rc.yml
|
||||
- 82187-uri-handle-force.yml
|
||||
- 82241-handler-include-tasks-from.yml
|
||||
- 82353-ansible-sanity-examples.yml
|
||||
- 82359_assemble_diff.yml
|
||||
- 82363-multiple-handlers-with-recursive-notification.yml
|
||||
- 82377-git-gpg-whitelist-allowlist.yml
|
||||
- 82387-unquote-strings-from-ini-files.yml
|
||||
- 82455-new-vmware-productname.yml
|
||||
- 82461-dnf-provides.yml
|
||||
- 82465-ansible-doc-paragraphs.yml
|
||||
- 82496-add-alp-dolomite-suse-family.yaml
|
||||
- 82574-ansible-test-ansible-doc-underscore.yml
|
||||
- 82575-ansible-test-validate-modules-underscore.yml
|
||||
- 82580_constructed.yml
|
||||
- 82606-template-python-syntax-error.yml
|
||||
- 82611_fix_alignment_apt_clean_with_ansible_apt_clean.yml
|
||||
- 82616-dnf-best-nobest.yml
|
||||
- 82655-fix-ansible-loop-index-var-in-includedtasks.yml
|
||||
- 82675-fix-unsafe-templating-leading-to-type-error.yml
|
||||
- 82678-role-entrypoint-attributes.yml
|
||||
- 82683-ansible-fact_cache-permissions-changed-after-ansible-coreupdate.yml
|
||||
- 82708-unsafe-plugin-name-error.yml
|
||||
- 82878-fetch-dest-is-dir.yml
|
||||
- 82954-fix-older-connection-plugins.yml
|
||||
- a-g-install-version-None.yml
|
||||
- ansible-galaxy-init-extra-vars.yml
|
||||
- ansible-galaxy-role-install-symlink.yml
|
||||
- ansible-test-added-fedora-39.yml
|
||||
- ansible-test-added-macos-14.3.yml
|
||||
- ansible-test-alpine-libexpat.yml
|
||||
- ansible-test-cgroup-split.yml
|
||||
- ansible-test-container-sleep.yml
|
||||
- ansible-test-coverage-update.yml
|
||||
- ansible-test-cryptography.yml
|
||||
- ansible-test-default-containers.yml
|
||||
- ansible-test-distro-containers.yml
|
||||
- ansible-test-docker-forwards.yml
|
||||
- ansible-test-externally-managed-python.yml
|
||||
- ansible-test-nios-container.yml
|
||||
- ansible-test-pep-668.yml
|
||||
- ansible-test-pylint-update.yml
|
||||
- ansible-test-pytest-8.yml
|
||||
- ansible-test-python-3.12-compat.yml
|
||||
- ansible-test-python-default.yml
|
||||
- ansible-test-remove-freebsd-13.2.yml
|
||||
- ansible-test-remove-rhel-9_2-remote.yml
|
||||
- ansible-test-rhel-9.3.yml
|
||||
- ansible-test-rmv-fedora-38.yml
|
||||
- ansible-test-sanity-no-basestring.yml
|
||||
- ansible-test-sanity-no-dict.yml
|
||||
- ansible-test-sanity-no-main-display.yml
|
||||
- ansible-test-sanity-unicode-literals.yml
|
||||
- ansible-test-shellcheck-exclude.yml
|
||||
- ansible-test-unidiomatic-type-check.yml
|
||||
- ansible-test-validate-modules-non-python.yml
|
||||
- ansible-test-venv.yml
|
||||
- ansible_test_alpine_3.19.yml
|
||||
- ansible_test_fbsd_add.yml
|
||||
- ansible_test_rmv_alpine_318.yml
|
||||
- ansible_test_rmv_macos_132.yml
|
||||
- any_errors_fatal-fixes.yml
|
||||
- apt_install.yml
|
||||
- apt_recommends.yml
|
||||
- argument-spec-context.yml
|
||||
- async-task-check-mode.yml
|
||||
- async_status_check_mode.yml
|
||||
- atomic-move-fix-extended-attrs.yml
|
||||
- check_arguments.yml
|
||||
- clear-distro-interp-map.yml
|
||||
- config_set_option_fix.yml
|
||||
- config_validate_updates.yml
|
||||
- copy_keep_suffix_temp.yml
|
||||
- csvfile-keycol.yml
|
||||
- cve-2023-5115.yml
|
||||
- cve-2023-5764.yml
|
||||
- cve-2024-0690.yml
|
||||
- deb822_repo_idem.yml
|
||||
- debconf_multiselect.yml
|
||||
- dedupe_config_init.yml
|
||||
- delegate_to_invalid.yml
|
||||
- deprecate-v2-galaxy-api.yml
|
||||
- distlib-dataclass-annotation.yml
|
||||
- dnf-installed-checks-api.yml
|
||||
- dnf5-from-rpm-allow_downgrade.yml
|
||||
- dwim_is_role_fix.yml
|
||||
- find-encoding.yml
|
||||
- first_found_fixes.yml
|
||||
- fix-allow-duplicates.yml
|
||||
- fix-ansible-galaxy-info-no-role-found.yml
|
||||
- fix-build-files-manifest-walk.yml
|
||||
- fix-default-ansible-galaxy-role-import-name.yml
|
||||
- fix-dnf-install-missing-url.yml
|
||||
- fix-expect-indefinite-timeout.yml
|
||||
- fix-import_role-_from-options.yml
|
||||
- fix-reboot-plugin.yml
|
||||
- fix-role-name-handler-prefix-listen.yml
|
||||
- fix-runtime-metadata-modules-action_plugin.yml
|
||||
- fix-vars-plugins-in-roles.yml
|
||||
- functools-update-wrapper.yml
|
||||
- galaxy_dep_res_msgs.yml
|
||||
- get_bin_path_required_parameter.yml
|
||||
- import_role_goes_public.yml
|
||||
- improve-tombstone-error.yml
|
||||
- internal_static_vars.yml
|
||||
- interpreter_discovery.yml
|
||||
- inv_available_hosts_to_frozenset.yml
|
||||
- iptables_match_set_flag.yml
|
||||
- j2_load_fix.yml
|
||||
- known_hosts_cert-authority_keys.yml
|
||||
- log_id.yml
|
||||
- log_verbosity.yml
|
||||
- lookups_updated.yml
|
||||
- miracle_linux_distribution_support.yml
|
||||
- mod_args.yml
|
||||
- module-ignore-unknown-options.yml
|
||||
- module_utils-basic-deprecations.yml
|
||||
- no_log_booly.yml
|
||||
- paramiko_globals.yml
|
||||
- pc_fixes.yml
|
||||
- pkg_mgr_peek.yml
|
||||
- ppa_https.yml
|
||||
- prettydoc.yml
|
||||
- pull_file_secrets.yml
|
||||
- pull_unfrack_dest.yml
|
||||
- py-tmpl-hardening.yml
|
||||
- reboot_timeout_fix.yml
|
||||
- request-open-reduce-complexity.yml
|
||||
- restore_role_param_precedence.yml
|
||||
- rm-compat-environ.yml
|
||||
- rm-obsolete-url-role-template.yml
|
||||
- role_fixes.yml
|
||||
- scp_if_ssh.yml
|
||||
- ssh_connection_test.yml
|
||||
- syslog_exception.yml
|
||||
- systemd_service_note.yml
|
||||
- thread_counts.yml
|
||||
- unarchive.yml
|
||||
- unarchive_fix.yml
|
||||
- unsafe-fixes-2.yml
|
||||
- unsafe-intern.yml
|
||||
- uri_action_cmode.yml
|
||||
- url_credentials_decode.yml
|
||||
- urls-no-py2.yml
|
||||
- urls-tls13-post-handshake-auth.yml
|
||||
- user-accept-yescrypt-hash.yml
|
||||
- v2.17.0-initial-commit.yaml
|
||||
- wait_for_mmap.yml
|
||||
- winrm-send-input.yml
|
||||
- winrm-task-timeout.yml
|
||||
- winrm-timeout.yml
|
||||
- yum-removal.yml
|
||||
release_date: '2024-04-08'
|
||||
2.17.0rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Fix handlers not being executed in lockstep using the linear strategy in some
|
||||
cases (https://github.com/ansible/ansible/issues/82307)
|
||||
- ansible-config will now properly template defaults before dumping them.
|
||||
- ansible_managed restored it's 'templatability' by ensuring the possible injection
|
||||
routes are cut off earlier in the process.
|
||||
- dnf5 - replace removed API calls
|
||||
- facts - add a generic detection for VMware in product name.
|
||||
release_summary: '| Release Date: 2024-04-29
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
removed_features:
|
||||
- Removed Python 2.7 and Python 3.6 as a supported remote version. Python 3.7+
|
||||
is now required for target execution.
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.0rc1_summary.yaml
|
||||
- 82307-handlers-lockstep-linear-fix.yml
|
||||
- ansible_managed_restore.yml
|
||||
- config_init_fix.yml
|
||||
- dnf5-api-breaks.yml
|
||||
- python-support.yml
|
||||
- vmware_facts.yml
|
||||
release_date: '2024-04-29'
|
||||
2.17.0rc2:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Add a version ceiling constraint for pypsrp to avoid potential breaking changes
|
||||
in the 1.0.0 release.
|
||||
- ansible-doc - fixed "inicates" typo in output
|
||||
- ansible-doc - format top-level descriptions with multiple paragraphs as multiple
|
||||
paragraphs, instead of concatenating them (https://github.com/ansible/ansible/pull/83155).
|
||||
- ensure we have logger before we log when we have increased verbosity.
|
||||
- uri - update the documentation for follow_redirects.
|
||||
release_summary: '| Release Date: 2024-05-13
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.0rc2_summary.yaml
|
||||
- 83155-ansible-doc-paragraphs.yml
|
||||
- ansible-doc-inicate.yml
|
||||
- fix_log_verbosity.yml
|
||||
- psrp-version-req.yml
|
||||
- uri_follow_redirect_bool.yml
|
||||
release_date: '2024-05-13'
|
||||
2.17.1:
|
||||
changes:
|
||||
minor_changes:
|
||||
- ansible-test - Update ``pypi-test-container`` to version 3.1.0.
|
||||
release_summary: '| Release Date: 2024-06-17
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.1_summary.yaml
|
||||
- ansible-test-pypi-test-container-update.yml
|
||||
release_date: '2024-06-17'
|
||||
2.17.1rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Fix rapid memory usage growth when notifying handlers using the ``listen``
|
||||
keyword (https://github.com/ansible/ansible/issues/83392)
|
||||
- Fix the task attribute ``resolved_action`` to show the FQCN instead of ``None``
|
||||
when ``action`` or ``local_action`` is used in the playbook.
|
||||
- Fix using ``module_defaults`` with ``local_action``/``action`` (https://github.com/ansible/ansible/issues/81905).
|
||||
- fixed unit test test_borken_cowsay to address mock not been properly applied
|
||||
when existing unix system already have cowsay installed.
|
||||
- powershell - Implement more robust deletion mechanism for C# code compilation
|
||||
temporary files. This should avoid scenarios where the underlying temporary
|
||||
directory may be temporarily locked by antivirus tools or other IO problems.
|
||||
A failure to delete one of these temporary directories will result in a warning
|
||||
rather than an outright failure.
|
||||
- shell plugin - properly quote all needed components of shell commands (https://github.com/ansible/ansible/issues/82535)
|
||||
release_summary: '| Release Date: 2024-06-10
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.1rc1_summary.yaml
|
||||
- 82535-properly-quote-shell.yml
|
||||
- 83327.yml
|
||||
- 83392-fix-memory-issues-handlers.yml
|
||||
- PowerShell-AddType-temp.yml
|
||||
- correct-callback-fqcn-old-style-action-invocation.yml
|
||||
release_date: '2024-06-10'
|
||||
2.17.2:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2024-07-15
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.2_summary.yaml
|
||||
release_date: '2024-07-15'
|
||||
2.17.2rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Fix a traceback when an environment variable contains certain special characters
|
||||
(https://github.com/ansible/ansible/issues/83498)
|
||||
- dnf, dnf5 - fix for installing a set of packages by specifying them using
|
||||
a wildcard character (https://github.com/ansible/ansible/issues/83373)
|
||||
- linear strategy now provides a properly templated task name to the v2_runner_on_started
|
||||
callback event.
|
||||
- replace - Updated before/after example (https://github.com/ansible/ansible/issues/83390).
|
||||
- templating hostvars under native jinja will not cause serialization errors
|
||||
anymore.
|
||||
release_summary: '| Release Date: 2024-07-08
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.2rc1_summary.yaml
|
||||
- 83373-dnf5-wildcard.yml
|
||||
- 83498-command-tb-env.yml
|
||||
- hostvars_fix.yml
|
||||
- linear_started_name.yml
|
||||
- replace_regex.yml
|
||||
release_date: '2024-07-08'
|
||||
2.17.2rc2:
|
||||
changes:
|
||||
bugfixes:
|
||||
- dnf - reverted incomplete fix from 2.17.2rc1 (https://github.com/ansible/ansible/pull/83504)
|
||||
- package_facts - ignore warnings sent by apk on stderr (https://github.com/ansible/ansible/issues/83501).
|
||||
release_summary: '| Release Date: 2024-07-09
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.2rc2_summary.yaml
|
||||
- dnf-revert.yaml
|
||||
- package_facts_apk.yml
|
||||
release_date: '2024-07-09'
|
||||
2.17.3:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2024-08-12
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.3_summary.yaml
|
||||
release_date: '2024-08-12'
|
||||
2.17.3rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Warning now includes filename and line number of variable when specifying
|
||||
a list of dictionaries for vars (https://github.com/ansible/ansible/issues/82528).
|
||||
- config, restored the ability to set module compression via a variable
|
||||
- debconf - fix normalization of value representation for boolean vtypes in
|
||||
new packages (https://github.com/ansible/ansible/issues/83594)
|
||||
- 'linear strategy: fix handlers included via ``include_tasks`` handler to be
|
||||
executed in lockstep (https://github.com/ansible/ansible/issues/83019)'
|
||||
minor_changes:
|
||||
- ansible-test - Improve the error message shown when an unknown ``--remote``
|
||||
or ``--docker`` option is given.
|
||||
- ansible-test - Removed the ``vyos/1.1.8`` network remote as it is no longer
|
||||
functional.
|
||||
release_summary: '| Release Date: 2024-08-05
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.3rc1_summary.yaml
|
||||
- 82528summary.yml
|
||||
- 83019-linear-handlers-lockstep-fix.yml
|
||||
- 83601-debconf-normalize-bools.yml
|
||||
- ansible-test-error-message-improvement.yml
|
||||
- ansible-test-vyos.yml
|
||||
- mc_fix.yml
|
||||
release_date: '2024-08-05'
|
||||
2.17.4:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2024-09-09
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.4_summary.yaml
|
||||
release_date: '2024-09-09'
|
||||
2.17.4rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Fix ``SemanticVersion.parse()`` to store the version string so that ``__repr__``
|
||||
reports it instead of ``None`` (https://github.com/ansible/ansible/pull/83831).
|
||||
- Fix an issue where registered variable was not available for templating in
|
||||
``loop_control.label`` on skipped looped tasks (https://github.com/ansible/ansible/issues/83619)
|
||||
- Fix for ``meta`` tasks breaking host/fork affinity with ``host_pinned`` strategy
|
||||
(https://github.com/ansible/ansible/issues/83294)
|
||||
- Fix using the current task's directory for looking up relative paths within
|
||||
roles (https://github.com/ansible/ansible/issues/82695).
|
||||
- atomic_move - fix using the setgid bit on the parent directory when creating
|
||||
files (https://github.com/ansible/ansible/issues/46742, https://github.com/ansible/ansible/issues/67177).
|
||||
- connection plugins using the 'extras' option feature would need variables
|
||||
to match the plugin's loaded name, sometimes requiring fqcn, which is not
|
||||
the same as the documented/declared/expected variables. Now we fall back to
|
||||
the 'basename' of the fqcn, but plugin authors can still set the expected
|
||||
value directly.
|
||||
- csvfile lookup - give an error when no search term is provided using modern
|
||||
config syntax (https://github.com/ansible/ansible/issues/83689).
|
||||
- include_tasks - Display location when attempting to load a task list where
|
||||
``include_*`` did not specify any value - https://github.com/ansible/ansible/issues/83874
|
||||
- powershell - Improve CLIXML decoding to decode all control characters and
|
||||
unicode characters that are encoded as surrogate pairs.
|
||||
- psrp - Fix bug when attempting to fetch a file path that contains special
|
||||
glob characters like ``[]``
|
||||
- runtime-metadata sanity test - do not crash on deprecations if ``galaxy.yml``
|
||||
contains an empty ``version`` field (https://github.com/ansible/ansible/pull/83831).
|
||||
- ssh - Fix bug when attempting to fetch a file path with characters that should
|
||||
be quoted when using the ``piped`` transfer method
|
||||
release_summary: '| Release Date: 2024-09-03
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.4rc1_summary.yaml
|
||||
- 46742-atomic_move-fix-setgid.yml
|
||||
- 83294-meta-host_pinned-affinity.yml
|
||||
- 83619-loop-label-register.yml
|
||||
- 83831-runtime-metadata-fix.yml
|
||||
- 83874-include-parse-error-location.yml
|
||||
- dwim_is_role_fix_task_relative.yml
|
||||
- extras_fix.yml
|
||||
- fetch-filename.yml
|
||||
- fix-inconsistent-csvfile-missing-search-error.yml
|
||||
- powershell-clixml.yml
|
||||
release_date: '2024-09-03'
|
||||
2.17.5:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2024-10-07
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.5_summary.yaml
|
||||
release_date: '2024-10-07'
|
||||
2.17.5rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Add descriptions for ``ansible-galaxy install --help` and ``ansible-galaxy
|
||||
role|collection install --help``.
|
||||
- Errors now preserve stacked error messages even when YAML is involved.
|
||||
- '``ansible-galaxy install --help`` - Fix the usage text and document that
|
||||
the requirements file passed to ``-r`` can include collections and roles.'
|
||||
- copy - mtime/atime not updated. Fix now update mtime/atime(https://github.com/ansible/ansible/issues/83013)
|
||||
- delay keyword is now a float, matching the underlying 'time' API and user
|
||||
expectations.
|
||||
- 'dnf5 - re-introduce the ``state: installed`` alias to ``state: present``
|
||||
(https://github.com/ansible/ansible/issues/83960)'
|
||||
- module_utils atomic_move (used by most file based modules), now correctly
|
||||
handles permission copy and setting mtime correctly across all paths
|
||||
release_summary: '| Release Date: 2024-09-30
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.5rc1_summary.yaml
|
||||
- 83235-copy-module-update-mtime.yml
|
||||
- 83960-dnf5-state-installed-fix.yml
|
||||
- ansible-galaxy-install-help.yml
|
||||
- atomic_update_perms_time.yml
|
||||
- delay_type.yml
|
||||
- fix_errors.yml
|
||||
release_date: '2024-09-30'
|
||||
2.17.6:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2024-11-04
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.6_summary.yaml
|
||||
release_date: '2024-11-04'
|
||||
2.17.6rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Fix disabling SSL verification when installing collections and roles from
|
||||
git repositories. If ``--ignore-certs`` isn't provided, the value for the
|
||||
``GALAXY_IGNORE_CERTS`` configuration option will be used (https://github.com/ansible/ansible/issues/83326).
|
||||
- Improve performance on large inventories by reducing the number of implicit
|
||||
meta tasks.
|
||||
- Use the requested error message in the ansible.module_utils.facts.timeout
|
||||
timeout function instead of hardcoding one.
|
||||
- ansible-test - Enable the ``sys.unraisablehook`` work-around for the ``pylint``
|
||||
sanity test on Python 3.11. Previously the work-around was only enabled for
|
||||
Python 3.12 and later. However, the same issue has been discovered on Python
|
||||
3.11.
|
||||
- debconf - set empty password values (https://github.com/ansible/ansible/issues/83214).
|
||||
- facts - skip if distribution file path is directory, instead of raising error
|
||||
(https://github.com/ansible/ansible/issues/84006).
|
||||
- user action will now require O(force) to overwrite the public part of an ssh
|
||||
key when generating ssh keys, as was already the case for the private part.
|
||||
- user module now avoids changing ownership of files symlinked in provided home
|
||||
dir skeleton
|
||||
minor_changes:
|
||||
- ansible-test - Improve container runtime probe error handling. When unexpected
|
||||
probe output is encountered, an error with more useful debugging information
|
||||
is provided.
|
||||
release_summary: '| Release Date: 2024-10-29
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
security_fixes:
|
||||
- include_vars action - Ensure that result masking is correctly requested when
|
||||
vault-encrypted files are read. (CVE-2024-8775)
|
||||
- task result processing - Ensure that action-sourced result masking (``_ansible_no_log=True``)
|
||||
is preserved. (CVE-2024-8775)
|
||||
- user action won't allow ssh-keygen, chown and chmod to run on existing ssh
|
||||
public key file, avoiding traversal on existing symlinks (CVE-2024-9902).
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.6rc1_summary.yaml
|
||||
- ansible-test-probe-error-handling.yml
|
||||
- ansible-test-pylint-fix.yml
|
||||
- cve-2024-8775.yml
|
||||
- debconf_empty_password.yml
|
||||
- fix-ansible-galaxy-ignore-certs.yml
|
||||
- fix-module-utils-facts-timeout.yml
|
||||
- os_family.yml
|
||||
- skip-implicit-flush_handlers-no-notify.yml
|
||||
- user_action_fix.yml
|
||||
- user_ssh_fix.yml
|
||||
release_date: '2024-10-29'
|
||||
|
||||
3
changelogs/fragments/2.17.0_summary.yaml
Normal file
3
changelogs/fragments/2.17.0_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-05-20
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.0b1_summary.yaml
Normal file
3
changelogs/fragments/2.17.0b1_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-04-08
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.0rc1_summary.yaml
Normal file
3
changelogs/fragments/2.17.0rc1_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-04-29
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.0rc2_summary.yaml
Normal file
3
changelogs/fragments/2.17.0rc2_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-05-13
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.1_summary.yaml
Normal file
3
changelogs/fragments/2.17.1_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-06-17
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.1rc1_summary.yaml
Normal file
3
changelogs/fragments/2.17.1rc1_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-06-10
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.2_summary.yaml
Normal file
3
changelogs/fragments/2.17.2_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-07-15
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.2rc1_summary.yaml
Normal file
3
changelogs/fragments/2.17.2rc1_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-07-08
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.2rc2_summary.yaml
Normal file
3
changelogs/fragments/2.17.2rc2_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-07-09
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.3_summary.yaml
Normal file
3
changelogs/fragments/2.17.3_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-08-12
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.3rc1_summary.yaml
Normal file
3
changelogs/fragments/2.17.3rc1_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-08-05
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.4_summary.yaml
Normal file
3
changelogs/fragments/2.17.4_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-09-09
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.4rc1_summary.yaml
Normal file
3
changelogs/fragments/2.17.4rc1_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-09-03
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.5_summary.yaml
Normal file
3
changelogs/fragments/2.17.5_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-10-07
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.5rc1_summary.yaml
Normal file
3
changelogs/fragments/2.17.5rc1_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-09-30
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.6_summary.yaml
Normal file
3
changelogs/fragments/2.17.6_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-11-04
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
3
changelogs/fragments/2.17.6rc1_summary.yaml
Normal file
3
changelogs/fragments/2.17.6rc1_summary.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-10-29
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
2
changelogs/fragments/46742-atomic_move-fix-setgid.yml
Normal file
2
changelogs/fragments/46742-atomic_move-fix-setgid.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- atomic_move - fix using the setgid bit on the parent directory when creating files (https://github.com/ansible/ansible/issues/46742, https://github.com/ansible/ansible/issues/67177).
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Fix handlers not being executed in lockstep using the linear strategy in some cases (https://github.com/ansible/ansible/issues/82307)
|
||||
3
changelogs/fragments/82528summary.yml
Normal file
3
changelogs/fragments/82528summary.yml
Normal file
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- Warning now includes filename and line number of variable
|
||||
when specifying a list of dictionaries for vars (https://github.com/ansible/ansible/issues/82528).
|
||||
2
changelogs/fragments/82535-properly-quote-shell.yml
Normal file
2
changelogs/fragments/82535-properly-quote-shell.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- shell plugin - properly quote all needed components of shell commands (https://github.com/ansible/ansible/issues/82535)
|
||||
2
changelogs/fragments/82708-unsafe-plugin-name-error.yml
Normal file
2
changelogs/fragments/82708-unsafe-plugin-name-error.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- "Fix an issue when setting a plugin name from an unsafe source resulted in ``ValueError: unmarshallable object`` (https://github.com/ansible/ansible/issues/82708)"
|
||||
4
changelogs/fragments/82878-fetch-dest-is-dir.yml
Normal file
4
changelogs/fragments/82878-fetch-dest-is-dir.yml
Normal file
@ -0,0 +1,4 @@
|
||||
bugfixes:
|
||||
- >-
|
||||
fetch - add error message when using ``dest`` with a trailing slash that becomes a local directory -
|
||||
https://github.com/ansible/ansible/issues/82878
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- "linear strategy: fix handlers included via ``include_tasks`` handler to be executed in lockstep (https://github.com/ansible/ansible/issues/83019)"
|
||||
2
changelogs/fragments/83155-ansible-doc-paragraphs.yml
Normal file
2
changelogs/fragments/83155-ansible-doc-paragraphs.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- "ansible-doc - format top-level descriptions with multiple paragraphs as multiple paragraphs, instead of concatenating them (https://github.com/ansible/ansible/pull/83155)."
|
||||
2
changelogs/fragments/83235-copy-module-update-mtime.yml
Normal file
2
changelogs/fragments/83235-copy-module-update-mtime.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- copy - mtime/atime not updated. Fix now update mtime/atime(https://github.com/ansible/ansible/issues/83013)
|
||||
2
changelogs/fragments/83294-meta-host_pinned-affinity.yml
Normal file
2
changelogs/fragments/83294-meta-host_pinned-affinity.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Fix for ``meta`` tasks breaking host/fork affinity with ``host_pinned`` strategy (https://github.com/ansible/ansible/issues/83294)
|
||||
3
changelogs/fragments/83327.yml
Normal file
3
changelogs/fragments/83327.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- fixed unit test test_borken_cowsay to address mock not been properly applied when existing unix system already have cowsay installed.
|
||||
2
changelogs/fragments/83373-dnf5-wildcard.yml
Normal file
2
changelogs/fragments/83373-dnf5-wildcard.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- dnf, dnf5 - fix for installing a set of packages by specifying them using a wildcard character (https://github.com/ansible/ansible/issues/83373)
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Fix rapid memory usage growth when notifying handlers using the ``listen`` keyword (https://github.com/ansible/ansible/issues/83392)
|
||||
2
changelogs/fragments/83498-command-tb-env.yml
Normal file
2
changelogs/fragments/83498-command-tb-env.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Fix a traceback when an environment variable contains certain special characters (https://github.com/ansible/ansible/issues/83498)
|
||||
3
changelogs/fragments/83601-debconf-normalize-bools.yml
Normal file
3
changelogs/fragments/83601-debconf-normalize-bools.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- debconf - fix normalization of value representation for boolean vtypes in new packages (https://github.com/ansible/ansible/issues/83594)
|
||||
2
changelogs/fragments/83619-loop-label-register.yml
Normal file
2
changelogs/fragments/83619-loop-label-register.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Fix an issue where registered variable was not available for templating in ``loop_control.label`` on skipped looped tasks (https://github.com/ansible/ansible/issues/83619)
|
||||
3
changelogs/fragments/83831-runtime-metadata-fix.yml
Normal file
3
changelogs/fragments/83831-runtime-metadata-fix.yml
Normal file
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- "runtime-metadata sanity test - do not crash on deprecations if ``galaxy.yml`` contains an empty ``version`` field (https://github.com/ansible/ansible/pull/83831)."
|
||||
- "Fix ``SemanticVersion.parse()`` to store the version string so that ``__repr__`` reports it instead of ``None`` (https://github.com/ansible/ansible/pull/83831)."
|
||||
@ -0,0 +1,4 @@
|
||||
bugfixes:
|
||||
- >-
|
||||
include_tasks - Display location when attempting to load a task list where ``include_*`` did not specify any value -
|
||||
https://github.com/ansible/ansible/issues/83874
|
||||
2
changelogs/fragments/83960-dnf5-state-installed-fix.yml
Normal file
2
changelogs/fragments/83960-dnf5-state-installed-fix.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- "dnf5 - re-introduce the ``state: installed`` alias to ``state: present`` (https://github.com/ansible/ansible/issues/83960)"
|
||||
7
changelogs/fragments/PowerShell-AddType-temp.yml
Normal file
7
changelogs/fragments/PowerShell-AddType-temp.yml
Normal file
@ -0,0 +1,7 @@
|
||||
bugfixes:
|
||||
- >-
|
||||
powershell - Implement more robust deletion mechanism for C# code compilation
|
||||
temporary files. This should avoid scenarios where the underlying temporary
|
||||
directory may be temporarily locked by antivirus tools or other IO problems.
|
||||
A failure to delete one of these temporary directories will result in a
|
||||
warning rather than an outright failure.
|
||||
2
changelogs/fragments/ansible-doc-inicate.yml
Normal file
2
changelogs/fragments/ansible-doc-inicate.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- ansible-doc - fixed "inicates" typo in output
|
||||
5
changelogs/fragments/ansible-galaxy-install-help.yml
Normal file
5
changelogs/fragments/ansible-galaxy-install-help.yml
Normal file
@ -0,0 +1,5 @@
|
||||
bugfixes:
|
||||
- >-
|
||||
Add descriptions for ``ansible-galaxy install --help` and ``ansible-galaxy role|collection install --help``.
|
||||
- >-
|
||||
``ansible-galaxy install --help`` - Fix the usage text and document that the requirements file passed to ``-r`` can include collections and roles.
|
||||
@ -1,2 +1,3 @@
|
||||
bugfixes:
|
||||
- ansible-galaxy role install - normalize tarfile paths and symlinks using ``ansible.utils.path.unfrackpath`` and consider them valid as long as the realpath is in the tarfile's role directory (https://github.com/ansible/ansible/issues/81965).
|
||||
- ansible-galaxy role install - fix symlinks (https://github.com/ansible/ansible/issues/82702, https://github.com/ansible/ansible/issues/81965).
|
||||
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- ansible-test - Improve the error message shown when an unknown ``--remote`` or ``--docker`` option is given.
|
||||
@ -0,0 +1,3 @@
|
||||
minor_changes:
|
||||
- ansible-test - Improve container runtime probe error handling.
|
||||
When unexpected probe output is encountered, an error with more useful debugging information is provided.
|
||||
4
changelogs/fragments/ansible-test-pylint-fix.yml
Normal file
4
changelogs/fragments/ansible-test-pylint-fix.yml
Normal file
@ -0,0 +1,4 @@
|
||||
bugfixes:
|
||||
- ansible-test - Enable the ``sys.unraisablehook`` work-around for the ``pylint`` sanity test on Python 3.11.
|
||||
Previously the work-around was only enabled for Python 3.12 and later.
|
||||
However, the same issue has been discovered on Python 3.11.
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- ansible-test - Update ``pypi-test-container`` to version 3.1.0.
|
||||
2
changelogs/fragments/ansible-test-vyos.yml
Normal file
2
changelogs/fragments/ansible-test-vyos.yml
Normal file
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- ansible-test - Removed the ``vyos/1.1.8`` network remote as it is no longer functional.
|
||||
2
changelogs/fragments/ansible_managed_restore.yml
Normal file
2
changelogs/fragments/ansible_managed_restore.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- ansible_managed restored it's 'templatability' by ensuring the possible injection routes are cut off earlier in the process.
|
||||
2
changelogs/fragments/atomic_update_perms_time.yml
Normal file
2
changelogs/fragments/atomic_update_perms_time.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- module_utils atomic_move (used by most file based modules), now correctly handles permission copy and setting mtime correctly across all paths
|
||||
2
changelogs/fragments/config_init_fix.yml
Normal file
2
changelogs/fragments/config_init_fix.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- ansible-config will now properly template defaults before dumping them.
|
||||
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- Fix the task attribute ``resolved_action`` to show the FQCN instead of ``None`` when ``action`` or ``local_action`` is used in the playbook.
|
||||
- Fix using ``module_defaults`` with ``local_action``/``action`` (https://github.com/ansible/ansible/issues/81905).
|
||||
6
changelogs/fragments/cve-2023-5764.yml
Normal file
6
changelogs/fragments/cve-2023-5764.yml
Normal file
@ -0,0 +1,6 @@
|
||||
security_fixes:
|
||||
- templating - Address issues where internal templating can cause unsafe
|
||||
variables to lose their unsafe designation (CVE-2023-5764)
|
||||
breaking_changes:
|
||||
- assert - Nested templating may result in an inability for the conditional
|
||||
to be evaluated. See the porting guide for more information.
|
||||
5
changelogs/fragments/cve-2024-8775.yml
Normal file
5
changelogs/fragments/cve-2024-8775.yml
Normal file
@ -0,0 +1,5 @@
|
||||
security_fixes:
|
||||
- task result processing - Ensure that action-sourced result masking (``_ansible_no_log=True``)
|
||||
is preserved. (CVE-2024-8775)
|
||||
- include_vars action - Ensure that result masking is correctly requested when vault-encrypted
|
||||
files are read. (CVE-2024-8775)
|
||||
3
changelogs/fragments/debconf_empty_password.yml
Normal file
3
changelogs/fragments/debconf_empty_password.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- debconf - set empty password values (https://github.com/ansible/ansible/issues/83214).
|
||||
2
changelogs/fragments/delay_type.yml
Normal file
2
changelogs/fragments/delay_type.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- delay keyword is now a float, matching the underlying 'time' API and user expectations.
|
||||
2
changelogs/fragments/dnf-revert.yaml
Normal file
2
changelogs/fragments/dnf-revert.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- dnf - reverted incomplete fix from 2.17.2rc1 (https://github.com/ansible/ansible/pull/83504)
|
||||
2
changelogs/fragments/dnf5-api-breaks.yml
Normal file
2
changelogs/fragments/dnf5-api-breaks.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- dnf5 - replace removed API calls
|
||||
2
changelogs/fragments/dwim_is_role_fix_task_relative.yml
Normal file
2
changelogs/fragments/dwim_is_role_fix_task_relative.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Fix using the current task's directory for looking up relative paths within roles (https://github.com/ansible/ansible/issues/82695).
|
||||
4
changelogs/fragments/extras_fix.yml
Normal file
4
changelogs/fragments/extras_fix.yml
Normal file
@ -0,0 +1,4 @@
|
||||
bugfixes:
|
||||
- connection plugins using the 'extras' option feature would need variables to match the plugin's loaded name,
|
||||
sometimes requiring fqcn, which is not the same as the documented/declared/expected variables.
|
||||
Now we fall back to the 'basename' of the fqcn, but plugin authors can still set the expected value directly.
|
||||
3
changelogs/fragments/fetch-filename.yml
Normal file
3
changelogs/fragments/fetch-filename.yml
Normal file
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- psrp - Fix bug when attempting to fetch a file path that contains special glob characters like ``[]``
|
||||
- ssh - Fix bug when attempting to fetch a file path with characters that should be quoted when using the ``piped`` transfer method
|
||||
2
changelogs/fragments/fix-ansible-galaxy-ignore-certs.yml
Normal file
2
changelogs/fragments/fix-ansible-galaxy-ignore-certs.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Fix disabling SSL verification when installing collections and roles from git repositories. If ``--ignore-certs`` isn't provided, the value for the ``GALAXY_IGNORE_CERTS`` configuration option will be used (https://github.com/ansible/ansible/issues/83326).
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- csvfile lookup - give an error when no search term is provided using modern config syntax (https://github.com/ansible/ansible/issues/83689).
|
||||
2
changelogs/fragments/fix-module-utils-facts-timeout.yml
Normal file
2
changelogs/fragments/fix-module-utils-facts-timeout.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Use the requested error message in the ansible.module_utils.facts.timeout timeout function instead of hardcoding one.
|
||||
2
changelogs/fragments/fix_errors.yml
Normal file
2
changelogs/fragments/fix_errors.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Errors now preserve stacked error messages even when YAML is involved.
|
||||
2
changelogs/fragments/fix_log_verbosity.yml
Normal file
2
changelogs/fragments/fix_log_verbosity.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- ensure we have logger before we log when we have increased verbosity.
|
||||
2
changelogs/fragments/hostvars_fix.yml
Normal file
2
changelogs/fragments/hostvars_fix.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- templating hostvars under native jinja will not cause serialization errors anymore.
|
||||
2
changelogs/fragments/linear_started_name.yml
Normal file
2
changelogs/fragments/linear_started_name.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- linear strategy now provides a properly templated task name to the v2_runner_on_started callback event.
|
||||
2
changelogs/fragments/mc_fix.yml
Normal file
2
changelogs/fragments/mc_fix.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- config, restored the ability to set module compression via a variable
|
||||
3
changelogs/fragments/os_family.yml
Normal file
3
changelogs/fragments/os_family.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- facts - skip if distribution file path is directory, instead of raising error (https://github.com/ansible/ansible/issues/84006).
|
||||
3
changelogs/fragments/package_facts_apk.yml
Normal file
3
changelogs/fragments/package_facts_apk.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- package_facts - ignore warnings sent by apk on stderr (https://github.com/ansible/ansible/issues/83501).
|
||||
3
changelogs/fragments/powershell-clixml.yml
Normal file
3
changelogs/fragments/powershell-clixml.yml
Normal file
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- powershell - Improve CLIXML decoding to decode all control characters and
|
||||
unicode characters that are encoded as surrogate pairs.
|
||||
2
changelogs/fragments/psrp-version-req.yml
Normal file
2
changelogs/fragments/psrp-version-req.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Add a version ceiling constraint for pypsrp to avoid potential breaking changes in the 1.0.0 release.
|
||||
2
changelogs/fragments/python-support.yml
Normal file
2
changelogs/fragments/python-support.yml
Normal file
@ -0,0 +1,2 @@
|
||||
removed_features:
|
||||
- Removed Python 2.7 and Python 3.6 as a supported remote version. Python 3.7+ is now required for target execution.
|
||||
3
changelogs/fragments/replace_regex.yml
Normal file
3
changelogs/fragments/replace_regex.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- replace - Updated before/after example (https://github.com/ansible/ansible/issues/83390).
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- "Improve performance on large inventories by reducing the number of implicit meta tasks."
|
||||
3
changelogs/fragments/unsafe-fixes-2.yml
Normal file
3
changelogs/fragments/unsafe-fixes-2.yml
Normal file
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- unsafe data - Address an incompatibility with ``AnsibleUnsafeText`` and ``AnsibleUnsafeBytes`` when pickling with ``protocol=0``
|
||||
- unsafe data - Address an incompatibility when iterating or getting a single index from ``AnsibleUnsafeBytes``
|
||||
3
changelogs/fragments/unsafe-intern.yml
Normal file
3
changelogs/fragments/unsafe-intern.yml
Normal file
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- unsafe data - Enable directly using ``AnsibleUnsafeText`` with Python ``pathlib``
|
||||
(https://github.com/ansible/ansible/issues/82414)
|
||||
3
changelogs/fragments/uri_follow_redirect_bool.yml
Normal file
3
changelogs/fragments/uri_follow_redirect_bool.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- uri - update the documentation for follow_redirects.
|
||||
2
changelogs/fragments/user_action_fix.yml
Normal file
2
changelogs/fragments/user_action_fix.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- user module now avoids changing ownership of files symlinked in provided home dir skeleton
|
||||
4
changelogs/fragments/user_ssh_fix.yml
Normal file
4
changelogs/fragments/user_ssh_fix.yml
Normal file
@ -0,0 +1,4 @@
|
||||
bugfixes:
|
||||
- user action will now require O(force) to overwrite the public part of an ssh key when generating ssh keys, as was already the case for the private part.
|
||||
security_fixes:
|
||||
- user action won't allow ssh-keygen, chown and chmod to run on existing ssh public key file, avoiding traversal on existing symlinks (CVE-2024-9902).
|
||||
3
changelogs/fragments/vmware_facts.yml
Normal file
3
changelogs/fragments/vmware_facts.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- facts - add a generic detection for VMware in product name.
|
||||
@ -269,7 +269,7 @@ class ConfigCLI(CLI):
|
||||
if not settings[setting].get('description'):
|
||||
continue
|
||||
|
||||
default = settings[setting].get('default', '')
|
||||
default = self.config.template_default(settings[setting].get('default', ''), get_constants())
|
||||
if subkey == 'env':
|
||||
stype = settings[setting].get('type', '')
|
||||
if stype == 'boolean':
|
||||
@ -351,7 +351,7 @@ class ConfigCLI(CLI):
|
||||
if entry['key'] not in seen[entry['section']]:
|
||||
seen[entry['section']].append(entry['key'])
|
||||
|
||||
default = opt.get('default', '')
|
||||
default = self.config.template_default(opt.get('default', ''), get_constants())
|
||||
if opt.get('type', '') == 'list' and not isinstance(default, string_types):
|
||||
# python lists are not valid ini ones
|
||||
default = ', '.join(default)
|
||||
@ -413,14 +413,16 @@ class ConfigCLI(CLI):
|
||||
if context.CLIARGS['format'] == 'display':
|
||||
if isinstance(config[setting], Setting):
|
||||
# proceed normally
|
||||
value = config[setting].value
|
||||
if config[setting].origin == 'default':
|
||||
color = 'green'
|
||||
value = self.config.template_default(value, get_constants())
|
||||
elif config[setting].origin == 'REQUIRED':
|
||||
# should include '_terms', '_input', etc
|
||||
color = 'red'
|
||||
else:
|
||||
color = 'yellow'
|
||||
msg = "%s(%s) = %s" % (setting, config[setting].origin, config[setting].value)
|
||||
msg = "%s(%s) = %s" % (setting, config[setting].origin, value)
|
||||
else:
|
||||
color = 'green'
|
||||
msg = "%s(%s) = %s" % (setting, 'default', config[setting].get('default'))
|
||||
|
||||
@ -1296,14 +1296,15 @@ class DocCLI(CLI, RoleMixin):
|
||||
|
||||
if doc.get('description'):
|
||||
if isinstance(doc['description'], list):
|
||||
desc = " ".join(doc['description'])
|
||||
descs = doc['description']
|
||||
else:
|
||||
desc = doc['description']
|
||||
text.append("%s" % DocCLI.warp_fill(DocCLI.tty_ify(desc), limit, initial_indent=opt_indent, subsequent_indent=opt_indent))
|
||||
descs = [doc['description']]
|
||||
for desc in descs:
|
||||
text.append("%s" % DocCLI.warp_fill(DocCLI.tty_ify(desc), limit, initial_indent=opt_indent, subsequent_indent=opt_indent))
|
||||
text.append('')
|
||||
|
||||
if doc.get('options'):
|
||||
text.append(_format("Options", 'bold') + " (%s inicates it is required):" % ("=" if C.ANSIBLE_NOCOLOR else 'red'))
|
||||
text.append(_format("Options", 'bold') + " (%s indicates it is required):" % ("=" if C.ANSIBLE_NOCOLOR else 'red'))
|
||||
DocCLI.add_fields(text, doc.pop('options'), limit, opt_indent)
|
||||
|
||||
if doc.get('attributes', False):
|
||||
@ -1355,12 +1356,13 @@ class DocCLI(CLI, RoleMixin):
|
||||
text.append("> %s %s (%s)" % (plugin_type.upper(), _format(doc.pop('plugin_name'), 'bold'), doc.pop('filename')))
|
||||
|
||||
if isinstance(doc['description'], list):
|
||||
desc = " ".join(doc.pop('description'))
|
||||
descs = doc.pop('description')
|
||||
else:
|
||||
desc = doc.pop('description')
|
||||
descs = [doc.pop('description')]
|
||||
|
||||
text.append('')
|
||||
text.append(DocCLI.warp_fill(DocCLI.tty_ify(desc), limit, initial_indent=base_indent, subsequent_indent=base_indent))
|
||||
for desc in descs:
|
||||
text.append(DocCLI.warp_fill(DocCLI.tty_ify(desc), limit, initial_indent=base_indent, subsequent_indent=base_indent))
|
||||
|
||||
if display.verbosity > 0:
|
||||
doc['added_in'] = DocCLI._format_version_added(doc.pop('version_added', 'historical'), doc.pop('version_added_collection', 'ansible-core'))
|
||||
@ -1385,7 +1387,7 @@ class DocCLI(CLI, RoleMixin):
|
||||
|
||||
if doc.get('options', False):
|
||||
text.append("")
|
||||
text.append(_format("OPTIONS", 'bold') + " (%s inicates it is required):" % ("=" if C.ANSIBLE_NOCOLOR else 'red'))
|
||||
text.append(_format("OPTIONS", 'bold') + " (%s indicates it is required):" % ("=" if C.ANSIBLE_NOCOLOR else 'red'))
|
||||
DocCLI.add_fields(text, doc.pop('options'), limit, opt_indent, man=(display.verbosity == 0))
|
||||
|
||||
if doc.get('attributes', False):
|
||||
|
||||
@ -490,12 +490,31 @@ class GalaxyCLI(CLI):
|
||||
ignore_errors_help = 'Ignore errors during installation and continue with the next specified ' \
|
||||
'collection. This will not ignore dependency conflict errors.'
|
||||
else:
|
||||
args_kwargs['help'] = 'Role name, URL or tar file'
|
||||
args_kwargs['help'] = 'Role name, URL or tar file. This is mutually exclusive with -r.'
|
||||
ignore_errors_help = 'Ignore errors and continue with the next specified role.'
|
||||
|
||||
if self._implicit_role:
|
||||
# might install both roles and collections
|
||||
description_text = (
|
||||
'Install roles and collections from file(s), URL(s) or Ansible '
|
||||
'Galaxy to the first entry in the config COLLECTIONS_PATH for collections '
|
||||
'and first entry in the config ROLES_PATH for roles. '
|
||||
'The first entry in the config ROLES_PATH can be overridden by --roles-path '
|
||||
'or -p, but this will result in only roles being installed.'
|
||||
)
|
||||
prog = 'ansible-galaxy install'
|
||||
else:
|
||||
prog = f"ansible-galaxy {galaxy_type} install"
|
||||
description_text = (
|
||||
'Install {0}(s) from file(s), URL(s) or Ansible '
|
||||
'Galaxy to the first entry in the config {1}S_PATH '
|
||||
'unless overridden by --{0}s-path.'.format(galaxy_type, galaxy_type.upper())
|
||||
)
|
||||
install_parser = parser.add_parser('install', parents=parents,
|
||||
help='Install {0}(s) from file(s), URL(s) or Ansible '
|
||||
'Galaxy'.format(galaxy_type))
|
||||
'Galaxy'.format(galaxy_type),
|
||||
description=description_text,
|
||||
prog=prog,)
|
||||
install_parser.set_defaults(func=self.execute_install)
|
||||
|
||||
install_parser.add_argument('args', metavar='{0}_name'.format(galaxy_type), nargs='*', **args_kwargs)
|
||||
@ -548,8 +567,12 @@ class GalaxyCLI(CLI):
|
||||
'This does not apply to collections in remote Git repositories or URLs to remote tarballs.'
|
||||
)
|
||||
else:
|
||||
install_parser.add_argument('-r', '--role-file', dest='requirements',
|
||||
help='A file containing a list of roles to be installed.')
|
||||
if self._implicit_role:
|
||||
install_parser.add_argument('-r', '--role-file', dest='requirements',
|
||||
help='A file containing a list of collections and roles to be installed.')
|
||||
else:
|
||||
install_parser.add_argument('-r', '--role-file', dest='requirements',
|
||||
help='A file containing a list of roles to be installed.')
|
||||
|
||||
r_re = re.compile(r'^(?<!-)-[a-zA-Z]*r[a-zA-Z]*') # -r, -fr
|
||||
contains_r = bool([a for a in self._raw_args if r_re.match(a)])
|
||||
|
||||
@ -855,8 +855,8 @@ DEFAULT_MODULE_COMPRESSION:
|
||||
env: []
|
||||
ini:
|
||||
- {key: module_compression, section: defaults}
|
||||
# vars:
|
||||
# - name: ansible_module_compression
|
||||
vars:
|
||||
- name: ansible_module_compression
|
||||
DEFAULT_MODULE_NAME:
|
||||
name: Default adhoc module
|
||||
default: command
|
||||
@ -948,7 +948,7 @@ DEFAULT_PRIVATE_ROLE_VARS:
|
||||
- This was introduced as a way to reset role variables to default values if a role is used more than once
|
||||
in a playbook.
|
||||
- Starting in version '2.17' M(ansible.builtin.include_roles) and M(ansible.builtin.import_roles) can
|
||||
indivudually override this via the C(public) parameter.
|
||||
individually override this via the C(public) parameter.
|
||||
- Included roles only make their variables public at execution, unlike imported roles which happen at playbook compile time.
|
||||
env: [{name: ANSIBLE_PRIVATE_ROLE_VARS}]
|
||||
ini:
|
||||
@ -1733,7 +1733,7 @@ INJECT_FACTS_AS_VARS:
|
||||
default: True
|
||||
description:
|
||||
- Facts are available inside the `ansible_facts` variable, this setting also pushes them as their own vars in the main namespace.
|
||||
- Unlike inside the `ansible_facts` dictionary, these will have an `ansible_` prefix.
|
||||
- Unlike inside the `ansible_facts` dictionary where the prefix `ansible_` is removed from fact names, these will have the exact names that are returned by the module.
|
||||
env: [{name: ANSIBLE_INJECT_FACT_VARS}]
|
||||
ini:
|
||||
- {key: inject_facts_as_vars, section: defaults}
|
||||
|
||||
@ -302,6 +302,17 @@ class ConfigManager(object):
|
||||
# ensure we always have config def entry
|
||||
self._base_defs['CONFIG_FILE'] = {'default': None, 'type': 'path'}
|
||||
|
||||
def template_default(self, value, variables):
|
||||
if isinstance(value, string_types) and (value.startswith('{{') and value.endswith('}}')) and variables is not None:
|
||||
# template default values if possible
|
||||
# NOTE: cannot use is_template due to circular dep
|
||||
try:
|
||||
t = NativeEnvironment().from_string(value)
|
||||
value = t.render(variables)
|
||||
except Exception:
|
||||
pass # not templatable
|
||||
return value
|
||||
|
||||
def _read_config_yaml_file(self, yml_file):
|
||||
# TODO: handle relative paths as relative to the directory containing the current playbook instead of CWD
|
||||
# Currently this is only used with absolute paths to the `ansible/config` directory
|
||||
@ -555,18 +566,9 @@ class ConfigManager(object):
|
||||
to_native(_get_entry(plugin_type, plugin_name, config)))
|
||||
else:
|
||||
origin = 'default'
|
||||
value = defs[config].get('default')
|
||||
if isinstance(value, string_types) and (value.startswith('{{') and value.endswith('}}')) and variables is not None:
|
||||
# template default values if possible
|
||||
# NOTE: cannot use is_template due to circular dep
|
||||
try:
|
||||
t = NativeEnvironment().from_string(value)
|
||||
value = t.render(variables)
|
||||
except Exception:
|
||||
pass # not templatable
|
||||
|
||||
# ensure correct type, can raise exceptions on mismatched types
|
||||
value = self.template_default(defs[config].get('default'), variables)
|
||||
try:
|
||||
# ensure correct type, can raise exceptions on mismatched types
|
||||
value = ensure_type(value, defs[config].get('type'), origin=origin, origin_ftype=origin_ftype)
|
||||
except ValueError as e:
|
||||
if origin.startswith('env:') and value == '':
|
||||
|
||||
@ -66,14 +66,18 @@ class AnsibleError(Exception):
|
||||
from ansible.parsing.yaml.objects import AnsibleBaseYAMLObject
|
||||
|
||||
message = [self._message]
|
||||
|
||||
# Add from previous exceptions
|
||||
if self.orig_exc:
|
||||
message.append('. %s' % to_native(self.orig_exc))
|
||||
|
||||
# Add from yaml to give specific file/line no
|
||||
if isinstance(self.obj, AnsibleBaseYAMLObject):
|
||||
extended_error = self._get_extended_error()
|
||||
if extended_error and not self._suppress_extended_error:
|
||||
message.append(
|
||||
'\n\n%s' % to_native(extended_error)
|
||||
)
|
||||
elif self.orig_exc:
|
||||
message.append('. %s' % to_native(self.orig_exc))
|
||||
|
||||
return ''.join(message)
|
||||
|
||||
|
||||
@ -427,13 +427,13 @@ class PlayIterator:
|
||||
# might be there from previous flush
|
||||
state.handlers = self.handlers[:]
|
||||
state.update_handlers = False
|
||||
state.cur_handlers_task = 0
|
||||
|
||||
while True:
|
||||
try:
|
||||
task = state.handlers[state.cur_handlers_task]
|
||||
except IndexError:
|
||||
task = None
|
||||
state.cur_handlers_task = 0
|
||||
state.run_state = state.pre_flushing_run_state
|
||||
state.update_handlers = True
|
||||
break
|
||||
@ -447,6 +447,24 @@ class PlayIterator:
|
||||
|
||||
# if something above set the task, break out of the loop now
|
||||
if task:
|
||||
# skip implicit flush_handlers if there are no handlers notified
|
||||
if (
|
||||
task.implicit
|
||||
and task.action in C._ACTION_META
|
||||
and task.args.get('_raw_params', None) == 'flush_handlers'
|
||||
and (
|
||||
# the state store in the `state` variable could be a nested state,
|
||||
# notifications are always stored in the top level state, get it here
|
||||
not self.get_state_for_host(host.name).handler_notifications
|
||||
# in case handlers notifying other handlers, the notifications are not
|
||||
# saved in `handler_notifications` and handlers are notified directly
|
||||
# to prevent duplicate handler runs, so check whether any handler
|
||||
# is notified
|
||||
and all(not h.notified_hosts for h in self.handlers)
|
||||
)
|
||||
):
|
||||
continue
|
||||
|
||||
break
|
||||
|
||||
return (state, task)
|
||||
|
||||
@ -178,6 +178,7 @@ $($ErrorRecord.InvocationInfo.PositionMessage)
|
||||
|
||||
Write-AnsibleLog "INFO - converting json raw to a payload" "exec_wrapper"
|
||||
$payload = ConvertFrom-AnsibleJson -InputObject $json_raw
|
||||
$payload.module_args._ansible_exec_wrapper_warnings = [System.Collections.Generic.List[string]]@()
|
||||
|
||||
# TODO: handle binary modules
|
||||
# TODO: handle persistence
|
||||
|
||||
@ -29,7 +29,18 @@ if ($csharp_utils.Count -gt 0) {
|
||||
|
||||
# add any C# references so the module does not have to do so
|
||||
$new_tmp = [System.Environment]::ExpandEnvironmentVariables($Payload.module_args["_ansible_remote_tmp"])
|
||||
Add-CSharpType -References $csharp_utils -TempPath $new_tmp -IncludeDebugInfo
|
||||
|
||||
# We use a fake module object to capture warnings
|
||||
$fake_module = [PSCustomObject]@{
|
||||
Tmpdir = $new_tmp
|
||||
Verbosity = 3
|
||||
}
|
||||
$warning_func = New-Object -TypeName System.Management.Automation.PSScriptMethod -ArgumentList Warn, {
|
||||
param($message)
|
||||
$Payload.module_args._ansible_exec_wrapper_warnings.Add($message)
|
||||
}
|
||||
$fake_module.PSObject.Members.Add($warning_func)
|
||||
Add-CSharpType -References $csharp_utils -AnsibleModule $fake_module
|
||||
}
|
||||
|
||||
if ($Payload.ContainsKey("coverage") -and $null -ne $host.Runspace -and $null -ne $host.Runspace.Debugger) {
|
||||
|
||||
@ -31,7 +31,7 @@ from ansible.utils.listify import listify_lookup_plugin_terms
|
||||
from ansible.utils.unsafe_proxy import to_unsafe_text, wrap_var
|
||||
from ansible.vars.clean import namespace_facts, clean_facts
|
||||
from ansible.utils.display import Display
|
||||
from ansible.utils.vars import combine_vars, isidentifier
|
||||
from ansible.utils.vars import combine_vars
|
||||
|
||||
display = Display()
|
||||
|
||||
@ -332,6 +332,13 @@ class TaskExecutor:
|
||||
(self._task, tmp_task) = (tmp_task, self._task)
|
||||
(self._play_context, tmp_play_context) = (tmp_play_context, self._play_context)
|
||||
res = self._execute(variables=task_vars)
|
||||
|
||||
if self._task.register:
|
||||
# Ensure per loop iteration results are registered in case `_execute()`
|
||||
# returns early (when conditional, failure, ...).
|
||||
# This is needed in case the registered variable is used in the loop label template.
|
||||
task_vars[self._task.register] = res
|
||||
|
||||
task_fields = self._task.dump_attrs()
|
||||
(self._task, tmp_task) = (tmp_task, self._task)
|
||||
(self._play_context, tmp_play_context) = (tmp_play_context, self._play_context)
|
||||
@ -648,8 +655,8 @@ class TaskExecutor:
|
||||
self._handler.cleanup()
|
||||
display.debug("handler run complete")
|
||||
|
||||
# preserve no log
|
||||
result["_ansible_no_log"] = no_log
|
||||
# propagate no log to result- the action can set this, so only overwrite it with the task's value if missing or falsey
|
||||
result["_ansible_no_log"] = bool(no_log or result.get('_ansible_no_log', False))
|
||||
|
||||
if self._task.action not in C._ACTION_WITH_CLEAN_FACTS:
|
||||
result = wrap_var(result)
|
||||
@ -657,9 +664,6 @@ class TaskExecutor:
|
||||
# update the local copy of vars with the registered value, if specified,
|
||||
# or any facts which may have been generated by the module execution
|
||||
if self._task.register:
|
||||
if not isidentifier(self._task.register):
|
||||
raise AnsibleError("Invalid variable name in 'register' specified: '%s'" % self._task.register)
|
||||
|
||||
vars_copy[self._task.register] = result
|
||||
|
||||
if self._task.async_val > 0:
|
||||
@ -1048,7 +1052,7 @@ class TaskExecutor:
|
||||
# add extras if plugin supports them
|
||||
if getattr(self._connection, 'allow_extras', False):
|
||||
for k in variables:
|
||||
if k.startswith('ansible_%s_' % self._connection._load_name) and k not in options:
|
||||
if k.startswith('ansible_%s_' % self._connection.extras_prefix) and k not in options:
|
||||
options['_extras'][k] = templar.template(variables[k])
|
||||
|
||||
task_keys = self._task.dump_attrs()
|
||||
|
||||
@ -10,6 +10,7 @@ import os
|
||||
import tarfile
|
||||
import subprocess
|
||||
import typing as t
|
||||
import yaml
|
||||
|
||||
from contextlib import contextmanager
|
||||
from hashlib import sha256
|
||||
@ -24,6 +25,7 @@ if t.TYPE_CHECKING:
|
||||
)
|
||||
from ansible.galaxy.token import GalaxyToken
|
||||
|
||||
from ansible import context
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.galaxy import get_collections_galaxy_meta_info
|
||||
from ansible.galaxy.api import should_retry_error
|
||||
@ -38,7 +40,7 @@ from ansible.module_utils.urls import open_url
|
||||
from ansible.utils.display import Display
|
||||
from ansible.utils.sentinel import Sentinel
|
||||
|
||||
import yaml
|
||||
import ansible.constants as C
|
||||
|
||||
|
||||
display = Display()
|
||||
@ -425,11 +427,14 @@ def _extract_collection_from_git(repo_url, coll_ver, b_path):
|
||||
|
||||
# Perform a shallow clone if simply cloning HEAD
|
||||
if version == 'HEAD':
|
||||
git_clone_cmd = git_executable, 'clone', '--depth=1', git_url, to_text(b_checkout_path)
|
||||
git_clone_cmd = [git_executable, 'clone', '--depth=1', git_url, to_text(b_checkout_path)]
|
||||
else:
|
||||
git_clone_cmd = git_executable, 'clone', git_url, to_text(b_checkout_path)
|
||||
git_clone_cmd = [git_executable, 'clone', git_url, to_text(b_checkout_path)]
|
||||
# FIXME: '--branch', version
|
||||
|
||||
if context.CLIARGS['ignore_certs'] or C.GALAXY_IGNORE_CERTS:
|
||||
git_clone_cmd.extend(['-c', 'http.sslVerify=false'])
|
||||
|
||||
try:
|
||||
subprocess.check_call(git_clone_cmd)
|
||||
except subprocess.CalledProcessError as proc_err:
|
||||
|
||||
@ -16,21 +16,6 @@ galaxy_info:
|
||||
# - CC-BY-4.0
|
||||
license: {{ license }}
|
||||
|
||||
#
|
||||
# platforms is a list of platforms, and each platform has a name and a list of versions.
|
||||
#
|
||||
# platforms:
|
||||
# - name: Fedora
|
||||
# versions:
|
||||
# - all
|
||||
# - 25
|
||||
# - name: SomePlatform
|
||||
# versions:
|
||||
# - all
|
||||
# - 1.0
|
||||
# - 7
|
||||
# - 99.99
|
||||
|
||||
galaxy_tags:
|
||||
- apb
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
|
||||
@ -21,21 +21,6 @@ galaxy_info:
|
||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||
# min_ansible_container_version:
|
||||
|
||||
#
|
||||
# platforms is a list of platforms, and each platform has a name and a list of versions.
|
||||
#
|
||||
# platforms:
|
||||
# - name: VYOS
|
||||
# versions:
|
||||
# - all
|
||||
# - 25
|
||||
# - name: SomePlatform
|
||||
# versions:
|
||||
# - all
|
||||
# - 1.0
|
||||
# - 7
|
||||
# - 99.99
|
||||
|
||||
galaxy_tags: []
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
|
||||
@ -386,6 +386,8 @@ class GalaxyRole(object):
|
||||
else:
|
||||
os.makedirs(self.path)
|
||||
|
||||
resolved_archive = unfrackpath(archive_parent_dir, follow=False)
|
||||
|
||||
# We strip off any higher-level directories for all of the files
|
||||
# contained within the tar file here. The default is 'github_repo-target'.
|
||||
# Gerrit instances, on the other hand, does not have a parent directory at all.
|
||||
@ -400,33 +402,29 @@ class GalaxyRole(object):
|
||||
if not (attr_value := getattr(member, attr, None)):
|
||||
continue
|
||||
|
||||
if attr_value.startswith(os.sep) and not is_subpath(attr_value, archive_parent_dir):
|
||||
err = f"Invalid {attr} for tarfile member: path {attr_value} is not a subpath of the role {archive_parent_dir}"
|
||||
raise AnsibleError(err)
|
||||
|
||||
if attr == 'linkname':
|
||||
# Symlinks are relative to the link
|
||||
relative_to_archive_dir = os.path.dirname(getattr(member, 'name', ''))
|
||||
archive_dir_path = os.path.join(archive_parent_dir, relative_to_archive_dir, attr_value)
|
||||
relative_to = os.path.dirname(getattr(member, 'name', ''))
|
||||
else:
|
||||
# Normalize paths that start with the archive dir
|
||||
attr_value = attr_value.replace(archive_parent_dir, "", 1)
|
||||
attr_value = os.path.join(*attr_value.split(os.sep)) # remove leading os.sep
|
||||
archive_dir_path = os.path.join(archive_parent_dir, attr_value)
|
||||
relative_to = ''
|
||||
|
||||
resolved_archive = unfrackpath(archive_parent_dir)
|
||||
resolved_path = unfrackpath(archive_dir_path)
|
||||
if not is_subpath(resolved_path, resolved_archive):
|
||||
err = f"Invalid {attr} for tarfile member: path {resolved_path} is not a subpath of the role {resolved_archive}"
|
||||
full_path = os.path.join(resolved_archive, relative_to, attr_value)
|
||||
if not is_subpath(full_path, resolved_archive, real=True):
|
||||
err = f"Invalid {attr} for tarfile member: path {full_path} is not a subpath of the role {resolved_archive}"
|
||||
raise AnsibleError(err)
|
||||
|
||||
relative_path = os.path.join(*resolved_path.replace(resolved_archive, "", 1).split(os.sep)) or '.'
|
||||
relative_path_dir = os.path.join(resolved_archive, relative_to)
|
||||
relative_path = os.path.join(*full_path.replace(relative_path_dir, "", 1).split(os.sep))
|
||||
setattr(member, attr, relative_path)
|
||||
|
||||
if _check_working_data_filter():
|
||||
# deprecated: description='extract fallback without filter' python_version='3.11'
|
||||
role_tar_file.extract(member, to_native(self.path), filter='data') # type: ignore[call-arg]
|
||||
else:
|
||||
# Remove along with manual path filter once Python 3.12 is minimum supported version
|
||||
role_tar_file.extract(member, to_native(self.path))
|
||||
|
||||
# write out the install info file for later use
|
||||
|
||||
@ -1557,7 +1557,7 @@ class AnsibleModule(object):
|
||||
# Similar to shutil.copy(), but metadata is copied as well - in fact,
|
||||
# this is just shutil.copy() followed by copystat(). This is similar
|
||||
# to the Unix command cp -p.
|
||||
#
|
||||
|
||||
# shutil.copystat(src, dst)
|
||||
# Copy the permission bits, last access time, last modification time,
|
||||
# and flags from src to dst. The file contents, owner, and group are
|
||||
@ -1598,6 +1598,7 @@ class AnsibleModule(object):
|
||||
dest_stat = os.stat(b_dest)
|
||||
os.chown(b_src, dest_stat.st_uid, dest_stat.st_gid)
|
||||
shutil.copystat(b_dest, b_src)
|
||||
os.utime(b_src, times=(time.time(), time.time()))
|
||||
except OSError as e:
|
||||
if e.errno != errno.EPERM:
|
||||
raise
|
||||
@ -1659,8 +1660,10 @@ class AnsibleModule(object):
|
||||
b_tmp_dest_name, context, False)
|
||||
try:
|
||||
tmp_stat = os.stat(b_tmp_dest_name)
|
||||
if keep_dest_attrs and dest_stat and (tmp_stat.st_uid != dest_stat.st_uid or tmp_stat.st_gid != dest_stat.st_gid):
|
||||
os.chown(b_tmp_dest_name, dest_stat.st_uid, dest_stat.st_gid)
|
||||
if keep_dest_attrs:
|
||||
if dest_stat and (tmp_stat.st_uid != dest_stat.st_uid or tmp_stat.st_gid != dest_stat.st_gid):
|
||||
os.chown(b_tmp_dest_name, dest_stat.st_uid, dest_stat.st_gid)
|
||||
os.utime(b_tmp_dest_name, times=(time.time(), time.time()))
|
||||
except OSError as e:
|
||||
if e.errno != errno.EPERM:
|
||||
raise
|
||||
@ -1686,8 +1689,12 @@ class AnsibleModule(object):
|
||||
umask = os.umask(0)
|
||||
os.umask(umask)
|
||||
os.chmod(b_dest, S_IRWU_RWG_RWO & ~umask)
|
||||
dest_dir_stat = os.stat(os.path.dirname(b_dest))
|
||||
try:
|
||||
os.chown(b_dest, os.geteuid(), os.getegid())
|
||||
if dest_dir_stat.st_mode & stat.S_ISGID:
|
||||
os.chown(b_dest, os.geteuid(), dest_dir_stat.st_gid)
|
||||
else:
|
||||
os.chown(b_dest, os.geteuid(), os.getegid())
|
||||
except OSError:
|
||||
# We're okay with trying our best here. If the user is not
|
||||
# root (or old Unices) they won't be able to chown.
|
||||
|
||||
@ -28,7 +28,7 @@ def _preprocess_unsafe_encode(value):
|
||||
Used in ``AnsibleJSONEncoder.iterencode``
|
||||
"""
|
||||
if _is_unsafe(value):
|
||||
value = {'__ansible_unsafe': to_text(value, errors='surrogate_or_strict', nonstring='strict')}
|
||||
value = {'__ansible_unsafe': to_text(value._strip_unsafe(), errors='surrogate_or_strict', nonstring='strict')}
|
||||
elif is_sequence(value):
|
||||
value = [_preprocess_unsafe_encode(v) for v in value]
|
||||
elif isinstance(value, Mapping):
|
||||
@ -61,7 +61,7 @@ class AnsibleJSONEncoder(json.JSONEncoder):
|
||||
value = {'__ansible_vault': to_text(o._ciphertext, errors='surrogate_or_strict', nonstring='strict')}
|
||||
elif getattr(o, '__UNSAFE__', False):
|
||||
# unsafe object, this will never be triggered, see ``AnsibleJSONEncoder.iterencode``
|
||||
value = {'__ansible_unsafe': to_text(o, errors='surrogate_or_strict', nonstring='strict')}
|
||||
value = {'__ansible_unsafe': to_text(o._strip_unsafe(), errors='surrogate_or_strict', nonstring='strict')}
|
||||
elif isinstance(o, Mapping):
|
||||
# hostvars and other objects
|
||||
value = dict(o)
|
||||
|
||||
@ -1025,7 +1025,16 @@ namespace Ansible.Basic
|
||||
foreach (DictionaryEntry entry in param)
|
||||
{
|
||||
string paramKey = (string)entry.Key;
|
||||
if (!legalInputs.Contains(paramKey, StringComparer.OrdinalIgnoreCase))
|
||||
if (paramKey == "_ansible_exec_wrapper_warnings")
|
||||
{
|
||||
// Special key used in module_powershell_wrapper to pass
|
||||
// along any warnings that should be returned back to
|
||||
// Ansible.
|
||||
removedParameters.Add(paramKey);
|
||||
foreach (string warning in (IList<string>)entry.Value)
|
||||
Warn(warning);
|
||||
}
|
||||
else if (!legalInputs.Contains(paramKey, StringComparer.OrdinalIgnoreCase))
|
||||
unsupportedParameters.Add(paramKey);
|
||||
else if (!legalInputs.Contains(paramKey))
|
||||
// For backwards compatibility we do not care about the case but we need to warn the users as this will
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user