Merge branch 'devel' into devel

pull/80678/head
Ivan Grushin 4 weeks ago committed by GitHub
commit 56f69e41cb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -31,7 +31,7 @@ variables:
- name: fetchDepth - name: fetchDepth
value: 500 value: 500
- name: defaultContainer - name: defaultContainer
value: quay.io/ansible/azure-pipelines-test-container:3.0.0 value: quay.io/ansible/azure-pipelines-test-container:6.0.0
pool: Standard pool: Standard
@ -46,9 +46,6 @@ stages:
targets: targets:
- test: 1 - test: 1
- test: 2 - test: 2
- test: 3
- test: 4
- test: 5
- stage: Units - stage: Units
dependsOn: [] dependsOn: []
jobs: jobs:
@ -57,14 +54,12 @@ stages:
nameFormat: Python {0} nameFormat: Python {0}
testFormat: units/{0} testFormat: units/{0}
targets: targets:
- test: 2.7
- test: 3.5
- test: 3.6
- test: 3.7
- test: 3.8 - test: 3.8
- test: 3.9 - test: 3.9
- test: '3.10' - test: '3.10'
- test: 3.11 - test: 3.11
- test: 3.12
- test: 3.13
- stage: Windows - stage: Windows
dependsOn: [] dependsOn: []
jobs: jobs:
@ -73,45 +68,46 @@ stages:
nameFormat: Server {0} nameFormat: Server {0}
testFormat: windows/{0}/1 testFormat: windows/{0}/1
targets: targets:
- test: 2012 - name: 2016 WinRM HTTP
- test: 2012-R2 test: 2016/winrm/http
- test: 2016 - name: 2019 WinRM HTTPS
- test: 2019 test: 2019/winrm/https
- test: 2022 - name: 2022 WinRM HTTPS
test: 2022/winrm/https
- name: 2022 PSRP HTTP
test: 2022/psrp/http
- name: 2022 SSH Key
test: 2022/ssh/key
- stage: Remote - stage: Remote
dependsOn: [] dependsOn: []
jobs: jobs:
- template: templates/matrix.yml # context/target - template: templates/matrix.yml # context/target
parameters: parameters:
targets: targets:
- name: macOS 13.2 - name: macOS 14.3
test: macos/13.2 test: macos/14.3
- name: RHEL 7.9 - name: RHEL 9.4 py39
test: rhel/7.9 test: rhel/9.4@3.9
- name: RHEL 8.7 py36 - name: RHEL 9.4 py312
test: rhel/8.7@3.6 test: rhel/9.4@3.12
- name: RHEL 8.7 py39 - name: FreeBSD 13.3
test: rhel/8.7@3.9 test: freebsd/13.3
- name: RHEL 9.1 - name: FreeBSD 14.1
test: rhel/9.1 test: freebsd/14.1
- name: FreeBSD 12.4
test: freebsd/12.4
- name: FreeBSD 13.1
test: freebsd/13.1
groups: groups:
- 1 - 1
- 2 - 2
- template: templates/matrix.yml # context/controller - template: templates/matrix.yml # context/controller
parameters: parameters:
targets: targets:
- name: macOS 13.2 - name: macOS 14.3
test: macos/13.2 test: macos/14.3
- name: RHEL 8.7 - name: RHEL 9.4
test: rhel/8.7 test: rhel/9.4
- name: RHEL 9.1 - name: FreeBSD 13.3
test: rhel/9.1 test: freebsd/13.3
- name: FreeBSD 13.1 - name: FreeBSD 14.1
test: freebsd/13.1 test: freebsd/14.1
groups: groups:
- 3 - 3
- 4 - 4
@ -119,52 +115,44 @@ stages:
- template: templates/matrix.yml # context/controller (ansible-test container management) - template: templates/matrix.yml # context/controller (ansible-test container management)
parameters: parameters:
targets: targets:
- name: Alpine 3.17 - name: Alpine 3.20
test: alpine/3.17 test: alpine/3.20
- name: Fedora 37 - name: Fedora 40
test: fedora/37 test: fedora/40
- name: RHEL 8.7 - name: RHEL 9.4
test: rhel/8.7 test: rhel/9.4
- name: RHEL 9.1 - name: Ubuntu 24.04
test: rhel/9.1 test: ubuntu/24.04
- name: Ubuntu 20.04
test: ubuntu/20.04
- name: Ubuntu 22.04
test: ubuntu/22.04
groups: groups:
- 6 - 6
- stage: Docker - stage: Docker
dependsOn: [] dependsOn: []
jobs: jobs:
- template: templates/matrix.yml - template: templates/matrix.yml # context/target
parameters: parameters:
testFormat: linux/{0} testFormat: linux/{0}
targets: targets:
- name: Alpine 3 - name: Alpine 3.20
test: alpine3 test: alpine320
- name: CentOS 7 - name: Fedora 40
test: centos7 test: fedora40
- name: Fedora 37
test: fedora37
- name: openSUSE 15
test: opensuse15
- name: Ubuntu 20.04
test: ubuntu2004
- name: Ubuntu 22.04 - name: Ubuntu 22.04
test: ubuntu2204 test: ubuntu2204
- name: Ubuntu 24.04
test: ubuntu2404
groups: groups:
- 1 - 1
- 2 - 2
- template: templates/matrix.yml - template: templates/matrix.yml # context/controller
parameters: parameters:
testFormat: linux/{0} testFormat: linux/{0}
targets: targets:
- name: Alpine 3 - name: Alpine 3.20
test: alpine3 test: alpine320
- name: Fedora 37 - name: Fedora 40
test: fedora37 test: fedora40
- name: Ubuntu 22.04 - name: Ubuntu 24.04
test: ubuntu2204 test: ubuntu2404
groups: groups:
- 3 - 3
- 4 - 4
@ -177,9 +165,9 @@ stages:
nameFormat: Python {0} nameFormat: Python {0}
testFormat: galaxy/{0}/1 testFormat: galaxy/{0}/1
targets: targets:
- test: 3.9
- test: '3.10'
- test: 3.11 - test: 3.11
- test: 3.12
- test: 3.13
- stage: Generic - stage: Generic
dependsOn: [] dependsOn: []
jobs: jobs:
@ -188,9 +176,9 @@ stages:
nameFormat: Python {0} nameFormat: Python {0}
testFormat: generic/{0}/1 testFormat: generic/{0}/1
targets: targets:
- test: 3.9
- test: '3.10'
- test: 3.11 - test: 3.11
- test: 3.12
- test: 3.13
- stage: Incidental_Windows - stage: Incidental_Windows
displayName: Incidental Windows displayName: Incidental Windows
dependsOn: [] dependsOn: []
@ -200,11 +188,16 @@ stages:
nameFormat: Server {0} nameFormat: Server {0}
testFormat: i/windows/{0} testFormat: i/windows/{0}
targets: targets:
- test: 2012 - name: 2016 WinRM HTTP
- test: 2012-R2 test: 2016/winrm/http
- test: 2016 - name: 2019 WinRM HTTPS
- test: 2019 test: 2019/winrm/https
- test: 2022 - name: 2022 WinRM HTTPS
test: 2022/winrm/https
- name: 2022 PSRP HTTP
test: 2022/psrp/http
- name: 2022 SSH Key
test: 2022/ssh/key
- stage: Incidental - stage: Incidental
dependsOn: [] dependsOn: []
jobs: jobs:
@ -214,8 +207,6 @@ stages:
targets: targets:
- name: IOS Python - name: IOS Python
test: ios/csr1000v/ test: ios/csr1000v/
- name: VyOS Python
test: vyos/1.1.8/
- stage: Summary - stage: Summary
condition: succeededOrFailed() condition: succeededOrFailed()
dependsOn: dependsOn:

@ -6,6 +6,8 @@ declare -a args
IFS='/:' read -ra args <<< "$1" IFS='/:' read -ra args <<< "$1"
version="${args[1]}" version="${args[1]}"
connection="${args[2]}"
connection_setting="${args[3]}"
target="shippable/windows/incidental/" target="shippable/windows/incidental/"
@ -16,7 +18,7 @@ provider="${P:-default}"
python_default="$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(constants.CONTROLLER_MIN_PYTHON_VERSION)')" python_default="$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(constants.CONTROLLER_MIN_PYTHON_VERSION)')"
# version to test when only testing a single version # version to test when only testing a single version
single_version=2012-R2 single_version=2022
# shellcheck disable=SC2086 # shellcheck disable=SC2086
ansible-test windows-integration --list-targets -v ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} > /tmp/explain.txt 2>&1 || { cat /tmp/explain.txt && false; } ansible-test windows-integration --list-targets -v ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} > /tmp/explain.txt 2>&1 || { cat /tmp/explain.txt && false; }
@ -26,11 +28,7 @@ if [ -s /tmp/windows.txt ] || [ "${CHANGED:+$CHANGED}" == "" ]; then
echo "Detected changes requiring integration tests specific to Windows:" echo "Detected changes requiring integration tests specific to Windows:"
cat /tmp/windows.txt cat /tmp/windows.txt
echo "Running Windows integration tests for multiple versions concurrently." echo "Running Windows integration tests for the version ${version}."
platforms=(
--windows "${version}"
)
else else
echo "No changes requiring integration tests specific to Windows were detected." echo "No changes requiring integration tests specific to Windows were detected."
echo "Running Windows integration tests for a single version only: ${single_version}" echo "Running Windows integration tests for a single version only: ${single_version}"
@ -39,14 +37,10 @@ else
echo "Skipping this job since it is for: ${version}" echo "Skipping this job since it is for: ${version}"
exit 0 exit 0
fi fi
platforms=(
--windows "${version}"
)
fi fi
# shellcheck disable=SC2086 # shellcheck disable=SC2086
ansible-test windows-integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \ ansible-test windows-integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
"${platforms[@]}" \ --controller "docker:default,python=${python_default}" \
--docker default --python "${python_default}" \ --target "remote:windows/${version},connection=${connection}+${connection_setting},provider=${provider}" \
--remote-terminate always --remote-stage "${stage}" --remote-provider "${provider}" --remote-terminate always --remote-stage "${stage}"

@ -7,12 +7,32 @@ IFS='/:' read -ra args <<< "$1"
group="${args[1]}" group="${args[1]}"
group2_include=(
ansible-doc
changelog
package-data
pep8
pylint
validate-modules
)
group1_exclude=(
"${group2_include[@]}"
)
options=()
case "${group}" in case "${group}" in
1) options=(--skip-test pylint --skip-test ansible-doc --skip-test docs-build --skip-test package-data --skip-test changelog --skip-test validate-modules) ;; 1)
2) options=( --test ansible-doc --test docs-build --test package-data --test changelog) ;; for name in "${group1_exclude[@]}"; do
3) options=(--test pylint --exclude test/units/ --exclude lib/ansible/module_utils/) ;; options+=(--skip-test "${name}")
4) options=(--test pylint test/units/ lib/ansible/module_utils/) ;; done
5) options=( --test validate-modules) ;; ;;
2)
for name in "${group2_include[@]}"; do
options+=(--test "${name}")
done
;;
esac esac
# shellcheck disable=SC2086 # shellcheck disable=SC2086

@ -6,7 +6,9 @@ declare -a args
IFS='/:' read -ra args <<< "$1" IFS='/:' read -ra args <<< "$1"
version="${args[1]}" version="${args[1]}"
group="${args[2]}" connection="${args[2]}"
connection_setting="${args[3]}"
group="${args[4]}"
target="shippable/windows/group${group}/" target="shippable/windows/group${group}/"
@ -21,7 +23,7 @@ IFS=' ' read -r -a python_versions <<< \
python_default="$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(constants.CONTROLLER_MIN_PYTHON_VERSION)')" python_default="$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(constants.CONTROLLER_MIN_PYTHON_VERSION)')"
# version to test when only testing a single version # version to test when only testing a single version
single_version=2012-R2 single_version=2022
# shellcheck disable=SC2086 # shellcheck disable=SC2086
ansible-test windows-integration --list-targets -v ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} > /tmp/explain.txt 2>&1 || { cat /tmp/explain.txt && false; } ansible-test windows-integration --list-targets -v ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} > /tmp/explain.txt 2>&1 || { cat /tmp/explain.txt && false; }
@ -31,11 +33,7 @@ if [ -s /tmp/windows.txt ] || [ "${CHANGED:+$CHANGED}" == "" ]; then
echo "Detected changes requiring integration tests specific to Windows:" echo "Detected changes requiring integration tests specific to Windows:"
cat /tmp/windows.txt cat /tmp/windows.txt
echo "Running Windows integration tests for multiple versions concurrently." echo "Running Windows integration tests for the version ${version}."
platforms=(
--windows "${version}"
)
else else
echo "No changes requiring integration tests specific to Windows were detected." echo "No changes requiring integration tests specific to Windows were detected."
echo "Running Windows integration tests for a single version only: ${single_version}" echo "Running Windows integration tests for a single version only: ${single_version}"
@ -44,17 +42,13 @@ else
echo "Skipping this job since it is for: ${version}" echo "Skipping this job since it is for: ${version}"
exit 0 exit 0
fi fi
platforms=(
--windows "${version}"
)
fi fi
for version in "${python_versions[@]}"; do for py_version in "${python_versions[@]}"; do
changed_all_target="all" changed_all_target="all"
changed_all_mode="default" changed_all_mode="default"
if [ "${version}" == "${python_default}" ]; then if [ "${py_version}" == "${python_default}" ]; then
# smoketest tests # smoketest tests
if [ "${CHANGED}" ]; then if [ "${CHANGED}" ]; then
# with change detection enabled run tests for anything changed # with change detection enabled run tests for anything changed
@ -80,7 +74,7 @@ for version in "${python_versions[@]}"; do
fi fi
# terminate remote instances on the final python version tested # terminate remote instances on the final python version tested
if [ "${version}" = "${python_versions[-1]}" ]; then if [ "${py_version}" = "${python_versions[-1]}" ]; then
terminate="always" terminate="always"
else else
terminate="never" terminate="never"
@ -88,7 +82,8 @@ for version in "${python_versions[@]}"; do
# shellcheck disable=SC2086 # shellcheck disable=SC2086
ansible-test windows-integration --color -v --retry-on-error "${ci}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \ ansible-test windows-integration --color -v --retry-on-error "${ci}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
"${platforms[@]}" --changed-all-target "${changed_all_target}" --changed-all-mode "${changed_all_mode}" \ --changed-all-target "${changed_all_target}" --changed-all-mode "${changed_all_mode}" \
--docker default --python "${version}" \ --controller "docker:default,python=${py_version}" \
--remote-terminate "${terminate}" --remote-stage "${stage}" --remote-provider "${provider}" --target "remote:windows/${version},connection=${connection}+${connection_setting},provider=${provider}" \
--remote-terminate "${terminate}" --remote-stage "${stage}"
done done

@ -7,8 +7,7 @@ Keep in mind that Azure Pipelines does not enforce unique job display names (onl
It is up to pipeline authors to avoid name collisions when deviating from the recommended format. It is up to pipeline authors to avoid name collisions when deviating from the recommended format.
""" """
from __future__ import (absolute_import, division, print_function) from __future__ import annotations
__metaclass__ = type
import os import os
import re import re

@ -4,6 +4,7 @@ Upload code coverage reports to codecov.io.
Multiple coverage files from multiple languages are accepted and aggregated after upload. Multiple coverage files from multiple languages are accepted and aggregated after upload.
Python coverage, as well as PowerShell and Python stubs can all be uploaded. Python coverage, as well as PowerShell and Python stubs can all be uploaded.
""" """
from __future__ import annotations
import argparse import argparse
import dataclasses import dataclasses

@ -1,8 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
"""Prepends a relative timestamp to each input line from stdin and writes it to stdout.""" """Prepends a relative timestamp to each input line from stdin and writes it to stdout."""
from __future__ import (absolute_import, division, print_function) from __future__ import annotations
__metaclass__ = type
import sys import sys
import time import time

@ -2,3 +2,5 @@
# Bulk PowerShell sanity fixes # Bulk PowerShell sanity fixes
6def4a3180fe03981ba64c6d8db28fed3bb39c0c 6def4a3180fe03981ba64c6d8db28fed3bb39c0c
716631189cb5a3f66b3add98f39e64e98bc17bf7 716631189cb5a3f66b3add98f39e64e98bc17bf7
# Bulk update of strings from triple single quotes to triple double quotes
a0495fc31497798a7a833ba7406a9729e1528dd8

151
.github/BOTMETA.yml vendored

@ -1,151 +0,0 @@
automerge: false
collection_redirect: true
notifications: false
files:
$module_utils/csharp: &id001
labels: windows
maintainers: $team_windows_core
support: core
$module_utils/network:
labels: networking
$module_utils/network/common:
maintainers: $team_networking
support: network
$module_utils/powershell: *id001
$modules:
ignored: ryansb tomaszkiewicz
$modules/lineinfile.py: $team_ansible samdoran
$modules/stat.py:
ignored: bpennypacker
$modules/unarchive.py:
ignored: dagwieers
labels: m:unarchive
maintainers: pileofrogs
$modules/add_host.py:
ignored: skvidal
maintainers: $team_ansible
$modules/get_url.py: ptux
$modules/uri.py:
ignored: romeotheriault
maintainers: $team_ansible
$modules/pip.py: Lujeni webknjaz
$modules//yum.py:
ignored: skvidal
maintainers: $team_ansible kustodian
$modules/user.py: $team_ansible samdoran
$modules/pause.py: samdoran
$modules/wait_for.py: gregswift
$plugins/cliconf/:
labels: networking
$plugins/connection/psrp.py: *id001
$plugins/connection/winrm.py: *id001
$plugins/doc_fragments/url_windows.py:
labels: windows
maintainers: $team_windows_core
support: core
$plugins/httpapi:
labels: networking
maintainers: $team_networking
support: network
$plugins/netconf/:
labels: networking
maintainers: $team_networking
support: network
$plugins/shell/powershell.py: *id001
$plugins/terminal/:
labels: networking
$plugins/terminal/__init__.py:
support: network
.github/BOTMETA.yml:
labels: botmeta
support: core
docs/:
maintainers:
- acozine
docs/docsite/rst/community/:
maintainers:
- gundalow
docs/docsite/rst/dev_guide/:
maintainers:
- gundalow
docs/docsite/rst/network/:
labels: networking
maintainers:
- samccann
docs/docsite/rst/user_guide/windows: *id001
hacking/report.py:
notified: mattclay
hacking/shippable/:
notified: mattclay
lib/ansible/cli/scripts/ansible_connection_cli_stub.py:
keywords:
- persistent connection
labels: networking
lib/ansible/config/ansible_builtin_runtime.yml:
labels: runtime
maintainers: gundalow
lib/ansible/executor/powershell: *id001
lib/ansible/inventory:
keywords:
- core inventory
- inventory
- inventory parsing
lib/ansible/playbook/handler.py:
keywords:
- handlers
lib/ansible/playbook/role:
keywords:
- roles path
- roles_path
- role
- role path
lib/ansible/playbook/role/include.py:
keywords:
- include role
- include_role
- role include
lib/ansible/playbook/role/requirement.py:
keywords:
- role dependencies
- role dep
- role dependency
lib/ansible/release.py:
notified: mattclay nitzmahone
lib/ansible/template:
keywords:
- jinja
- jinja2
lib/ansible/utils/collection_loader.py:
notified: mattclay nitzmahone
test/integration/targets/incidental_:
notified: mattclay
test/lib/:
notified: mattclay
test/lib/ansible_test/_util/controller/sanity/validate-modules:
keywords:
- validate-modules
notified:
- mattclay
test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py:
notified:
- gundalow
- sivel
test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py:
notified:
- gundalow
- sivel
test/sanity/:
notified: mattclay
test/sanity/ignore.txt:
notified: tremble
test/support/:
notified: mattclay
test/utils/shippable/:
notified: mattclay
macros:
module_utils: lib/ansible/module_utils
modules: lib/ansible/modules
plugins: lib/ansible/plugins
team_ansible: []
team_networking: Qalthos ganeshrn trishnaguha justjais NilashishC danielmellado rohitthakur2590 GomathiselviS
team_windows_core: nitzmahone jborean93

@ -4,22 +4,75 @@ Hi! Nice to see you here!
## QUESTIONS ? ## QUESTIONS ?
Please see the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for information on how to ask questions on the [mailing lists](https://docs.ansible.com/ansible/latest/community/communication.html#mailing-list-information) and IRC. If you have questions about anything related to Ansible, get in touch with us!
See [Communicating with the Ansible community](https://docs.ansible.com/ansible/devel/community/communication.html) to find out how.
The GitHub issue tracker is not the best place for questions for various reasons, but both IRC and the mailing list are very helpful places for those things, as the community page explains best. The [Community Guide](https://docs.ansible.com/ansible/devel/community/index.html) also explains how to contribute
and interact with the project, including how to submit bug reports and code to Ansible.
Please note that the GitHub issue tracker is not the best place to ask questions for several reasons.
You'll get more helpful, and quicker, responses in the forum.
## CONTRIBUTING ? ## CONTRIBUTING ?
By contributing you agree that these contributions are your own (or approved by your employer) and you grant a full, complete, irrevocable copyright license to all users and developers of the project, present and future, pursuant to the license of the project. You can also read the same [CLA](https://docs.ansible.com/ansible/latest/community/contributor_license_agreement.html) on the Ansible docsite. By contributing to this project you agree to the [Developer Certificate of Origin (DCO)](#developer-certificate-of-origin-dco).
The Ansible project is licensed under the [GPL-3.0](COPYING) or later. Some portions of the code fall under other licenses as noted in individual files.
Please review the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for more information on contributing to Ansible. The Ansible project accepts contributions through GitHub pull requests.
Please review the [Community Guide](https://docs.ansible.com/ansible/devel/community/index.html) for more information on contributing to Ansible.
## BUG TO REPORT ? ## BUG TO REPORT ?
First and foremost, also check the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html). First and foremost, also check the [Community Guide](https://docs.ansible.com/ansible/devel/community/index.html).
You can report bugs or make enhancement requests at the [Ansible GitHub issue page](http://github.com/ansible/ansible/issues/new/choose) by filling out the issue template that will be presented. You can report bugs or make enhancement requests at
the [Ansible GitHub issue page](http://github.com/ansible/ansible/issues/new/choose) by filling out the issue template that will be presented.
Also please make sure you are testing on the latest released version of Ansible or the development branch; see the [Installation Guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) for details. Also please make sure you are testing on the latest released version of Ansible or the development branch.
See the [Installation Guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) for details.
Thanks! Thanks!
## DEVELOPER CERTIFICATE OF ORIGIN (DCO)
This document was created by the Linux Kernel community and is a simple statement that you, as a contributor, have the legal right to make the contribution.
```text
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```

@ -19,13 +19,14 @@ body:
Also test if the latest release and devel branch are affected too. Also test if the latest release and devel branch are affected too.
**Tip:** If you are seeking community support, please consider **Tip:** If you are seeking community support, please see
[starting a mailing list thread or chatting in IRC][ML||IRC]. [Communicating with the Ansible community][communication] to
get in touch and ask questions.
[ML||IRC]: [communication]:
https://docs.ansible.com/ansible-core/devel/community/communication.html?utm_medium=github&utm_source=issue_form--bug_report.yml#mailing-list-information https://docs.ansible.com/ansible/devel/community/communication.html
[issue search]: ../search?q=is%3Aissue&type=issues [issue search]: ../search?q=is%3Aissue&type=issues
@ -54,7 +55,7 @@ body:
<em>Why?</em> <em>Why?</em>
</summary> </summary>
We would do it by ourselves but unfortunatelly, the curent We would do it by ourselves but unfortunately, the current
edition of GitHub Issue Forms Alpha does not support this yet 🤷 edition of GitHub Issue Forms Alpha does not support this yet 🤷
@ -87,7 +88,7 @@ body:
[collections org]: /ansible-collections [collections org]: /ansible-collections
placeholder: dnf, apt, yum, pip, user etc. placeholder: dnf, apt, pip, user etc.
validations: validations:
required: true required: true
@ -249,7 +250,7 @@ body:
[ansibot help]: [ansibot help]:
/ansible/ansibullbot/blob/master/ISSUE_HELP.md#for-issue-submitters /ansible/ansibotmini#ansibotmini
- type: checkboxes - type: checkboxes
@ -258,7 +259,7 @@ body:
description: | description: |
Read the [Ansible Code of Conduct][CoC] first. Read the [Ansible Code of Conduct][CoC] first.
[CoC]: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--bug_report.yml [CoC]: https://docs.ansible.com/ansible/devel/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--bug_report.yml
options: options:
- label: I agree to follow the Ansible Code of Conduct - label: I agree to follow the Ansible Code of Conduct
required: true required: true

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

@ -22,18 +22,46 @@ body:
Also test if the latest release and devel branch are affected too. Also test if the latest release and devel branch are affected too.
**Tip:** If you are seeking community support, please consider **Tip:** If you are seeking community support, please see
[starting a mailing list thread or chatting in IRC][ML||IRC]. [Communicating with the Ansible community][communication] to
get in touch and ask questions.
[ML||IRC]:
https://docs.ansible.com/ansible-core/devel/community/communication.html?utm_medium=github&utm_source=issue_form--documentation_report.yml#mailing-list-information [communication]:
https://docs.ansible.com/ansible/devel/community/communication.html
[issue search]: ../search?q=is%3Aissue&type=issues [issue search]: ../search?q=is%3Aissue&type=issues
[submit a pull request]: [submit a pull request]:
https://docs.ansible.com/ansible-core/devel/community/documentation_contributions.html https://docs.ansible.com/ansible-core/devel/community/documentation_contributions.html
- type: markdown
attributes:
value: >
**Check the repository for your issue.**
Source files for Ansible community documentation are
hosted in different repositories. Please make sure to file an
issue in the correct project.
Documentation for modules/plugins/etc that are officially
supported by the Ansible Core Engineering team is available
in this (`ansible/ansible`) repository.
The Installation Guide, Playbook Guide, Developer Guide,
and other documentation is available in the
[ansible/ansible-documentation] repository.
Documentation for other modules/plugins/etc is likely to be
available in one of the [Ansible Collections][collections index].
If available in the collection documentation, select the
**Issue Tracker** button to go directly to the GitHub issues.
[ansible/ansible-documentation]: /ansible/ansible-documentation
[collections index]:
https://docs.ansible.com/ansible/latest/collections/index.html
- type: textarea - type: textarea
attributes: attributes:
@ -64,9 +92,6 @@ body:
<em>Why?</em> <em>Why?</em>
</summary> </summary>
We would do it by ourselves but unfortunatelly, the curent
edition of GitHub Issue Forms Alpha does not support this yet 🤷
_We will make it easier in the future, once GitHub _We will make it easier in the future, once GitHub
supports dropdown defaults. Promise!_ supports dropdown defaults. Promise!_
@ -85,19 +110,7 @@ body:
Write the short name of the rst file, module, plugin, task or Write the short name of the rst file, module, plugin, task or
feature below, *use your best guess if unsure*. feature below, *use your best guess if unsure*.
placeholder: lib/ansible/modules/copy.py
**Tip:** Be advised that the source for some parts of the
documentation are hosted outside of this repository. If the page
you are reporting describes modules/plugins/etc that are not
officially supported by the Ansible Core Engineering team, there
is a good chance that it is coming from one of the [Ansible
Collections maintained by the community][collections org]. If this
is the case, please make sure to file an issue under the
appropriate project there instead.
[collections org]: /ansible-collections
placeholder: docs/docsite/rst/dev_guide/debugging.rst
validations: validations:
required: true required: true
@ -185,7 +198,7 @@ body:
[ansibot help]: [ansibot help]:
/ansible/ansibullbot/blob/master/ISSUE_HELP.md#for-issue-submitters /ansible/ansibotmini#ansibotmini
- type: checkboxes - type: checkboxes
@ -194,7 +207,7 @@ body:
description: | description: |
Read the [Ansible Code of Conduct][CoC] first. Read the [Ansible Code of Conduct][CoC] first.
[CoC]: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--documentation_report.yml [CoC]: https://docs.ansible.com/ansible/devel/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--documentation_report.yml
options: options:
- label: I agree to follow the Ansible Code of Conduct - label: I agree to follow the Ansible Code of Conduct
required: true required: true

@ -21,8 +21,7 @@ body:
If unsure, consider filing a [new proposal] instead outlining your If unsure, consider filing a [new proposal] instead outlining your
use-cases, the research and implementation considerations. Then, use-cases, the research and implementation considerations. Then,
start a discussion on one of the public [IRC meetings] we have just start a discussion in the [Ansible forum][forum].
for this.
<details> <details>
@ -44,21 +43,22 @@ body:
Also test if the devel branch does not already implement this. Also test if the devel branch does not already implement this.
**Tip:** If you are seeking community support, please consider **Tip:** If you are seeking community support, please see
[starting a mailing list thread or chatting in IRC][ML||IRC]. [Communicating with the Ansible community][communication] to
get in touch and ask questions.
[contribute to collections]: [contribute to collections]:
https://docs.ansible.com/ansible-core/devel/community/contributing_maintained_collections.html?utm_medium=github&utm_source=issue_form--feature_request.yml https://docs.ansible.com/ansible-core/devel/community/contributing_maintained_collections.html?utm_medium=github&utm_source=issue_form--feature_request.yml
[IRC meetings]: [communication]:
https://docs.ansible.com/ansible-core/devel/community/communication.html?utm_medium=github&utm_source=issue_form--feature_request.yml#irc-meetings https://docs.ansible.com/ansible/devel/community/communication.html
[issue search]: ../search?q=is%3Aissue&type=issues [issue search]: ../search?q=is%3Aissue&type=issues
[ML||IRC]: [forum help]:
https://docs.ansible.com/ansible-core/devel/community/communication.html?utm_medium=github&utm_source=issue_form--feature_request.yml#mailing-list-information https://forum.ansible.com/c/help/6
[new proposal]: ../../proposals/issues/new [new proposal]: ../../proposals/issues/new
@ -109,7 +109,7 @@ body:
<em>Why?</em> <em>Why?</em>
</summary> </summary>
We would do it by ourselves but unfortunatelly, the curent We would do it by ourselves but unfortunately, the current
edition of GitHub Issue Forms Alpha does not support this yet 🤷 edition of GitHub Issue Forms Alpha does not support this yet 🤷
@ -139,7 +139,7 @@ body:
[collections org]: /ansible-collections [collections org]: /ansible-collections
placeholder: dnf, apt, yum, pip, user etc. placeholder: dnf, apt, pip, user etc.
validations: validations:
required: true required: true
@ -176,7 +176,7 @@ body:
[ansibot help]: [ansibot help]:
/ansible/ansibullbot/blob/master/ISSUE_HELP.md#for-issue-submitters /ansible/ansibotmini#ansibotmini
- type: checkboxes - type: checkboxes
@ -185,7 +185,7 @@ body:
description: | description: |
Read the [Ansible Code of Conduct][CoC] first. Read the [Ansible Code of Conduct][CoC] first.
[CoC]: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--feature_request.yml [CoC]: https://docs.ansible.com/ansible/devel/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--feature_request.yml
options: options:
- label: I agree to follow the Ansible Code of Conduct - label: I agree to follow the Ansible Code of Conduct
required: true required: true

@ -1,23 +0,0 @@
##### SUMMARY
<!--- Describe the change below, including rationale and design decisions -->
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
##### ISSUE TYPE
<!--- Pick one below and delete the rest -->
- Bugfix Pull Request
- Docs Pull Request
- Feature Pull Request
- Test Pull Request
##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below -->
##### ADDITIONAL INFORMATION
<!--- Include additional information to help people understand the change here -->
<!--- A step-by-step reproduction of the problem is helpful if there is no related issue -->
<!--- Paste verbatim command output below, e.g. before and after your change -->
```paste below
```

@ -0,0 +1 @@
PULL_REQUEST_TEMPLATE/Unclear purpose or motivation.md

@ -0,0 +1,20 @@
##### SUMMARY
<!--- Describe the change below, including rationale and design decisions -->
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
##### ISSUE TYPE
- Bugfix Pull Request
##### ADDITIONAL INFORMATION
<!--- Include additional information to help people understand the change here -->
<!--- A step-by-step reproduction of the problem is helpful if there is no related issue -->
<!--- Paste verbatim command output below, e.g. before and after your change -->
```paste below
```

@ -0,0 +1,19 @@
##### SUMMARY
<!--- Describe the change below, including rationale -->
<!--- HINT: Include "Closes #nnn" if you are fixing an existing issue -->
##### ISSUE TYPE
- Docs Pull Request
##### ADDITIONAL INFORMATION
<!--- Include additional information to help people understand the change here -->
<!--- Paste verbatim command output below, e.g. before and after your change -->
```paste below
```

@ -0,0 +1,19 @@
##### SUMMARY
<!--- Describe the change below, including rationale and design decisions -->
<!--- HINT: Include "Resolves #nnn" if you are fixing an existing issue -->
##### ISSUE TYPE
- Feature Pull Request
##### ADDITIONAL INFORMATION
<!--- Include additional information to help people understand the change here -->
<!--- Paste verbatim command output below, e.g. before and after your change -->
```paste below
```

@ -0,0 +1 @@
Unclear purpose or motivation.md

@ -0,0 +1,20 @@
##### SUMMARY
<!--- Describe the change below, including rationale and design decisions -->
<!--- HINT: Include "Closes #nnn" if you are fixing an existing issue -->
##### ISSUE TYPE
- Test Pull Request
##### ADDITIONAL INFORMATION
<!--- Include additional information to help people understand the change here -->
<!--- A step-by-step reproduction of the problem is helpful if there is no related issue -->
<!--- Paste verbatim command output below, e.g. before and after your change -->
```paste below
```

@ -0,0 +1,25 @@
##### SUMMARY
<!--- Describe the change below, including rationale and design decisions -->
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
##### ISSUE TYPE
<!--- Pick one below and delete the rest -->
- Bugfix Pull Request
- Docs Pull Request
- Feature Pull Request
- Test Pull Request
##### ADDITIONAL INFORMATION
<!--- Include additional information to help people understand the change here -->
<!--- A step-by-step reproduction of the problem is helpful if there is no related issue -->
<!--- Paste verbatim command output below, e.g. before and after your change -->
```paste below
```

@ -0,0 +1,20 @@
2.19.0 What Is and What Should Never Be
2.18.0 Fool in the Rain
2.17.0 Gallows Pole
2.16.0 All My Love
2.15.0 Ten Years Gone
2.14.0 C'mon Everybody
2.13.0 Nobody's Fault but Mine
2.12.0 Dazed and Confused
2.11.0 Hey Hey, What Can I Do
2.10.0 When the Levee Breaks
2.9.0 Immigrant Song
2.8.0 How Many More Times
2.7.0 In the Light
2.6.0 Heartbreaker
2.5.0 Kashmir
2.4.0 Dancing Days
2.3.0 Ramble On
2.2.0 The Battle of Evermore
2.1.0 The Song Remains the Same
2.0.0 Over the Hills and Far Away

@ -1,18 +0,0 @@
---
- 2.16.0 All My Love
- 2.15.0 Ten Years Gone
- 2.14.0 C'mon Everybody
- 2.13.0 Nobody's Fault but Mine
- 2.12.0 Dazed and Confused
- 2.11.0 Hey Hey, What Can I Do
- 2.10.0 When the Levee Breaks
- 2.9.0 Immigrant Song
- 2.8.0 How Many More Times
- 2.7.0 In the Light
- 2.6.0 Heartbreaker
- 2.5.0 Kashmir
- 2.4.0 Dancing Days
- 2.3.0 Ramble On
- 2.2.0 The Battle of Evermore
- 2.1.0 The Song Remains the Same
- 2.0.0 Over the Hills and Far Away

4
.gitignore vendored

@ -92,6 +92,8 @@ Vagrantfile
/lib/ansible_base.egg-info/ /lib/ansible_base.egg-info/
# First used in the `devel` branch during Ansible 2.11 development. # First used in the `devel` branch during Ansible 2.11 development.
/lib/ansible_core.egg-info/ /lib/ansible_core.egg-info/
# First used in the `devel` branch during Ansible 2.18 development.
/ansible_core.egg-info/
# vendored lib dir # vendored lib dir
lib/ansible/_vendor/* lib/ansible/_vendor/*
!lib/ansible/_vendor/__init__.py !lib/ansible/_vendor/__init__.py
@ -99,8 +101,6 @@ lib/ansible/_vendor/*
/test/integration/cloud-config-*.* /test/integration/cloud-config-*.*
!/test/integration/cloud-config-*.*.template !/test/integration/cloud-config-*.*.template
.python-version .python-version
/hacking/tests/selinux/*.mod
/hacking/tests/selinux/*.pp
# Release directory # Release directory
packaging/release/ansible_release packaging/release/ansible_release
/.cache/ /.cache/

@ -1,37 +1,10 @@
include README.rst
include COPYING include COPYING
include changelogs/CHANGELOG*.rst
include changelogs/changelog.yaml
include licenses/*.txt
include requirements.txt include requirements.txt
recursive-include docs * recursive-include packaging *.py *.j2
include docs/docsite/rst/collections/all_plugins.rst
exclude docs/docsite/rst_warnings
exclude docs/docsite/rst/conf.py
exclude docs/docsite/rst/index.rst
exclude docs/docsite/rst/dev_guide/index.rst
exclude docs/docsite/rst/dev_guide/testing/sanity/bin-symlinks.rst
exclude docs/docsite/rst/dev_guide/testing/sanity/botmeta.rst
exclude docs/docsite/rst/dev_guide/testing/sanity/integration-aliases.rst
exclude docs/docsite/rst/dev_guide/testing/sanity/release-names.rst
recursive-exclude docs/docsite/_build *
recursive-exclude docs/docsite/_extensions *.pyc *.pyo
include examples/hosts
include examples/ansible.cfg
include examples/scripts/ConfigureRemotingForAnsible.ps1
include examples/scripts/upgrade_to_ps3.ps1
recursive-include licenses *.txt
recursive-include packaging *.py
recursive-include test/integration * recursive-include test/integration *
recursive-include test/sanity *.in *.json *.py *.txt recursive-include test/sanity *.in *.json *.py *.txt *.ini
recursive-include test/support *.py *.ps1 *.psm1 *.cs *.md recursive-include test/support *.py *.ps1 *.psm1 *.cs *.md
exclude test/sanity/code-smell/botmeta.*
exclude test/sanity/code-smell/release-names.*
exclude test/lib/ansible_test/_internal/commands/sanity/bin_symlinks.py
exclude test/lib/ansible_test/_internal/commands/sanity/integration_aliases.py
recursive-include test/units * recursive-include test/units *
include MANIFEST.in
include changelogs/CHANGELOG*.rst
include changelogs/changelog.yaml
recursive-include hacking/build_library *.py
include hacking/build-ansible.py
include hacking/test-module.py
include hacking/update-sanity-requirements.py
include bin/*

@ -0,0 +1,101 @@
[![PyPI version](https://img.shields.io/pypi/v/ansible-core.svg)](https://pypi.org/project/ansible-core)
[![Docs badge](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://docs.ansible.com/ansible/latest/)
[![Chat badge](https://img.shields.io/badge/chat-IRC-brightgreen.svg)](https://docs.ansible.com/ansible/devel/community/communication.html)
[![Build Status](https://dev.azure.com/ansible/ansible/_apis/build/status/CI?branchName=devel)](https://dev.azure.com/ansible/ansible/_build/latest?definitionId=20&branchName=devel)
[![Ansible Code of Conduct](https://img.shields.io/badge/code%20of%20conduct-Ansible-silver.svg)](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html)
[![Ansible mailing lists](https://img.shields.io/badge/mailing%20lists-Ansible-orange.svg)](https://docs.ansible.com/ansible/devel/community/communication.html#mailing-list-information)
[![Repository License](https://img.shields.io/badge/license-GPL%20v3.0-brightgreen.svg)](COPYING)
[![Ansible CII Best Practices certification](https://bestpractices.coreinfrastructure.org/projects/2372/badge)](https://bestpractices.coreinfrastructure.org/projects/2372)
# Ansible
Ansible is a radically simple IT automation system. It handles
configuration management, application deployment, cloud provisioning,
ad-hoc task execution, network automation, and multi-node orchestration. Ansible makes complex
changes like zero-downtime rolling updates with load balancers easy. More information on the Ansible [website](https://ansible.com/).
## Design Principles
* Have an extremely simple setup process with a minimal learning curve.
* Manage machines quickly and in parallel.
* Avoid custom-agents and additional open ports, be agentless by
leveraging the existing SSH daemon.
* Describe infrastructure in a language that is both machine and human
friendly.
* Focus on security and easy auditability/review/rewriting of content.
* Manage new remote machines instantly, without bootstrapping any
software.
* Allow module development in any dynamic language, not just Python.
* Be usable as non-root.
* Be the easiest IT automation system to use, ever.
## Use Ansible
You can install a released version of Ansible with `pip` or a package manager. See our
[installation guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) for details on installing Ansible
on a variety of platforms.
Power users and developers can run the `devel` branch, which has the latest
features and fixes, directly. Although it is reasonably stable, you are more likely to encounter
breaking changes when running the `devel` branch. We recommend getting involved
in the Ansible community if you want to run the `devel` branch.
## Communication
Join the Ansible forum to ask questions, get help, and interact with the
community.
* [Get Help](https://forum.ansible.com/c/help/6): Find help or share your Ansible knowledge to help others.
Use tags to filter and subscribe to posts, such as the following:
* Posts tagged with [ansible](https://forum.ansible.com/tag/ansible)
* Posts tagged with [ansible-core](https://forum.ansible.com/tag/ansible-core)
* Posts tagged with [playbook](https://forum.ansible.com/tag/playbook)
* [Social Spaces](https://forum.ansible.com/c/chat/4): Meet and interact with fellow enthusiasts.
* [News & Announcements](https://forum.ansible.com/c/news/5): Track project-wide announcements including social events.
* [Bullhorn newsletter](https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn): Get release announcements and important changes.
For more ways to get in touch, see [Communicating with the Ansible community](https://docs.ansible.com/ansible/devel/community/communication.html).
## Contribute to Ansible
* Check out the [Contributor's Guide](./.github/CONTRIBUTING.md).
* Read [Community Information](https://docs.ansible.com/ansible/devel/community) for all
kinds of ways to contribute to and interact with the project,
including how to submit bug reports and code to Ansible.
* Submit a proposed code update through a pull request to the `devel` branch.
* Talk to us before making larger changes
to avoid duplicate efforts. This not only helps everyone
know what is going on, but it also helps save time and effort if we decide
some changes are needed.
## Coding Guidelines
We document our Coding Guidelines in the [Developer Guide](https://docs.ansible.com/ansible/devel/dev_guide/). We particularly suggest you review:
* [Contributing your module to Ansible](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_checklist.html)
* [Conventions, tips, and pitfalls](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_best_practices.html)
## Branch Info
* The `devel` branch corresponds to the release actively under development.
* The `stable-2.X` branches correspond to stable releases.
* Create a branch based on `devel` and set up a [dev environment](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_general.html#common-environment-setup) if you want to open a PR.
* See the [Ansible release and maintenance](https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html) page for information about active branches.
## Roadmap
Based on team and community feedback, an initial roadmap will be published for a major or minor version (ex: 2.7, 2.8).
The [Ansible Roadmap page](https://docs.ansible.com/ansible/devel/roadmap/) details what is planned and how to influence the roadmap.
## Authors
Ansible was created by [Michael DeHaan](https://github.com/mpdehaan)
and has contributions from over 5000 users (and growing). Thanks everyone!
[Ansible](https://www.ansible.com) is sponsored by [Red Hat, Inc.](https://www.redhat.com)
## License
GNU General Public License v3.0 or later
See [COPYING](COPYING) to see the full text.

@ -1,115 +0,0 @@
|PyPI version| |Docs badge| |Chat badge| |Build Status| |Code Of Conduct| |Mailing Lists| |License| |CII Best Practices|
*******
Ansible
*******
Ansible is a radically simple IT automation system. It handles
configuration management, application deployment, cloud provisioning,
ad-hoc task execution, network automation, and multi-node orchestration. Ansible makes complex
changes like zero-downtime rolling updates with load balancers easy. More information on the Ansible `website <https://ansible.com/>`_.
Design Principles
=================
* Have an extremely simple setup process with a minimal learning curve.
* Manage machines quickly and in parallel.
* Avoid custom-agents and additional open ports, be agentless by
leveraging the existing SSH daemon.
* Describe infrastructure in a language that is both machine and human
friendly.
* Focus on security and easy auditability/review/rewriting of content.
* Manage new remote machines instantly, without bootstrapping any
software.
* Allow module development in any dynamic language, not just Python.
* Be usable as non-root.
* Be the easiest IT automation system to use, ever.
Use Ansible
===========
You can install a released version of Ansible with ``pip`` or a package manager. See our
`installation guide <https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html>`_ for details on installing Ansible
on a variety of platforms.
Power users and developers can run the ``devel`` branch, which has the latest
features and fixes, directly. Although it is reasonably stable, you are more likely to encounter
breaking changes when running the ``devel`` branch. We recommend getting involved
in the Ansible community if you want to run the ``devel`` branch.
Get Involved
============
* Read `Community
Information <https://docs.ansible.com/ansible/latest/community>`_ for all
kinds of ways to contribute to and interact with the project,
including mailing list information and how to submit bug reports and
code to Ansible.
* Join a `Working Group
<https://github.com/ansible/community/wiki>`_, an organized community devoted to a specific technology domain or platform.
* Submit a proposed code update through a pull request to the ``devel`` branch.
* Talk to us before making larger changes
to avoid duplicate efforts. This not only helps everyone
know what is going on, but it also helps save time and effort if we decide
some changes are needed.
* For a list of email lists, IRC channels and Working Groups, see the
`Communication page <https://docs.ansible.com/ansible/latest/community/communication.html>`_
Coding Guidelines
=================
We document our Coding Guidelines in the `Developer Guide <https://docs.ansible.com/ansible/devel/dev_guide/>`_. We particularly suggest you review:
* `Contributing your module to Ansible <https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_checklist.html>`_
* `Conventions, tips, and pitfalls <https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_best_practices.html>`_
Branch Info
===========
* The ``devel`` branch corresponds to the release actively under development.
* The ``stable-2.X`` branches correspond to stable releases.
* Create a branch based on ``devel`` and set up a `dev environment <https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html#common-environment-setup>`_ if you want to open a PR.
* See the `Ansible release and maintenance <https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html>`_ page for information about active branches.
Roadmap
=======
Based on team and community feedback, an initial roadmap will be published for a major or minor version (ex: 2.7, 2.8).
The `Ansible Roadmap page <https://docs.ansible.com/ansible/devel/roadmap/>`_ details what is planned and how to influence the roadmap.
Authors
=======
Ansible was created by `Michael DeHaan <https://github.com/mpdehaan>`_
and has contributions from over 5000 users (and growing). Thanks everyone!
`Ansible <https://www.ansible.com>`_ is sponsored by `Red Hat, Inc.
<https://www.redhat.com>`_
License
=======
GNU General Public License v3.0 or later
See `COPYING <COPYING>`_ to see the full text.
.. |PyPI version| image:: https://img.shields.io/pypi/v/ansible-core.svg
:target: https://pypi.org/project/ansible-core
.. |Docs badge| image:: https://img.shields.io/badge/docs-latest-brightgreen.svg
:target: https://docs.ansible.com/ansible/latest/
.. |Build Status| image:: https://dev.azure.com/ansible/ansible/_apis/build/status/CI?branchName=devel
:target: https://dev.azure.com/ansible/ansible/_build/latest?definitionId=20&branchName=devel
.. |Chat badge| image:: https://img.shields.io/badge/chat-IRC-brightgreen.svg
:target: https://docs.ansible.com/ansible/latest/community/communication.html
.. |Code Of Conduct| image:: https://img.shields.io/badge/code%20of%20conduct-Ansible-silver.svg
:target: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html
:alt: Ansible Code of Conduct
.. |Mailing Lists| image:: https://img.shields.io/badge/mailing%20lists-Ansible-orange.svg
:target: https://docs.ansible.com/ansible/latest/community/communication.html#mailing-list-information
:alt: Ansible mailing lists
.. |License| image:: https://img.shields.io/badge/license-GPL%20v3.0-brightgreen.svg
:target: COPYING
:alt: Repository License
.. |CII Best Practices| image:: https://bestpractices.coreinfrastructure.org/projects/2372/badge
:target: https://bestpractices.coreinfrastructure.org/projects/2372
:alt: Ansible CII Best Practices certification

@ -1 +0,0 @@
../lib/ansible/cli/scripts/ansible_connection_cli_stub.py

@ -1,6 +0,0 @@
Placeholder changelog
=====================
This file is a placeholder; a version-specific ``CHANGELOG-vX.Y.rst`` will be generated during releases from fragments
under changelogs/fragments. On release branches once a release has been created, consult the branch's version-specific
file for changes that have occurred in that branch.

@ -0,0 +1,8 @@
Changelogs
==========
As part of the release process a version-specific `CHANGELOG-vX.Y.rst` will be generated from fragments in
the `fragments` directory.
On release branches once a release has been created, consult the branch's version-specific file for changes that have
occurred in that branch. The `devel` branch does not have a generated changelog, only changelog fragments.

@ -1,2 +1,2 @@
ancestor: 2.15.0 ancestor: 2.18.0
releases: {} releases: {}

@ -1,4 +0,0 @@
---
minor_changes:
- "ansible-vault create: Now raises an error when opening the editor without
tty. The flag --skip-tty-check restores previous behaviour."

@ -1,2 +0,0 @@
bugfixes:
- Prevent running same handler multiple times when included via ``include_role`` (https://github.com/ansible/ansible/issues/73643)

@ -1,6 +0,0 @@
---
minor_changes:
- >-
Add ``GALAXY_COLLECTIONS_PATH_WARNING`` option to disable the warning
given by ``ansible-galaxy collection install`` when installing a collection
to a path that isn't in the configured collection paths.

@ -1,2 +0,0 @@
bugfixes:
- 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).

@ -1,2 +0,0 @@
bugfixes:
- setup gather_timeout - Fix timeout in get_mounts_facts for linux.

@ -1,3 +0,0 @@
bugfixes:
- file modules - Make symbolic modes with X use the computed permission, not original file (https://github.com/ansible/ansible/issues/80128)
- copy unit tests - Fixing "dir all perms" documentation and formatting for easier reading.

@ -1,4 +0,0 @@
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.
- module responses - Ensure that module responses are utf-8 adhereing to JSON RFC and expectations of the core code.

@ -1,2 +0,0 @@
bugfixes:
- ansible-galaxy - reduce API calls to servers by fetching signatures only for final candidates.

@ -1,2 +0,0 @@
bugfixes:
- "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)."

@ -1,2 +0,0 @@
bugfixes:
- file modules - fix validating invalid symbolic modes.

@ -1,3 +0,0 @@
---
minor_changes:
- include_vars - os.walk now follows symbolic links when traversing directories (https://github.com/ansible/ansible/pull/80460)

@ -1,2 +0,0 @@
bugfixes:
- Fix post-validating looped task fields so the strategy uses the correct values after task execution.

@ -1,3 +0,0 @@
bugfixes:
- 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)

@ -1,2 +0,0 @@
bugfixes:
- The ``hostname`` module now also updates both current and permanent hostname on OpenBSD. Before it only updated the permanent hostname (https://github.com/ansible/ansible/issues/80520).

@ -1,3 +0,0 @@
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.

@ -0,0 +1,3 @@
minor_changes:
- copy - parameter ``local_follow`` was incorrectly documented as having default value ``True`` (https://github.com/ansible/ansible/pull/83643).
- copy - fix sanity test failures (https://github.com/ansible/ansible/pull/83643).

@ -0,0 +1,2 @@
bugfixes:
- get_url - fix honoring ``filename`` from the ``content-disposition`` header even when the type is ``inline`` (https://github.com/ansible/ansible/issues/83690)

@ -0,0 +1,2 @@
minor_changes:
- file - enable file module to disable diff_mode (https://github.com/ansible/ansible/issues/80817).

@ -0,0 +1,2 @@
minor_changes:
- "runtime-metadata sanity test - improve validation of ``action_groups`` (https://github.com/ansible/ansible/pull/83965)."

@ -0,0 +1,3 @@
minor_changes:
- Added a -vvvvv log message indicating when a host fails to produce output within the timeout period.
- SSH Escalation-related -vvv log messages now include the associated host information.

@ -0,0 +1,2 @@
bugfixes:
- Fix returning 'unreachable' for the overall task result. This prevents false positives when a looped task has unignored unreachable items (https://github.com/ansible/ansible/issues/84019).

@ -0,0 +1,2 @@
minor_changes:
- ansible cli - add --flush-cache option for ad-hoc commands (https://github.com/ansible/ansible/issues/83749).

@ -1,2 +0,0 @@
bugfixes:
- ansible-galaxy - fix installing collections from directories that have a trailing path separator (https://github.com/ansible/ansible/issues/77803).

@ -1,2 +0,0 @@
bugfixes:
- ansible-test - Add support for ``argcomplete`` version 3.

@ -1,2 +0,0 @@
minor_changes:
- ansible-test - Update the ``default`` containers.

@ -1,5 +0,0 @@
minor_changes:
- ansible-test - Removed the deprecated ``--docker-no-pull`` option.
- ansible-test - Removed the deprecated ``--no-pip-check`` option.
- ansible-test - Removed the deprecated ``foreman`` test plugin.
- ansible-test - Removed the deprecated ``govcsim`` support from the ``vcenter`` test plugin.

@ -1,2 +0,0 @@
bugfixes:
- ansible-test - When bootstrapping remote FreeBSD instances, use the OS packaged ``setuptools`` instead of installing the latest version from PyPI.

@ -1,2 +0,0 @@
minor_changes:
- The minimum required ``setuptools`` version is now 45.2.0, as it is the oldest version to support Python 3.10.

@ -0,0 +1,2 @@
minor_changes:
- ansible-test - Update ``nios-test-container`` to version 6.0.0.

@ -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.

@ -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.

@ -1,3 +0,0 @@
bugfixes:
- 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.

@ -1,5 +0,0 @@
minor_changes:
- ansible-test - Replace the ``pytest-forked`` pytest plugin with a custom plugin.
bugfixes:
- ansible-test - Unit tests now report warnings generated during test runs.
Previously only warnings generated during test collection were reported.

@ -0,0 +1,5 @@
minor_changes:
- ansible-test - Update ``pylint`` sanity test to use version 3.3.1.
- ansible-test - Default to Python 3.13 in the ``base`` and ``default`` containers.
- ansible-test - Disable the ``deprecated-`` prefixed ``pylint`` rules as their results vary by Python version.
- ansible-test - Update the ``base`` and ``default`` containers.

@ -0,0 +1,3 @@
---
removed_features:
- removed deprecated pycompat24 and compat.importlib.

@ -0,0 +1,3 @@
---
removed_features:
- Remove deprecated plural form of collection path (https://github.com/ansible/ansible/pull/84156).

@ -0,0 +1,3 @@
---
minor_changes:
- cron - Provide additional error information while writing cron file (https://github.com/ansible/ansible/issues/83223).

@ -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)

@ -0,0 +1,3 @@
---
bugfixes:
- debconf - set empty password values (https://github.com/ansible/ansible/issues/83214).

@ -0,0 +1,3 @@
---
minor_changes:
- docs - add collection name in message from which the module is being deprecated (https://github.com/ansible/ansible/issues/84116).

@ -1,2 +0,0 @@
bugfixes:
- dnf5 - fix module and package names in the message following failed module respawn attempt

@ -1,2 +0,0 @@
bugfixes:
- dnf5 - Use ``transaction.check_gpg_signatures`` API call to check package signatures AND possibly to recover from when keys are missing.

@ -1,2 +0,0 @@
bugfixes:
- dnf5 - use the logs API to determine transaction problems

@ -0,0 +1,2 @@
bugfixes:
- "dnf5 - fix traceback when ``enable_plugins``/``disable_plugins`` is used on ``python3-libdnf5`` versions that do not support this functionality"

@ -1,2 +0,0 @@
removed_features:
- "``fetch_url`` - remove auto disabling ``decompress`` when gzip is not available"

@ -0,0 +1,3 @@
---
minor_changes:
- file - make code more readable and simple.

@ -0,0 +1,2 @@
minor_changes:
- find - add a checksum_algorithm parameter to specify which type of checksum the module will return

@ -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).

@ -1,2 +0,0 @@
bugfixes:
- "handlers - fix ``v2_playbook_on_notify`` callback not being called when notifying handlers"

@ -0,0 +1,2 @@
bugfixes:
- Use the requested error message in the ansible.module_utils.facts.timeout timeout function instead of hardcoding one.

@ -1,2 +0,0 @@
minor_changes:
- Use ``package_data`` instead of ``include_package_data`` for ``setup.cfg`` to avoid ``setuptools`` warnings.

@ -0,0 +1,2 @@
bugfixes:
- Errors now preserve stacked error messages even when YAML is involved.

@ -1,4 +0,0 @@
bugfixes:
- gather_facts parallel option was doing the reverse of what was stated, now it does run modules in parallel when True and serially when False.
minor_changes:
- gather_facts now will use gather_timeout setting to limit parallel execution of modules that do not themselves use gather_timeout.

@ -1,2 +0,0 @@
removed_features:
- "``get_action_args_with_defaults`` - remove deprecated ``redirected_names`` method parameter"

@ -1,2 +0,0 @@
removed_features:
- inventory_cache - remove deprecated ``default.fact_caching_prefix`` ini configuration option, use ``defaults.fact_caching_prefix`` instead.

@ -1,2 +0,0 @@
minor_changes:
- module compression is now sourced directly via config, bypassing play_context possibly stale values.

@ -0,0 +1,2 @@
minor_changes:
- module_utils - Add ``NoReturn`` type annotations to functions which never return.

@ -0,0 +1,3 @@
---
bugfixes:
- facts - skip if distribution file path is directory, instead of raising error (https://github.com/ansible/ansible/issues/84006).

@ -0,0 +1,2 @@
bugfixes:
- "``package``/``dnf`` action plugins - provide the reason behind the failure to gather the ``ansible_pkg_mgr`` fact to identify the package backend"

@ -0,0 +1,3 @@
---
removed_features:
- encrypt - passing unsupported passlib hashtype now raises AnsibleFilterError.

@ -1,2 +0,0 @@
bugfixes:
- pep517 build backend - Use the documented ``import_module`` import from ``importlib``.

@ -1,2 +0,0 @@
bugfixes:
- "``pkg_mgr`` - fix the default dnf version detection"

@ -1,2 +0,0 @@
removed_features:
- ActionBase - remove deprecated ``_remote_checksum`` method

@ -1,2 +0,0 @@
removed_features:
- Remove deprecated ``FileLock`` class

@ -1,2 +0,0 @@
removed_features:
- PlayIterator - remove deprecated ``cache_block_tasks`` and ``get_original_task`` methods

@ -1,2 +0,0 @@
removed_features:
- "``Templar`` - remove deprecated ``shared_loader_obj`` parameter of ``__init__``"

@ -0,0 +1,2 @@
minor_changes:
- INVENTORY_IGNORE_EXTS config, removed ``ini`` from the default list, inventory scripts using a corresponding .ini configuration are rare now and inventory.ini files are more common. Those that need to ignore the ini files for inventory scripts can still add it to configuration.

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

Loading…
Cancel
Save