ancestor: 2.14.0
releases:
  2.15.0:
    changes:
      release_summary: '| Release Date: 2023-05-15

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.0_summary.yaml
    release_date: '2023-05-15'
  2.15.0b1:
    changes:
      breaking_changes:
      - ansible-doc - no longer treat plugins in collections whose name starts with
        ``_`` as deprecated (https://github.com/ansible/ansible/pull/79362).
      - ansible-test - Integration tests which depend on specific file permissions
        when running in an ansible-test managed host environment may require changes.
        Tests that require permissions other than ``755`` or ``644`` may need to be
        updated to set the necessary permissions as part of the test run.
      - ansible-test - The ``vcenter`` test plugin now defaults to using a user-provided
        static configuration instead of the ``govcsim`` simulator for collections.
        Set the ``ANSIBLE_VCSIM_CONTAINER`` environment variable to ``govcsim`` to
        use the simulator. Keep in mind that the simulator is deprecated and will
        be removed in a future release.
      - ansible-test sanity - previously plugins and modules in collections whose
        name started with ``_`` were treated as deprecated, even when they were not
        marked as deprecated in ``meta/runtime.yml``. This is no longer the case (https://github.com/ansible/ansible/pull/79362).
      - ansible-test validate-modules - Removed the ``missing-python-doc`` error code
        in validate modules, ``missing-documentation`` is used instead for missing
        PowerShell module documentation.
      bugfixes:
      - Ansible.Basic.cs - Ignore compiler warning (reported as an error) when running
        under PowerShell 7.3.x.
      - BSD network facts - Do not assume column indexes, look for ``netmask`` and
        ``broadcast`` for determining the correct columns when parsing ``inet`` line
        (https://github.com/ansible/ansible/issues/79117)
      - Correctly count rescued tasks in play recap (https://github.com/ansible/ansible/issues/79711)
      - Do not crash when templating an expression with a test or filter that is not
        a valid Ansible filter name (https://github.com/ansible/ansible/issues/78912,
        https://github.com/ansible/ansible/pull/78913).
      - Fix ``MANIFEST.in`` to exclude unwanted files in the ``packaging/`` directory.
      - Fix ``MANIFEST.in`` to include ``*.md`` files in the ``test/support/`` directory.
      - Fix a traceback occuring when a task is named ``meta`` (https://github.com/ansible/ansible/issues/79459)
      - Fix an issue where the value of ``become`` was ignored when used on a role
        used as a dependency in ``main/meta.yml`` (https://github.com/ansible/ansible/issues/79777)
      - Fix bug in `vars` applied to roles, they were being incorrectly exported among
        others while only vars/main.yml was meant to be. Also adjusted the precedence
        to act the same as inline params.
      - Fix conditionally notifying ``include_tasks` handlers when ``force_handlers``
        is used (https://github.com/ansible/ansible/issues/79776)
      - Fix reusing a connection in a task loop that uses a redirected or aliased
        name - https://github.com/ansible/ansible/issues/78425
      - Fix setting become activation in a task loop - https://github.com/ansible/ansible/issues/78425
      - Fix traceback when using the ``template`` module and running with ``ANSIBLE_DEBUG=1``
        (https://github.com/ansible/ansible/issues/79763)
      - Fix using ``GALAXY_IGNORE_CERTS`` in conjunction with collections in requirements
        files which specify a specific ``source`` that isn't in the configured servers.
      - Fix using ``GALAXY_IGNORE_CERTS`` when downloading tarballs from Galaxy servers
        (https://github.com/ansible/ansible/issues/79557).
      - Fixes leftover _valid_attrs usage.
      - Fixes the password lookup to not rewrite files if they are not changed when
        using the "encrypt" parameter (#79430).
      - Module and role argument validation - include the valid suboption choices
        in the error when an invalid suboption is provided.
      - Perform type check on data passed to Display.display to enforce the requirement
        of being given a python3 unicode string
      - TaskExecutor - don't ignore templated _raw_params that k=v parser failed to
        parse (https://github.com/ansible/ansible/issues/79862)
      - Windows - Display a warning if the module failed to cleanup any temporary
        files rather than failing the task. The warning contains a brief description
        of what failed to be deleted.
      - Windows - Ensure the module temp directory contains more unique values to
        avoid conflicts with concurrent runs - https://github.com/ansible/ansible/issues/80294
      - Windows - Improve temporary file cleanup used by modules. Will use a more
        reliable delete operation on Windows Server 2016 and newer to delete files
        that might still be open by other software like Anti Virus scanners. There
        are still scenarios where a file or directory cannot be deleted but the new
        method should work in more scenarios.
      - '``ansible-galaxy search rolename`` - give a warning instead of non-zero return
        code when search results are empty. This is similar to the behavior when listing
        roles, which gives a warning if a role cannot be found and exits with a return
        code of ``0``.'
      - '``ansible_eval_concat`` - avoid redundant unsafe wrapping of templated strings
        converted to Python types'
      - ansible-config limit shorthand format to assigned values
      - ansible-doc - stop generating wrong module URLs for module see-alsos. The
        URLs for modules in ansible.builtin do now work, and URLs for modules outside
        ansible.builtin are no longer added (https://github.com/ansible/ansible/pull/80280).
      - ansible-doc now will correctly display short descriptions on listing filters/tests
        no matter the directory sorting.
      - ansible-galaxy - Improve retries for collection installs, to properly retry,
        and extend retry logic to common URL related connection errors (https://github.com/ansible/ansible/issues/80170
        https://github.com/ansible/ansible/issues/80174)
      - ansible-galaxy - fix installing collections in git repositories/directories
        which contain a MANIFEST.json file (https://github.com/ansible/ansible/issues/79796).
      - ansible-galaxy - make initial call to Galaxy server on-demand only when installing,
        getting info about, and listing roles.
      - ansible-galaxy collection install - respect symlinks when installing from
        source or local repository (https://github.com/ansible/ansible/issues/78442)
      - ansible-galaxy collection/role init - preserve symlinks (https://github.com/ansible/ansible/issues/39334).
      - ansible-galaxy role info - fix unhandled AttributeError by catching the correct
        exception.
      - ansible-inventory will no longer duplicate host entries if they were part
        of a group's childrens tree.
      - ansible-inventory will not explicitly sort groups/hosts anymore, giving a
        chance (depending on output format) to match the order in the input sources.
      - ansible-playbook -K breaks when passwords have quotes (https://github.com/ansible/ansible/issues/79836).
      - ansible-test - Add ``wheel < 0.38.0`` constraint for Python 3.6 and earlier.
      - ansible-test - Add support for ``pytest`` assertion rewriting when running
        unit tests on Python 3.5 and later. Resolves issue https://github.com/ansible/ansible/issues/68032
      - ansible-test - Added a work-around for a traceback under Python 3.11 when
        completing certain command line options.
      - ansible-test - Allow disabled, unsupported, unstable and destructive integration
        test targets to be selected using their respective prefixes.
      - ansible-test - Allow unstable tests to run when targeted changes are made
        and the ``--allow-unstable-changed`` option is specified (resolves https://github.com/ansible/ansible/issues/74213).
      - ansible-test - Always indicate the Python version being used before installing
        requirements. Resolves issue https://github.com/ansible/ansible/issues/72855
      - ansible-test - Avoid using ``exec`` after container startup when possible.
        This improves container startup performance and avoids intermittent startup
        issues with some old containers.
      - ansible-test - Connection attempts to managed remote instances no longer abort
        on ``Permission denied`` errors.
      - ansible-test - Detection for running in a Podman or Docker container has been
        fixed to detect more scenarios. The new detection relies on ``/proc/self/mountinfo``
        instead of ``/proc/self/cpuset``. Detection now works with custom cgroups
        and private cgroup namespaces.
      - ansible-test - Exclude ansible-core vendored Python packages from ansible-test
        payloads.
      - ansible-test - Fix broken documentation link for ``aws`` test plugin error
        messages.
      - ansible-test - Fix validate-modules error when retrieving PowerShell argspec
        when retrieved inside a Cmdlet
      - ansible-test - Handle server errors when executing the ``docker info`` command.
      - ansible-test - Integration test target prefixes defined in a ``tests/integration/target-prefixes.{group}``
        file can now contain an underscore (``_``) character. Resolves issue https://github.com/ansible/ansible/issues/79225
      - ansible-test - Multiple containers now work under Podman without specifying
        the ``--docker-network`` option.
      - ansible-test - Pass the ``XDG_RUNTIME_DIR`` environment variable through to
        container commands.
      - ansible-test - Perform PyPI proxy configuration after instances are ready
        and bootstrapping has been completed. Only target instances are affected,
        as controller instances were already handled this way. This avoids proxy configuration
        errors when target instances are not yet ready for use.
      - ansible-test - Prevent concurrent / repeat inspections of the same container
        image.
      - ansible-test - Prevent concurrent / repeat pulls of the same container image.
      - ansible-test - Prevent concurrent execution of cached methods.
      - ansible-test - Removed pointless comparison in diff evaluation logic.
      - ansible-test - Set ``PYLINTHOME`` for the ``pylint`` sanity test to prevent
        failures due to ``pylint`` checking for the existence of an obsolete home
        directory.
      - ansible-test - Show the exception type when reporting errors during instance
        provisioning.
      - ansible-test - Support Podman 4.4.0+ by adding the ``SYS_CHROOT`` capability
        when running containers.
      - ansible-test - Support loading of vendored Python packages from ansible-core.
      - ansible-test - The ``validate-modules`` sanity test now properly enforces
        documentation before imports for plugins. Previously this was only enforced
        for modules due to a coding error.
      - ansible-test - Update the ``pylint`` sanity test requirements to resolve crashes
        on Python 3.11. (https://github.com/ansible/ansible/issues/78882)
      - ansible-test - Update the ``pylint`` sanity test to use version 2.15.4.
      - ansible-test - Update the ``pylint`` sanity test to use version 2.15.5.
      - ansible-test - Use consistent file permissions when delegating tests to a
        container or remote host. Files with any execute bit set will use permissions
        ``755``. All other files will use permissions ``644``. (Resolves issue https://github.com/ansible/ansible/issues/75079)
      - ansible-test - fix warning message about failing to run an image to include
        the image name
      - ansible-test runtime-metadata sanity test - do not crash on YAML parsing errors
        without a context mark (https://github.com/ansible/ansible/pull/78802).
      - ansible-test sanity - correctly report invalid YAML in validate-modules (https://github.com/ansible/ansible/issues/75837).
      - ansible-vault encrypt_string - started appending a line feed at the end of
        the encrypted string output. Missing newline character caused problems identifying
        where the string ends in some shells (like bash) or accidentally copying an
        extra trailing terminator symbol (e.g., zsh prints out a ``%`` sign to signal
        where the original output stops) (https://github.com/ansible/ansible/issues/78932).
      - ansible_facts.hardware - Define all processor facts on s390x (https://github.com/ansible/ansible/issues/19755)
      - apt - set locale to fix updating the cache (https://github.com/ansible/ansible/issues/79523).
      - apt module should not traceback on invalid type given as package. issue 78663.
      - apt_repository will no longer fail to detect key when unrelated errors/warnings
        are issued by apt-key.
      - argument spec validation - again report deprecated parameters for Python-based
        modules. This was accidentally removed in ansible-core 2.11 when argument
        spec validation was refactored (https://github.com/ansible/ansible/issues/79680,
        https://github.com/ansible/ansible/pull/79681).
      - argument spec validation - ensure that deprecated aliases in suboptions are
        also reported (https://github.com/ansible/ansible/pull/79740).
      - argument spec validation - fix warning message when two aliases of the same
        option are used for suboptions to also mention the option's name they are
        in (https://github.com/ansible/ansible/pull/79740).
      - basic.py module_utils - Perform Python version check much earlier to ensure
        it runs before other errors occur.
      - connection local now avoids traceback on invalid user being used to execuet
        ansible (valid in host, but not in container).
      - copy - fix creating the dest directory in check mode with remote_src=True
        (https://github.com/ansible/ansible/issues/78611).
      - copy - fix reporting changes to file attributes in check mode with remote_src=True
        (https://github.com/ansible/ansible/issues/77957).
      - copy module will no longer move 'non files' set as src when remote_src=true.
      - copy remote_src=true - fix copying subdirs recursively when the dest exists
        and the src and dest have multiple common subdirectories in a common directory
        (https://github.com/ansible/ansible/issues/74536).
      - copy remote_src=true - fix reporting changed for copying empty directories.
      - display - reduce risk of post-fork output deadlocks (https://github.com/ansible/ansible/pull/79522)
      - file - touch action in check mode was always returning ok. Fix now evaluates
        the different conditions and returns the appropriate changed status. (https://github.com/ansible/ansible/issues/79360)
      - file lookup now handles missing files more gracefully.
      - file lookup now plays nice with generic lookup ``errors`` option.
      - get_url - Ensure we are passing ciphers to all url_get calls (https://github.com/ansible/ansible/issues/79717)
      - get_url module - Added a documentation reference to ``hashlib`` regarding
        algorithms, as well as a note about ``md5`` support on systems running in
        FIPS compliant mode.
      - get_url module - Removed out-of-date documentation stating that ``hashlib``
        is a third-party library.
      - 'handlers - fix an issue where the ``flush_handlers`` meta task could not
        be used with FQCN: ``ansible.builtin.meta`` (https://github.com/ansible/ansible/issues/79023)'
      - include_role - Inherit from role parents beyond a depth of 3 (https://github.com/ansible/ansible/issues/47023).
      - jinja2_native - fix intermittent 'could not find job' failures when a value
        of ``ansible_job_id`` from a result of an async task was inadvertently changed
        during execution; to prevent this a format of ``ansible_job_id`` was changed.
      - 'jinja2_native: preserve quotes in strings (https://github.com/ansible/ansible/issues/79083)'
      - keyword inheritance - Ensure that we do not squash keywords in validate (https://github.com/ansible/ansible/issues/79021)
      - known_hosts - do not return changed status when a non-existing key is removed
        (https://github.com/ansible/ansible/issues/78598)
      - list-tags now shows the 'never' tag, which was being excluded by default.
        To list all tasks you still need to add `--list-tasks --tags never,all`.
      - loops/delegate_to - Do not double calculate the values of loops and ``delegate_to``
        (https://github.com/ansible/ansible/issues/80038)
      - module_utils/basic.py - Fix detection of available hashing algorithms on Python
        3.x. All supported algorithms are now available instead of being limited to
        a hard-coded list. This affects modules such as ``get_url`` which accept an
        arbitrary checksum algorithm.
      - normal action plugin - remove obsolete ``if`` (https://github.com/ansible/ansible/pull/79690).
      - omit on keywords was resetting to default value, ignoring inheritance.
      - paramiko - Add a new option to allow paramiko >= 2.9 to easily work with all
        devices now that rsa-sha2 support was added to paramiko, which prevented communication
        with numerous platforms. (https://github.com/ansible/ansible/issues/76737)
      - paramiko - Add back support for ``ssh_args``, ``ssh_common_args``, and ``ssh_extra_args``
        for parsing the ``ProxyCommand`` (https://github.com/ansible/ansible/issues/78750)
      - paramiko connection was still using outdated playcontext, this should bring
        it up to date to use the 'correct' data for each task/loop.
      - password lookup now correctly reads stored ident fields.
      - password_hash - handle errors using unknown passlib hashtypes more gracefully
        (https://github.com/ansible/ansible/issues/45392).
      - plugin loader, fix detection for existing configuration before initializing
        for a plugin
      - role deduplication - Always create new role object, regardless of deduplication.
        Deduplication will only affect whether a duplicate call to a role will execute,
        as opposed to re-using the same object. (https://github.com/ansible/ansible/pull/78661)
      - roles - Fix templating ``public``, ``allow_duplicates`` and ``rolespec_validate``
        (https://github.com/ansible/ansible/issues/80304).
      - service_facts - Use python re to parse service output instead of grep (https://github.com/ansible/ansible/issues/78541)
      - strategy plugins now correctly identify bad registered variables, even on
        skip.
      - 'strategy plugins: get the correctly templated and validated run_once value
        on strategy linear (https://github.com/ansible/ansible/issues/78492)'
      - systemd - daemon-reload and daemon-reexec ignore errors when running in a
        chroot (https://github.com/ansible/ansible/pull/79643)
      - templates - Fixed ``TypeError`` when a lookup plugin has an option called
        ``name``.
      - unarchive - allow relative path for ``dest`` (https://github.com/ansible/ansible/issues/64612)
      - unarchive - log errors from commands to assist in debugging (https://github.com/ansible/ansible/issues/64612)
      - updated error messages to include 'acl' and not just mode changes when failing
        to set required permissions on remote.
      - uri - improve JSON content type detection
      - user - fix comparing group IDs to existing group names so groups are not always
        updated (https://github.com/ansible/ansible/issues/79956).
      - user module - Removed ``password_expire_max`` from the return docs, as it
        is not returned.
      - user module - Removed ``password_expire_min`` from the return docs, as it
        is not returned.
      - vault - show filename additionally if missing secrets prevents decryption
        (https://github.com/ansible/ansible/issues/79723)
      - winrm - Increase the read timeout to 10 seconds later than the operation timeout
        reducing the chances of a false read timeout
      deprecated_features:
      - The ``ConnectionBase()._new_stdin`` attribute is deprecated, use ``display.prompt_until(msg)``
        instead.
      - ansible-test - The ``foreman`` test plugin is now deprecated. It will be removed
        in a future release.
      - ansible-test - The ``govcsim`` simulator in the ``vcenter`` test plugin is
        now deprecated. It will be removed in a future release. Users should switch
        to providing their own test environment through a static configuration file.
      - password_hash - deprecate using passlib.hash.hashtype if hashtype isn't in
        the list of documented choices.
      - vars - Specifying a list of dictionaries for ``vars:`` is deprecated in favor
        of specifying a dictionary.
      known_issues:
      - ansible-test - Additional configuration may be required for certain container
        host and container combinations. Further details are available in the testing
        documentation.
      - ansible-test - Custom containers with ``VOLUME`` instructions may be unable
        to start, when previously the containers started correctly. Remove the ``VOLUME``
        instructions to resolve the issue. Containers with this condition will cause
        ``ansible-test`` to emit a warning.
      - ansible-test - Systems with Podman networking issues may be unable to run
        containers, when previously the issue went unreported. Correct the networking
        issues to continue using ``ansible-test`` with Podman.
      - ansible-test - Unit tests for collections do not support ``pytest`` assertion
        rewriting on Python 2.7.
      - ansible-test - Using Docker on systems with SELinux may require setting SELinux
        to permissive mode. Podman should work with SELinux in enforcing mode.
      - 'dnf5 - The DNF5 package manager currently does not provide all functionality
        to ensure feature parity between the existing ``dnf`` and the new ``dnf5``
        module. As a result the following ``dnf5`` options are effectively a no-op:
        ``cacheonly``, ``enable_plugin``, ``disable_plugin`` and ``lock_timeout``.'
      major_changes:
      - ansible-test - Docker Desktop on WSL2 is now supported (additional configuration
        required).
      - ansible-test - Docker and Podman are now supported on hosts with cgroup v2
        unified. Previously only cgroup v1 and cgroup v2 hybrid were supported.
      - ansible-test - Podman now works on container hosts without systemd. Previously
        only some containers worked, while others required rootfull or rootless Podman,
        but would not work with both. Some containers did not work at all.
      - ansible-test - Podman on WSL2 is now supported.
      - ansible-test - When additional cgroup setup is required on the container host,
        this will be automatically detected. Instructions on how to configure the
        host will be provided in the error message shown.
      minor_changes:
      - Add support for custom salt for vault encoding to make it deterministic (https://github.com/ansible/ansible/issues/35480).
      - Added the conditional that was False if ``when`` caused a task to skip under
        ``false_condition``.
      - Allow force deletion of a group even when it is the primary group of a user.
        (https://github.com/ansible/ansible/issues/77849)
      - Ansible.ModuleUtils.AddType - Add support for compiling ``unsafe`` code with
        the ``//AllowUnsafe`` directive
      - Cache field attributes list on the playbook classes
      - Cleaned up unused imports in core.
      - Get user input for ``pause`` and ``paramiko_ssh`` from the strategy rather
        than access ``sys.stdin`` in the WorkerProcess.
      - Introduce ``Delegatable`` and ``Notifiable`` mixin classes for playbook objects
      - Make using blocks as handlers a parser error (https://github.com/ansible/ansible/issues/79968)
      - Playbook objects - Replace deprecated stacked ``@classmethod`` and ``@property``
      - Raise an error when an incorrect ``isa`` type is passed to ``FieldAttribute``.
      - Remove fallback code for when ``defined``/``undefined`` tests were used on
        objects containing nested undefined variables; due to changes in lazy evalution
        of Jinja2 expressions it is no longer needed.
      - 'Remove unused Python stdlib imports from module_utils which were not present
        for backwards compatibility in: common.file, compat.selectors, facts.network.iscsi,
        facts.network.nvme, yumdnf

        '
      - 'Remove unused internal imports from module_utils which were not present for
        backwards compatibility in: common.file, common.parameters, facts.system.caps,
        yumdnf

        '
      - Removed ``straight.plugin`` from the build and packaging requirements.
      - 'Removed unused imports from the following action plugins: async_status, command,
        pause, set_stats, uri, validate_argument_spec'
      - 'Removed unused imports from the following lookup plugins: fileglob, template'
      - 'Removed unused imports from the following modules: apt, dnf, expect, pip,
        slurp, user, yum'
      - 'Removed unused imports from the following set of test plugins: files'
      - 'Removed unused imports from the following strategy plugins: debug'
      - 'Removed unused imports from the following vars plugins: host_group_vars'
      - Use ``ansible.module_utils.six.moves.collections_abc`` instead of ``ansible.module_utils.common._collections_compat``
        in modules and module_utils.
      - Use ``collections.abc`` instead of ``ansible.module_utils.common._collections_compat``
        in controller code.
      - '``AnsibleJ2Vars`` class that acts as a storage for all variables for templating
        purposes now uses ``collections.ChainMap`` internally.'
      - add parameter ``numeric`` to the iptables module to disable dns lookups when
        running list -action internally (https://github.com/ansible/ansible/issues/78793).
      - allow user to set ansible specific env vars for selecting pager and editor,
        but still fall back to commonly used defaults.
      - ansible-doc - support role extension for semantic markup spec so that ``O()``
        and ``RV()`` referring to role entrypoints are rendered more readable (https://github.com/ansible/ansible/pull/80305).
      - ansible-doc - support semantic markup in text output (https://github.com/ansible/ansible/pull/80242).
      - ansible-doc text output - support ``seealso`` plugin record that was added
        for filter and test plugin documentation (https://github.com/ansible/ansible/pull/80212).
      - ansible-galaxy - Add ability to specify collection versions on the CLI without
        the need for a colon. Such as ``namespace.name==1.2.3`` vs ``namespace.name:1.2.3``.
      - ansible-galaxy - Use Python's native ``raise ... from`` instead of ``six.raise_from``.
      - ansible-galaxy - support ``resolvelib >= 0.5.3, < 0.10.0``.
      - ansible-galaxy - support ``resolvelib >= 0.5.3, < 1.1.0``.
      - ansible-inventory now supports the limit command line options.
      - ansible-test - A new ``audit`` option is available when running custom containers.
        This option can be used to indicate whether a container requires the AUDIT_WRITE
        capability. The default is ``required``, which most containers will need when
        using Podman. If necessary, the ``none`` option can be used to opt-out of
        the capability. This has no effect on Docker, which always provides the capability.
      - ansible-test - A new ``cgroup`` option is available when running custom containers.
        This option can be used to indicate a container requires cgroup v1 or that
        it does not use cgroup. The default behavior assumes the container works with
        cgroup v2 (as well as v1).
      - ansible-test - Add Alpine 3.17 remote.
      - ansible-test - Add Fedora 37 container.
      - ansible-test - Add Fedora 37 remote.
      - ansible-test - Add FreeBSD 12.4 remote.
      - ansible-test - Add RHEL 8.7 remote.
      - ansible-test - Add RHEL 9.1 remote.
      - ansible-test - Add macOS 13.2 remote.
      - ansible-test - Additional log details are shown when containers fail to start
        or SSH connections to containers fail.
      - ansible-test - Connection failures to remote provisioned hosts now show failure
        details as a warning.
      - ansible-test - Containers included with ansible-test no longer disable seccomp
        by default.
      - ansible-test - Disabled the ``ansible-format-automatic-specification`` rule
        from the ``pylint`` sanity test, now that Python 2.6 is no longer supported.
      - ansible-test - Enable the ``trailing-comma-tuple`` rule in the ``pylint``
        sanity test.
      - ansible-test - Enable the ``unused-import`` rule for the ``pylint`` sanity
        test for collections.
      - ansible-test - Failure to connect to a container over SSH now results in a
        clear error. Previously tests would be attempted even after initial connection
        attempts failed.
      - ansible-test - Improve consistency of executed ``pylint`` commands by making
        the plugins ordered.
      - ansible-test - Improve consistency of version specific documentation links.
      - ansible-test - Integration tests can be excluded from retries triggered by
        the ``--retry-on-error`` option by adding the ``retry/never`` alias. This
        is useful for tests that cannot pass on a retry or are too slow to make retries
        useful.
      - ansible-test - Minor cleanup and package updates in distro containers.
      - ansible-test - More details are provided about an instance when provisioning
        fails.
      - ansible-test - Moved git handling out of the validate-modules sanity test
        and into ansible-test.
      - ansible-test - Reduce the polling limit for SSHD startup in containers from
        60 retries to 10. The one second delay between retries remains in place.
      - 'ansible-test - Removed test containers: fedora36'
      - 'ansible-test - Removed test remotes: alpine/3.16, fedora/36, freebsd/12.3,
        rhel/8.6, rhel/9.0, macos/12.0'
      - ansible-test - Removed the ``--keep-git`` sanity test option, which was limited
        to testing ansible-core itself.
      - ansible-test - SSH connections from OpenSSH 8.8+ to CentOS 6 containers now
        work without additional configuration. However, clients older than OpenSSH
        7.0 can no longer connect to CentOS 6 containers as a result. The container
        must have ``centos6`` in the image name for this work-around to be applied.
      - ansible-test - SSH shell connections from OpenSSH 8.8+ to ansible-test provisioned
        network instances now work without additional configuration. However, clients
        older than OpenSSH 7.0 can no longer open shell sessions for ansible-test
        provisioned network instances as a result.
      - 'ansible-test - Specify the configuration file location required by test plugins
        when the config file is not found. This resolves issue: https://github.com/ansible/ansible/issues/79411'
      - ansible-test - The ``ansible-test env`` command now detects and reports the
        container ID if running in a container.
      - ansible-test - The ``pep8`` sanity test rule ``E203`` is now disabled since
        it is not PEP 8 compliant. This provides compatibility with output generated
        by the ``black`` code formatter.
      - ansible-test - The ``validate-modules`` sanity test no longer limits the ``__future__``
        imports that can be used. Other sanity tests that check ``__future__`` imports
        remain unchanged. As a result, the error code ``illegal-future-imports`` is
        no longer used.
      - ansible-test - Unit tests now support network disconnect by default when running
        under Podman. Previously this feature only worked by default under Docker.
      - ansible-test - Update Alpine 3 container to 3.17.
      - ansible-test - Update Python requirements used for sanity tests.
      - ansible-test - Update ``base`` and ``default`` containers to include Python
        3.11.0.
      - ansible-test - Update ``default`` containers to include new ``docs-build``
        sanity test requirements.
      - ansible-test - Update error handling code to use Python 3.x constructs, avoiding
        direct use of ``errno``.
      - ansible-test - Update test container to ``7.4.0`` which includes the new PSScriptAnalyzer
        versions
      - ansible-test - Update the CloudStack test plugin to use a newer test container
        with CloudStack 4.18.0.
      - ansible-test - Update the NIOS test plugin to use a newer multi-arch test
        container.
      - ansible-test - Update the ``ansible-bad-import-from`` rule in the ``pylint``
        sanity test to recommend ``ansible.module_utils.six.moves.collections_abc``
        instead of ``ansible.module_utils.common._collections_compat``.
      - ansible-test - Update the ``base`` and ``default`` test containers with the
        latest requirements.
      - ansible-test - Update the ``default`` containers to include the ``package-data``
        requirements update.
      - ansible-test - Update the ``default`` containers to include the ``pylint``
        requirements update.
      - ansible-test - Updated the Azure Pipelines CI plugin to work with newer versions
        of git.
      - ansible-test - Use ``stop --time 0`` followed by ``rm`` to remove ephemeral
        containers instead of ``rm -f``. This speeds up teardown of ephemeral containers.
      - ansible-test - Warnings are now shown when using containers that were built
        with VOLUME instructions.
      - ansible-test - When setting the max open files for containers, the container
        host's limit will be checked. If the host limit is lower than the preferred
        value, it will be used and a warning will be shown.
      - ansible-test - When using Podman, ansible-test will detect if the loginuid
        used in containers is incorrect. When this occurs a warning is displayed and
        the container is run with the AUDIT_CONTROL capability. Previously containers
        would fail under this situation, with no useful warnings or errors given.
      - ansible-test acme test container - update version to update used Pebble version,
        underlying Python and Go base containers, and Python requirements (https://github.com/ansible/ansible/pull/79783).
      - ansible-test pslint - Upgrade PSScriptAnalyzer to ``1.21.0`` which enables
        the ``AvoidMultipleTypeAttributes``, ``AvoidSemicolonsAsLineTerminators``,
        and ``AvoidUsingBrokenHashAlgorithms`` rules
      - ansible-test runtime-metadata sanity test - ensure that ``redirect`` entries
        in ``meta/runtime.yml`` contain collection names, except for ``module_utils``
        plugin redirects and ``import_redirect`` redirects (https://github.com/ansible/ansible/pull/78802).
      - ansible-test sanity --test ansible-doc - now also lists documentation for
        test and filter plugins that are documented (https://github.com/ansible/ansible/pull/77737).
      - ansible-test validate-modules - Added support for validating module documentation
        stored in a sidecar file alongside the module (``{module}.yml`` or ``{module}.yaml``).
        Previously these files were ignored and documentation had to be placed in
        ``{module}.py``.
      - ansible-test validate-modules - no longer treat falsy non-``False`` values
        for defaults as ``None`` (https://github.com/ansible/ansible/pull/79267).
      - apt - add allow-change-held-packages option to apt remove (https://github.com/ansible/ansible/issues/78131)
      - apt_repository - adds ``sources_added`` and ``sources_removed`` to the return
        of the module (https://github.com/ansible/ansible/issues/79306).
      - apt_repository will use the trust repo directories in order of preference
        (more appropriate to less) as they exist on the target.
      - collections - Add additional ignores for commonly rejected file extensions
      - collections - Add additional includes for REUSE license files (https://github.com/ansible/ansible/issues/79368)
      - deb822_repository - Add new module for managing DEB822 formatted apt repositories
      - debug - Perform argspec valdiation in debug action plugin (https://github.com/ansible/ansible/issues/79862)
      - dnf5 - Add new module for managing packages and other artifacts via the next
        version of DNF (https://github.com/ansible/ansible/issues/78898)
      - galaxy - include ``license_file`` in the default manifest directives (https://github.com/ansible/ansible/pull-request/79420)
      - optimized var loading by caching results as there is no variance in input
        during run.
      - pycompat24 module_utils - Remove support for Python 2.5 and earlier.
      - sanity tests - updates the collection-deprecated-version tests to ignore the
        ``prerelease`` component of the collection version ().
      - strftime filter, additional docs and links to source of truth.
      - updated the vendored distro library to upstream version (https://github.com/ansible/ansible/pull/79227)
      - validate-modules sanity test - add support for semantic markup (https://github.com/ansible/ansible/pull/80243).
      - validate-modules sanity test - if the ``check_mode`` attribute is present,
        check that it coincides with the ``support_check_mode`` parameter of ``AnsibleModule``
        (https://github.com/ansible/ansible/pull/80090).
      - validate-modules sanity test - remove support for the never implemented ``forced_action_plugin``
        attribute (https://github.com/ansible/ansible/pull/79317).
      - validate-modules sanity test - support the ``plugin`` see-also part of the
        semantic markup specification (https://github.com/ansible/ansible/pull/80244).
      release_summary: '| Release Date: 2023-04-04

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
      removed_features:
      - Remove deprecated ``ANSIBLE_CALLBACK_WHITELIST`` configuration environment
        variable, use ``ANSIBLE_CALLBACKS_ENABLED`` instead. (https://github.com/ansible/ansible/issues/78821)
      - Remove deprecated ``ANSIBLE_COW_WHITELIST`` configuration environment variable,
        use ``ANSIBLE_COW_ACCEPTLIST`` instead. (https://github.com/ansible/ansible/issues/78819)
      - Remove deprecated ``callback_whitelist`` configuration option, use ``callbacks_enabled``
        instead. (https://github.com/ansible/ansible/issues/78822)
      - Remove deprecated ``cow_whitelist`` configuration option, use ``cowsay_enabled_stencils``
        instead. (https://github.com/ansible/ansible/issues/78820)
    codename: Ten Years Gone
    fragments:
    - 19755-ansible_processor-s390x.yml
    - 2.15.0b1_summary.yaml
    - 20221021-deprecated-sanity.yml
    - 64612-unarchive-log-command-output.yml
    - 64612-unarchive-relative-path-dest.yml
    - 71424-deterministic-vault-encode.yml
    - 75837-validate-modules-invalid-yaml.yml
    - 76578-fix-role-argspec-suboptions-error.yml
    - 76737-paramiko-rsa-sha2.yml
    - 76997-fix-copy-subdirs-with-remote-src.yml
    - 77737-ansible-doc-test-filters-tests.yml
    - 78172-allow-force-deletion-of-group.yaml
    - 78492-fix-invalid-run_once-value.yml
    - 78541-service-facts-re.yml
    - 78624-copy-remote-src-check-mode.yml
    - 78748-fix-known-hosts-wrong-changed-status.yaml
    - 78750-paramiko-ssh-args-compat.yml
    - 78802-sanity-meta-runtime.yml
    - 78819-78820-remove-deprecated-cow-options.yml
    - 78821-78822-remove-callback_whitelist.yml
    - 78828-iptables-option-to-disable-dns-lookups.yml
    - 78913-template-missing-filter-test.yml
    - 78983-fix-collection-install-from-source-respects-dir-symlinks.yaml
    - 79017-ansible-vault-string-encryption-ending-with-newline.yml
    - 79021-dont-squash-in-validate.yml
    - 79023-fix-flush_handlers-fqcn.yml
    - 79079-fix-role-dep-chain.yaml
    - 79083-jinja2_native-preserve-quotes-in-strings.yml
    - 79117-bsd-ifconfig-inet-fix.yml
    - 79134-ansible-galaxy-init-symlinks.yml
    - 79187--wheel-0.38.0.yml
    - 79227-update-vendored-distro.yaml
    - 79267-validate-modules-defaults.yml
    - 79362-validate-modules-underscore.yml
    - 79368-galaxy-manifest-reuse-licenses.yml
    - 79376-replace-valid-attrs-with-fattributes.yaml
    - 79399-resolvelib_lt_0_10_0.yml
    - 79420-galaxy-manifest-license.yaml
    - 79422-fix-file-touch-check-mode-status.yaml
    - 79431-fix-password-lookup-rewrites.yml
    - 79459-fix-meta-task-check.yml
    - 79546-apt-fix-setting-locale.yml
    - 79561-fix-a-g-global-ignore-certs-cfg.yml
    - 79643-fix-systemd-daemon-reload-in-chroot.yml
    - 79658-improving-return-and-docs.yaml
    - 79681-argspec-param-deprecation.yml
    - 79690-normal-action-undefined.yml
    - 79711-fix-play-stats-rescued.yml
    - 79717-get-url-ciphers.yml
    - 79732-filename_in_decrypt_error.yml
    - 79740-aliases-warnings-deprecations-in-suboptions.yml
    - 79763-ansible_debug_template_tb_fix.yml
    - 79776-fix-force_handlers-cond-include.yml
    - 79777-fix-inheritance-roles-meta.yml
    - 79783-acme-test-container.yml
    - 79837-unquoting-only-when-origin-is-ini.yml
    - 79839-lookup-option-name.yml
    - 79862-debug-action-args.yml
    - 79862-fix-varargs.yml
    - 79968-blocks-handlers-error.yml
    - 79981-user-fix-groups-comparison.yml
    - 80090-validate-modules-check_mode-attribute.yml
    - 80196-resolvelib_lt_1_1_0.yml
    - 80212-ansible-doc-seealso.yml
    - 80242-ansible-doc-semantic-markup.yml
    - 80243-validate-modules.yml
    - 80244-validate-modules-seealso.yml
    - 80280-ansible-doc-seealso-urls.yml
    - 80305-ansible-doc-role-semantic-markup.yml
    - AddType-unsafe.yml
    - a-g-role-fix-catching-exception.yml
    - adjust_config_list.yml
    - adoc_fix_list.yml
    - ainv_limit.yml
    - ainv_limit_fix.yml
    - always-create-new-role.yml
    - ansible-basic-tmpdir-uniqueness.yml
    - ansible-galaxy-install-delay-initial-api-call.yml
    - ansible-galaxy-install-git-src-manifest.yml
    - ansible-galaxy-role-search-rc.yml
    - ansible-test-cloudstack-plugin.yml
    - ansible-test-container-management.yml
    - ansible-test-containers-docs-build.yml
    - ansible-test-containers-python-3.11.0.yml
    - ansible-test-default-container-update.yml
    - ansible-test-docs-links.yml
    - ansible-test-errno.yml
    - ansible-test-fix-pointless-comparison.yml
    - ansible-test-fix-python-3.11-traceback.yml
    - ansible-test-fix-warning-msg.yml
    - ansible-test-foreman.yml
    - ansible-test-git-handling.yml
    - ansible-test-govcsim.yml
    - ansible-test-integration-target-prefixes.yml
    - ansible-test-integration-targets-filter.yml
    - ansible-test-nios-plugin.yml
    - ansible-test-payload-file-permissions.yml
    - ansible-test-pep8-e203.yml
    - ansible-test-podman-chroot.yml
    - ansible-test-pylint-2.15.4.yml
    - ansible-test-pylint-2.15.5.yml
    - ansible-test-pylint-command.yml
    - ansible-test-pylint-home.yml
    - ansible-test-pylint-string-format.yml
    - ansible-test-pylint-trailing-comma-tuple.yml
    - ansible-test-pypi-proxy-fix.yml
    - ansible-test-pytest-assertion-rewriting.yml
    - ansible-test-removed-old-platforms.yml
    - ansible-test-requirements-message.yml
    - ansible-test-sanity-requirements.yml
    - ansible-test-test-plugin-error-message.yml
    - ansible-test-unused-import-collections.yml
    - ansible-test-updated-platforms.yml
    - ansible-test-validate-modules-future-import.yml
    - ansible-test-vendoring-support.yml
    - ansible_eval_concat-remove-redundant-unsafe-wrap.yml
    - ansiblej2vars-chainmap.yml
    - apt-remove_allow-change-held-packages.yml
    - apt_notb.yml
    - apt_repo_fix.yml
    - apt_repo_trust_prefs.yml
    - basic-version-check.yml
    - become-loop-setting.yml
    - better-maybe-json-uri.yml
    - build-no-straight.yaml
    - cache-fa-on-pb-cls.yml
    - deb822-repository.yml
    - deprecate-non-enforced-password_hash-type-choices.yml
    - deprecate-vars-list-of-dicts.yml
    - display-display-str-only.yml
    - dnf5-module.yml
    - dont_move_non_files.yml
    - file_lookup_errors.yml
    - file_lookup_fix.yml
    - fix-manifest.yml
    - fix-templating-private-role-FA.yml
    - fix_jinja_native_async.yml
    - fix_omit_key.yml
    - fork_safe_stdio.yml
    - galaxy-improve-retries.yml
    - galaxy-install-no-colon.yml
    - hashlib-algorithms.yml
    - isa-value-check.yml
    - listalltags.yml
    - local_bad_user.yml
    - mention_acl.yml
    - new-mixins.yml
    - new_editor_pager_opts.yml
    - no-double-loop-delegate-to-calc.yml
    - no-stacked-descriptors.yaml
    - optimize_vars_loads.yml
    - paramiko_config.yml
    - password_lookup_file_fix.yml
    - plugin_loader_fix.yml
    - powershell-7.3-fix.yml
    - prompt-via-worker-queue.yml
    - psscriptanalyzer-1.21.0.yml
    - pycompat24.yml
    - remove-nested-defined-fallback-code.yml
    - role_vars_scope_fix.yml
    - skip-conditional.yml
    - strategy_badid_fix.yml
    - strftime_docs.yml
    - test-container-update.yml
    - unsorted.yml
    - unused-imports-core.yml
    - unused-imports-module-utils-internal.yml
    - unused-imports-module-utils-stdlib.yml
    - unused-imports-modules.yml
    - unused-imports-plugins.yml
    - update-collections-abc-imports.yml
    - use-native-raise-from.yml
    - user-module-return-docs.yml
    - v2.15.0-initial-commit.yaml
    - validate-module-ps-cmdlet.yml
    - validate-modules-forced_action_plugin.yml
    - validate-modules-sidecar.yml
    - win-temp-cleanup.yml
    - winrm-read-timeout.yml
    modules:
    - description: Add and remove deb822 formatted repositories
      name: deb822_repository
      namespace: lib.ansible.modules
    - description: Manages packages with the I(dnf5) package manager
      name: dnf5
      namespace: lib.ansible.modules
    plugins:
      filter:
      - description: gets the common path
        name: commonpath
        namespace: null
      - description: Normalize a pathname
        name: normpath
        namespace: null
    release_date: '2023-04-04'
  2.15.0b2:
    changes:
      bugfixes:
      - AnsibleModule.run_command - Only use selectors when needed, and rely on Python
        stdlib subprocess for the simple task of collecting stdout/stderr when prompt
        matching is not required.
      - ansible-galaxy - reduce API calls to servers by fetching signatures only for
        final candidates.
      - dnf5 - fix module and package names in the message following failed module
        respawn attempt
      - dnf5 - use the logs API to determine transaction problems
      - validate-modules sanity test - replace semantic markup parsing and validating
        code with the code from `antsibull-docs-parser 0.2.0 <https://github.com/ansible-community/antsibull-docs-parser/releases/tag/0.2.0>`__
        (https://github.com/ansible/ansible/pull/80406).
      release_summary: '| Release Date: 2023-04-10

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.0b2_summary.yaml
    - 80334-reduce-ansible-galaxy-api-calls.yml
    - 80406-validate-modules-semantic-markup.yml
    - dnf5-fix-interpreter-fail-msg.yml
    - dnf5-logs-api.yml
    - run-command-selectors-prompt-only.yml
    release_date: '2023-04-10'
  2.15.0b3:
    changes:
      bugfixes:
      - Fix post-validating looped task fields so the strategy uses the correct values
        after task execution.
      - Prevent running same handler multiple times when included via ``include_role``
        (https://github.com/ansible/ansible/issues/73643)
      - ansible-test - Add support for ``argcomplete`` version 3.
      - pep517 build backend - Use the documented ``import_module`` import from ``importlib``.
      - syntax check - Limit ``--syntax-check`` to ``ansible-playbook`` only, as that
        is the only CLI affected by this argument (https://github.com/ansible/ansible/issues/80506)
      release_summary: '| Release Date: 2023-04-17

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.0b3_summary.yaml
    - 73643-handlers-prevent-multiple-runs.yml
    - 80476-fix-loop-task-post-validation.yml
    - 80506-syntax-check-playbook-only.yml
    - ansible-test-argcomplete-3.yml
    - pep517-backend-import-fix.yml
    release_date: '2023-04-17'
  2.15.0rc1:
    changes:
      bugfixes:
      - Display - Defensively configure writing to stdout and stderr with a custom
        encoding error handler that will replace invalid characters while providing
        a deprecation warning that non-utf8 text will result in an error in a future
        version.
      - '``pkg_mgr`` - fix the default dnf version detection'
      - ansible-galaxy - fix installing collections from directories that have a trailing
        path separator (https://github.com/ansible/ansible/issues/77803).
      - ansible-test - Update ``pylint`` to 2.17.2 to resolve several possible false
        positives.
      - ansible-test - Update ``pylint`` to 2.17.3 to resolve several possible false
        positives.
      - ansible-test - When bootstrapping remote FreeBSD instances, use the OS packaged
        ``setuptools`` instead of installing the latest version from PyPI.
      - dnf5 - Use ``transaction.check_gpg_signatures`` API call to check package
        signatures AND possibly to recover from when keys are missing.
      - handlers - fix ``v2_playbook_on_notify`` callback not being called when notifying
        handlers
      - module responses - Ensure that module responses are utf-8 adhereing to JSON
        RFC and expectations of the core code.
      - module/role argument spec - validate the type for options that are None when
        the option is required or has a non-None default (https://github.com/ansible/ansible/issues/79656).
      release_summary: '| Release Date: 2023-04-25

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.0rc1_summary.yaml
    - 79677-fix-argspec-type-check.yml
    - 80258-defensive-display-non-utf8.yml
    - a-g-col-install-directory-with-trailing-sep.yml
    - ansible-test-freebsd-bootstrap-setuptools.yml
    - ansible-test-pylint-update.yml
    - dnf5-gpg-check-api.yml
    - fix-handlers-callback.yml
    - pkg_mgr-default-dnf.yml
    release_date: '2023-04-25'
  2.15.0rc2:
    changes:
      bugfixes:
      - ansible-galaxy - fix installing signed collections (https://github.com/ansible/ansible/issues/80648).
      - ansible-galaxy collection verify - fix verifying signed collections when the
        keyring is not configured.
      minor_changes:
      - The minimum required ``setuptools`` version is now 45.2.0, as it is the oldest
        version to support Python 3.10.
      - Use ``package_data`` instead of ``include_package_data`` for ``setup.cfg``
        to avoid ``setuptools`` warnings.
      release_summary: '| Release Date: 2023-05-01

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.0rc2_summary.yaml
    - 80648-fix-ansible-galaxy-cache-signatures-bug.yml
    - ansible-test-minimum-setuptools.yml
    - fix-setuptools-warnings.yml
    release_date: '2023-05-01'
  2.15.1:
    changes:
      release_summary: '| Release Date: 2023-06-20

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.1_summary.yaml
    release_date: '2023-06-20'
  2.15.1rc1:
    changes:
      bugfixes:
      - Properly disable ``jinja2_native`` in the template module when jinja2 override
        is used in the template (https://github.com/ansible/ansible/issues/80605)
      - ansible-galaxy - Fix variable type error when installing subdir collections
        (https://github.com/ansible/ansible/issues/80943)
      - ansible-test - Fix a traceback that occurs when attempting to test Ansible
        source using a different ansible-test. A clear error message is now given
        when this scenario occurs.
      - ansible-test - Fix handling of timeouts exceeding one day.
      - ansible-test - Fix various cases where the test timeout could expire without
        terminating the tests.
      - ansible-test local change detection - use ``git merge-base <branch> HEAD``
        instead of ``git merge-base --fork-point <branch>`` (https://github.com/ansible/ansible/pull/79734).
      - deb822_repository - use http-agent for receiving content (https://github.com/ansible/ansible/issues/80809).
      - dnf5 - Update dnf5 module to handle API change for setting the download directory
        (https://github.com/ansible/ansible/issues/80887)
      - man page build - Remove the dependency on the ``docs`` directory for building
        man pages.
      - pep517 build backend - Copy symlinks when copying the source tree. This avoids
        tracebacks in various scenarios, such as when a venv is present in the source
        tree.
      - uri - fix search for JSON type to include complex strings containing '+'
      minor_changes:
      - ansible-test - Allow float values for the ``--timeout`` option to the ``env``
        command. This simplifies testing.
      - ansible-test - Refactored ``env`` command logic and timeout handling.
      - ansible-test - Use ``datetime.datetime.now`` with ``tz`` specified instead
        of ``datetime.datetime.utcnow``.
      release_summary: '| Release Date: 2023-06-12

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.1rc1_summary.yaml
    - 79734-ansible-test-change-detection.yml
    - 80605-template-overlay-native-jinja.yml
    - 80887-dnf5-api-change.yml
    - 80943-ansible-galaxy-collection-subdir-install.yml
    - ansible-test-long-timeout-fix.yml
    - ansible-test-source-detection.yml
    - ansible-test-timeout-fix.yml
    - ansible-test-utcnow.yml
    - deb822_open_url.yml
    - man-page-build-docs-dependency.yml
    - pep517-backend-traceback-fix.yml
    - update-maybe-json-uri.yml
    release_date: '2023-06-12'
  2.15.2:
    changes:
      release_summary: '| Release Date: 2023-07-18

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.2_summary.yaml
    release_date: '2023-07-17'
  2.15.2rc1:
    changes:
      bugfixes:
      - From issue https://github.com/ansible/ansible/issues/80880, when notifying
        a handler from another handler, handler notifications must be registered immediately
        as the flush_handler call is not recursive.
      - ansible-galaxy - Fix issue installing collections containing directories with
        more than 100 characters on python versions before 3.10.6
      - paramiko_ssh, psrp, and ssh connection plugins - ensure that all values for
        options that should be strings are actually converted to strings (https://github.com/ansible/ansible/pull/81029).
      - templating - In the template action and lookup, use local jinja2 environment
        overlay overrides instead of mutating the templars environment
      known_issues:
      - ansible-test - The Fedora 37 remote is known to occasionally hang during boot.
        It is no longer routinely tested as a result. If possible, use the Fedora
        38 remote instead.
      minor_changes:
      - Utilize gpg check provided internally by the ``transaction.run`` method as
        oppose to calling it manually.
      - ansible-test - Add Fedora 38 remote.
      - ansible-test - Use a context manager to perform cleanup at exit instead of
        using the built-in ``atexit`` module.
      - dnf5 - enable environment groups installation testing in CI as its support
        was added.
      - dnf5 - enable now implemented ``cacheonly`` functionality
      release_summary: '| Release Date: 2023-07-10

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.2rc1_summary.yaml
    - 80880-register-handlers-immediately-if-iterating-handlers.yml
    - 81005-use-overlay-overrides.yml
    - 81029-connection-types.yml
    - ansible-test-atexit.yml
    - ansible-test-fedora-38.yml
    - dnf5-cacheonly.yml
    - dnf5-gpg-check-builtin.yml
    - dnf5-test-env-groups.yml
    - long-collection-paths-fix.yml
    release_date: '2023-07-10'
  2.15.3:
    changes:
      release_summary: '| Release Date: 2023-08-14

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.3_summary.yaml
    release_date: '2023-08-14'
  2.15.3rc1:
    changes:
      bugfixes:
      - Exclude internal options from man pages and docs.
      - Fix ``ansible-config init`` man page option indentation.
      - The ``ansible-config init`` command now has a documentation description.
      - The ``ansible-galaxy collection download`` command now has a documentation
        description.
      - The ``ansible-galaxy collection install`` command documentation is now visible
        (previously hidden by a decorator).
      - The ``ansible-galaxy collection verify`` command now has a documentation description.
      - The ``ansible-galaxy role install`` command documentation is now visible (previously
        hidden by a decorator).
      - The ``ansible-inventory`` command command now has a documentation description
        (previously used as the epilog).
      - Update module_utils.urls unit test to work with cryptography >= 41.0.0.
      - When generating man pages, use ``func`` to find the command function instead
        of looking it up by the command name.
      - '``ansible-galaxy`` now considers all collection paths when identifying which
        collection requirements are already installed. Use the ``COLLECTIONS_PATHS``
        and ``COLLECTIONS_SCAN_SYS_PATHS`` config options to modify these. Previously
        only the install path was considered when resolving the candidates. The install
        path will remain the only one potentially modified. (https://github.com/ansible/ansible/issues/79767,
        https://github.com/ansible/ansible/issues/81163)'
      - ansible-test - Fix several possible tracebacks when using the ``-e`` option
        with sanity tests.
      - ansible-test - Pre-build a PyYAML wheel before installing requirements to
        avoid a potential Cython build failure.
      - ansible-test - Remove redundant warning about missing programs before attempting
        to execute them.
      - core will now also look at the connection plugin to force 'local' interpreter
        for networking path compatibility as just ansible_network_os could be misleading.
      - man page build - Sub commands of ``ansible-galaxy role`` and ``ansible-galaxy
        collection`` are now documented.
      - password_hash - fix salt format for ``crypt``  (only used if ``passlib`` is
        not installed) for the ``bcrypt`` algorithm.
      - urls.py - fixed cert_file and key_file parameters when running on Python 3.12
        - https://github.com/ansible/ansible/issues/80490
      minor_changes:
      - Removed ``exclude`` and ``recursive-exclude`` commands for generated files
        from the ``MANIFEST.in`` file. These excludes were unnecessary since releases
        are expected to be built with a clean worktree.
      - Removed ``exclude`` commands for sanity test files from the ``MANIFEST.in``
        file. These tests were previously excluded because they did not pass when
        run from an sdist. However, sanity tests are not expected to pass from an
        sdist, so excluding some (but not all) of the failing tests makes little sense.
      - Removed redundant ``include`` commands from the ``MANIFEST.in`` file. These
        includes either duplicated default behavior or another command.
      - The ``ansible-core`` sdist no longer contains pre-generated man pages. Instead,
        a ``packaging/cli-doc/build.py`` script is included in the sdist. This script
        can generate man pages and standalone RST documentation for ``ansible-core``
        CLI programs.
      - The ``docs`` and ``examples`` directories are no longer included in the ``ansible-core``
        sdist. These directories have been moved to the https://github.com/ansible/ansible-documentation
        repository.
      - Use ``include`` where ``recursive-include`` is unnecessary in the ``MANIFEST.in``
        file.
      - ansible-test - Update the logic used to detect when ``ansible-test`` is running
        from source.
      - ansible-test - Updated the CloudStack test container to version 1.6.1.
      release_summary: '| Release Date: 2023-08-07

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.3rc1_summary.yaml
    - 81319-cloudstack-test-container-bump-version.yml
    - a-g-col-prevent-reinstalling-satisfied-req.yml
    - add-missing-cli-docs.yml
    - ansible-test-explain-traceback.yml
    - ansible-test-layout-detection.yml
    - ansible-test-pyyaml-build.yml
    - forced_local+fix+.yml
    - man-page-subcommands.yml
    - manifest-in-cleanup.yml
    - missing-doc-func.yml
    - omit-man-pages-from-sdist.yml
    - password_hash-fix-crypt-salt-bcrypt.yml
    - remove-docs-examples.yml
    - suppressed-options.yml
    - urls-client-cert-py12.yml
    - urls-unit-test-latest-cryptography.yml
    release_date: '2023-08-07'
  2.15.4:
    changes:
      release_summary: '| Release Date: 2023-09-11

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.4_summary.yaml
    release_date: '2023-09-11'
  2.15.4rc1:
    changes:
      bugfixes:
      - PowerShell - Remove some code which is no longer valid for dotnet 5+
      - Prompting - add a short sleep between polling for user input to reduce CPU
        consumption (https://github.com/ansible/ansible/issues/81516).
      - ansible-galaxy - Enabled the ``data`` tarfile filter during role installation
        for Python versions that support it. A probing mechanism is used to avoid
        Python versions with a broken implementation.
      - ansible-test - Always use ansible-test managed entry points for ansible-core
        CLI tools when not running from source. This fixes issues where CLI entry
        points created during install are not compatible with ansible-test.
      - first found lookup has been updated to use the normalized argument parsing
        (pythonic) matching the documented examples.
      - handlers - the ``listen`` keyword can affect only one handler with the same
        name, the last one defined as it is a case with the ``notify`` keyword (https://github.com/ansible/ansible/issues/81013)
      - include_role - expose variables from parent roles to role's handlers (https://github.com/ansible/ansible/issues/80459)
      - tarfile - handle data filter deprecation warning message for extract and extractall
        (https://github.com/ansible/ansible/issues/80832).
      - vault and unvault filters now properly take ``vault_id`` parameter.
      deprecated_features:
      - vault and unfault filters - the undocumented ``vaultid`` parameter is deprecated
        and will be removed in ansible-core 2.20. Use ``vault_id`` instead.
      release_summary: '| Release Date: 2023-09-05

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.4rc1_summary.yaml
    - 80459-handlers-nested-includes-vars.yml
    - 81013-handlers-listen-last-defined-only.yml
    - ansible-test-entry-points.yml
    - dotnet-preparation.yml
    - first_found_fixes.yml
    - fix-display-prompt-cpu-consumption.yml
    - tarfile_extract_warn.yml
    - vault_unvault_id_fix.yml
    release_date: '2023-09-05'
  2.15.5:
    changes:
      release_summary: '| Release Date: 2023-10-09

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.5_summary.yaml
    release_date: '2023-10-09'
  2.15.5rc1:
    changes:
      bugfixes:
      - Allow for searching handler subdir for included task via include_role (https://github.com/ansible/ansible/issues/81722)
      - PluginLoader - fix Jinja plugin performance issues (https://github.com/ansible/ansible/issues/79652)
      - '``ansible.module_utils.service`` - ensure binary data transmission in ``daemonize()``'
      - '``ansible.module_utils.service`` - fix inter-process communication in ``daemonize()``'
      - 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.
      - role deduplication - don't deduplicate before a role has had a task run for
        that particular host (https://github.com/ansible/ansible/issues/81486).
      - uri/urls - Add compat function to handle the ability to parse the filename
        from a Content-Disposition header (https://github.com/ansible/ansible/issues/81806)
      - winrm - Better handle send input failures when communicating with hosts under
        load
      minor_changes:
      - ansible-galaxy dependency resolution messages have changed the unexplained
        'virtual' collection for the specific type ('scm', 'dir', etc) that is more
        user friendly
      release_summary: '| Release Date: 2023-10-03

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
      security_fixes:
      - ansible-galaxy - Prevent roles from using symlinks to overwrite files outside
        of the installation directory (CVE-2023-5115)
    codename: Ten Years Gone
    fragments:
    - 2.15.5rc1_summary.yaml
    - 81064-daemonize-fixes.yml
    - 81584-daemonize-follow-up-fixes.yml
    - 81606-ansible-galaxy-collection-pre-releases.yml
    - 81722-handler-subdir-include_tasks.yml
    - 81806-py2-content-disposition.yml
    - cve-2023-5115.yml
    - fix-ansible-galaxy-info-no-role-found.yml
    - galaxy_dep_res_msgs.yml
    - jinja_plugin_cache_cleanup.yml
    - role-deduplication-condition.yml
    - winrm-send-input.yml
    release_date: '2023-10-03'
  2.15.6:
    changes:
      release_summary: '| Release Date: 2023-11-06

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.6_summary.yaml
    release_date: '2023-11-06'
  2.15.6rc1:
    changes:
      bugfixes:
      - Fix ``run_once`` being incorrectly interpreted on handlers (https://github.com/ansible/ansible/issues/81666)
      - 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)
      - Restoring the ability of filters/tests can have same file base name but different
        tests/filters defined inside.
      - '``import_role`` reverts to previous behavior of exporting vars at compile
        time.'
      - ansible-galaxy - Provide a better error message when using a requirements
        file with an invalid format - https://github.com/ansible/ansible/issues/81901
      - ansible-inventory - index available_hosts for major performance boost when
        dumping large inventories
      - ansible-test - Fix parsing of cgroup entries which contain a ``:`` in the
        path (https://github.com/ansible/ansible/issues/81977).
      minor_changes:
      - ansible-test - Windows 2012 and 2012-R2 instances are now requested from Azure
        instead of AWS.
      release_summary: '| Release Date: 2023-10-30

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
    codename: Ten Years Gone
    fragments:
    - 2.15.6rc1_summary.yaml
    - 81053-templated-tags-inheritance.yml
    - 81666-handlers-run_once.yml
    - 81901-galaxy-requirements-format.yml
    - ansible-test-cgroup-split.yml
    - ansible-test-windows-2012-and-2012-R2.yml
    - import_role_goes_public.yml
    - inv_available_hosts_to_frozenset.yml
    - j2_load_fix.yml
    release_date: '2023-10-30'
  2.15.7rc1:
    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:
      - ansible-pull now will expand relative paths for the ``-d|--directory`` option
        is now expanded before use.
      - flush_handlers - properly handle a handler failure in a nested block when
        ``force_handlers`` is set (http://github.com/ansible/ansible/issues/81532)
      - 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').
      - modules/user.py - Add check for valid directory when creating new user homedir
        (allows /dev/null as skeleton) (https://github.com/ansible/ansible/issues/75063)
      - role params now have higher precedence than host facts again, matching documentation,
        this had unintentionally changed in 2.15.
      - wait_for should not handle 'non mmapable files' again.
      release_summary: '| Release Date: 2023-11-27

        | `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__

        '
      security_fixes:
      - templating - Address issues where internal templating can cause unsafe variables
        to lose their unsafe designation (CVE-2023-5764)
    codename: Ten Years Gone
    fragments:
    - 2.15.7rc1_summary.yaml
    - 75063-allow-dev-nul-as-skeleton-for-new-homedir.yml
    - 81532-fix-nested-flush_handlers.yml
    - cve-2023-5764.yml
    - no_log_booly.yml
    - pull_unfrack_dest.yml
    - restore_role_param_precedence.yml
    - wait_for_mmap.yml
    release_date: '2023-11-27'
