Compare commits
283 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 24325a05df | |||
| 891d801905 | |||
| 381ca99de7 | |||
| b80ca85a69 | |||
| 12820ba64f | |||
| 149ff0d3ad | |||
| 07fa9b5187 | |||
| e1b9bed57d | |||
| 76c0a0825f | |||
| db5382341d | |||
| 3d04f25314 | |||
| 289cdb6ea0 | |||
| ab8f9969af | |||
| 118825f4ae | |||
| 741b6e65ef | |||
| b04d328b3a | |||
| db2e1d9227 | |||
| bbc7c2d2ea | |||
| 7a326e876b | |||
| b500ab3232 | |||
| f610ed3a4e | |||
| cfa6835f04 | |||
| 84ad291b3e | |||
| 1ea7fc2f4c | |||
| d59de7123a | |||
| baeff7462d | |||
| 7417d53546 | |||
| 40f415ba35 | |||
| 5b6e8590cf | |||
| 1ca6667a2f | |||
| ae3a79fa58 | |||
| 37b4a5089e | |||
| e05938e05e | |||
| d0a4f0fdbe | |||
| 6e0eafa3a7 | |||
| bcd118c771 | |||
| 0ca9624802 | |||
| 4e5c13e075 | |||
| d29802ee46 | |||
| 0ff3bceb22 | |||
| 6cdd8e5fc2 | |||
| c4446a8f2e | |||
| d69852c890 | |||
| f004deaf91 | |||
| 24e64d1ba1 | |||
| 52f52504fe | |||
| eac0319e7a | |||
| e3b61c40bb | |||
| 6d5cac5f51 | |||
| 27ef947b84 | |||
| 42f16219b6 | |||
| 66d4d8c494 | |||
| ce7ebd30e8 | |||
| 32c8de5797 | |||
| 4dda11a770 | |||
| 042143177c | |||
| 56054beac8 | |||
| 1902d17744 | |||
| 2f0f076b71 | |||
| 40c40a9653 | |||
| 633b089930 | |||
| 1dcebfd7d0 | |||
| 7ad4f6238c | |||
| 9efac6864d | |||
| b07ac9cb96 | |||
| 008bc53150 | |||
| 988d369305 | |||
| 2a68bc0c29 | |||
| fc1d7f9e5a | |||
| e44c77fe0a | |||
| 6c3726f3e1 | |||
| 895d3c1c1e | |||
| de3e76ad98 | |||
| b443f980e7 | |||
| eae2e0d1f4 | |||
| d58d2bc875 | |||
| 6dd81d3c46 | |||
| 7750d30eb4 | |||
| 2abdb4ee7b | |||
| 50782978c7 | |||
| 227efbc7ae | |||
| 3d5367243b | |||
| 34609a0973 | |||
| b8e905cd4d | |||
| 5a99d473d3 | |||
| 1bb6d3c21a | |||
| 6aa02a74fe | |||
| b1ba759862 | |||
| 741b49a247 | |||
| 9bbaa0d688 | |||
| 3d00ffc154 | |||
| 7f7acd915a | |||
| 0b7fec8b11 | |||
| 74d33e5e44 | |||
| cfd6b3d708 | |||
| bf5444ddae | |||
| 45f573d2ed | |||
| 26a615a6f8 | |||
| a3ff8e0579 | |||
| b300cbf757 | |||
| ef94e3c72a | |||
| 82879b03f7 | |||
| c202f39f47 | |||
| f45db211e7 | |||
| 2549af3f23 | |||
| a0fb290a87 | |||
| c0f2a2df2a | |||
| ff9873beaa | |||
| 6c3911b304 | |||
| 01a01186db | |||
| 303cc6aca5 | |||
| 28055bbf8f | |||
| 37c64b3eb3 | |||
| 4e323de7ef | |||
| 5d4bcea149 | |||
| 0d79d993f7 | |||
| d681c3b0bd | |||
| f81eb42094 | |||
| 0d56376a4e | |||
| 208ca6f4a2 | |||
| fac9aaf9f1 | |||
| 034eae6332 | |||
| 7e1060c716 | |||
| 4881811d66 | |||
| 6f888687af | |||
| 2c8b706a0c | |||
| 64a2e39c9e | |||
| 1a7e2e02f8 | |||
| c00357aa7d | |||
| afbfd3958e | |||
| 4c8fa415b1 | |||
| cca87ffafb | |||
| ffbda8d153 | |||
| ffb3e19dc6 | |||
| 997f272c4e | |||
| 51b8daa64d | |||
| ec841a086c | |||
| 0484e87cd4 | |||
| b9e8a6a170 | |||
| d4e577bd6d | |||
| 7a668dab06 | |||
| 99f22c1751 | |||
| bcd63a6c92 | |||
| fed6c0ace6 | |||
| a48f8f229e | |||
| 4df7faa213 | |||
| 347c10c5ff | |||
| 1148e68049 | |||
| d009354c74 | |||
| cc32fc0429 | |||
| cfb1f33c79 | |||
| e2aaf72d6a | |||
| e4965be9af | |||
| e9a16d381d | |||
| 54ea1353b3 | |||
| 7f2ba1aaf8 | |||
| 34a48dc2ca | |||
| f4c1378ae5 | |||
| 3765a08359 | |||
| 20fee691e3 | |||
| f7fed1dacc | |||
| 9812e52682 | |||
| 54f23c7ef7 | |||
| 773755de6b | |||
| dc2dd97e7d | |||
| 424feef990 | |||
| 5aa859d0d7 | |||
| 8df2541983 | |||
| 6377e6c9e8 | |||
| 0b771869ea | |||
| 87c9514565 | |||
| 0666a2987d | |||
| 1219d8381f | |||
| 15b3bab5b7 | |||
| 01eef82ed9 | |||
| ea548bbef5 | |||
| e424b1b847 | |||
| c59cf1d148 | |||
| 7dff7b916b | |||
| 9d6282e633 | |||
| f082d23eec | |||
| 9b04bf88e4 | |||
| 0f3011c231 | |||
| a90f23e2fd | |||
| 0c39f2e682 | |||
| 2467a5a4c1 | |||
| 01cc6a82d7 | |||
| bdbecd298d | |||
| f9b1e256dd | |||
| f273a766b3 | |||
| 148cdc1268 | |||
| b6335a72f1 | |||
| 3d2157973f | |||
| 6137cddce2 | |||
| 80c39bd85b | |||
| 5bcc1b6855 | |||
| 7e3d322b54 | |||
| 77c2139f7e | |||
| e616ce1091 | |||
| 6ecf17ee4d | |||
| 6966f7ebe0 | |||
| 507e9df69b | |||
| 631d07b8d5 | |||
| 25905fc91a | |||
| d99025fe8e | |||
| 10d5286bc2 | |||
| 2538bd83f4 | |||
| 35109ed67e | |||
| 8d5ded4cec | |||
| f93068e49b | |||
| 321606b731 | |||
| 0d02c8eb7a | |||
| d39cea4448 | |||
| b915a0c396 | |||
| 6040b9f399 | |||
| 706558d66b | |||
| 726dafac3d | |||
| a8a7cc0e58 | |||
| d80de9d095 | |||
| ceec818314 | |||
| fba6fbb4b9 | |||
| cb4479d882 | |||
| 73f4acbd9f | |||
| b109538a0f | |||
| 886843807f | |||
| d9d8d55861 | |||
| c2387536ab | |||
| 4f51852b5e | |||
| 307c8c6a49 | |||
| df4f0e4ec2 | |||
| b3fbc3c156 | |||
| 427da1d213 | |||
| e628c87b29 | |||
| 071201bf4f | |||
| 1cb40e1aed | |||
| 94f8f320ed | |||
| fce737b3bb | |||
| 0de5620b65 | |||
| 60d68268ec | |||
| 1e32aa4354 | |||
| 9902888a21 | |||
| 55e7efcd8f | |||
| 93e8f4cef0 | |||
| 97100bbea2 | |||
| fb9502c922 | |||
| fb0bc0eb6b | |||
| 7910f0f152 | |||
| b108c59b89 | |||
| d2b5a08eb8 | |||
| 124036337e | |||
| 622f5a248d | |||
| ec48f1d35b | |||
| ac61dc60aa | |||
| ec7803387e | |||
| 3bf9f57f43 | |||
| ab6efcd6cc | |||
| 23a79ecc77 | |||
| 9ff8d8d898 | |||
| 4cc9ee950f | |||
| 3558d38b17 | |||
| 8141aa9a55 | |||
| 58fda1632f | |||
| fa3d52729c | |||
| 187f85f4d2 | |||
| 682c3674b8 | |||
| e14ccbf2c0 | |||
| 0f55c2c04b | |||
| 365acd0daa | |||
| 23ea477734 | |||
| 53db5020b6 | |||
| 06220179e5 | |||
| e9e8d2b5d6 | |||
| bbf268c451 | |||
| a1715ee1b2 | |||
| dc5f369245 | |||
| e9310c1a44 | |||
| 72d93259e7 | |||
| c6996727ba | |||
| a271cb6136 | |||
| 391a67401d | |||
| a8023c52d9 | |||
| d82e61c939 | |||
| 7c342183c5 |
@ -1,211 +0,0 @@
|
||||
trigger:
|
||||
batch: true
|
||||
branches:
|
||||
include:
|
||||
- devel
|
||||
- stable-*
|
||||
|
||||
pr:
|
||||
autoCancel: true
|
||||
branches:
|
||||
include:
|
||||
- devel
|
||||
- stable-*
|
||||
|
||||
schedules:
|
||||
- cron: 0 7 * * *
|
||||
displayName: Nightly
|
||||
always: true
|
||||
branches:
|
||||
include:
|
||||
- devel
|
||||
- stable-*
|
||||
|
||||
variables:
|
||||
- name: checkoutPath
|
||||
value: ansible
|
||||
- name: coverageBranches
|
||||
value: devel
|
||||
- name: entryPoint
|
||||
value: .azure-pipelines/commands/entry-point.sh
|
||||
- name: fetchDepth
|
||||
value: 500
|
||||
- name: defaultContainer
|
||||
value: quay.io/ansible/azure-pipelines-test-container:6.0.0
|
||||
|
||||
pool: Standard
|
||||
|
||||
stages:
|
||||
- stage: Sanity
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Test {0}
|
||||
testFormat: sanity/{0}
|
||||
targets:
|
||||
- test: 1
|
||||
- test: 2
|
||||
- stage: Units
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Python {0}
|
||||
testFormat: units/{0}
|
||||
targets:
|
||||
- test: 3.7
|
||||
- test: 3.8
|
||||
- test: 3.9
|
||||
- test: '3.10'
|
||||
- test: 3.11
|
||||
- test: 3.12
|
||||
- stage: Windows
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Server {0}
|
||||
testFormat: windows/{0}/1
|
||||
targets:
|
||||
- test: 2016
|
||||
- test: 2019
|
||||
- test: 2022
|
||||
- stage: Remote
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml # context/target
|
||||
parameters:
|
||||
targets:
|
||||
- name: macOS 14.3
|
||||
test: macos/14.3
|
||||
- name: RHEL 9.3 py39
|
||||
test: rhel/9.3@3.9
|
||||
- name: RHEL 9.3 py311
|
||||
test: rhel/9.3@3.11
|
||||
- name: FreeBSD 13.3
|
||||
test: freebsd/13.3
|
||||
- name: FreeBSD 14.0
|
||||
test: freebsd/14.0
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- template: templates/matrix.yml # context/controller
|
||||
parameters:
|
||||
targets:
|
||||
- name: macOS 14.3
|
||||
test: macos/14.3
|
||||
- name: RHEL 9.3
|
||||
test: rhel/9.3
|
||||
- name: FreeBSD 13.3
|
||||
test: freebsd/13.3
|
||||
- name: FreeBSD 14.0
|
||||
test: freebsd/14.0
|
||||
groups:
|
||||
- 3
|
||||
- 4
|
||||
- 5
|
||||
- template: templates/matrix.yml # context/controller (ansible-test container management)
|
||||
parameters:
|
||||
targets:
|
||||
- name: Alpine 3.19
|
||||
test: alpine/3.19
|
||||
- name: Fedora 39
|
||||
test: fedora/39
|
||||
- name: RHEL 9.3
|
||||
test: rhel/9.3
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu/22.04
|
||||
groups:
|
||||
- 6
|
||||
- stage: Docker
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: linux/{0}
|
||||
targets:
|
||||
- name: Alpine 3.19
|
||||
test: alpine319
|
||||
- name: Fedora 39
|
||||
test: fedora39
|
||||
- name: Ubuntu 20.04
|
||||
test: ubuntu2004
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu2204
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: linux/{0}
|
||||
targets:
|
||||
- name: Alpine 3.19
|
||||
test: alpine319
|
||||
- name: Fedora 39
|
||||
test: fedora39
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu2204
|
||||
groups:
|
||||
- 3
|
||||
- 4
|
||||
- 5
|
||||
- stage: Galaxy
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Python {0}
|
||||
testFormat: galaxy/{0}/1
|
||||
targets:
|
||||
- test: '3.10'
|
||||
- test: 3.11
|
||||
- test: 3.12
|
||||
- stage: Generic
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Python {0}
|
||||
testFormat: generic/{0}/1
|
||||
targets:
|
||||
- test: '3.10'
|
||||
- test: 3.11
|
||||
- test: 3.12
|
||||
- stage: Incidental_Windows
|
||||
displayName: Incidental Windows
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Server {0}
|
||||
testFormat: i/windows/{0}
|
||||
targets:
|
||||
- test: 2016
|
||||
- test: 2019
|
||||
- test: 2022
|
||||
- stage: Incidental
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: i/{0}/1
|
||||
targets:
|
||||
- name: IOS Python
|
||||
test: ios/csr1000v/
|
||||
- name: VyOS Python
|
||||
test: vyos/1.1.8/
|
||||
- stage: Summary
|
||||
condition: succeededOrFailed()
|
||||
dependsOn:
|
||||
- Sanity
|
||||
- Units
|
||||
- Windows
|
||||
- Remote
|
||||
- Docker
|
||||
- Galaxy
|
||||
- Generic
|
||||
- Incidental_Windows
|
||||
- Incidental
|
||||
jobs:
|
||||
- template: templates/coverage.yml
|
||||
@ -1 +0,0 @@
|
||||
remote.sh
|
||||
@ -1,62 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
script="${args[0]}"
|
||||
|
||||
test="$1"
|
||||
|
||||
docker images
|
||||
docker ps
|
||||
|
||||
for container in $(docker ps --format '{{.Image}} {{.ID}}' | grep -v -e '^quay.io/ansible/azure-pipelines-test-container:' | sed 's/^.* //'); do
|
||||
docker rm -f "${container}" || true # ignore errors
|
||||
done
|
||||
|
||||
docker ps
|
||||
|
||||
export PATH="${PWD}/bin:${PATH}"
|
||||
export PYTHONIOENCODING='utf-8'
|
||||
|
||||
if [ -n "${COVERAGE:-}" ]; then
|
||||
# on-demand coverage reporting triggered by setting the COVERAGE environment variable to a non-empty value
|
||||
export COVERAGE="--coverage"
|
||||
elif [[ "${COMMIT_MESSAGE}" =~ ci_coverage ]]; then
|
||||
# on-demand coverage reporting triggered by having 'ci_coverage' in the latest commit message
|
||||
export COVERAGE="--coverage"
|
||||
else
|
||||
# on-demand coverage reporting disabled (default behavior, always-on coverage reporting remains enabled)
|
||||
export COVERAGE="--coverage-check"
|
||||
fi
|
||||
|
||||
if [ -n "${COMPLETE:-}" ]; then
|
||||
# disable change detection triggered by setting the COMPLETE environment variable to a non-empty value
|
||||
export CHANGED=""
|
||||
elif [[ "${COMMIT_MESSAGE}" =~ ci_complete ]]; then
|
||||
# disable change detection triggered by having 'ci_complete' in the latest commit message
|
||||
export CHANGED=""
|
||||
else
|
||||
# enable change detection (default behavior)
|
||||
export CHANGED="--changed"
|
||||
fi
|
||||
|
||||
if [ "${IS_PULL_REQUEST:-}" == "true" ]; then
|
||||
# run unstable tests which are targeted by focused changes on PRs
|
||||
export UNSTABLE="--allow-unstable-changed"
|
||||
else
|
||||
# do not run unstable tests outside PRs
|
||||
export UNSTABLE=""
|
||||
fi
|
||||
|
||||
if [[ "${COVERAGE:-}" == "--coverage" ]]; then
|
||||
timeout=60
|
||||
else
|
||||
timeout=50
|
||||
fi
|
||||
|
||||
ansible-test env --dump --show --timeout "${timeout}" --color -v
|
||||
|
||||
".azure-pipelines/commands/${script}.sh" "${test}"
|
||||
@ -1 +0,0 @@
|
||||
remote.sh
|
||||
@ -1 +0,0 @@
|
||||
remote.sh
|
||||
@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
python="${args[1]}"
|
||||
|
||||
if [ "${#args[@]}" -gt 2 ]; then
|
||||
target="shippable/generic/group${args[2]}/"
|
||||
else
|
||||
target="shippable/generic/"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--docker default --python "${python}"
|
||||
@ -1,14 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Temporary script to support side-by-side testing for incidental code coverage.
|
||||
# Once collection migration has been completed the incidental tests can be combined with the regular tests.
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
script="${args[1]}"
|
||||
|
||||
IFS='/' test="${args[*]:1}"
|
||||
|
||||
".azure-pipelines/commands/incidental/${script}.sh" "${test}"
|
||||
@ -1 +0,0 @@
|
||||
network.sh
|
||||
@ -1,40 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
platform="${args[0]}"
|
||||
version="${args[1]}"
|
||||
python_version="${args[2]}"
|
||||
|
||||
target="shippable/${platform}/incidental/"
|
||||
|
||||
stage="${S:-prod}"
|
||||
provider="${P:-default}"
|
||||
|
||||
# python versions to test in order
|
||||
# all versions run full tests
|
||||
IFS=' ' read -r -a python_versions <<< \
|
||||
"$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(" ".join(constants.CONTROLLER_PYTHON_VERSIONS))')"
|
||||
|
||||
if [ "${python_version}" ]; then
|
||||
# limit tests to a single python version
|
||||
python_versions=("${python_version}")
|
||||
fi
|
||||
|
||||
for python_version in "${python_versions[@]}"; do
|
||||
# terminate remote instances on the final python version tested
|
||||
if [ "${python_version}" = "${python_versions[-1]}" ]; then
|
||||
terminate="always"
|
||||
else
|
||||
terminate="never"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test network-integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--platform "${platform}/${version}" \
|
||||
--docker default --python "${python_version}" \
|
||||
--remote-terminate "${terminate}" --remote-stage "${stage}" --remote-provider "${provider}"
|
||||
done
|
||||
@ -1 +0,0 @@
|
||||
network.sh
|
||||
@ -1,52 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
version="${args[1]}"
|
||||
|
||||
target="shippable/windows/incidental/"
|
||||
|
||||
stage="${S:-prod}"
|
||||
provider="${P:-default}"
|
||||
|
||||
# python version to run full tests on while other versions run minimal tests
|
||||
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
|
||||
single_version=2022
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test windows-integration --list-targets -v ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} > /tmp/explain.txt 2>&1 || { cat /tmp/explain.txt && false; }
|
||||
{ grep ' windows-integration: .* (targeted)$' /tmp/explain.txt || true; } > /tmp/windows.txt
|
||||
|
||||
if [ -s /tmp/windows.txt ] || [ "${CHANGED:+$CHANGED}" == "" ]; then
|
||||
echo "Detected changes requiring integration tests specific to Windows:"
|
||||
cat /tmp/windows.txt
|
||||
|
||||
echo "Running Windows integration tests for multiple versions concurrently."
|
||||
|
||||
platforms=(
|
||||
--windows "${version}"
|
||||
)
|
||||
else
|
||||
echo "No changes requiring integration tests specific to Windows were detected."
|
||||
echo "Running Windows integration tests for a single version only: ${single_version}"
|
||||
|
||||
if [ "${version}" != "${single_version}" ]; then
|
||||
echo "Skipping this job since it is for: ${version}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
platforms=(
|
||||
--windows "${version}"
|
||||
)
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test windows-integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
"${platforms[@]}" \
|
||||
--docker default --python "${python_default}" \
|
||||
--remote-terminate always --remote-stage "${stage}" --remote-provider "${provider}"
|
||||
@ -1 +0,0 @@
|
||||
remote.sh
|
||||
@ -1,32 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
platform="${args[0]}"
|
||||
version="${args[1]}"
|
||||
pyver=default
|
||||
|
||||
# check for explicit python version like 8.3@3.8
|
||||
declare -a splitversion
|
||||
IFS='@' read -ra splitversion <<< "$version"
|
||||
|
||||
if [ "${#splitversion[@]}" -gt 1 ]; then
|
||||
version="${splitversion[0]}"
|
||||
pyver="${splitversion[1]}"
|
||||
fi
|
||||
|
||||
if [ "${#args[@]}" -gt 2 ]; then
|
||||
target="shippable/posix/group${args[2]}/"
|
||||
else
|
||||
target="shippable/posix/"
|
||||
fi
|
||||
|
||||
stage="${S:-prod}"
|
||||
provider="${P:-default}"
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--python "${pyver}" --remote "${platform}/${version}" --remote-terminate always --remote-stage "${stage}" --remote-provider "${provider}" \
|
||||
@ -1 +0,0 @@
|
||||
remote.sh
|
||||
@ -1,41 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
group="${args[1]}"
|
||||
|
||||
group2_include=(
|
||||
ansible-doc
|
||||
changelog
|
||||
package-data
|
||||
pep8
|
||||
pylint
|
||||
validate-modules
|
||||
)
|
||||
|
||||
group1_exclude=(
|
||||
"${group2_include[@]}"
|
||||
)
|
||||
|
||||
options=()
|
||||
|
||||
case "${group}" in
|
||||
1)
|
||||
for name in "${group1_exclude[@]}"; do
|
||||
options+=(--skip-test "${name}")
|
||||
done
|
||||
;;
|
||||
2)
|
||||
for name in "${group2_include[@]}"; do
|
||||
options+=(--test "${name}")
|
||||
done
|
||||
;;
|
||||
esac
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test sanity --color -v --junit ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} \
|
||||
--docker \
|
||||
"${options[@]}" --allow-disabled
|
||||
@ -1 +0,0 @@
|
||||
remote.sh
|
||||
@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
version="${args[1]}"
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test units --color -v --docker default --python "${version}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} \
|
||||
@ -1,94 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
version="${args[1]}"
|
||||
group="${args[2]}"
|
||||
|
||||
target="shippable/windows/group${group}/"
|
||||
|
||||
stage="${S:-prod}"
|
||||
provider="${P:-default}"
|
||||
|
||||
# python versions to test in order
|
||||
IFS=' ' read -r -a python_versions <<< \
|
||||
"$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(" ".join(constants.CONTROLLER_PYTHON_VERSIONS))')"
|
||||
|
||||
# python version to run full tests on while other versions run minimal tests
|
||||
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
|
||||
single_version=2022
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test windows-integration --list-targets -v ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} > /tmp/explain.txt 2>&1 || { cat /tmp/explain.txt && false; }
|
||||
{ grep ' windows-integration: .* (targeted)$' /tmp/explain.txt || true; } > /tmp/windows.txt
|
||||
|
||||
if [ -s /tmp/windows.txt ] || [ "${CHANGED:+$CHANGED}" == "" ]; then
|
||||
echo "Detected changes requiring integration tests specific to Windows:"
|
||||
cat /tmp/windows.txt
|
||||
|
||||
echo "Running Windows integration tests for multiple versions concurrently."
|
||||
|
||||
platforms=(
|
||||
--windows "${version}"
|
||||
)
|
||||
else
|
||||
echo "No changes requiring integration tests specific to Windows were detected."
|
||||
echo "Running Windows integration tests for a single version only: ${single_version}"
|
||||
|
||||
if [ "${version}" != "${single_version}" ]; then
|
||||
echo "Skipping this job since it is for: ${version}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
platforms=(
|
||||
--windows "${version}"
|
||||
)
|
||||
fi
|
||||
|
||||
for version in "${python_versions[@]}"; do
|
||||
changed_all_target="all"
|
||||
changed_all_mode="default"
|
||||
|
||||
if [ "${version}" == "${python_default}" ]; then
|
||||
# smoketest tests
|
||||
if [ "${CHANGED}" ]; then
|
||||
# with change detection enabled run tests for anything changed
|
||||
# use the smoketest tests for any change that triggers all tests
|
||||
ci="${target}"
|
||||
changed_all_target="shippable/windows/smoketest/"
|
||||
if [ "${target}" == "shippable/windows/group1/" ]; then
|
||||
# only run smoketest tests for group1
|
||||
changed_all_mode="include"
|
||||
else
|
||||
# smoketest tests already covered by group1
|
||||
changed_all_mode="exclude"
|
||||
fi
|
||||
else
|
||||
# without change detection enabled run entire test group
|
||||
ci="${target}"
|
||||
fi
|
||||
else
|
||||
# only run minimal tests for group1
|
||||
if [ "${target}" != "shippable/windows/group1/" ]; then continue; fi
|
||||
# minimal tests for other python versions
|
||||
ci="shippable/windows/minimal/"
|
||||
fi
|
||||
|
||||
# terminate remote instances on the final python version tested
|
||||
if [ "${version}" = "${python_versions[-1]}" ]; then
|
||||
terminate="always"
|
||||
else
|
||||
terminate="never"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
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}" \
|
||||
--docker default --python "${version}" \
|
||||
--remote-terminate "${terminate}" --remote-stage "${stage}" --remote-provider "${provider}"
|
||||
done
|
||||
@ -1,20 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Aggregate code coverage results for later processing.
|
||||
|
||||
set -o pipefail -eu
|
||||
|
||||
agent_temp_directory="$1"
|
||||
|
||||
PATH="${PWD}/bin:${PATH}"
|
||||
|
||||
mkdir "${agent_temp_directory}/coverage/"
|
||||
|
||||
options=(--venv --color -v)
|
||||
|
||||
ansible-test coverage combine --group-by command --export "${agent_temp_directory}/coverage/" "${options[@]}"
|
||||
|
||||
if ansible-test coverage analyze targets generate --help >/dev/null 2>&1; then
|
||||
# Only analyze coverage if the installed version of ansible-test supports it.
|
||||
# Doing so allows this script to work unmodified for multiple Ansible versions.
|
||||
ansible-test coverage analyze targets generate "${agent_temp_directory}/coverage/coverage-analyze-targets.json" "${options[@]}"
|
||||
fi
|
||||
@ -1,59 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job.
|
||||
Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}"
|
||||
The recommended coverage artifact name format is: Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)
|
||||
Keep in mind that Azure Pipelines does not enforce unique job display names (only names).
|
||||
It is up to pipeline authors to avoid name collisions when deviating from the recommended format.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
"""Main program entry point."""
|
||||
source_directory = sys.argv[1]
|
||||
|
||||
if '/ansible_collections/' in os.getcwd():
|
||||
output_path = "tests/output"
|
||||
else:
|
||||
output_path = "test/results"
|
||||
|
||||
destination_directory = os.path.join(output_path, 'coverage')
|
||||
|
||||
if not os.path.exists(destination_directory):
|
||||
os.makedirs(destination_directory)
|
||||
|
||||
jobs = {}
|
||||
count = 0
|
||||
|
||||
for name in os.listdir(source_directory):
|
||||
match = re.search('^Coverage (?P<attempt>[0-9]+) (?P<label>.+)$', name)
|
||||
label = match.group('label')
|
||||
attempt = int(match.group('attempt'))
|
||||
jobs[label] = max(attempt, jobs.get(label, 0))
|
||||
|
||||
for label, attempt in jobs.items():
|
||||
name = 'Coverage {attempt} {label}'.format(label=label, attempt=attempt)
|
||||
source = os.path.join(source_directory, name)
|
||||
source_files = os.listdir(source)
|
||||
|
||||
for source_file in source_files:
|
||||
source_path = os.path.join(source, source_file)
|
||||
destination_path = os.path.join(destination_directory, source_file + '.' + label)
|
||||
print('"%s" -> "%s"' % (source_path, destination_path))
|
||||
shutil.copyfile(source_path, destination_path)
|
||||
count += 1
|
||||
|
||||
print('Coverage file count: %d' % count)
|
||||
print('##vso[task.setVariable variable=coverageFileCount]%d' % count)
|
||||
print('##vso[task.setVariable variable=outputPath]%s' % output_path)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@ -1,24 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Check the test results and set variables for use in later steps.
|
||||
|
||||
set -o pipefail -eu
|
||||
|
||||
if [[ "$PWD" =~ /ansible_collections/ ]]; then
|
||||
output_path="tests/output"
|
||||
else
|
||||
output_path="test/results"
|
||||
fi
|
||||
|
||||
echo "##vso[task.setVariable variable=outputPath]${output_path}"
|
||||
|
||||
if compgen -G "${output_path}"'/junit/*.xml' > /dev/null; then
|
||||
echo "##vso[task.setVariable variable=haveTestResults]true"
|
||||
fi
|
||||
|
||||
if compgen -G "${output_path}"'/bot/ansible-test-*' > /dev/null; then
|
||||
echo "##vso[task.setVariable variable=haveBotResults]true"
|
||||
fi
|
||||
|
||||
if compgen -G "${output_path}"'/coverage/*' > /dev/null; then
|
||||
echo "##vso[task.setVariable variable=haveCoverageData]true"
|
||||
fi
|
||||
@ -1,102 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
Upload code coverage reports to codecov.io.
|
||||
Multiple coverage files from multiple languages are accepted and aggregated after upload.
|
||||
Python coverage, as well as PowerShell and Python stubs can all be uploaded.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import dataclasses
|
||||
import pathlib
|
||||
import shutil
|
||||
import subprocess
|
||||
import tempfile
|
||||
import typing as t
|
||||
import urllib.request
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
class CoverageFile:
|
||||
name: str
|
||||
path: pathlib.Path
|
||||
flags: t.List[str]
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
class Args:
|
||||
dry_run: bool
|
||||
path: pathlib.Path
|
||||
|
||||
|
||||
def parse_args() -> Args:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-n', '--dry-run', action='store_true')
|
||||
parser.add_argument('path', type=pathlib.Path)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
# Store arguments in a typed dataclass
|
||||
fields = dataclasses.fields(Args)
|
||||
kwargs = {field.name: getattr(args, field.name) for field in fields}
|
||||
|
||||
return Args(**kwargs)
|
||||
|
||||
|
||||
def process_files(directory: pathlib.Path) -> t.Tuple[CoverageFile, ...]:
|
||||
processed = []
|
||||
for file in directory.joinpath('reports').glob('coverage*.xml'):
|
||||
name = file.stem.replace('coverage=', '')
|
||||
|
||||
# Get flags from name
|
||||
flags = name.replace('-powershell', '').split('=') # Drop '-powershell' suffix
|
||||
flags = [flag if not flag.startswith('stub') else flag.split('-')[0] for flag in flags] # Remove "-01" from stub files
|
||||
|
||||
processed.append(CoverageFile(name, file, flags))
|
||||
|
||||
return tuple(processed)
|
||||
|
||||
|
||||
def upload_files(codecov_bin: pathlib.Path, files: t.Tuple[CoverageFile, ...], dry_run: bool = False) -> None:
|
||||
for file in files:
|
||||
cmd = [
|
||||
str(codecov_bin),
|
||||
'--name', file.name,
|
||||
'--file', str(file.path),
|
||||
]
|
||||
for flag in file.flags:
|
||||
cmd.extend(['--flags', flag])
|
||||
|
||||
if dry_run:
|
||||
print(f'DRY-RUN: Would run command: {cmd}')
|
||||
continue
|
||||
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
|
||||
def download_file(url: str, dest: pathlib.Path, flags: int, dry_run: bool = False) -> None:
|
||||
if dry_run:
|
||||
print(f'DRY-RUN: Would download {url} to {dest} and set mode to {flags:o}')
|
||||
return
|
||||
|
||||
with urllib.request.urlopen(url) as resp:
|
||||
with dest.open('w+b') as f:
|
||||
# Read data in chunks rather than all at once
|
||||
shutil.copyfileobj(resp, f, 64 * 1024)
|
||||
|
||||
dest.chmod(flags)
|
||||
|
||||
|
||||
def main():
|
||||
args = parse_args()
|
||||
url = 'https://ci-files.testing.ansible.com/codecov/linux/codecov'
|
||||
with tempfile.TemporaryDirectory(prefix='codecov-') as tmpdir:
|
||||
codecov_bin = pathlib.Path(tmpdir) / 'codecov'
|
||||
download_file(url, codecov_bin, 0o755, args.dry_run)
|
||||
|
||||
files = process_files(args.path)
|
||||
upload_files(codecov_bin, files, args.dry_run)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@ -1,17 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Generate code coverage reports for uploading to Azure Pipelines and codecov.io.
|
||||
|
||||
set -o pipefail -eu
|
||||
|
||||
PATH="${PWD}/bin:${PATH}"
|
||||
|
||||
if ! ansible-test --help >/dev/null 2>&1; then
|
||||
# Install the devel version of ansible-test for generating code coverage reports.
|
||||
# This is only used by Ansible Collections, which are typically tested against multiple Ansible versions (in separate jobs).
|
||||
# Since a version of ansible-test is required that can work the output from multiple older releases, the devel version is used.
|
||||
pip install https://github.com/ansible/ansible/archive/devel.tar.gz --disable-pip-version-check
|
||||
fi
|
||||
|
||||
# Generate stubs using docker (if supported) otherwise fall back to using a virtual environment instead.
|
||||
# The use of docker is required when Powershell code is present, but Ansible 2.12 was the first version to support --docker with coverage.
|
||||
ansible-test coverage xml --group-by command --stub --docker --color -v || ansible-test coverage xml --group-by command --stub --venv --color -v
|
||||
@ -1,34 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Configure the test environment and run the tests.
|
||||
|
||||
set -o pipefail -eu
|
||||
|
||||
entry_point="$1"
|
||||
test="$2"
|
||||
read -r -a coverage_branches <<< "$3" # space separated list of branches to run code coverage on for scheduled builds
|
||||
|
||||
export COMMIT_MESSAGE
|
||||
export COMPLETE
|
||||
export COVERAGE
|
||||
export IS_PULL_REQUEST
|
||||
|
||||
if [ "${SYSTEM_PULLREQUEST_TARGETBRANCH:-}" ]; then
|
||||
IS_PULL_REQUEST=true
|
||||
COMMIT_MESSAGE=$(git log --format=%B -n 1 HEAD^2)
|
||||
else
|
||||
IS_PULL_REQUEST=
|
||||
COMMIT_MESSAGE=$(git log --format=%B -n 1 HEAD)
|
||||
fi
|
||||
|
||||
COMPLETE=
|
||||
COVERAGE=
|
||||
|
||||
if [ "${BUILD_REASON}" = "Schedule" ]; then
|
||||
COMPLETE=yes
|
||||
|
||||
if printf '%s\n' "${coverage_branches[@]}" | grep -q "^${BUILD_SOURCEBRANCHNAME}$"; then
|
||||
COVERAGE=yes
|
||||
fi
|
||||
fi
|
||||
|
||||
"${entry_point}" "${test}" 2>&1 | "$(dirname "$0")/time-command.py"
|
||||
@ -1,24 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
"""Prepends a relative timestamp to each input line from stdin and writes it to stdout."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
import time
|
||||
|
||||
|
||||
def main():
|
||||
"""Main program entry point."""
|
||||
start = time.time()
|
||||
|
||||
sys.stdin.reconfigure(errors='surrogateescape')
|
||||
sys.stdout.reconfigure(errors='surrogateescape')
|
||||
|
||||
for line in sys.stdin:
|
||||
seconds = time.time() - start
|
||||
sys.stdout.write('%02d:%02d %s' % (seconds // 60, seconds % 60, line))
|
||||
sys.stdout.flush()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@ -1,29 +0,0 @@
|
||||
# This template adds a job for processing code coverage data.
|
||||
# It will upload results to Azure Pipelines and codecov.io.
|
||||
# Use it from a job stage that completes after all other jobs have completed.
|
||||
# This can be done by placing it in a separate summary stage that runs after the test stage(s) have completed.
|
||||
|
||||
jobs:
|
||||
- job: Coverage
|
||||
displayName: Code Coverage
|
||||
container: $[ variables.defaultContainer ]
|
||||
workspace:
|
||||
clean: all
|
||||
steps:
|
||||
- checkout: self
|
||||
fetchDepth: $(fetchDepth)
|
||||
path: $(checkoutPath)
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: Download Coverage Data
|
||||
inputs:
|
||||
path: coverage/
|
||||
patterns: "Coverage */*=coverage.combined"
|
||||
- bash: .azure-pipelines/scripts/combine-coverage.py coverage/
|
||||
displayName: Combine Coverage Data
|
||||
- bash: .azure-pipelines/scripts/report-coverage.sh
|
||||
displayName: Generate Coverage Report
|
||||
condition: gt(variables.coverageFileCount, 0)
|
||||
- bash: .azure-pipelines/scripts/publish-codecov.py "$(outputPath)"
|
||||
displayName: Publish to codecov.io
|
||||
condition: gt(variables.coverageFileCount, 0)
|
||||
continueOnError: true
|
||||
@ -1,55 +0,0 @@
|
||||
# This template uses the provided targets and optional groups to generate a matrix which is then passed to the test template.
|
||||
# If this matrix template does not provide the required functionality, consider using the test template directly instead.
|
||||
|
||||
parameters:
|
||||
# A required list of dictionaries, one per test target.
|
||||
# Each item in the list must contain a "test" or "name" key.
|
||||
# Both may be provided. If one is omitted, the other will be used.
|
||||
- name: targets
|
||||
type: object
|
||||
|
||||
# An optional list of values which will be used to multiply the targets list into a matrix.
|
||||
# Values can be strings or numbers.
|
||||
- name: groups
|
||||
type: object
|
||||
default: []
|
||||
|
||||
# An optional format string used to generate the job name.
|
||||
# - {0} is the name of an item in the targets list.
|
||||
- name: nameFormat
|
||||
type: string
|
||||
default: "{0}"
|
||||
|
||||
# An optional format string used to generate the test name.
|
||||
# - {0} is the name of an item in the targets list.
|
||||
- name: testFormat
|
||||
type: string
|
||||
default: "{0}"
|
||||
|
||||
# An optional format string used to add the group to the job name.
|
||||
# {0} is the formatted name of an item in the targets list.
|
||||
# {{1}} is the group -- be sure to include the double "{{" and "}}".
|
||||
- name: nameGroupFormat
|
||||
type: string
|
||||
default: "{0} - {{1}}"
|
||||
|
||||
# An optional format string used to add the group to the test name.
|
||||
# {0} is the formatted test of an item in the targets list.
|
||||
# {{1}} is the group -- be sure to include the double "{{" and "}}".
|
||||
- name: testGroupFormat
|
||||
type: string
|
||||
default: "{0}/{{1}}"
|
||||
|
||||
jobs:
|
||||
- template: test.yml
|
||||
parameters:
|
||||
jobs:
|
||||
- ${{ if eq(length(parameters.groups), 0) }}:
|
||||
- ${{ each target in parameters.targets }}:
|
||||
- name: ${{ format(parameters.nameFormat, coalesce(target.name, target.test)) }}
|
||||
test: ${{ format(parameters.testFormat, coalesce(target.test, target.name)) }}
|
||||
- ${{ if not(eq(length(parameters.groups), 0)) }}:
|
||||
- ${{ each group in parameters.groups }}:
|
||||
- ${{ each target in parameters.targets }}:
|
||||
- name: ${{ format(format(parameters.nameGroupFormat, parameters.nameFormat), coalesce(target.name, target.test), group) }}
|
||||
test: ${{ format(format(parameters.testGroupFormat, parameters.testFormat), coalesce(target.test, target.name), group) }}
|
||||
@ -1,45 +0,0 @@
|
||||
# This template uses the provided list of jobs to create test one or more test jobs.
|
||||
# It can be used directly if needed, or through the matrix template.
|
||||
|
||||
parameters:
|
||||
# A required list of dictionaries, one per test job.
|
||||
# Each item in the list must contain a "job" and "name" key.
|
||||
- name: jobs
|
||||
type: object
|
||||
|
||||
jobs:
|
||||
- ${{ each job in parameters.jobs }}:
|
||||
- job: test_${{ replace(replace(replace(replace(job.test, '/', '_'), '.', '_'), '-', '_'), '@', '_') }}
|
||||
displayName: ${{ job.name }}
|
||||
container: $[ variables.defaultContainer ]
|
||||
workspace:
|
||||
clean: all
|
||||
steps:
|
||||
- checkout: self
|
||||
fetchDepth: $(fetchDepth)
|
||||
path: $(checkoutPath)
|
||||
- bash: .azure-pipelines/scripts/run-tests.sh "$(entryPoint)" "${{ job.test }}" "$(coverageBranches)"
|
||||
displayName: Run Tests
|
||||
- bash: .azure-pipelines/scripts/process-results.sh
|
||||
condition: succeededOrFailed()
|
||||
displayName: Process Results
|
||||
- bash: .azure-pipelines/scripts/aggregate-coverage.sh "$(Agent.TempDirectory)"
|
||||
condition: eq(variables.haveCoverageData, 'true')
|
||||
displayName: Aggregate Coverage Data
|
||||
- task: PublishTestResults@2
|
||||
condition: eq(variables.haveTestResults, 'true')
|
||||
inputs:
|
||||
testResultsFiles: "$(outputPath)/junit/*.xml"
|
||||
displayName: Publish Test Results
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: eq(variables.haveBotResults, 'true')
|
||||
displayName: Publish Bot Results
|
||||
inputs:
|
||||
targetPath: "$(outputPath)/bot/"
|
||||
artifactName: "Bot $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: eq(variables.haveCoverageData, 'true')
|
||||
displayName: Publish Coverage Data
|
||||
inputs:
|
||||
targetPath: "$(Agent.TempDirectory)/coverage/"
|
||||
artifactName: "Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
|
||||
@ -1,4 +0,0 @@
|
||||
# .git-blame-ignore-revs
|
||||
# Bulk PowerShell sanity fixes
|
||||
6def4a3180fe03981ba64c6d8db28fed3bb39c0c
|
||||
716631189cb5a3f66b3add98f39e64e98bc17bf7
|
||||
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -1 +1,2 @@
|
||||
.github/ export-ignore
|
||||
hacking/ export-ignore
|
||||
|
||||
1641
.github/BOTMETA.yml
vendored
Normal file
1641
.github/BOTMETA.yml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
49
.github/CONTRIBUTING.md
vendored
49
.github/CONTRIBUTING.md
vendored
@ -10,11 +10,9 @@ The GitHub issue tracker is not the best place for questions for various reasons
|
||||
|
||||
## CONTRIBUTING ?
|
||||
|
||||
By contributing to this project you agree to the [Developer Certificate of Origin (DCO)](#developer-certificate-of-origin-dco).
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
The Ansible project accepts contributions through GitHub pull requests. Please review the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for more information on contributing to Ansible.
|
||||
Please review the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for more information on contributing to Ansible.
|
||||
|
||||
## BUG TO REPORT ?
|
||||
|
||||
@ -25,46 +23,3 @@ You can report bugs or make enhancement requests at the [Ansible GitHub issue pa
|
||||
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!
|
||||
|
||||
## 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.
|
||||
```
|
||||
|
||||
54
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
54
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
---
|
||||
name: 🐛 Bug report
|
||||
about: Create a report to help us improve
|
||||
---
|
||||
<!--- Verify first that your issue is not already reported on GitHub -->
|
||||
<!--- Also test if the latest release and devel branch are affected too -->
|
||||
<!--- Complete *all* sections as described, this form is processed automatically -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly below -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
- Bug Report
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste verbatim output from "ansible --version" between quotes -->
|
||||
```paste below
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
|
||||
```paste below
|
||||
|
||||
```
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
|
||||
|
||||
|
||||
##### STEPS TO REPRODUCE
|
||||
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- HINT: You can paste gist.github.com links for larger files -->
|
||||
|
||||
##### EXPECTED RESULTS
|
||||
<!--- Describe what you expected to happen when running the steps above -->
|
||||
|
||||
|
||||
##### ACTUAL RESULTS
|
||||
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
|
||||
|
||||
<!--- Paste verbatim command output between quotes -->
|
||||
```paste below
|
||||
|
||||
```
|
||||
265
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
265
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -1,265 +0,0 @@
|
||||
---
|
||||
name: 🐛 Bug report
|
||||
description: Create a report to help us improve
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
**Thank you for wanting to report a bug in ansible-core!**
|
||||
|
||||
|
||||
⚠
|
||||
Verify first that your issue is not [already reported on
|
||||
GitHub][issue search] and keep in mind that we may have to keep
|
||||
the current behavior because [every change breaks someone's
|
||||
workflow][XKCD 1172].
|
||||
We try to be mindful about this.
|
||||
|
||||
Also test if the latest release and devel branch are affected too.
|
||||
|
||||
|
||||
**Tip:** If you are seeking community support, please consider
|
||||
[starting a mailing list thread or chatting in IRC][ML||IRC].
|
||||
|
||||
|
||||
|
||||
[ML||IRC]:
|
||||
https://docs.ansible.com/ansible-core/devel/community/communication.html?utm_medium=github&utm_source=issue_form--bug_report.yml#mailing-list-information
|
||||
|
||||
[issue search]: ../search?q=is%3Aissue&type=issues
|
||||
|
||||
[XKCD 1172]: https://xkcd.com/1172/
|
||||
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Summary
|
||||
description: Explain the problem briefly below.
|
||||
placeholder: >-
|
||||
When I try to do X with ansible-core from the devel branch on GitHub, Y
|
||||
breaks in a way Z under the env E. Here are all the details I know
|
||||
about this problem...
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Issue Type
|
||||
description: >
|
||||
Please select the single available option in the drop-down.
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
<em>Why?</em>
|
||||
</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
|
||||
supports dropdown defaults. Promise!_
|
||||
|
||||
</details>
|
||||
# FIXME: Once GitHub allows defining the default choice, update this
|
||||
options:
|
||||
- Bug Report
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Component Name
|
||||
description: >
|
||||
Write the short name of the rst file, module, plugin, task or
|
||||
feature below, *use your best guess if unsure*.
|
||||
|
||||
|
||||
**Tip:** Cannot find it in this repository? Please 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: dnf, apt, pip, user etc.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Ansible Version
|
||||
description: >-
|
||||
Paste verbatim output from `ansible --version` below, under
|
||||
the prompt line. Please don't wrap it with triple backticks — your
|
||||
whole input will be turned into a code snippet automatically.
|
||||
render: console
|
||||
value: |
|
||||
$ ansible --version
|
||||
placeholder: |
|
||||
$ ansible --version
|
||||
ansible [core 2.11.0b4.post0] (detached HEAD ref: refs/) last updated 2021/04/02 00:33:35 (GMT +200)
|
||||
config file = None
|
||||
configured module search path = ['~/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
|
||||
ansible python module location = ~/src/github/ansible/ansible/lib/ansible
|
||||
ansible collection location = ~/.ansible/collections:/usr/share/ansible/collections
|
||||
executable location = bin/ansible
|
||||
python version = 3.9.0 (default, Oct 26 2020, 13:08:59) [GCC 10.2.0]
|
||||
jinja version = 2.11.3
|
||||
libyaml = True
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Configuration
|
||||
description: >-
|
||||
Paste verbatim output from `ansible-config dump --only-changed -t all` below, under the prompt line.
|
||||
(if using a version older than ansible-core 2.12 you should omit the '-t all')
|
||||
Please don't wrap it with triple backticks — your
|
||||
whole input will be turned into a code snippet automatically.
|
||||
render: console
|
||||
value: |
|
||||
# if using a version older than ansible-core 2.12 you should omit the '-t all'
|
||||
$ ansible-config dump --only-changed -t all
|
||||
placeholder: |
|
||||
# if using a version older than ansible-core 2.12 you should omit the '-t all'
|
||||
$ ansible-config dump --only-changed -t all
|
||||
DEFAULT_GATHERING(~/src/github/ansible/ansible/ansible.cfg) = smart
|
||||
DEFAULT_HOST_LIST(~/src/github/ansible/ansible/ansible.cfg) = ['~/src/github/ansible/ansible/hosts']
|
||||
DEFAULT_VAULT_PASSWORD_FILE(~/src/github/ansible/ansible/ansible.cfg) = ~/src/github/ansible/ansible/vault/print-password.sh
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: OS / Environment
|
||||
description: >-
|
||||
Provide all relevant information below, e.g. target OS versions,
|
||||
network device firmware, etc.
|
||||
placeholder: RHEL 8, CentOS Stream etc.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: |
|
||||
Describe exactly how to reproduce the problem, using a minimal test-case. It would *really* help us understand your problem if you could also pased any playbooks, configs and commands you used.
|
||||
|
||||
**HINT:** You can paste https://gist.github.com links for larger files.
|
||||
value: |
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml (paste below)
|
||||
|
||||
```
|
||||
placeholder: |
|
||||
1. Implement the following playbook:
|
||||
|
||||
```yaml
|
||||
---
|
||||
# ping.yml
|
||||
- hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- ping:
|
||||
...
|
||||
```
|
||||
2. Then run `ANSIBLE_DEBUG=1 ansible-playbook ping.yml -vvvvv`
|
||||
3. An error occurs.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Expected Results
|
||||
description: >-
|
||||
Describe what you expected to happen when running the steps above.
|
||||
placeholder: >-
|
||||
I expected X to happen because I assumed Y and was shocked
|
||||
that it did not.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Actual Results
|
||||
description: |
|
||||
Describe what actually happened. If possible run with extra verbosity (`-vvvv`).
|
||||
|
||||
Paste verbatim command output and don't wrap it with triple backticks — your
|
||||
whole input will be turned into a code snippet automatically.
|
||||
render: console
|
||||
placeholder: >-
|
||||
Certificate did not match expected hostname: files.pythonhosted.org. Certificate: {'notAfter': 'Apr 28 19:20:25 2021 GMT', 'subjectAltName': ((u'DNS', 'r.ssl.fastly.net'), (u'DNS', '*.catchpoint.com'), (u'DNS', '*.cnn.io'), (u'DNS', '*.dollarshaveclub.com'), (u'DNS', '*.eater.com'), (u'DNS', '*.fastly.picmonkey.com'), (u'DNS', '*.files.saymedia-content.com'), (u'DNS', '*.ft.com'), (u'DNS', '*.meetupstatic.com'), (u'DNS', '*.nfl.com'), (u'DNS', '*.pagar.me'), (u'DNS', '*.picmonkey.com'), (u'DNS', '*.realself.com'), (u'DNS', '*.sbnation.com'), (u'DNS', '*.shakr.com'), (u'DNS', '*.streamable.com'), (u'DNS', '*.surfly.com'), (u'DNS', '*.theverge.com'), (u'DNS', '*.thrillist.com'), (u'DNS', '*.vox-cdn.com'), (u'DNS', '*.vox.com'), (u'DNS', '*.voxmedia.com'), (u'DNS', 'eater.com'), (u'DNS', 'ft.com'), (u'DNS', 'i.gse.io'), (u'DNS', 'picmonkey.com'), (u'DNS', 'realself.com'), (u'DNS', 'static.wixstatic.com'), (u'DNS', 'streamable.com'), (u'DNS', 'surfly.com'), (u'DNS', 'theverge.com'), (u'DNS', 'vox-cdn.com'), (u'DNS', 'vox.com'), (u'DNS', 'www.joyent.com')), 'subject': ((('countryName', u'US'),), (('stateOrProvinceName', u'California'),), (('localityName', u'San Francisco'),), (('organizationName', u'Fastly, Inc'),), (('commonName', u'r.ssl.fastly.net'),))}
|
||||
Exception:
|
||||
Traceback (most recent call last):
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/basecommand.py", line 215, in main
|
||||
status = self.run(options, args)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/commands/install.py", line 335, in run
|
||||
wb.build(autobuilding=True)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/wheel.py", line 749, in build
|
||||
self.requirement_set.prepare_files(self.finder)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/req/req_set.py", line 380, in prepare_files
|
||||
ignore_dependencies=self.ignore_dependencies))
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/req/req_set.py", line 620, in _prepare_file
|
||||
session=self.session, hashes=hashes)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/download.py", line 821, in unpack_url
|
||||
hashes=hashes
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/download.py", line 659, in unpack_http_url
|
||||
hashes)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/download.py", line 853, in _download_http_url
|
||||
stream=True,
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/_vendor/requests/sessions.py", line 521, in get
|
||||
return self.request('GET', url, **kwargs)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/download.py", line 386, in request
|
||||
return super(PipSession, self).request(method, url, *args, **kwargs)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/_vendor/requests/sessions.py", line 508, in request
|
||||
resp = self.send(prep, **send_kwargs)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/_vendor/requests/sessions.py", line 618, in send
|
||||
r = adapter.send(request, **kwargs)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/_vendor/cachecontrol/adapter.py", line 47, in send
|
||||
resp = super(CacheControlAdapter, self).send(request, **kw)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/_vendor/requests/adapters.py", line 506, in send
|
||||
raise SSLError(e, request=request)
|
||||
SSLError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/ef/ab/aa12712415809bf698e719b307419f953e25344e8f42d557533d7a02b276/netapp_lib-2020.7.16-py2-none-any.whl (Caused by SSLError(CertificateError("hostname 'files.pythonhosted.org' doesn't match either of 'r.ssl.fastly.net', '*.catchpoint.com', '*.cnn.io', '*.dollarshaveclub.com', '*.eater.com', '*.fastly.picmonkey.com', '*.files.saymedia-content.com', '*.ft.com', '*.meetupstatic.com', '*.nfl.com', '*.pagar.me', '*.picmonkey.com', '*.realself.com', '*.sbnation.com', '*.shakr.com', '*.streamable.com', '*.surfly.com', '*.theverge.com', '*.thrillist.com', '*.vox-cdn.com', '*.vox.com', '*.voxmedia.com', 'eater.com', 'ft.com', 'i.gse.io', 'picmonkey.com', 'realself.com', 'static.wixstatic.com', 'streamable.com', 'surfly.com', 'theverge.com', 'vox-cdn.com', 'vox.com', 'www.joyent.com'",),))
|
||||
ERROR: Command "/usr/bin/python2.6 /root/ansible/test/lib/ansible_test/_data/quiet_pip.py install --disable-pip-version-check -r /root/ansible/test/lib/ansible_test/_data/requirements/units.txt -r tests/unit/requirements.txt -c /root/ansible/test/lib/ansible_test/_data/requirements/constraints.txt" returned exit status 2.
|
||||
ERROR: Command "docker exec d47eb360db4ce779c1f690db964655b76e68895c4360ff252c46fe7fe6f5c75a /usr/bin/env ANSIBLE_TEST_CONTENT_ROOT=/root/ansible_collections/netapp/ontap LC_ALL=en_US.UTF-8 /usr/bin/python3.6 /root/ansible/bin/ansible-test units --metadata tests/output/.tmp/metadata-9i2qfrcl.json --truncate 200 --redact --color yes --requirements --python default --requirements-mode only" returned exit status 1.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
*One last thing...*
|
||||
|
||||
|
||||
*Please, complete **all** sections as described, this form
|
||||
is [processed automatically by a robot][ansibot help].*
|
||||
|
||||
|
||||
Thank you for your collaboration!
|
||||
|
||||
|
||||
[ansibot help]:
|
||||
/ansible/ansibotmini#ansibotmini
|
||||
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: |
|
||||
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
|
||||
options:
|
||||
- label: I agree to follow the Ansible Code of Conduct
|
||||
required: true
|
||||
...
|
||||
26
.github/ISSUE_TEMPLATE/config.yml
vendored
26
.github/ISSUE_TEMPLATE/config.yml
vendored
@ -1,26 +0,0 @@
|
||||
# Ref: https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser
|
||||
blank_issues_enabled: false # default: true
|
||||
contact_links:
|
||||
- name: 🔐 Security bug report 🔥
|
||||
url: https://docs.ansible.com/ansible/latest/community/reporting_bugs_and_features.html?utm_medium=github&utm_source=issue_template_chooser
|
||||
about: |
|
||||
Please learn how to report security vulnerabilities here.
|
||||
|
||||
For all security related bugs, email security@ansible.com
|
||||
instead of using this issue tracker and you will receive
|
||||
a prompt response.
|
||||
|
||||
For more information, see
|
||||
https://docs.ansible.com/ansible/latest/community/reporting_bugs_and_features.html
|
||||
- name: 📝 Ansible Code of Conduct
|
||||
url: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_template_chooser
|
||||
about: ❤ Be nice to other members of the community. ☮ Behave.
|
||||
- name: 💬 Talks to the community
|
||||
url: https://docs.ansible.com/ansible/latest/community/communication.html?utm_medium=github&utm_source=issue_template_chooser#mailing-list-information
|
||||
about: Please ask and answer usage questions here
|
||||
- name: ⚡ Working groups
|
||||
url: https://github.com/ansible/community/wiki
|
||||
about: Interested in improving a specific area? Become a part of a working group!
|
||||
- name: 💼 For Enterprise
|
||||
url: https://www.ansible.com/products/engine?utm_medium=github&utm_source=issue_template_chooser
|
||||
about: Red Hat offers support for the Ansible Automation Platform
|
||||
38
.github/ISSUE_TEMPLATE/documentation_report.md
vendored
Normal file
38
.github/ISSUE_TEMPLATE/documentation_report.md
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
---
|
||||
name: 📝 Documentation Report
|
||||
about: Ask us about docs
|
||||
---
|
||||
<!--- Verify first that your improvement is not already reported on GitHub -->
|
||||
<!--- Also test if the latest release and devel branch are affected too -->
|
||||
<!--- Complete *all* sections as described, this form is processed automatically -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly below, add suggestions to wording or structure -->
|
||||
|
||||
<!--- HINT: Did you know the documentation has an "Edit on GitHub" link on every page ? -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
- Documentation Report
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Write the short name of the rst file, module, plugin, task or feature below, use your best guess if unsure -->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste verbatim output from "ansible --version" between quotes -->
|
||||
```paste below
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
|
||||
```paste below
|
||||
|
||||
```
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!--- Provide all relevant information below, e.g. OS version, browser, etc. -->
|
||||
|
||||
##### ADDITIONAL INFORMATION
|
||||
<!--- Describe how this improves the documentation, e.g. before/after situation or screenshots -->
|
||||
|
||||
<!--- HINT: You can paste gist.github.com links for larger files -->
|
||||
212
.github/ISSUE_TEMPLATE/documentation_report.yml
vendored
212
.github/ISSUE_TEMPLATE/documentation_report.yml
vendored
@ -1,212 +0,0 @@
|
||||
---
|
||||
name: 📝 Documentation Report
|
||||
description: Ask us about docs
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
**Thank you for wanting to report a problem with ansible-core
|
||||
documentation!**
|
||||
|
||||
|
||||
Please fill out your suggestions below. If the problem seems
|
||||
straightforward, feel free to go ahead and
|
||||
[submit a pull request] instead!
|
||||
|
||||
|
||||
⚠
|
||||
Verify first that your issue is not [already reported on
|
||||
GitHub][issue search].
|
||||
|
||||
Also test if the latest release and devel branch are affected too.
|
||||
|
||||
|
||||
**Tip:** If you are seeking community support, please consider
|
||||
[starting a mailing list thread or chatting in IRC][ML||IRC].
|
||||
|
||||
|
||||
[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
|
||||
|
||||
[issue search]: ../search?q=is%3Aissue&type=issues
|
||||
|
||||
[submit a pull request]:
|
||||
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
|
||||
attributes:
|
||||
label: Summary
|
||||
description: >
|
||||
Explain the problem briefly below, add suggestions to wording
|
||||
or structure.
|
||||
|
||||
|
||||
**HINT:** Did you know the documentation has a `View on GitHub`
|
||||
link on some pages? Feel free to use it to start a pull request
|
||||
right from the GitHub UI!
|
||||
placeholder: >-
|
||||
I was reading the ansible-core documentation of version X and I'm having
|
||||
problems understanding Y. It would be very helpful if that got
|
||||
rephrased as Z.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Issue Type
|
||||
description: >
|
||||
Please select the single available option in the drop-down.
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
<em>Why?</em>
|
||||
</summary>
|
||||
|
||||
|
||||
_We will make it easier in the future, once GitHub
|
||||
supports dropdown defaults. Promise!_
|
||||
|
||||
</details>
|
||||
# FIXME: Once GitHub allows defining the default choice, update this
|
||||
options:
|
||||
- Documentation Report
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Component Name
|
||||
description: >
|
||||
Write the short name of the rst file, module, plugin, task or
|
||||
feature below, *use your best guess if unsure*.
|
||||
|
||||
placeholder: lib/ansible/modules/copy.py
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Ansible Version
|
||||
description: >-
|
||||
Paste verbatim output from `ansible --version` below, under
|
||||
the prompt line. Please don't wrap it with triple backticks — your
|
||||
whole input will be turned into a code snippet automatically.
|
||||
render: console
|
||||
value: |
|
||||
$ ansible --version
|
||||
placeholder: |
|
||||
$ ansible --version
|
||||
ansible [core 2.11.0b4.post0] (detached HEAD ref: refs/) last updated 2021/04/02 00:33:35 (GMT +200)
|
||||
config file = None
|
||||
configured module search path = ['~/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
|
||||
ansible python module location = ~/src/github/ansible/ansible/lib/ansible
|
||||
ansible collection location = ~/.ansible/collections:/usr/share/ansible/collections
|
||||
executable location = bin/ansible
|
||||
python version = 3.9.0 (default, Oct 26 2020, 13:08:59) [GCC 10.2.0]
|
||||
jinja version = 2.11.3
|
||||
libyaml = True
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Configuration
|
||||
description: >-
|
||||
Paste verbatim output from `ansible-config dump --only-changed -t all` below, under the prompt line.
|
||||
(if using a version older than ansible-core 2.12 you should omit the '-t all')
|
||||
Please don't wrap it with triple backticks — your
|
||||
whole input will be turned into a code snippet automatically.
|
||||
render: console
|
||||
value: |
|
||||
# if using a version older than ansible-core 2.12 you should omit the '-t all'
|
||||
$ ansible-config dump --only-changed -t all
|
||||
placeholder: |
|
||||
# if using a version older than ansible-core 2.12 you should omit the '-t all'
|
||||
$ ansible-config dump --only-changed -t all
|
||||
DEFAULT_GATHERING(~/src/github/ansible/ansible/ansible.cfg) = smart
|
||||
DEFAULT_HOST_LIST(~/src/github/ansible/ansible/ansible.cfg) = ['~/src/github/ansible/ansible/hosts']
|
||||
DEFAULT_VAULT_PASSWORD_FILE(~/src/github/ansible/ansible/ansible.cfg) = ~/src/github/ansible/ansible/vault/print-password.sh
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: OS / Environment
|
||||
description: >-
|
||||
Provide all relevant information below, e.g. OS version,
|
||||
browser, etc.
|
||||
placeholder: Fedora 33, Firefox etc.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Information
|
||||
description: |
|
||||
Describe how this improves the documentation, e.g. before/after situation or screenshots.
|
||||
|
||||
**HINT:** You can paste https://gist.github.com links for larger files.
|
||||
placeholder: >-
|
||||
When the improvement is applied, it makes it more straightforward
|
||||
to understand X.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
*One last thing...*
|
||||
|
||||
|
||||
*Please, complete **all** sections as described, this form
|
||||
is [processed automatically by a robot][ansibot help].*
|
||||
|
||||
|
||||
Thank you for your collaboration!
|
||||
|
||||
|
||||
[ansibot help]:
|
||||
/ansible/ansibotmini#ansibotmini
|
||||
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: |
|
||||
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
|
||||
options:
|
||||
- label: I agree to follow the Ansible Code of Conduct
|
||||
required: true
|
||||
...
|
||||
25
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
25
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
name: ✨ Feature request
|
||||
about: Suggest an idea for this project
|
||||
---
|
||||
<!--- Verify first that your feature was not already discussed on GitHub -->
|
||||
<!--- Complete *all* sections as described, this form is processed automatically -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Describe the new feature/improvement briefly below -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
- Feature Idea
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
|
||||
|
||||
##### ADDITIONAL INFORMATION
|
||||
<!--- Describe how the feature would be used, why it is needed and what it would solve -->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- HINT: You can also paste gist.github.com links for larger files -->
|
||||
192
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
192
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@ -1,192 +0,0 @@
|
||||
---
|
||||
name: ✨ Feature request
|
||||
description: Suggest an idea for this project
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
**Thank you for wanting to suggest a feature for ansible-core!**
|
||||
|
||||
|
||||
|
||||
💡
|
||||
Before you go ahead with your request, please first consider if it
|
||||
would be useful for majority of the ansible-core users. As a
|
||||
general rule of thumb, any feature that is only of interest to a
|
||||
small sub group should be [implemented in a third-party Ansible
|
||||
Collection][contribute to collections] or maybe even just your
|
||||
project alone. Be mindful of the fact that the essential
|
||||
ansible-core features have a broad impact.
|
||||
|
||||
If unsure, consider filing a [new proposal] instead outlining your
|
||||
use-cases, the research and implementation considerations. Then,
|
||||
start a discussion on one of the public [IRC meetings] we have just
|
||||
for this.
|
||||
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
❗ Every change breaks someone's workflow.
|
||||
</summary>
|
||||
|
||||
|
||||
[
|
||||
](https://xkcd.com/1172/)
|
||||
</details>
|
||||
|
||||
|
||||
⚠
|
||||
Verify first that your idea is not [already requested on
|
||||
GitHub][issue search].
|
||||
|
||||
Also test if the devel branch does not already implement this.
|
||||
|
||||
|
||||
**Tip:** If you are seeking community support, please consider
|
||||
[starting a mailing list thread or chatting in IRC][ML||IRC].
|
||||
|
||||
|
||||
|
||||
[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
|
||||
|
||||
[IRC meetings]:
|
||||
https://docs.ansible.com/ansible-core/devel/community/communication.html?utm_medium=github&utm_source=issue_form--feature_request.yml#irc-meetings
|
||||
|
||||
[issue search]: ../search?q=is%3Aissue&type=issues
|
||||
|
||||
[ML||IRC]:
|
||||
https://docs.ansible.com/ansible-core/devel/community/communication.html?utm_medium=github&utm_source=issue_form--feature_request.yml#mailing-list-information
|
||||
|
||||
[new proposal]: ../../proposals/issues/new
|
||||
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Summary
|
||||
description: >
|
||||
Describe the new feature/improvement you would like briefly below.
|
||||
|
||||
|
||||
What's the problem this feature will solve?
|
||||
|
||||
What are you trying to do, that you are unable to achieve
|
||||
with ansible-core as it currently stands?
|
||||
|
||||
|
||||
* Provide examples of real-world use cases that this would enable
|
||||
and how it solves the problem you described.
|
||||
|
||||
* How do you solve this now?
|
||||
|
||||
* Have you tried to work around the problem using other tools?
|
||||
|
||||
* Could there be a different approach to solving this issue?
|
||||
|
||||
|
||||
*Know **exactly** what you want?* Consider filing a [new proposal]
|
||||
instead outlining your research and implementation considerations.
|
||||
|
||||
|
||||
[new proposal]: ../../proposals/issues/new
|
||||
placeholder: >-
|
||||
I am trying to do X with ansible-core from the devel branch on GitHub and
|
||||
I think that implementing a feature Y would be very helpful for me and
|
||||
every other user of ansible-core because of Z.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Issue Type
|
||||
description: >
|
||||
Please select the single available option in the drop-down.
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
<em>Why?</em>
|
||||
</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
|
||||
supports dropdown defaults. Promise!_
|
||||
|
||||
</details>
|
||||
# FIXME: Once GitHub allows defining the default choice, update this
|
||||
options:
|
||||
- Feature Idea
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Component Name
|
||||
description: >
|
||||
Write the short name of the module, plugin, task or feature below,
|
||||
*use your best guess if unsure*.
|
||||
|
||||
|
||||
Be aware that a lot of content that used to reside in this repository
|
||||
previously, is now hosted under [individual collection
|
||||
projects][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: dnf, apt, pip, user etc.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Information
|
||||
description: |
|
||||
Describe how the feature would be used, why it is needed and what it would solve.
|
||||
|
||||
**HINT:** You can paste https://gist.github.com links for larger files.
|
||||
value: |
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml (paste below)
|
||||
|
||||
```
|
||||
placeholder: >-
|
||||
I asked on https://stackoverflow.com/.... and the community
|
||||
advised me to do X, Y and Z.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
*One last thing...*
|
||||
|
||||
|
||||
*Please, complete **all** sections as described, this form
|
||||
is [processed automatically by a robot][ansibot help].*
|
||||
|
||||
|
||||
Thank you for your collaboration!
|
||||
|
||||
|
||||
[ansibot help]:
|
||||
/ansible/ansibotmini#ansibotmini
|
||||
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: |
|
||||
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
|
||||
options:
|
||||
- label: I agree to follow the Ansible Code of Conduct
|
||||
required: true
|
||||
...
|
||||
8
.github/ISSUE_TEMPLATE/security_bug_report.md
vendored
Normal file
8
.github/ISSUE_TEMPLATE/security_bug_report.md
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
name: 🔥 Security bug report
|
||||
about: How to report security vulnerabilities
|
||||
---
|
||||
|
||||
For all security related bugs, email security@ansible.com instead of using this issue tracker and you will receive a prompt response.
|
||||
|
||||
For more information, see https://docs.ansible.com/ansible/latest/community/reporting_bugs_and_features.html
|
||||
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1 +0,0 @@
|
||||
PULL_REQUEST_TEMPLATE/Unclear purpose or motivation.md
|
||||
23
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
23
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
##### 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
|
||||
- New Module 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
|
||||
|
||||
```
|
||||
20
.github/PULL_REQUEST_TEMPLATE/Bug fix.md
vendored
20
.github/PULL_REQUEST_TEMPLATE/Bug fix.md
vendored
@ -1,20 +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
|
||||
|
||||
- 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
|
||||
|
||||
```
|
||||
@ -1,19 +0,0 @@
|
||||
##### 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
|
||||
|
||||
```
|
||||
19
.github/PULL_REQUEST_TEMPLATE/New feature.md
vendored
19
.github/PULL_REQUEST_TEMPLATE/New feature.md
vendored
@ -1,19 +0,0 @@
|
||||
##### 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
|
||||
|
||||
```
|
||||
@ -1 +0,0 @@
|
||||
Unclear purpose or motivation.md
|
||||
20
.github/PULL_REQUEST_TEMPLATE/Tests.md
vendored
20
.github/PULL_REQUEST_TEMPLATE/Tests.md
vendored
@ -1,20 +0,0 @@
|
||||
##### 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
|
||||
|
||||
```
|
||||
@ -1,25 +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
|
||||
|
||||
##### 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
|
||||
|
||||
```
|
||||
18
.github/RELEASE_NAMES.txt
vendored
18
.github/RELEASE_NAMES.txt
vendored
@ -1,18 +0,0 @@
|
||||
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
|
||||
35
.gitignore
vendored
35
.gitignore
vendored
@ -32,17 +32,11 @@ docs/man/man3/*
|
||||
docs/docsite/_build
|
||||
docs/docsite/*.html
|
||||
docs/docsite/htmlout
|
||||
docs/docsite/rst/conf.py
|
||||
docs/docsite/rst/index.rst
|
||||
docs/docsite/rst/cli/ansible-*.rst
|
||||
docs/docsite/rst/cli/ansible.rst
|
||||
docs/docsite/rst/dev_guide/collections_galaxy_meta.rst
|
||||
docs/docsite/rst/dev_guide/testing/sanity/index.rst.new
|
||||
docs/docsite/rst/dev_guide/index.rst
|
||||
docs/docsite/rst/modules/*.rst
|
||||
docs/docsite/rst/collections/*.rst
|
||||
!docs/docsite/rst/collections/all_plugins.rst
|
||||
docs/docsite/rst/collections/*/*.rst
|
||||
docs/docsite/rst/playbooks_directives.rst
|
||||
docs/docsite/rst/plugins_by_category.rst
|
||||
docs/docsite/rst/plugins/*/*.rst
|
||||
@ -53,10 +47,12 @@ docs/docsite/searchindex.js
|
||||
docs/docsite/_static/*.gif
|
||||
docs/docsite/_static/*.png
|
||||
docs/docsite/_static/websupport.js
|
||||
# deb building stuff...
|
||||
/debian/
|
||||
deb-build
|
||||
# Vim swap files
|
||||
*.swp
|
||||
*.swo
|
||||
[._]*.un~
|
||||
credentials.yml
|
||||
# test output
|
||||
*.retry
|
||||
@ -68,34 +64,15 @@ credentials.yml
|
||||
results.xml
|
||||
coverage.xml
|
||||
/test/units/cover-html
|
||||
/test/integration/inventory
|
||||
/test/integration/targets/*/backup/
|
||||
/test/cache/*
|
||||
# Development
|
||||
/test/develop
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
venv
|
||||
env
|
||||
Vagrantfile
|
||||
.vagrant
|
||||
# Backwards compatibility with `stable-2.9` and earlier branches.
|
||||
# Also used in the `devel` branch during early Ansible 2.10 development.
|
||||
/lib/ansible.egg-info/
|
||||
# First used in the `devel` branch during Ansible 2.10 development.
|
||||
/lib/ansible_base.egg-info/
|
||||
# First used in the `devel` branch during Ansible 2.11 development.
|
||||
/lib/ansible_core.egg-info/
|
||||
# vendored lib dir
|
||||
lib/ansible/_vendor/*
|
||||
!lib/ansible/_vendor/__init__.py
|
||||
# test stuff
|
||||
ansible.egg-info/
|
||||
/shippable/
|
||||
/test/integration/cloud-config-*.*
|
||||
!/test/integration/cloud-config-*.*.template
|
||||
.python-version
|
||||
@ -122,3 +99,5 @@ test/units/.coverage.*
|
||||
/SYMLINK_CACHE.json
|
||||
changelogs/.plugin-cache.yaml
|
||||
.ansible-test-timeout.json
|
||||
# ansible-test temporary metadata file for use with delgation
|
||||
/metadata-*.json
|
||||
|
||||
10
CODING_GUIDELINES.md
Normal file
10
CODING_GUIDELINES.md
Normal file
@ -0,0 +1,10 @@
|
||||
Coding Guidelines
|
||||
=================
|
||||
|
||||
Hi! Thanks for your interest in contributing to Ansible. 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)
|
||||
|
||||
* [Development conventions, tips and pitfalls](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_best_practices.html)
|
||||
|
||||
Our [Community Guide](https://docs.ansible.com/ansible/devel/community/) may also help you connect with the community of Ansible developers.
|
||||
9
COPYING
9
COPYING
@ -1,7 +1,7 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
@ -664,11 +664,12 @@ might be different; for a GUI interface, you would use an "about box".
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
|
||||
40
MANIFEST.in
40
MANIFEST.in
@ -1,11 +1,37 @@
|
||||
include README.rst
|
||||
include COPYING
|
||||
include bin/*
|
||||
include changelogs/CHANGELOG*.rst
|
||||
include changelogs/changelog.yaml
|
||||
include licenses/*.txt
|
||||
include SYMLINK_CACHE.json
|
||||
include requirements.txt
|
||||
recursive-include packaging *.py *.j2
|
||||
include shippable.yml
|
||||
recursive-include docs *
|
||||
exclude docs/docsite/rst_warnings
|
||||
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 lib/ansible/executor/powershell *.ps1
|
||||
recursive-include lib/ansible/module_utils/csharp *.cs
|
||||
recursive-include lib/ansible/module_utils/powershell *.psm1
|
||||
recursive-include lib/ansible/modules/windows *.ps1
|
||||
recursive-include lib/ansible/galaxy/data *.yml *.j2 README.md ansible.cfg inventory .git_keep
|
||||
recursive-include lib/ansible/config *.yml
|
||||
recursive-include licenses *.txt
|
||||
recursive-include packaging *
|
||||
recursive-include test/ansible_test *.py Makefile
|
||||
recursive-include test/integration *
|
||||
recursive-include test/sanity *.in *.json *.py *.txt
|
||||
recursive-include test/support *.py *.ps1 *.psm1 *.cs *.md
|
||||
recursive-include test/lib/ansible_test/config *.template
|
||||
recursive-include test/lib/ansible_test/_data *.cfg *.ini *.json *.ps1 *.psd1 *.py *.sh *.txt *.yml coveragerc inventory
|
||||
recursive-include test/lib/ansible_test/_data/injector ansible ansible-config ansible-connection ansible-console ansible-doc ansible-galaxy ansible-playbook ansible-pull ansible-test ansible-vault pytest
|
||||
recursive-include test/lib/ansible_test/_data/sanity/validate-modules validate-modules
|
||||
recursive-include test/sanity *.json *.py *.txt
|
||||
exclude test/sanity/code-smell/botmeta.*
|
||||
recursive-include test/units *
|
||||
include Makefile
|
||||
include MANIFEST.in
|
||||
include changelogs/CHANGELOG*.rst
|
||||
include contrib/README.md
|
||||
recursive-include contrib/inventory *.py *.ini *.yml *.yaml
|
||||
recursive-include hacking/build_library *.py
|
||||
include hacking/build-ansible.py
|
||||
|
||||
5
MODULE_GUIDELINES.md
Normal file
5
MODULE_GUIDELINES.md
Normal file
@ -0,0 +1,5 @@
|
||||
# Module Maintainer Guidelines
|
||||
|
||||
The Ansible Module Maintainer Guidelines can now be found in the [official Ansible community guide](https://docs.ansible.com/ansible/latest/community/maintainers.html).
|
||||
|
||||
See also the [Developers Guide](https://docs.ansible.com/ansible/latest/dev_guide/)
|
||||
401
Makefile
Normal file
401
Makefile
Normal file
@ -0,0 +1,401 @@
|
||||
# WARN: gmake syntax
|
||||
########################################################
|
||||
# Makefile for Ansible
|
||||
#
|
||||
# useful targets:
|
||||
# make clean ---------------- clean up
|
||||
# make webdocs -------------- produce ansible doc at docs/docsite/_build/html
|
||||
# make sdist ---------------- produce a tarball
|
||||
# make srpm ----------------- produce a SRPM
|
||||
# make rpm ----------------- produce RPMs
|
||||
# make deb-src -------------- produce a DEB source
|
||||
# make deb ------------------ produce a DEB
|
||||
# make docs ----------------- rebuild the manpages (results are checked in)
|
||||
# make tests ---------------- run the tests (see https://docs.ansible.com/ansible/devel/dev_guide/testing_units.html for requirements)
|
||||
|
||||
########################################################
|
||||
# variable section
|
||||
|
||||
NAME = ansible
|
||||
OS = $(shell uname -s)
|
||||
PREFIX ?= '/usr/local'
|
||||
SDIST_DIR ?= 'dist'
|
||||
|
||||
# This doesn't evaluate until it's called. The -D argument is the
|
||||
# directory of the target file ($@), kinda like `dirname`.
|
||||
MANPAGES ?= $(patsubst %.rst.in,%,$(wildcard ./docs/man/man1/ansible*.1.rst.in))
|
||||
ifneq ($(shell which rst2man 2>/dev/null),)
|
||||
ASCII2MAN = rst2man $< $@
|
||||
else ifneq ($(shell which rst2man.py 2>/dev/null),)
|
||||
ASCII2MAN = rst2man.py $< $@
|
||||
else
|
||||
ASCII2MAN = @echo "ERROR: rst2man from docutils command is not installed but is required to build $(MANPAGES)" && exit 1
|
||||
endif
|
||||
|
||||
PYTHON=python
|
||||
GENERATE_CLI = hacking/build-ansible.py generate-man
|
||||
|
||||
SITELIB = $(shell $(PYTHON) -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
|
||||
|
||||
# fetch version from project release.py as single source-of-truth
|
||||
VERSION := $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --raw || echo error)
|
||||
ifeq ($(findstring error,$(VERSION)), error)
|
||||
$(error "version_helper failed")
|
||||
endif
|
||||
|
||||
MAJOR_VERSION := $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --majorversion)
|
||||
CODENAME := $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --codename)
|
||||
|
||||
# if a specific release was not requested, set to 1 (RPMs have "fancier" logic for this further down)
|
||||
RELEASE ?= 1
|
||||
|
||||
# Get the branch information from git
|
||||
ifneq ($(shell which git),)
|
||||
GIT_DATE := $(shell git log -n 1 --format="%ci")
|
||||
GIT_HASH := $(shell git log -n 1 --format="%h")
|
||||
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD | sed 's/[-_.\/]//g')
|
||||
GITINFO = .$(GIT_HASH).$(GIT_BRANCH)
|
||||
else
|
||||
GITINFO = ""
|
||||
endif
|
||||
|
||||
ifeq ($(shell echo $(OS) | egrep -c 'Darwin|FreeBSD|OpenBSD|DragonFly'),1)
|
||||
DATE := $(shell date -j -r $(shell git log -n 1 --format="%ct") +%Y%m%d%H%M)
|
||||
CPUS ?= $(shell sysctl hw.ncpu|awk '{print $$2}')
|
||||
else
|
||||
DATE := $(shell date --utc --date="$(GIT_DATE)" +%Y%m%d%H%M)
|
||||
CPUS ?= $(shell nproc)
|
||||
endif
|
||||
|
||||
# DEB build parameters
|
||||
DEBUILD_BIN ?= debuild
|
||||
DEBUILD_OPTS = --source-option="-I"
|
||||
DPUT_BIN ?= dput
|
||||
DPUT_OPTS ?=
|
||||
DEB_DATE := $(shell LC_TIME=C date +"%a, %d %b %Y %T %z")
|
||||
DEB_VERSION ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --debversion)
|
||||
ifeq ($(OFFICIAL),yes)
|
||||
DEB_RELEASE ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --debrelease)ppa
|
||||
# Sign OFFICIAL builds using 'DEBSIGN_KEYID'
|
||||
# DEBSIGN_KEYID is required when signing
|
||||
ifneq ($(DEBSIGN_KEYID),)
|
||||
DEBUILD_OPTS += -k$(DEBSIGN_KEYID)
|
||||
endif
|
||||
else
|
||||
DEB_RELEASE ?= 100.git$(DATE)$(GITINFO)
|
||||
# Do not sign unofficial builds
|
||||
DEBUILD_OPTS += -uc -us
|
||||
DPUT_OPTS += -u
|
||||
endif
|
||||
DEBUILD = $(DEBUILD_BIN) $(DEBUILD_OPTS)
|
||||
DEB_PPA ?= ppa
|
||||
# Choose the desired Ubuntu release: lucid precise saucy trusty
|
||||
DEB_DIST ?= unstable
|
||||
|
||||
# pbuilder parameters
|
||||
PBUILDER_ARCH ?= amd64
|
||||
PBUILDER_CACHE_DIR = /var/cache/pbuilder
|
||||
PBUILDER_BIN ?= pbuilder
|
||||
PBUILDER_OPTS ?= --debootstrapopts --variant=buildd --architecture $(PBUILDER_ARCH) --debbuildopts -b
|
||||
|
||||
# RPM build parameters
|
||||
RPMSPECDIR= packaging/rpm
|
||||
RPMSPEC = $(RPMSPECDIR)/ansible.spec
|
||||
RPMDIST = $(shell rpm --eval '%{?dist}')
|
||||
|
||||
ifneq ($(OFFICIAL),yes)
|
||||
RPMRELEASE = 100.git$(DATE)$(GITINFO)
|
||||
endif
|
||||
ifeq ($(PUBLISH),nightly)
|
||||
# https://fedoraproject.org/wiki/Packaging:Versioning#Snapshots
|
||||
RPMRELEASE = $(RELEASE).$(DATE)git.$(GIT_HASH)
|
||||
endif
|
||||
|
||||
RPMVERSION ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --baseversion)
|
||||
RPMRELEASE ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --rpmrelease)
|
||||
RPMNVR = "$(NAME)-$(RPMVERSION)-$(RPMRELEASE)$(RPMDIST)$(REPOTAG)"
|
||||
|
||||
# MOCK build parameters
|
||||
MOCK_BIN ?= mock
|
||||
MOCK_CFG ?=
|
||||
|
||||
# dynamically add repotag define only if specified
|
||||
ifneq ($(REPOTAG),)
|
||||
EXTRA_RPM_DEFINES += --define "repotag $(REPOTAG)"
|
||||
endif
|
||||
|
||||
# ansible-test parameters
|
||||
ANSIBLE_TEST ?= bin/ansible-test
|
||||
TEST_FLAGS ?=
|
||||
|
||||
# ansible-test units parameters (make test / make test-py3)
|
||||
PYTHON_VERSION ?= $(shell python2 -c 'import sys; print("%s.%s" % sys.version_info[:2])')
|
||||
PYTHON3_VERSION ?= $(shell python3 -c 'import sys; print("%s.%s" % sys.version_info[:2])')
|
||||
|
||||
# ansible-test integration parameters (make integration)
|
||||
IMAGE ?= centos7
|
||||
TARGET ?=
|
||||
|
||||
########################################################
|
||||
|
||||
.PHONY: all
|
||||
all: clean python
|
||||
|
||||
.PHONY: tests
|
||||
tests:
|
||||
$(ANSIBLE_TEST) units -v --python $(PYTHON_VERSION) $(TEST_FLAGS)
|
||||
|
||||
.PHONY: tests-py3
|
||||
tests-py3:
|
||||
$(ANSIBLE_TEST) units -v --python $(PYTHON3_VERSION) $(TEST_FLAGS)
|
||||
|
||||
.PHONY: tests-nonet
|
||||
tests-nonet:
|
||||
$(ANSIBLE_TEST) units -v --python $(PYTHON_VERSION) $(TEST_FLAGS) --exclude test/units/modules/network/
|
||||
|
||||
.PHONY: integration
|
||||
integration:
|
||||
$(ANSIBLE_TEST) integration -v --docker $(IMAGE) $(TARGET) $(TEST_FLAGS)
|
||||
|
||||
.PHONY: authors
|
||||
authors:
|
||||
sh hacking/authors.sh
|
||||
|
||||
# Regenerate %.1.rst if %.1.rst.in has been modified more
|
||||
# recently than %.1.rst.
|
||||
%.1.rst: %.1.rst.in
|
||||
sed "s/%VERSION%/$(VERSION)/" $< > $@
|
||||
rm $<
|
||||
|
||||
# Regenerate %.1 if %.1.rst or release.py has been modified more
|
||||
# recently than %.1. (Implicitly runs the %.1.rst recipe)
|
||||
%.1: %.1.rst lib/ansible/release.py
|
||||
$(ASCII2MAN)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
@echo "Cleaning up distutils stuff"
|
||||
rm -rf build
|
||||
rm -rf dist
|
||||
rm -rf lib/ansible.egg-info/
|
||||
@echo "Cleaning up byte compiled python stuff"
|
||||
find . -type f -regex ".*\.py[co]$$" -delete
|
||||
find . -type d -name "__pycache__" -delete
|
||||
@echo "Cleaning up editor backup files"
|
||||
find . -type f -not -path ./test/units/inventory_test_data/group_vars/noparse/all.yml~ \( -name "*~" -or -name "#*" \) -delete
|
||||
find . -type f \( -name "*.swp" \) -delete
|
||||
@echo "Cleaning up manpage stuff"
|
||||
find ./docs/man -type f -name "*.xml" -delete
|
||||
find ./docs/man -type f -name "*.rst" -delete
|
||||
find ./docs/man/man3 -type f -name "*.3" -delete
|
||||
rm -f ./docs/man/man1/*
|
||||
@echo "Cleaning up output from test runs"
|
||||
rm -rf test/test_data
|
||||
rm -rf shippable/
|
||||
rm -rf logs/
|
||||
rm -rf .cache/
|
||||
rm -f test/units/.coverage*
|
||||
rm -rf test/results/*/*
|
||||
find test/ -type f -name '*.retry' -delete
|
||||
@echo "Cleaning up RPM building stuff"
|
||||
rm -rf MANIFEST rpm-build
|
||||
@echo "Cleaning up Debian building stuff"
|
||||
rm -rf debian
|
||||
rm -rf deb-build
|
||||
rm -rf docs/json
|
||||
rm -rf docs/js
|
||||
@echo "Cleaning up authors file"
|
||||
rm -f AUTHORS.TXT
|
||||
@echo "Cleaning up docsite"
|
||||
$(MAKE) -C docs/docsite clean
|
||||
|
||||
.PHONY: python
|
||||
python:
|
||||
$(PYTHON) setup.py build
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
$(PYTHON) setup.py install
|
||||
|
||||
install_manpages:
|
||||
gzip -9 $(wildcard ./docs/man/man1/ansible*.1)
|
||||
cp $(wildcard ./docs/man/man1/ansible*.1.gz) $(PREFIX)/man/man1/
|
||||
|
||||
.PHONY: sdist_check
|
||||
sdist_check:
|
||||
$(PYTHON) packaging/sdist/check-link-behavior.py
|
||||
|
||||
.PHONY: sdist
|
||||
sdist: sdist_check clean docs
|
||||
_ANSIBLE_SDIST_FROM_MAKEFILE=1 $(PYTHON) setup.py sdist --dist-dir=$(SDIST_DIR)
|
||||
|
||||
# Official releases generate the changelog as the last commit before the release.
|
||||
# Snapshots shouldn't result in new checkins so the changelog is generated as
|
||||
# part of creating the tarball.
|
||||
.PHONY: snapshot
|
||||
snapshot: sdist_check clean docs changelog
|
||||
_ANSIBLE_SDIST_FROM_MAKEFILE=1 $(PYTHON) setup.py sdist --dist-dir=$(SDIST_DIR)
|
||||
|
||||
.PHONY: sdist_upload
|
||||
sdist_upload: clean docs
|
||||
$(PYTHON) setup.py sdist upload 2>&1 |tee upload.log
|
||||
|
||||
.PHONY: changelog
|
||||
changelog:
|
||||
PYTHONPATH=./lib packaging/release/changelogs/changelog.py release -vv && PYTHONPATH=./lib packaging/release/changelogs/changelog.py generate -vv
|
||||
|
||||
.PHONY: rpmcommon
|
||||
rpmcommon: sdist
|
||||
@mkdir -p rpm-build
|
||||
@cp dist/*.gz rpm-build/
|
||||
@cp $(RPMSPEC) rpm-build/$(NAME).spec
|
||||
|
||||
.PHONY: mock-srpm
|
||||
mock-srpm: /etc/mock/$(MOCK_CFG).cfg rpmcommon
|
||||
$(MOCK_BIN) -r $(MOCK_CFG) $(MOCK_ARGS) --resultdir rpm-build/ --bootstrap-chroot --old-chroot --buildsrpm --spec rpm-build/$(NAME).spec --sources rpm-build/ \
|
||||
--define "rpmversion $(RPMVERSION)" \
|
||||
--define "upstream_version $(VERSION)" \
|
||||
--define "rpmrelease $(RPMRELEASE)" \
|
||||
$(EXTRA_RPM_DEFINES)
|
||||
@echo "#############################################"
|
||||
@echo "Ansible SRPM is built:"
|
||||
@echo rpm-build/*.src.rpm
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: mock-rpm
|
||||
mock-rpm: /etc/mock/$(MOCK_CFG).cfg mock-srpm
|
||||
$(MOCK_BIN) -r $(MOCK_CFG) $(MOCK_ARGS) --resultdir rpm-build/ --bootstrap-chroot --old-chroot --rebuild rpm-build/$(NAME)-*.src.rpm \
|
||||
--define "rpmversion $(RPMVERSION)" \
|
||||
--define "upstream_version $(VERSION)" \
|
||||
--define "rpmrelease $(RPMRELEASE)" \
|
||||
$(EXTRA_RPM_DEFINES)
|
||||
@echo "#############################################"
|
||||
@echo "Ansible RPM is built:"
|
||||
@echo rpm-build/*.noarch.rpm
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: srpm
|
||||
srpm: rpmcommon
|
||||
@rpmbuild --define "_topdir %(pwd)/rpm-build" \
|
||||
--define "_builddir %{_topdir}" \
|
||||
--define "_rpmdir %{_topdir}" \
|
||||
--define "_srcrpmdir %{_topdir}" \
|
||||
--define "_specdir $(RPMSPECDIR)" \
|
||||
--define "_sourcedir %{_topdir}" \
|
||||
--define "upstream_version $(VERSION)" \
|
||||
--define "rpmversion $(RPMVERSION)" \
|
||||
--define "rpmrelease $(RPMRELEASE)" \
|
||||
$(EXTRA_RPM_DEFINES) \
|
||||
-bs rpm-build/$(NAME).spec
|
||||
@rm -f rpm-build/$(NAME).spec
|
||||
@echo "#############################################"
|
||||
@echo "Ansible SRPM is built:"
|
||||
@echo " rpm-build/$(RPMNVR).src.rpm"
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: rpm
|
||||
rpm: rpmcommon
|
||||
@rpmbuild --define "_topdir %(pwd)/rpm-build" \
|
||||
--define "_builddir %{_topdir}" \
|
||||
--define "_rpmdir %{_topdir}" \
|
||||
--define "_srcrpmdir %{_topdir}" \
|
||||
--define "_specdir $(RPMSPECDIR)" \
|
||||
--define "_sourcedir %{_topdir}" \
|
||||
--define "_rpmfilename $(RPMNVR).%%{ARCH}.rpm" \
|
||||
--define "__python `which $(PYTHON)`" \
|
||||
--define "upstream_version $(VERSION)" \
|
||||
--define "rpmversion $(RPMVERSION)" \
|
||||
--define "rpmrelease $(RPMRELEASE)" \
|
||||
$(EXTRA_RPM_DEFINES) \
|
||||
-ba rpm-build/$(NAME).spec
|
||||
@rm -f rpm-build/$(NAME).spec
|
||||
@echo "#############################################"
|
||||
@echo "Ansible RPM is built:"
|
||||
@echo " rpm-build/$(RPMNVR).noarch.rpm"
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: debian
|
||||
debian: sdist
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
mkdir -p deb-build/$${DIST} ; \
|
||||
tar -C deb-build/$${DIST} -xvf dist/$(NAME)-$(VERSION).tar.gz ; \
|
||||
cp -a packaging/debian deb-build/$${DIST}/$(NAME)-$(VERSION)/ ; \
|
||||
sed -ie "s|%VERSION%|$(DEB_VERSION)|g;s|%RELEASE%|$(DEB_RELEASE)|;s|%DIST%|$${DIST}|g;s|%DATE%|$(DEB_DATE)|g" deb-build/$${DIST}/$(NAME)-$(VERSION)/debian/changelog ; \
|
||||
done
|
||||
|
||||
.PHONY: deb
|
||||
deb: deb-src
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
PBUILDER_OPTS="$(PBUILDER_OPTS) --distribution $${DIST} --basetgz $(PBUILDER_CACHE_DIR)/$${DIST}-$(PBUILDER_ARCH)-base.tgz --buildresult $(CURDIR)/deb-build/$${DIST}" ; \
|
||||
$(PBUILDER_BIN) create $${PBUILDER_OPTS} --othermirror "deb http://archive.ubuntu.com/ubuntu $${DIST} universe" ; \
|
||||
$(PBUILDER_BIN) update $${PBUILDER_OPTS} ; \
|
||||
$(PBUILDER_BIN) build $${PBUILDER_OPTS} deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}.dsc ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_amd64.changes ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
|
||||
# Build package outside of pbuilder, with locally installed dependencies.
|
||||
# Install BuildRequires as noted in packaging/debian/control.
|
||||
.PHONY: local_deb
|
||||
local_deb: debian
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
(cd deb-build/$${DIST}/$(NAME)-$(VERSION)/ && $(DEBUILD) -b) ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_amd64.changes ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: deb-src
|
||||
deb-src: debian
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
(cd deb-build/$${DIST}/$(NAME)-$(VERSION)/ && $(DEBUILD) -S) ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_source.changes ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: deb-upload
|
||||
deb-upload: deb
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
$(DPUT_BIN) $(DPUT_OPTS) $(DEB_PPA) deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_amd64.changes ; \
|
||||
done
|
||||
|
||||
.PHONY: deb-src-upload
|
||||
deb-src-upload: deb-src
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
$(DPUT_BIN) $(DPUT_OPTS) $(DEB_PPA) deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_source.changes ; \
|
||||
done
|
||||
|
||||
.PHONY: epub
|
||||
epub:
|
||||
(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) epub)
|
||||
|
||||
# for arch or gentoo, read instructions in the appropriate 'packaging' subdirectory directory
|
||||
.PHONY: webdocs
|
||||
webdocs:
|
||||
(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) docs)
|
||||
|
||||
.PHONY: generate_rst
|
||||
generate_rst: lib/ansible/cli/*.py
|
||||
mkdir -p ./docs/man/man1/ ; \
|
||||
PYTHONPATH=./lib $(GENERATE_CLI) --template-file=docs/templates/man.j2 --output-dir=docs/man/man1/ --output-format man lib/ansible/cli/*.py
|
||||
|
||||
|
||||
docs: generate_rst
|
||||
$(MAKE) $(MANPAGES)
|
||||
|
||||
.PHONY: alldocs
|
||||
alldocs: docs webdocs
|
||||
|
||||
version:
|
||||
@echo $(VERSION)
|
||||
89
README.md
89
README.md
@ -1,89 +0,0 @@
|
||||
[](https://pypi.org/project/ansible-core)
|
||||
[](https://docs.ansible.com/ansible/latest/)
|
||||
[](https://docs.ansible.com/ansible/latest/community/communication.html)
|
||||
[](https://dev.azure.com/ansible/ansible/_build/latest?definitionId=20&branchName=devel)
|
||||
[](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html)
|
||||
[](https://docs.ansible.com/ansible/latest/community/communication.html#mailing-list-information)
|
||||
[](COPYING)
|
||||
[](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.
|
||||
|
||||
## 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://docs.ansible.com/ansible/devel/community/communication.html#working-groups),
|
||||
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/devel/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.
|
||||
107
README.rst
Normal file
107
README.rst
Normal file
@ -0,0 +1,107 @@
|
||||
|PyPI version| |Docs badge| |Chat badge| |Build Status| |Code Of Conduct| |Mailing Lists| |License|
|
||||
|
||||
*******
|
||||
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 a dead simple setup process and a minimal learning curve.
|
||||
* Manage machines very 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 via ``pip``, a package manager, or
|
||||
our `release repository <https://releases.ansible.com/ansible/>`_. 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.
|
||||
|
||||
Red Hat offers supported builds of `Ansible Engine <https://www.ansible.com/ansible-engine>`_.
|
||||
|
||||
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, 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>`_
|
||||
|
||||
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/latest/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 4000 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
|
||||
|
||||
See `COPYING <COPYING>`_ to see the full text.
|
||||
|
||||
.. |PyPI version| image:: https://img.shields.io/pypi/v/ansible.svg
|
||||
:target: https://pypi.org/project/ansible
|
||||
.. |Docs badge| image:: https://img.shields.io/badge/docs-latest-brightgreen.svg
|
||||
:target: https://docs.ansible.com/ansible/latest/
|
||||
.. |Build Status| image:: https://api.shippable.com/projects/573f79d02a8192902e20e34b/badge?branch=devel
|
||||
:target: https://app.shippable.com/projects/573f79d02a8192902e20e34b
|
||||
.. |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
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/adhoc.py
|
||||
../lib/ansible/cli/scripts/ansible_cli_stub.py
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/config.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/console.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/doc.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/galaxy.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/inventory.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/playbook.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/pull.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py
|
||||
../test/lib/ansible_test/_data/cli/ansible_test_cli_stub.py
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/vault.py
|
||||
ansible
|
||||
1310
changelogs/.changes.yaml
Normal file
1310
changelogs/.changes.yaml
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,321 +0,0 @@
|
||||
==============================================
|
||||
ansible-core 2.17 "Gallows Pole" Release Notes
|
||||
==============================================
|
||||
|
||||
.. contents:: Topics
|
||||
|
||||
v2.17.2
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-07-15
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix a traceback when an environment variable contains certain special characters (https://github.com/ansible/ansible/issues/83498)
|
||||
- dnf - reverted incomplete fix from 2.17.2rc1 (https://github.com/ansible/ansible/pull/83504)
|
||||
- dnf, dnf5 - fix for installing a set of packages by specifying them using a wildcard character (https://github.com/ansible/ansible/issues/83373)
|
||||
- linear strategy now provides a properly templated task name to the v2_runner_on_started callback event.
|
||||
- package_facts - ignore warnings sent by apk on stderr (https://github.com/ansible/ansible/issues/83501).
|
||||
- replace - Updated before/after example (https://github.com/ansible/ansible/issues/83390).
|
||||
- templating hostvars under native jinja will not cause serialization errors anymore.
|
||||
|
||||
v2.17.1
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-06-17
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Update ``pypi-test-container`` to version 3.1.0.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix rapid memory usage growth when notifying handlers using the ``listen`` keyword (https://github.com/ansible/ansible/issues/83392)
|
||||
- Fix the task attribute ``resolved_action`` to show the FQCN instead of ``None`` when ``action`` or ``local_action`` is used in the playbook.
|
||||
- Fix using ``module_defaults`` with ``local_action``/``action`` (https://github.com/ansible/ansible/issues/81905).
|
||||
- fixed unit test test_borken_cowsay to address mock not been properly applied when existing unix system already have cowsay installed.
|
||||
- powershell - Implement more robust deletion mechanism for C# code compilation temporary files. This should avoid scenarios where the underlying temporary directory may be temporarily locked by antivirus tools or other IO problems. A failure to delete one of these temporary directories will result in a warning rather than an outright failure.
|
||||
- shell plugin - properly quote all needed components of shell commands (https://github.com/ansible/ansible/issues/82535)
|
||||
|
||||
v2.17.0
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-05-20
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
Major Changes
|
||||
-------------
|
||||
|
||||
- urls.py - Removed support for Python 2
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- Add ``dump`` and ``passno`` mount information to facts component (https://github.com/ansible/ansible/issues/80478)
|
||||
- Added MIRACLE LINUX 9.2 in RedHat OS Family.
|
||||
- Interpreter Discovery - Remove hardcoded references to specific python interpreters to use for certain distro versions, and modify logic for python3 to become the default.
|
||||
- Use Python's built-in ``functools.update_wrapper`` instead an inline copy from Python 3.7.
|
||||
- User can now set ansible.log to record higher verbosity than what is specified for display via new configuration item LOG_VERBOSITY.
|
||||
- ``DEFAULT_PRIVATE_ROLE_VARS`` is now overridden by explicit setting of ``public`` for ``include_roles`` and ``import_roles``.
|
||||
- ``ansible-galaxy role|collection init`` - accept ``--extra-vars`` to supplement/override the variables ``ansible-galaxy`` injects for templating ``.j2`` files in the skeleton.
|
||||
- ``import_role`` action now also gets a ``public`` option that controls variable exports, default depending on ``DEFAULT_PRIVATE_ROLE_VARS`` (if using defaults equates to ``public=True``).
|
||||
- added configuration item ``TARGET_LOG_INFO`` that allows the user/author to add an information string to the log output on targets.
|
||||
- ansible-doc - treat double newlines in documentation strings as paragraph breaks. This is useful to create multi-paragraph notes in module/plugin documentation (https://github.com/ansible/ansible/pull/82465).
|
||||
- ansible-doc output has been revamped to make it more visually pleasing when going to a terminal, also more concise, use -v to show extra information.
|
||||
- ansible-galaxy - Started normalizing build directory with a trailing separator when building collections, internally. (https://github.com/ansible/ansible/pull/81619).
|
||||
- ansible-galaxy dependency resolution messages have changed the unexplained 'virtual' collection for the specific type ('scm', 'dir', etc) that is more user friendly
|
||||
- ansible-test - Add Alpine 3.19 container.
|
||||
- ansible-test - Add Alpine 3.19 to remotes.
|
||||
- ansible-test - Add Fedora 39 container.
|
||||
- ansible-test - Add Fedora 39 remote.
|
||||
- ansible-test - Add a work-around for permission denied errors when using ``pytest >= 8`` on multi-user systems with an installed version of ``ansible-test``.
|
||||
- ansible-test - Add support for RHEL 9.3 remotes.
|
||||
- ansible-test - Added a macOS 14.3 remote VM.
|
||||
- ansible-test - Bump the ``nios-test-container`` from version 2.0.0 to version 3.0.0.
|
||||
- ansible-test - Containers and remotes managed by ansible-test will have their Python ``EXTERNALLY-MANAGED`` marker (PEP668) removed. This provides backwards compatibility for existing tests running in newer environments which mark their Python as externally managed. A future version of ansible-test may change this behavior, requiring tests to be adapted to such environments.
|
||||
- ansible-test - Make Python 3.12 the default version used in the ``base`` and ``default`` containers.
|
||||
- ansible-test - Remove Alpine 3(.18) container.
|
||||
- ansible-test - Remove Alpine 3.18 from remotes.
|
||||
- ansible-test - Remove Fedora 38 remote support.
|
||||
- ansible-test - Remove Fedora 38 test container.
|
||||
- ansible-test - Remove rhel/9.2 test remote
|
||||
- ansible-test - Remove the FreeBSD 13.2 remote.
|
||||
- ansible-test - Removed fallback to ``virtualenv`` when ``-m venv`` is non-functional.
|
||||
- ansible-test - Removed test remotes: macos/13.2
|
||||
- ansible-test - Removed the ``no-basestring`` sanity test. The test is no longer necessary now that Python 3 is required.
|
||||
- ansible-test - Removed the ``no-dict-iteritems``, ``no-dict-iterkeys`` and ``no-dict-itervalues`` sanity tests. The tests are no longer necessary since Python 3 is required.
|
||||
- ansible-test - Removed the ``no-main-display`` sanity test. The unwanted pattern is unlikely to occur, since the test has existed since Ansible 2.8.
|
||||
- ansible-test - Removed the ``no-unicode-literals`` sanity test. The test is unnecessary now that Python 3 is required and the ``unicode_literals`` feature has no effect.
|
||||
- ansible-test - Special handling for installation of ``cryptography`` has been removed, as it is no longer necessary.
|
||||
- ansible-test - The ``shellcheck`` sanity test no longer disables the ``SC2164`` check. In most cases, seeing this error means the script is missing ``set -e``.
|
||||
- ansible-test - The ``unidiomatic-typecheck`` rule has been enabled in the ``pylint`` sanity test.
|
||||
- ansible-test - The ``unidiomatic-typecheck`` rule has been removed from the ``validate-modules`` sanity test.
|
||||
- ansible-test - Update the base and default containers to use Ubuntu 22.04 for the base image. This also updates PowerShell to version 7.4.0 with .NET 8.0.0 and ShellCheck to version 0.8.0.
|
||||
- ansible-test - Updated the CloudStack test container to version 1.7.0.
|
||||
- ansible-test - Updated the distro test containers to version 6.3.0 to include coverage 7.3.2 for Python 3.8+. The alpine3 container is now based on 3.18 instead of 3.17 and includes Python 3.11 instead of Python 3.10.
|
||||
- ansible-test - Updated the distro test containers to version 7.1.0.
|
||||
- ansible-test - When ansible-test installs requirements, it now instructs pip to allow installs on externally managed environments as defined by PEP 668. This only occurs in ephemeral environments managed by ansible-test, such as containers, or when the `--requirements` option is used.
|
||||
- ansible-test - When invoking ``sleep`` in containers during container setup, the ``env`` command is used to avoid invoking the shell builtin, if present.
|
||||
- ansible-test - document block name now included in error message for YAML parsing errors (https://github.com/ansible/ansible/issues/82353).
|
||||
- ansible-test - sanity test allows ``EXAMPLES`` to be multi-document YAML (https://github.com/ansible/ansible/issues/82353).
|
||||
- ansible-test now has FreeBSD 13.3 and 14.0 support
|
||||
- ansible.builtin.user - Remove user not found warning (https://github.com/ansible/ansible/issues/80267)
|
||||
- apt_repository.py - use api.launchpad.net endpoint instead of launchpad.net/api
|
||||
- async tasks can now also support check mode at the same time.
|
||||
- async_status now supports check mode.
|
||||
- constructed inventory plugin - Adding a note that only group_vars of explicit groups are loaded (https://github.com/ansible/ansible/pull/82580).
|
||||
- csvfile - add a keycol parameter to specify in which column to search.
|
||||
- dnf - add the ``best`` option
|
||||
- dnf5 - add the ``best`` option
|
||||
- filter plugin - Add the count and mandatory_count parameters in the regex_replace filter
|
||||
- find - add a encoding parameter to specify which encoding of the files to be searched.
|
||||
- git module - gpg_allowlist name was added in 2.17 and we will eventually deprecate the gpg_whitelist alias.
|
||||
- import_role - allow subdirectories with ``_from`` options for parity with ``include_role`` (https://github.com/ansible/ansible/issues/82584).
|
||||
- module argument spec - Allow module authors to include arbitrary additional context in the argument spec, by making use of a new top level key called ``context``. This key should be a dict type. This allows for users to customize what they place in the argument spec, without having to ignore sanity tests that validate the schema.
|
||||
- modules - Add the ability for an action plugin to call ``self._execute_module(*, ignore_unknown_opts=True)`` to execute a module with options that may not be supported for the version being called. This tells the module basic wrapper to ignore validating the options provided match the arg spec.
|
||||
- package action now has a configuration that overrides the detected package manager, it is still overridden itself by the use option.
|
||||
- py3compat - Remove ``ansible.utils.py3compat`` as it is no longer necessary
|
||||
- removed the unused argument ``create_new_password`` from ``CLI.build_vault_ids`` (https://github.com/ansible/ansible/pull/82066).
|
||||
- urls - Add support for TLS 1.3 post handshake certificate authentication - https://github.com/ansible/ansible/issues/81782
|
||||
- urls - reduce complexity of ``Request.open``
|
||||
- user - accept yescrypt hash as user password
|
||||
- validate-modules tests now correctly handles ``choices`` in dictionary format.
|
||||
|
||||
Breaking Changes / Porting Guide
|
||||
--------------------------------
|
||||
|
||||
- assert - Nested templating may result in an inability for the conditional to be evaluated. See the porting guide for more information.
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- Old style vars plugins which use the entrypoints `get_host_vars` or `get_group_vars` are deprecated. The plugin should be updated to inherit from `BaseVarsPlugin` and define a `get_vars` method as the entrypoint.
|
||||
- The 'required' parameter in 'ansible.module_utils.common.process.get_bin_path' API is deprecated (https://github.com/ansible/ansible/issues/82464).
|
||||
- ``module_utils`` - importing the following convenience helpers from ``ansible.module_utils.basic`` has been deprecated: ``get_exception``, ``literal_eval``, ``_literal_eval``, ``datetime``, ``signal``, ``types``, ``chain``, ``repeat``, ``PY2``, ``PY3``, ``b``, ``binary_type``, ``integer_types``, ``iteritems``, ``string_types``, ``test_type``, ``map`` and ``shlex_quote``.
|
||||
- ansible-doc - role entrypoint attributes are deprecated and eventually will no longer be shown in ansible-doc from ansible-core 2.20 on (https://github.com/ansible/ansible/issues/82639, https://github.com/ansible/ansible/pull/82678).
|
||||
- paramiko connection plugin, configuration items in the global scope are being deprecated and will be removed in favor or the existing same options in the plugin itself. Users should not need to change anything (how to configure them are the same) but plugin authors using the global constants should move to using the plugin's get_option().
|
||||
|
||||
Removed Features (previously deprecated)
|
||||
----------------------------------------
|
||||
|
||||
- Remove deprecated APIs from ansible-docs (https://github.com/ansible/ansible/issues/81716).
|
||||
- Remove deprecated JINJA2_NATIVE_WARNING environment variable (https://github.com/ansible/ansible/issues/81714)
|
||||
- Remove deprecated ``scp_if_ssh`` from ssh connection plugin (https://github.com/ansible/ansible/issues/81715).
|
||||
- Remove deprecated crypt support from ansible.utils.encrypt (https://github.com/ansible/ansible/issues/81717)
|
||||
- Removed Python 2.7 and Python 3.6 as a supported remote version. Python 3.7+ is now required for target execution.
|
||||
- With the removal of Python 2 support, the yum module and yum action plugin are removed and redirected to ``dnf``.
|
||||
|
||||
Security Fixes
|
||||
--------------
|
||||
|
||||
- ANSIBLE_NO_LOG - Address issue where ANSIBLE_NO_LOG was ignored (CVE-2024-0690)
|
||||
- ansible-galaxy - Prevent roles from using symlinks to overwrite files outside of the installation directory (CVE-2023-5115)
|
||||
- templating - Address issues where internal templating can cause unsafe variables to lose their unsafe designation (CVE-2023-5764)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Add a version ceiling constraint for pypsrp to avoid potential breaking changes in the 1.0.0 release.
|
||||
- All core lookups now use set_option(s) even when doing their own custom parsing. This ensures that the options are always the proper type.
|
||||
- Allow for searching handler subdir for included task via include_role (https://github.com/ansible/ansible/issues/81722)
|
||||
- AnsibleModule.atomic_move - fix preserving extended ACLs of the destination when it exists (https://github.com/ansible/ansible/issues/72929).
|
||||
- Cache host_group_vars after instantiating it once and limit the amount of repetitive work it needs to do every time it runs.
|
||||
- Call PluginLoader.all() once for vars plugins, and load vars plugins that run automatically or are enabled specifically by name subsequently.
|
||||
- Consolidate systemd detection logic into one place (https://github.com/ansible/ansible/issues/80975).
|
||||
- Consolidated the list of internal static vars, centralized them as constant and completed from some missing entries.
|
||||
- Do not print undefined error message twice (https://github.com/ansible/ansible/issues/78703).
|
||||
- Enable file cache for vaulted files during vars lookup to fix a strong performance penalty in huge and complex playbboks.
|
||||
- Fix NEVRA parsing of package names that include digit(s) in them (https://github.com/ansible/ansible/issues/76463, https://github.com/ansible/ansible/issues/81018)
|
||||
- Fix ``force_handlers`` not working with ``any_errors_fatal`` (https://github.com/ansible/ansible/issues/36308)
|
||||
- Fix ``run_once`` being incorrectly interpreted on handlers (https://github.com/ansible/ansible/issues/81666)
|
||||
- Fix an issue when setting a plugin name from an unsafe source resulted in ``ValueError: unmarshallable object`` (https://github.com/ansible/ansible/issues/82708)
|
||||
- Fix check for missing _sub_plugin attribute in older connection plugins (https://github.com/ansible/ansible/pull/82954)
|
||||
- Fix condition for unquoting configuration strings from ini files (https://github.com/ansible/ansible/issues/82387).
|
||||
- Fix for when ``any_errors_fatal`` was ignored if error occurred in a block with always (https://github.com/ansible/ansible/issues/31543)
|
||||
- Fix handlers not being executed in lockstep using the linear strategy in some cases (https://github.com/ansible/ansible/issues/82307)
|
||||
- Fix handling missing urls in ansible.module_utils.urls.fetch_file for Python 3.
|
||||
- Fix issue where an ``include_tasks`` handler in a role was not able to locate a file in ``tasks/`` when ``tasks_from`` was used as a role entry point and ``main.yml`` was not present (https://github.com/ansible/ansible/issues/82241)
|
||||
- Fix issues when tasks withing nested blocks wouldn't run when ``force_handlers`` is set (https://github.com/ansible/ansible/issues/81533)
|
||||
- Fix loading vars_plugins in roles (https://github.com/ansible/ansible/issues/82239).
|
||||
- Fix notifying role handlers by listen keyword topics with the "role_name : " prefix (https://github.com/ansible/ansible/issues/82849).
|
||||
- Fix setting proper locale for git executable when running on non english systems, ensuring git output can always be parsed.
|
||||
- Fix tasks in always section not being executed for nested blocks with ``any_errors_fatal`` (https://github.com/ansible/ansible/issues/73246)
|
||||
- Fixes permission for cache json file from 600 to 644 (https://github.com/ansible/ansible/issues/82683).
|
||||
- Give the tombstone error for ``include`` pre-fork like other tombstoned action/module plugins.
|
||||
- Harden python templates for respawn and ansiballz around str literal quoting
|
||||
- Include the task location when a module or action plugin is deprecated (https://github.com/ansible/ansible/issues/82450).
|
||||
- Interpreter discovery - Add ``Amzn`` to ``OS_FAMILY_MAP`` for correct family fallback for interpreter discovery (https://github.com/ansible/ansible/issues/80882).
|
||||
- Mirror the behavior of dnf on the command line when handling NEVRAs with omitted epoch (https://github.com/ansible/ansible/issues/71808)
|
||||
- Plugin loader does not dedupe nor cache filter/test plugins by file basename, but full path name.
|
||||
- Properly template tags in parent blocks (https://github.com/ansible/ansible/issues/81053)
|
||||
- Provide additional information about the alternative plugin in the deprecation message (https://github.com/ansible/ansible/issues/80561).
|
||||
- Remove the galaxy_info field ``platforms`` from the role templates (https://github.com/ansible/ansible/issues/82453).
|
||||
- Restoring the ability of filters/tests can have same file base name but different tests/filters defined inside.
|
||||
- Reword the error message when the module fails to parse parameters in JSON format (https://github.com/ansible/ansible/issues/81188).
|
||||
- Reword warning if the reserved keyword _ansible_ used as a module parameter (https://github.com/ansible/ansible/issues/82514).
|
||||
- Run all handlers with the same ``listen`` topic, even when notified from another handler (https://github.com/ansible/ansible/issues/82363).
|
||||
- Slight optimization to hostvars (instantiate template only once per host, vs per call to var).
|
||||
- Stopped misleadingly advertising ``async`` mode support in the ``reboot`` module (https://github.com/ansible/ansible/issues/71517).
|
||||
- ``ansible-galaxy role import`` - fix using the ``role_name`` in a standalone role's ``galaxy_info`` metadata by disabling automatic removal of the ``ansible-role-`` prefix. This matches the behavior of the Galaxy UI which also no longer implicitly removes the ``ansible-role-`` prefix. Use the ``--role-name`` option or add a ``role_name`` to the ``galaxy_info`` dictionary in the role's ``meta/main.yml`` to use an alternate role name.
|
||||
- ``ansible-test sanity --test runtime-metadata`` - add ``action_plugin`` as a valid field for modules in the schema (https://github.com/ansible/ansible/pull/82562).
|
||||
- ``ansible.module_utils.service`` - ensure binary data transmission in ``daemonize()``
|
||||
- ``any_errors_fatal`` should fail all hosts and rescue all of them when a ``rescue`` section is specified (https://github.com/ansible/ansible/issues/80981)
|
||||
- ``include_role`` - properly execute ``v2_playbook_on_include`` and ``v2_runner_on_failed`` callbacks as well as increase ``ok`` and ``failed`` stats in the play recap, when appropriate (https://github.com/ansible/ansible/issues/77336)
|
||||
- allow_duplicates - fix evaluating if the current role allows duplicates instead of using the initial value from the duplicate's cached role.
|
||||
- ansible-config init will now dedupe ini entries from plugins.
|
||||
- ansible-config will now properly template defaults before dumping them.
|
||||
- ansible-doc - fixed "inicates" typo in output
|
||||
- ansible-doc - format top-level descriptions with multiple paragraphs as multiple paragraphs, instead of concatenating them (https://github.com/ansible/ansible/pull/83155).
|
||||
- ansible-galaxy - Deprecate use of the Galaxy v2 API (https://github.com/ansible/ansible/issues/81781)
|
||||
- ansible-galaxy - Provide a better error message when using a requirements file with an invalid format - https://github.com/ansible/ansible/issues/81901
|
||||
- ansible-galaxy - Resolve issue with the dataclass used for galaxy.yml manifest caused by using future annotations
|
||||
- ansible-galaxy - ensure path to ansible collection when installing or downloading doesn't have a backslash (https://github.com/ansible/ansible/pull/79705).
|
||||
- ansible-galaxy - started allowing the use of pre-releases for collections that do not have any stable versions published. (https://github.com/ansible/ansible/pull/81606)
|
||||
- ansible-galaxy - started allowing the use of pre-releases for dependencies on any level of the dependency tree that specifically demand exact pre-release versions of collections and not version ranges. (https://github.com/ansible/ansible/pull/81606)
|
||||
- ansible-galaxy error on dependency resolution will not error itself due to 'virtual' collections not having a name/namespace.
|
||||
- ansible-galaxy info - fix reporting no role found when lookup_role_by_name returns None.
|
||||
- ansible-galaxy role import - exit with 1 when the import fails (https://github.com/ansible/ansible/issues/82175).
|
||||
- ansible-galaxy role install - fix installing roles from Galaxy that have version ``None`` (https://github.com/ansible/ansible/issues/81832).
|
||||
- ansible-galaxy role install - fix symlinks (https://github.com/ansible/ansible/issues/82702, https://github.com/ansible/ansible/issues/81965).
|
||||
- ansible-galaxy role install - normalize tarfile paths and symlinks using ``ansible.utils.path.unfrackpath`` and consider them valid as long as the realpath is in the tarfile's role directory (https://github.com/ansible/ansible/issues/81965).
|
||||
- ansible-inventory - index available_hosts for major performance boost when dumping large inventories
|
||||
- ansible-pull now will expand relative paths for the ``-d|--directory`` option is now expanded before use.
|
||||
- ansible-pull will now correctly handle become and connection password file options for ansible-playbook.
|
||||
- ansible-test - Add a ``pylint`` plugin to work around a known issue on Python 3.12.
|
||||
- ansible-test - Explicitly supply ``ControlPath=none`` when setting up port forwarding over SSH to address the scenario where the local ssh configuration uses ``ControlPath`` for all hosts, and would prevent ports to be forwarded after the initial connection to the host.
|
||||
- ansible-test - Fix parsing of cgroup entries which contain a ``:`` in the path (https://github.com/ansible/ansible/issues/81977).
|
||||
- ansible-test - Include missing ``pylint`` requirements for Python 3.10.
|
||||
- ansible-test - Properly detect docker host when using ``ssh://`` protocol for connecting to the docker daemon.
|
||||
- ansible-test - The ``libexpat`` package is automatically upgraded during remote bootstrapping to maintain compatibility with newer Python packages.
|
||||
- ansible-test - The ``validate-modules`` sanity test no longer attempts to process files with unrecognized extensions as Python (resolves https://github.com/ansible/ansible/issues/82604).
|
||||
- ansible-test - Update ``pylint`` to version 3.0.1.
|
||||
- ansible-test ansible-doc sanity test - do not remove underscores from plugin names in collections before calling ``ansible-doc`` (https://github.com/ansible/ansible/pull/82574).
|
||||
- ansible-test validate-modules sanity test - do not treat leading underscores for plugin names in collections as an attempted deprecation (https://github.com/ansible/ansible/pull/82575).
|
||||
- ansible-test — Python 3.8–3.12 will use ``coverage`` v7.3.2.
|
||||
- ansible.builtin.apt - calling clean = true does not properly clean certain cache files such as /var/cache/apt/pkgcache.bin and /var/cache/apt/pkgcache.bin (https://github.com/ansible/ansible/issues/82611)
|
||||
- ansible.builtin.uri - the module was ignoring the ``force`` parameter and always requesting a cached copy (via the ``If-Modified-Since`` header) when downloading to an existing local file. Disable caching when ``force`` is ``true``, as documented (https://github.com/ansible/ansible/issues/82166).
|
||||
- ansible_managed restored it's 'templatability' by ensuring the possible injection routes are cut off earlier in the process.
|
||||
- apt - honor install_recommends and dpkg_options while installing python3-apt library (https://github.com/ansible/ansible/issues/40608).
|
||||
- apt - install recommended packages when installing package via deb file (https://github.com/ansible/ansible/issues/29726).
|
||||
- apt_repository - do not modify repo files if the file is a symlink (https://github.com/ansible/ansible/issues/49809).
|
||||
- apt_repository - update PPA URL to point to https URL (https://github.com/ansible/ansible/issues/82463).
|
||||
- assemble - fixed missing parameter 'content' in _get_diff_data API (https://github.com/ansible/ansible/issues/82359).
|
||||
- async - Fix bug that stopped running async task in ``--check`` when ``check_mode: False`` was set as a task attribute - https://github.com/ansible/ansible/issues/82811
|
||||
- blockinfile - when ``create=true`` is used with a filename without path, the module crashed (https://github.com/ansible/ansible/pull/81638).
|
||||
- check if there are attributes to set before attempting to set them (https://github.com/ansible/ansible/issues/76727)
|
||||
- copy action now also generates temprary files as hidden ('.' prefixed) to avoid accidental pickup by running services that glob by extension.
|
||||
- copy action now ensures that tempfiles use the same suffix as destination, to allow for ``validate`` to work with utilities that check extensions.
|
||||
- deb822_repository - handle idempotency if the order of parameters is changed (https://github.com/ansible/ansible/issues/82454).
|
||||
- debconf - allow user to specify a list for value when vtype is multiselect (https://github.com/ansible/ansible/issues/81345).
|
||||
- delegate_to when set to an empty or undefined variable will now give a proper error.
|
||||
- distribution.py - Recognize ALP-Dolomite as part of the SUSE OS family in Ansible, fixing its previous misidentification (https://github.com/ansible/ansible/pull/82496).
|
||||
- distro - bump bundled distro version from 1.6.0 to 1.8.0 (https://github.com/ansible/ansible/issues/81713).
|
||||
- dnf - fix an issue when cached RPMs were left in the cache directory even when the keepcache setting was unset (https://github.com/ansible/ansible/issues/81954)
|
||||
- dnf - fix an issue when installing a package by specifying a file it provides could result in installing a different package providing the same file than the package already installed resulting in resolution failure (https://github.com/ansible/ansible/issues/82461)
|
||||
- dnf - properly set gpg check options on enabled repositories according to the ``disable_gpg_check`` option (https://github.com/ansible/ansible/issues/80110)
|
||||
- dnf - properly skip unavailable packages when ``skip_broken`` is enabled (https://github.com/ansible/ansible/issues/80590)
|
||||
- dnf - the ``nobest`` option only overrides the distribution default when explicitly used, and is used for all supported operations (https://github.com/ansible/ansible/issues/82616)
|
||||
- dnf5 - replace removed API calls
|
||||
- dnf5 - respect ``allow_downgrade`` when installing packages directly from rpm files
|
||||
- dnf5 - the ``nobest`` option only overrides the distribution default when used
|
||||
- dwim functions for lookups should be better at detectging role context even in abscense of tasks/main.
|
||||
- ensure we have logger before we log when we have increased verbosity.
|
||||
- expect - fix argument spec error using timeout=null (https://github.com/ansible/ansible/issues/80982).
|
||||
- fact gathering on linux now handles thread count by using rounding vs dropping decimals, it should give slightly more accurate numbers.
|
||||
- facts - add a generic detection for VMware in product name.
|
||||
- facts - detect VMware ESXi 8.0 virtualization by product name VMware20,1
|
||||
- fetch - Do not calculate the file size for Windows fetch targets to improve performance.
|
||||
- fetch - add error message when using ``dest`` with a trailing slash that becomes a local directory - https://github.com/ansible/ansible/issues/82878
|
||||
- find - do not fail on Permission errors (https://github.com/ansible/ansible/issues/82027).
|
||||
- first_found lookup now always returns a full (absolute) and normalized path
|
||||
- first_found lookup now always takes into account k=v options
|
||||
- flush_handlers - properly handle a handler failure in a nested block when ``force_handlers`` is set (http://github.com/ansible/ansible/issues/81532)
|
||||
- galaxy - skip verification for unwanted Python compiled bytecode files (https://github.com/ansible/ansible/issues/81628).
|
||||
- handle exception raised while validating with elements='int' and value is not within choices (https://github.com/ansible/ansible/issues/82776).
|
||||
- include_tasks - include `ansible_loop_var` and `ansible_index_var` in a loop (https://github.com/ansible/ansible/issues/82655).
|
||||
- include_vars - fix calculating ``depth`` relative to the root and ensure all files are included (https://github.com/ansible/ansible/issues/80987).
|
||||
- interpreter_discovery - handle AnsibleError exception raised while interpreter discovery (https://github.com/ansible/ansible/issues/78264).
|
||||
- iptables - add option choices 'src,src' and 'dst,dst' in match_set_flags (https://github.com/ansible/ansible/issues/81281).
|
||||
- iptables - set jump to DSCP when set_dscp_mark or set_dscp_mark_class is set (https://github.com/ansible/ansible/issues/77077).
|
||||
- known_hosts - Fix issue with `@cert-authority` entries in known_hosts incorrectly being removed.
|
||||
- module no_log will no longer affect top level booleans, for example ``no_log_module_parameter='a'`` will no longer hide ``changed=False`` as a 'no log value' (matches 'a').
|
||||
- moved assemble, raw, copy, fetch, reboot, script and wait_for_connection to query task instead of play_context ensuring they get the lastest and most correct data.
|
||||
- reboot action now handles connections with 'timeout' vs only 'connection_timeout' settings.
|
||||
- role params now have higher precedence than host facts again, matching documentation, this had unintentionally changed in 2.15.
|
||||
- roles, code cleanup and performance optimization of dependencies, now cached, and ``public`` setting is now determined once, at role instantiation.
|
||||
- roles, the ``static`` property is now correctly set, this will fix issues with ``public`` and ``DEFAULT_PRIVATE_ROLE_VARS`` controls on exporting vars.
|
||||
- set_option method for plugins to update config now properly passes through type casting and validation.
|
||||
- ssh - add tests for the SSH connection plugin.
|
||||
- support url-encoded credentials in URLs like http://x%40:%40@example.com (https://github.com/ansible/ansible/pull/82552)
|
||||
- syslog - Handle ValueError exception raised when sending Null Characters to syslog with Python 3.12.
|
||||
- systemd_services - update documentation regarding required_one_of and required_by parameters (https://github.com/ansible/ansible/issues/82914).
|
||||
- template - Fix error when templating an unsafe string which corresponds to an invalid type in Python (https://github.com/ansible/ansible/issues/82600).
|
||||
- template action will also inherit the behavior from copy (as it uses it internally).
|
||||
- templating - ensure syntax errors originating from a template being compiled into Python code object result in a failure (https://github.com/ansible/ansible/issues/82606)
|
||||
- unarchive - add support for 8 character permission strings for zip archives (https://github.com/ansible/ansible/pull/81705).
|
||||
- unarchive - force unarchive if symlink target changes (https://github.com/ansible/ansible/issues/30420).
|
||||
- unarchive modules now uses zipinfo options without relying on implementation defaults, making it more compatible with all OS/distributions.
|
||||
- unsafe data - Address an incompatibility when iterating or getting a single index from ``AnsibleUnsafeBytes``
|
||||
- unsafe data - Address an incompatibility with ``AnsibleUnsafeText`` and ``AnsibleUnsafeBytes`` when pickling with ``protocol=0``
|
||||
- unsafe data - Enable directly using ``AnsibleUnsafeText`` with Python ``pathlib`` (https://github.com/ansible/ansible/issues/82414)
|
||||
- uri - update the documentation for follow_redirects.
|
||||
- uri action plugin now skipped during check mode (not supported) instead of even trying to execute the module, which already skipped, this does not really change the result, but returns much faster.
|
||||
- vars - handle exception while combining VarsWithSources and dict (https://github.com/ansible/ansible/issues/81659).
|
||||
- wait_for should not handle 'non mmapable files' again.
|
||||
- winrm - Better handle send input failures when communicating with hosts under load
|
||||
- winrm - Do not raise another exception during cleanup when a task is timed out - https://github.com/ansible/ansible/issues/81095
|
||||
- winrm - does not hang when attempting to get process output when stdin write failed
|
||||
1916
changelogs/CHANGELOG-v2.9.rst
Normal file
1916
changelogs/CHANGELOG-v2.9.rst
Normal file
File diff suppressed because it is too large
Load Diff
6
changelogs/CHANGELOG.rst
Normal file
6
changelogs/CHANGELOG.rst
Normal file
@ -0,0 +1,6 @@
|
||||
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.
|
||||
@ -1,8 +0,0 @@
|
||||
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,786 +0,0 @@
|
||||
ancestor: 2.16.0
|
||||
releases:
|
||||
2.17.0:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2024-05-20
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.0_summary.yaml
|
||||
release_date: '2024-05-20'
|
||||
2.17.0b1:
|
||||
changes:
|
||||
breaking_changes:
|
||||
- assert - Nested templating may result in an inability for the conditional
|
||||
to be evaluated. See the porting guide for more information.
|
||||
bugfixes:
|
||||
- All core lookups now use set_option(s) even when doing their own custom parsing.
|
||||
This ensures that the options are always the proper type.
|
||||
- Allow for searching handler subdir for included task via include_role (https://github.com/ansible/ansible/issues/81722)
|
||||
- AnsibleModule.atomic_move - fix preserving extended ACLs of the destination
|
||||
when it exists (https://github.com/ansible/ansible/issues/72929).
|
||||
- Cache host_group_vars after instantiating it once and limit the amount of
|
||||
repetitive work it needs to do every time it runs.
|
||||
- Call PluginLoader.all() once for vars plugins, and load vars plugins that
|
||||
run automatically or are enabled specifically by name subsequently.
|
||||
- Consolidate systemd detection logic into one place (https://github.com/ansible/ansible/issues/80975).
|
||||
- Consolidated the list of internal static vars, centralized them as constant
|
||||
and completed from some missing entries.
|
||||
- Do not print undefined error message twice (https://github.com/ansible/ansible/issues/78703).
|
||||
- Enable file cache for vaulted files during vars lookup to fix a strong performance
|
||||
penalty in huge and complex playbboks.
|
||||
- Fix NEVRA parsing of package names that include digit(s) in them (https://github.com/ansible/ansible/issues/76463,
|
||||
https://github.com/ansible/ansible/issues/81018)
|
||||
- Fix ``force_handlers`` not working with ``any_errors_fatal`` (https://github.com/ansible/ansible/issues/36308)
|
||||
- Fix ``run_once`` being incorrectly interpreted on handlers (https://github.com/ansible/ansible/issues/81666)
|
||||
- 'Fix an issue when setting a plugin name from an unsafe source resulted in
|
||||
``ValueError: unmarshallable object`` (https://github.com/ansible/ansible/issues/82708)'
|
||||
- Fix check for missing _sub_plugin attribute in older connection plugins (https://github.com/ansible/ansible/pull/82954)
|
||||
- Fix condition for unquoting configuration strings from ini files (https://github.com/ansible/ansible/issues/82387).
|
||||
- Fix for when ``any_errors_fatal`` was ignored if error occurred in a block
|
||||
with always (https://github.com/ansible/ansible/issues/31543)
|
||||
- Fix handling missing urls in ansible.module_utils.urls.fetch_file for Python
|
||||
3.
|
||||
- Fix issue where an ``include_tasks`` handler in a role was not able to locate
|
||||
a file in ``tasks/`` when ``tasks_from`` was used as a role entry point and
|
||||
``main.yml`` was not present (https://github.com/ansible/ansible/issues/82241)
|
||||
- Fix issues when tasks withing nested blocks wouldn't run when ``force_handlers``
|
||||
is set (https://github.com/ansible/ansible/issues/81533)
|
||||
- Fix loading vars_plugins in roles (https://github.com/ansible/ansible/issues/82239).
|
||||
- 'Fix notifying role handlers by listen keyword topics with the "role_name
|
||||
: " prefix (https://github.com/ansible/ansible/issues/82849).'
|
||||
- Fix setting proper locale for git executable when running on non english systems,
|
||||
ensuring git output can always be parsed.
|
||||
- Fix tasks in always section not being executed for nested blocks with ``any_errors_fatal``
|
||||
(https://github.com/ansible/ansible/issues/73246)
|
||||
- Fixes permission for cache json file from 600 to 644 (https://github.com/ansible/ansible/issues/82683).
|
||||
- Give the tombstone error for ``include`` pre-fork like other tombstoned action/module
|
||||
plugins.
|
||||
- Harden python templates for respawn and ansiballz around str literal quoting
|
||||
- Include the task location when a module or action plugin is deprecated (https://github.com/ansible/ansible/issues/82450).
|
||||
- Interpreter discovery - Add ``Amzn`` to ``OS_FAMILY_MAP`` for correct family
|
||||
fallback for interpreter discovery (https://github.com/ansible/ansible/issues/80882).
|
||||
- Mirror the behavior of dnf on the command line when handling NEVRAs with omitted
|
||||
epoch (https://github.com/ansible/ansible/issues/71808)
|
||||
- Plugin loader does not dedupe nor cache filter/test plugins by file basename,
|
||||
but full path name.
|
||||
- Properly template tags in parent blocks (https://github.com/ansible/ansible/issues/81053)
|
||||
- Provide additional information about the alternative plugin in the deprecation
|
||||
message (https://github.com/ansible/ansible/issues/80561).
|
||||
- Remove the galaxy_info field ``platforms`` from the role templates (https://github.com/ansible/ansible/issues/82453).
|
||||
- Restoring the ability of filters/tests can have same file base name but different
|
||||
tests/filters defined inside.
|
||||
- Reword the error message when the module fails to parse parameters in JSON
|
||||
format (https://github.com/ansible/ansible/issues/81188).
|
||||
- Reword warning if the reserved keyword _ansible_ used as a module parameter
|
||||
(https://github.com/ansible/ansible/issues/82514).
|
||||
- Run all handlers with the same ``listen`` topic, even when notified from another
|
||||
handler (https://github.com/ansible/ansible/issues/82363).
|
||||
- Slight optimization to hostvars (instantiate template only once per host,
|
||||
vs per call to var).
|
||||
- Stopped misleadingly advertising ``async`` mode support in the ``reboot``
|
||||
module (https://github.com/ansible/ansible/issues/71517).
|
||||
- '``ansible-galaxy role import`` - fix using the ``role_name`` in a standalone
|
||||
role''s ``galaxy_info`` metadata by disabling automatic removal of the ``ansible-role-``
|
||||
prefix. This matches the behavior of the Galaxy UI which also no longer implicitly
|
||||
removes the ``ansible-role-`` prefix. Use the ``--role-name`` option or add
|
||||
a ``role_name`` to the ``galaxy_info`` dictionary in the role''s ``meta/main.yml``
|
||||
to use an alternate role name.'
|
||||
- '``ansible-test sanity --test runtime-metadata`` - add ``action_plugin`` as
|
||||
a valid field for modules in the schema (https://github.com/ansible/ansible/pull/82562).'
|
||||
- '``ansible.module_utils.service`` - ensure binary data transmission in ``daemonize()``'
|
||||
- '``any_errors_fatal`` should fail all hosts and rescue all of them when a
|
||||
``rescue`` section is specified (https://github.com/ansible/ansible/issues/80981)'
|
||||
- '``include_role`` - properly execute ``v2_playbook_on_include`` and ``v2_runner_on_failed``
|
||||
callbacks as well as increase ``ok`` and ``failed`` stats in the play recap,
|
||||
when appropriate (https://github.com/ansible/ansible/issues/77336)'
|
||||
- allow_duplicates - fix evaluating if the current role allows duplicates instead
|
||||
of using the initial value from the duplicate's cached role.
|
||||
- ansible-config init will now dedupe ini entries from plugins.
|
||||
- ansible-galaxy - Deprecate use of the Galaxy v2 API (https://github.com/ansible/ansible/issues/81781)
|
||||
- ansible-galaxy - Provide a better error message when using a requirements
|
||||
file with an invalid format - https://github.com/ansible/ansible/issues/81901
|
||||
- ansible-galaxy - Resolve issue with the dataclass used for galaxy.yml manifest
|
||||
caused by using future annotations
|
||||
- ansible-galaxy - ensure path to ansible collection when installing or downloading
|
||||
doesn't have a backslash (https://github.com/ansible/ansible/pull/79705).
|
||||
- ansible-galaxy - started allowing the use of pre-releases for collections
|
||||
that do not have any stable versions published. (https://github.com/ansible/ansible/pull/81606)
|
||||
- ansible-galaxy - started allowing the use of pre-releases for dependencies
|
||||
on any level of the dependency tree that specifically demand exact pre-release
|
||||
versions of collections and not version ranges. (https://github.com/ansible/ansible/pull/81606)
|
||||
- ansible-galaxy error on dependency resolution will not error itself due to
|
||||
'virtual' collections not having a name/namespace.
|
||||
- ansible-galaxy info - fix reporting no role found when lookup_role_by_name
|
||||
returns None.
|
||||
- ansible-galaxy role import - exit with 1 when the import fails (https://github.com/ansible/ansible/issues/82175).
|
||||
- ansible-galaxy role install - fix installing roles from Galaxy that have version
|
||||
``None`` (https://github.com/ansible/ansible/issues/81832).
|
||||
- ansible-galaxy role install - fix symlinks (https://github.com/ansible/ansible/issues/82702,
|
||||
https://github.com/ansible/ansible/issues/81965).
|
||||
- ansible-galaxy role install - normalize tarfile paths and symlinks using ``ansible.utils.path.unfrackpath``
|
||||
and consider them valid as long as the realpath is in the tarfile's role directory
|
||||
(https://github.com/ansible/ansible/issues/81965).
|
||||
- ansible-inventory - index available_hosts for major performance boost when
|
||||
dumping large inventories
|
||||
- ansible-pull now will expand relative paths for the ``-d|--directory`` option
|
||||
is now expanded before use.
|
||||
- ansible-pull will now correctly handle become and connection password file
|
||||
options for ansible-playbook.
|
||||
- ansible-test - Add a ``pylint`` plugin to work around a known issue on Python
|
||||
3.12.
|
||||
- ansible-test - Explicitly supply ``ControlPath=none`` when setting up port
|
||||
forwarding over SSH to address the scenario where the local ssh configuration
|
||||
uses ``ControlPath`` for all hosts, and would prevent ports to be forwarded
|
||||
after the initial connection to the host.
|
||||
- ansible-test - Fix parsing of cgroup entries which contain a ``:`` in the
|
||||
path (https://github.com/ansible/ansible/issues/81977).
|
||||
- ansible-test - Include missing ``pylint`` requirements for Python 3.10.
|
||||
- ansible-test - Properly detect docker host when using ``ssh://`` protocol
|
||||
for connecting to the docker daemon.
|
||||
- ansible-test - The ``libexpat`` package is automatically upgraded during remote
|
||||
bootstrapping to maintain compatibility with newer Python packages.
|
||||
- ansible-test - The ``validate-modules`` sanity test no longer attempts to
|
||||
process files with unrecognized extensions as Python (resolves https://github.com/ansible/ansible/issues/82604).
|
||||
- ansible-test - Update ``pylint`` to version 3.0.1.
|
||||
- ansible-test ansible-doc sanity test - do not remove underscores from plugin
|
||||
names in collections before calling ``ansible-doc`` (https://github.com/ansible/ansible/pull/82574).
|
||||
- ansible-test validate-modules sanity test - do not treat leading underscores
|
||||
for plugin names in collections as an attempted deprecation (https://github.com/ansible/ansible/pull/82575).
|
||||
- "ansible-test \u2014 Python 3.8\u20133.12 will use ``coverage`` v7.3.2."
|
||||
- ansible.builtin.apt - calling clean = true does not properly clean certain
|
||||
cache files such as /var/cache/apt/pkgcache.bin and /var/cache/apt/pkgcache.bin
|
||||
(https://github.com/ansible/ansible/issues/82611)
|
||||
- ansible.builtin.uri - the module was ignoring the ``force`` parameter and
|
||||
always requesting a cached copy (via the ``If-Modified-Since`` header) when
|
||||
downloading to an existing local file. Disable caching when ``force`` is ``true``,
|
||||
as documented (https://github.com/ansible/ansible/issues/82166).
|
||||
- apt - honor install_recommends and dpkg_options while installing python3-apt
|
||||
library (https://github.com/ansible/ansible/issues/40608).
|
||||
- apt - install recommended packages when installing package via deb file (https://github.com/ansible/ansible/issues/29726).
|
||||
- apt_repository - do not modify repo files if the file is a symlink (https://github.com/ansible/ansible/issues/49809).
|
||||
- apt_repository - update PPA URL to point to https URL (https://github.com/ansible/ansible/issues/82463).
|
||||
- assemble - fixed missing parameter 'content' in _get_diff_data API (https://github.com/ansible/ansible/issues/82359).
|
||||
- 'async - Fix bug that stopped running async task in ``--check`` when ``check_mode:
|
||||
False`` was set as a task attribute - https://github.com/ansible/ansible/issues/82811'
|
||||
- blockinfile - when ``create=true`` is used with a filename without path, the
|
||||
module crashed (https://github.com/ansible/ansible/pull/81638).
|
||||
- check if there are attributes to set before attempting to set them (https://github.com/ansible/ansible/issues/76727)
|
||||
- copy action now also generates temprary files as hidden ('.' prefixed) to
|
||||
avoid accidental pickup by running services that glob by extension.
|
||||
- copy action now ensures that tempfiles use the same suffix as destination,
|
||||
to allow for ``validate`` to work with utilities that check extensions.
|
||||
- deb822_repository - handle idempotency if the order of parameters is changed
|
||||
(https://github.com/ansible/ansible/issues/82454).
|
||||
- debconf - allow user to specify a list for value when vtype is multiselect
|
||||
(https://github.com/ansible/ansible/issues/81345).
|
||||
- delegate_to when set to an empty or undefined variable will now give a proper
|
||||
error.
|
||||
- distribution.py - Recognize ALP-Dolomite as part of the SUSE OS family in
|
||||
Ansible, fixing its previous misidentification (https://github.com/ansible/ansible/pull/82496).
|
||||
- distro - bump bundled distro version from 1.6.0 to 1.8.0 (https://github.com/ansible/ansible/issues/81713).
|
||||
- dnf - fix an issue when cached RPMs were left in the cache directory even
|
||||
when the keepcache setting was unset (https://github.com/ansible/ansible/issues/81954)
|
||||
- dnf - fix an issue when installing a package by specifying a file it provides
|
||||
could result in installing a different package providing the same file than
|
||||
the package already installed resulting in resolution failure (https://github.com/ansible/ansible/issues/82461)
|
||||
- dnf - properly set gpg check options on enabled repositories according to
|
||||
the ``disable_gpg_check`` option (https://github.com/ansible/ansible/issues/80110)
|
||||
- dnf - properly skip unavailable packages when ``skip_broken`` is enabled (https://github.com/ansible/ansible/issues/80590)
|
||||
- dnf - the ``nobest`` option only overrides the distribution default when explicitly
|
||||
used, and is used for all supported operations (https://github.com/ansible/ansible/issues/82616)
|
||||
- dnf5 - respect ``allow_downgrade`` when installing packages directly from
|
||||
rpm files
|
||||
- dnf5 - the ``nobest`` option only overrides the distribution default when
|
||||
used
|
||||
- dwim functions for lookups should be better at detectging role context even
|
||||
in abscense of tasks/main.
|
||||
- expect - fix argument spec error using timeout=null (https://github.com/ansible/ansible/issues/80982).
|
||||
- fact gathering on linux now handles thread count by using rounding vs dropping
|
||||
decimals, it should give slightly more accurate numbers.
|
||||
- facts - detect VMware ESXi 8.0 virtualization by product name VMware20,1
|
||||
- fetch - Do not calculate the file size for Windows fetch targets to improve
|
||||
performance.
|
||||
- fetch - add error message when using ``dest`` with a trailing slash that becomes
|
||||
a local directory - https://github.com/ansible/ansible/issues/82878
|
||||
- find - do not fail on Permission errors (https://github.com/ansible/ansible/issues/82027).
|
||||
- first_found lookup now always returns a full (absolute) and normalized path
|
||||
- first_found lookup now always takes into account k=v options
|
||||
- flush_handlers - properly handle a handler failure in a nested block when
|
||||
``force_handlers`` is set (http://github.com/ansible/ansible/issues/81532)
|
||||
- galaxy - skip verification for unwanted Python compiled bytecode files (https://github.com/ansible/ansible/issues/81628).
|
||||
- handle exception raised while validating with elements='int' and value is
|
||||
not within choices (https://github.com/ansible/ansible/issues/82776).
|
||||
- include_tasks - include `ansible_loop_var` and `ansible_index_var` in a loop
|
||||
(https://github.com/ansible/ansible/issues/82655).
|
||||
- include_vars - fix calculating ``depth`` relative to the root and ensure all
|
||||
files are included (https://github.com/ansible/ansible/issues/80987).
|
||||
- interpreter_discovery - handle AnsibleError exception raised while interpreter
|
||||
discovery (https://github.com/ansible/ansible/issues/78264).
|
||||
- iptables - add option choices 'src,src' and 'dst,dst' in match_set_flags (https://github.com/ansible/ansible/issues/81281).
|
||||
- iptables - set jump to DSCP when set_dscp_mark or set_dscp_mark_class is set
|
||||
(https://github.com/ansible/ansible/issues/77077).
|
||||
- known_hosts - Fix issue with `@cert-authority` entries in known_hosts incorrectly
|
||||
being removed.
|
||||
- module no_log will no longer affect top level booleans, for example ``no_log_module_parameter='a'``
|
||||
will no longer hide ``changed=False`` as a 'no log value' (matches 'a').
|
||||
- moved assemble, raw, copy, fetch, reboot, script and wait_for_connection to
|
||||
query task instead of play_context ensuring they get the lastest and most
|
||||
correct data.
|
||||
- reboot action now handles connections with 'timeout' vs only 'connection_timeout'
|
||||
settings.
|
||||
- role params now have higher precedence than host facts again, matching documentation,
|
||||
this had unintentionally changed in 2.15.
|
||||
- roles, code cleanup and performance optimization of dependencies, now cached, and
|
||||
``public`` setting is now determined once, at role instantiation.
|
||||
- roles, the ``static`` property is now correctly set, this will fix issues
|
||||
with ``public`` and ``DEFAULT_PRIVATE_ROLE_VARS`` controls on exporting vars.
|
||||
- set_option method for plugins to update config now properly passes through
|
||||
type casting and validation.
|
||||
- ssh - add tests for the SSH connection plugin.
|
||||
- support url-encoded credentials in URLs like http://x%40:%40@example.com (https://github.com/ansible/ansible/pull/82552)
|
||||
- syslog - Handle ValueError exception raised when sending Null Characters to
|
||||
syslog with Python 3.12.
|
||||
- systemd_services - update documentation regarding required_one_of and required_by
|
||||
parameters (https://github.com/ansible/ansible/issues/82914).
|
||||
- template - Fix error when templating an unsafe string which corresponds to
|
||||
an invalid type in Python (https://github.com/ansible/ansible/issues/82600).
|
||||
- template action will also inherit the behavior from copy (as it uses it internally).
|
||||
- templating - ensure syntax errors originating from a template being compiled
|
||||
into Python code object result in a failure (https://github.com/ansible/ansible/issues/82606)
|
||||
- unarchive - add support for 8 character permission strings for zip archives
|
||||
(https://github.com/ansible/ansible/pull/81705).
|
||||
- unarchive - force unarchive if symlink target changes (https://github.com/ansible/ansible/issues/30420).
|
||||
- unarchive modules now uses zipinfo options without relying on implementation
|
||||
defaults, making it more compatible with all OS/distributions.
|
||||
- unsafe data - Address an incompatibility when iterating or getting a single
|
||||
index from ``AnsibleUnsafeBytes``
|
||||
- unsafe data - Address an incompatibility with ``AnsibleUnsafeText`` and ``AnsibleUnsafeBytes``
|
||||
when pickling with ``protocol=0``
|
||||
- unsafe data - Enable directly using ``AnsibleUnsafeText`` with Python ``pathlib``
|
||||
(https://github.com/ansible/ansible/issues/82414)
|
||||
- uri action plugin now skipped during check mode (not supported) instead of
|
||||
even trying to execute the module, which already skipped, this does not really
|
||||
change the result, but returns much faster.
|
||||
- vars - handle exception while combining VarsWithSources and dict (https://github.com/ansible/ansible/issues/81659).
|
||||
- wait_for should not handle 'non mmapable files' again.
|
||||
- winrm - Better handle send input failures when communicating with hosts under
|
||||
load
|
||||
- winrm - Do not raise another exception during cleanup when a task is timed
|
||||
out - https://github.com/ansible/ansible/issues/81095
|
||||
- winrm - does not hang when attempting to get process output when stdin write
|
||||
failed
|
||||
deprecated_features:
|
||||
- Old style vars plugins which use the entrypoints `get_host_vars` or `get_group_vars`
|
||||
are deprecated. The plugin should be updated to inherit from `BaseVarsPlugin`
|
||||
and define a `get_vars` method as the entrypoint.
|
||||
- The 'required' parameter in 'ansible.module_utils.common.process.get_bin_path'
|
||||
API is deprecated (https://github.com/ansible/ansible/issues/82464).
|
||||
- '``module_utils`` - importing the following convenience helpers from ``ansible.module_utils.basic``
|
||||
has been deprecated: ``get_exception``, ``literal_eval``, ``_literal_eval``,
|
||||
``datetime``, ``signal``, ``types``, ``chain``, ``repeat``, ``PY2``, ``PY3``,
|
||||
``b``, ``binary_type``, ``integer_types``, ``iteritems``, ``string_types``,
|
||||
``test_type``, ``map`` and ``shlex_quote``.'
|
||||
- ansible-doc - role entrypoint attributes are deprecated and eventually will
|
||||
no longer be shown in ansible-doc from ansible-core 2.20 on (https://github.com/ansible/ansible/issues/82639,
|
||||
https://github.com/ansible/ansible/pull/82678).
|
||||
- paramiko connection plugin, configuration items in the global scope are being
|
||||
deprecated and will be removed in favor or the existing same options in the
|
||||
plugin itself. Users should not need to change anything (how to configure
|
||||
them are the same) but plugin authors using the global constants should move
|
||||
to using the plugin's get_option().
|
||||
major_changes:
|
||||
- urls.py - Removed support for Python 2
|
||||
minor_changes:
|
||||
- Add ``dump`` and ``passno`` mount information to facts component (https://github.com/ansible/ansible/issues/80478)
|
||||
- Added MIRACLE LINUX 9.2 in RedHat OS Family.
|
||||
- Interpreter Discovery - Remove hardcoded references to specific python interpreters
|
||||
to use for certain distro versions, and modify logic for python3 to become
|
||||
the default.
|
||||
- Use Python's built-in ``functools.update_wrapper`` instead an inline copy
|
||||
from Python 3.7.
|
||||
- User can now set ansible.log to record higher verbosity than what is specified
|
||||
for display via new configuration item LOG_VERBOSITY.
|
||||
- '``DEFAULT_PRIVATE_ROLE_VARS`` is now overridden by explicit setting of ``public``
|
||||
for ``include_roles`` and ``import_roles``.'
|
||||
- '``ansible-galaxy role|collection init`` - accept ``--extra-vars`` to supplement/override
|
||||
the variables ``ansible-galaxy`` injects for templating ``.j2`` files in the
|
||||
skeleton.'
|
||||
- '``import_role`` action now also gets a ``public`` option that controls variable
|
||||
exports, default depending on ``DEFAULT_PRIVATE_ROLE_VARS`` (if using defaults
|
||||
equates to ``public=True``).'
|
||||
- added configuration item ``TARGET_LOG_INFO`` that allows the user/author to
|
||||
add an information string to the log output on targets.
|
||||
- ansible-doc - treat double newlines in documentation strings as paragraph
|
||||
breaks. This is useful to create multi-paragraph notes in module/plugin documentation
|
||||
(https://github.com/ansible/ansible/pull/82465).
|
||||
- ansible-doc output has been revamped to make it more visually pleasing when
|
||||
going to a terminal, also more concise, use -v to show extra information.
|
||||
- ansible-galaxy - Started normalizing build directory with a trailing separator
|
||||
when building collections, internally. (https://github.com/ansible/ansible/pull/81619).
|
||||
- ansible-galaxy dependency resolution messages have changed the unexplained
|
||||
'virtual' collection for the specific type ('scm', 'dir', etc) that is more
|
||||
user friendly
|
||||
- ansible-test - Add Alpine 3.19 container.
|
||||
- ansible-test - Add Alpine 3.19 to remotes.
|
||||
- ansible-test - Add Fedora 39 container.
|
||||
- ansible-test - Add Fedora 39 remote.
|
||||
- ansible-test - Add a work-around for permission denied errors when using ``pytest
|
||||
>= 8`` on multi-user systems with an installed version of ``ansible-test``.
|
||||
- ansible-test - Add support for RHEL 9.3 remotes.
|
||||
- ansible-test - Added a macOS 14.3 remote VM.
|
||||
- ansible-test - Bump the ``nios-test-container`` from version 2.0.0 to version
|
||||
3.0.0.
|
||||
- ansible-test - Containers and remotes managed by ansible-test will have their
|
||||
Python ``EXTERNALLY-MANAGED`` marker (PEP668) removed. This provides backwards
|
||||
compatibility for existing tests running in newer environments which mark
|
||||
their Python as externally managed. A future version of ansible-test may change
|
||||
this behavior, requiring tests to be adapted to such environments.
|
||||
- ansible-test - Make Python 3.12 the default version used in the ``base`` and
|
||||
``default`` containers.
|
||||
- ansible-test - Remove Alpine 3(.18) container.
|
||||
- ansible-test - Remove Alpine 3.18 from remotes.
|
||||
- ansible-test - Remove Fedora 38 remote support.
|
||||
- ansible-test - Remove Fedora 38 test container.
|
||||
- ansible-test - Remove rhel/9.2 test remote
|
||||
- ansible-test - Remove the FreeBSD 13.2 remote.
|
||||
- ansible-test - Removed fallback to ``virtualenv`` when ``-m venv`` is non-functional.
|
||||
- 'ansible-test - Removed test remotes: macos/13.2'
|
||||
- ansible-test - Removed the ``no-basestring`` sanity test. The test is no longer
|
||||
necessary now that Python 3 is required.
|
||||
- ansible-test - Removed the ``no-dict-iteritems``, ``no-dict-iterkeys`` and
|
||||
``no-dict-itervalues`` sanity tests. The tests are no longer necessary since
|
||||
Python 3 is required.
|
||||
- ansible-test - Removed the ``no-main-display`` sanity test. The unwanted pattern
|
||||
is unlikely to occur, since the test has existed since Ansible 2.8.
|
||||
- ansible-test - Removed the ``no-unicode-literals`` sanity test. The test is
|
||||
unnecessary now that Python 3 is required and the ``unicode_literals`` feature
|
||||
has no effect.
|
||||
- ansible-test - Special handling for installation of ``cryptography`` has been
|
||||
removed, as it is no longer necessary.
|
||||
- ansible-test - The ``shellcheck`` sanity test no longer disables the ``SC2164``
|
||||
check. In most cases, seeing this error means the script is missing ``set
|
||||
-e``.
|
||||
- ansible-test - The ``unidiomatic-typecheck`` rule has been enabled in the
|
||||
``pylint`` sanity test.
|
||||
- ansible-test - The ``unidiomatic-typecheck`` rule has been removed from the
|
||||
``validate-modules`` sanity test.
|
||||
- ansible-test - Update the base and default containers to use Ubuntu 22.04
|
||||
for the base image. This also updates PowerShell to version 7.4.0 with .NET
|
||||
8.0.0 and ShellCheck to version 0.8.0.
|
||||
- ansible-test - Updated the CloudStack test container to version 1.7.0.
|
||||
- ansible-test - Updated the distro test containers to version 6.3.0 to include
|
||||
coverage 7.3.2 for Python 3.8+. The alpine3 container is now based on 3.18
|
||||
instead of 3.17 and includes Python 3.11 instead of Python 3.10.
|
||||
- ansible-test - Updated the distro test containers to version 7.1.0.
|
||||
- ansible-test - When ansible-test installs requirements, it now instructs pip
|
||||
to allow installs on externally managed environments as defined by PEP 668.
|
||||
This only occurs in ephemeral environments managed by ansible-test, such as
|
||||
containers, or when the `--requirements` option is used.
|
||||
- ansible-test - When invoking ``sleep`` in containers during container setup,
|
||||
the ``env`` command is used to avoid invoking the shell builtin, if present.
|
||||
- ansible-test - document block name now included in error message for YAML
|
||||
parsing errors (https://github.com/ansible/ansible/issues/82353).
|
||||
- ansible-test - sanity test allows ``EXAMPLES`` to be multi-document YAML (https://github.com/ansible/ansible/issues/82353).
|
||||
- ansible-test now has FreeBSD 13.3 and 14.0 support
|
||||
- ansible.builtin.user - Remove user not found warning (https://github.com/ansible/ansible/issues/80267)
|
||||
- apt_repository.py - use api.launchpad.net endpoint instead of launchpad.net/api
|
||||
- async tasks can now also support check mode at the same time.
|
||||
- async_status now supports check mode.
|
||||
- constructed inventory plugin - Adding a note that only group_vars of explicit
|
||||
groups are loaded (https://github.com/ansible/ansible/pull/82580).
|
||||
- csvfile - add a keycol parameter to specify in which column to search.
|
||||
- dnf - add the ``best`` option
|
||||
- dnf5 - add the ``best`` option
|
||||
- filter plugin - Add the count and mandatory_count parameters in the regex_replace
|
||||
filter
|
||||
- find - add a encoding parameter to specify which encoding of the files to
|
||||
be searched.
|
||||
- git module - gpg_allowlist name was added in 2.17 and we will eventually deprecate
|
||||
the gpg_whitelist alias.
|
||||
- import_role - allow subdirectories with ``_from`` options for parity with
|
||||
``include_role`` (https://github.com/ansible/ansible/issues/82584).
|
||||
- module argument spec - Allow module authors to include arbitrary additional
|
||||
context in the argument spec, by making use of a new top level key called
|
||||
``context``. This key should be a dict type. This allows for users to customize
|
||||
what they place in the argument spec, without having to ignore sanity tests
|
||||
that validate the schema.
|
||||
- modules - Add the ability for an action plugin to call ``self._execute_module(*,
|
||||
ignore_unknown_opts=True)`` to execute a module with options that may not
|
||||
be supported for the version being called. This tells the module basic wrapper
|
||||
to ignore validating the options provided match the arg spec.
|
||||
- package action now has a configuration that overrides the detected package
|
||||
manager, it is still overridden itself by the use option.
|
||||
- py3compat - Remove ``ansible.utils.py3compat`` as it is no longer necessary
|
||||
- removed the unused argument ``create_new_password`` from ``CLI.build_vault_ids``
|
||||
(https://github.com/ansible/ansible/pull/82066).
|
||||
- urls - Add support for TLS 1.3 post handshake certificate authentication -
|
||||
https://github.com/ansible/ansible/issues/81782
|
||||
- urls - reduce complexity of ``Request.open``
|
||||
- user - accept yescrypt hash as user password
|
||||
- validate-modules tests now correctly handles ``choices`` in dictionary format.
|
||||
release_summary: '| Release Date: 2024-04-08
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
removed_features:
|
||||
- Remove deprecated APIs from ansible-docs (https://github.com/ansible/ansible/issues/81716).
|
||||
- Remove deprecated JINJA2_NATIVE_WARNING environment variable (https://github.com/ansible/ansible/issues/81714)
|
||||
- Remove deprecated ``scp_if_ssh`` from ssh connection plugin (https://github.com/ansible/ansible/issues/81715).
|
||||
- Remove deprecated crypt support from ansible.utils.encrypt (https://github.com/ansible/ansible/issues/81717)
|
||||
- With the removal of Python 2 support, the yum module and yum action plugin
|
||||
are removed and redirected to ``dnf``.
|
||||
security_fixes:
|
||||
- ANSIBLE_NO_LOG - Address issue where ANSIBLE_NO_LOG was ignored (CVE-2024-0690)
|
||||
- ansible-galaxy - Prevent roles from using symlinks to overwrite files outside
|
||||
of the installation directory (CVE-2023-5115)
|
||||
- templating - Address issues where internal templating can cause unsafe variables
|
||||
to lose their unsafe designation (CVE-2023-5764)
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.0b1_summary.yaml
|
||||
- 49809_apt_repository.yml
|
||||
- 76727-chattr-fix-for-backups-of-symlinks.yml
|
||||
- 77077_iptables.yml
|
||||
- 77336-include_role-callbacks-stats.yml
|
||||
- 78703_undefined.yml
|
||||
- 79705-fix-ensure-path-to-collection-argument-doesnt-have-backslash.yml
|
||||
- 79945-host_group_vars-improvements.yml
|
||||
- 80110-repos-gpgcheck.yml
|
||||
- 80267-ansible_builtin_user-remove-user-not-found-warning.yml
|
||||
- 80478-extend-mount-info.yml
|
||||
- 80561.yml
|
||||
- 80590-dnf-skip_broken-unavailable-pkgs.yml
|
||||
- 80882-Amazon-os-family-compat.yaml
|
||||
- 80975-systemd-detect.yml
|
||||
- 80995-include-all-var-files.yml
|
||||
- 81053-templated-tags-inheritance.yml
|
||||
- 81188_better_error.yml
|
||||
- 81532-fix-nested-flush_handlers.yml
|
||||
- 81584-daemonize-follow-up-fixes.yml
|
||||
- 81606-ansible-galaxy-collection-pre-releases.yml
|
||||
- 81628_galaxy_verify.yml
|
||||
- 81638-blockinfile.yml
|
||||
- 81659_varswithsources.yml
|
||||
- 81666-handlers-run_once.yml
|
||||
- 81699-zip-permission.yml
|
||||
- 81713-distro.yml
|
||||
- 81714-remove-deprecated-jinja2_native_warning.yml
|
||||
- 81716-ansible-doc.yml
|
||||
- 81717-remove-deprecated-crypt-support.yml
|
||||
- 81722-handler-subdir-include_tasks.yml
|
||||
- 81732-cloudstack-test-container-1.7.0.yml
|
||||
- 81775-add-regex_replace-parameters.yml
|
||||
- 81901-galaxy-requirements-format.yml
|
||||
- 81931-locale-related-parsing-error-git.yml
|
||||
- 81954-dnf-keepcache.yml
|
||||
- 81978-launchpad-api-endpoint.yml
|
||||
- 81995-enable_file_cache.yml
|
||||
- 82027_find.yml
|
||||
- 82066.yml
|
||||
- 82175-fix-ansible-galaxy-role-import-rc.yml
|
||||
- 82187-uri-handle-force.yml
|
||||
- 82241-handler-include-tasks-from.yml
|
||||
- 82353-ansible-sanity-examples.yml
|
||||
- 82359_assemble_diff.yml
|
||||
- 82363-multiple-handlers-with-recursive-notification.yml
|
||||
- 82377-git-gpg-whitelist-allowlist.yml
|
||||
- 82387-unquote-strings-from-ini-files.yml
|
||||
- 82455-new-vmware-productname.yml
|
||||
- 82461-dnf-provides.yml
|
||||
- 82465-ansible-doc-paragraphs.yml
|
||||
- 82496-add-alp-dolomite-suse-family.yaml
|
||||
- 82574-ansible-test-ansible-doc-underscore.yml
|
||||
- 82575-ansible-test-validate-modules-underscore.yml
|
||||
- 82580_constructed.yml
|
||||
- 82606-template-python-syntax-error.yml
|
||||
- 82611_fix_alignment_apt_clean_with_ansible_apt_clean.yml
|
||||
- 82616-dnf-best-nobest.yml
|
||||
- 82655-fix-ansible-loop-index-var-in-includedtasks.yml
|
||||
- 82675-fix-unsafe-templating-leading-to-type-error.yml
|
||||
- 82678-role-entrypoint-attributes.yml
|
||||
- 82683-ansible-fact_cache-permissions-changed-after-ansible-coreupdate.yml
|
||||
- 82708-unsafe-plugin-name-error.yml
|
||||
- 82878-fetch-dest-is-dir.yml
|
||||
- 82954-fix-older-connection-plugins.yml
|
||||
- a-g-install-version-None.yml
|
||||
- ansible-galaxy-init-extra-vars.yml
|
||||
- ansible-galaxy-role-install-symlink.yml
|
||||
- ansible-test-added-fedora-39.yml
|
||||
- ansible-test-added-macos-14.3.yml
|
||||
- ansible-test-alpine-libexpat.yml
|
||||
- ansible-test-cgroup-split.yml
|
||||
- ansible-test-container-sleep.yml
|
||||
- ansible-test-coverage-update.yml
|
||||
- ansible-test-cryptography.yml
|
||||
- ansible-test-default-containers.yml
|
||||
- ansible-test-distro-containers.yml
|
||||
- ansible-test-docker-forwards.yml
|
||||
- ansible-test-externally-managed-python.yml
|
||||
- ansible-test-nios-container.yml
|
||||
- ansible-test-pep-668.yml
|
||||
- ansible-test-pylint-update.yml
|
||||
- ansible-test-pytest-8.yml
|
||||
- ansible-test-python-3.12-compat.yml
|
||||
- ansible-test-python-default.yml
|
||||
- ansible-test-remove-freebsd-13.2.yml
|
||||
- ansible-test-remove-rhel-9_2-remote.yml
|
||||
- ansible-test-rhel-9.3.yml
|
||||
- ansible-test-rmv-fedora-38.yml
|
||||
- ansible-test-sanity-no-basestring.yml
|
||||
- ansible-test-sanity-no-dict.yml
|
||||
- ansible-test-sanity-no-main-display.yml
|
||||
- ansible-test-sanity-unicode-literals.yml
|
||||
- ansible-test-shellcheck-exclude.yml
|
||||
- ansible-test-unidiomatic-type-check.yml
|
||||
- ansible-test-validate-modules-non-python.yml
|
||||
- ansible-test-venv.yml
|
||||
- ansible_test_alpine_3.19.yml
|
||||
- ansible_test_fbsd_add.yml
|
||||
- ansible_test_rmv_alpine_318.yml
|
||||
- ansible_test_rmv_macos_132.yml
|
||||
- any_errors_fatal-fixes.yml
|
||||
- apt_install.yml
|
||||
- apt_recommends.yml
|
||||
- argument-spec-context.yml
|
||||
- async-task-check-mode.yml
|
||||
- async_status_check_mode.yml
|
||||
- atomic-move-fix-extended-attrs.yml
|
||||
- check_arguments.yml
|
||||
- clear-distro-interp-map.yml
|
||||
- config_set_option_fix.yml
|
||||
- config_validate_updates.yml
|
||||
- copy_keep_suffix_temp.yml
|
||||
- csvfile-keycol.yml
|
||||
- cve-2023-5115.yml
|
||||
- cve-2023-5764.yml
|
||||
- cve-2024-0690.yml
|
||||
- deb822_repo_idem.yml
|
||||
- debconf_multiselect.yml
|
||||
- dedupe_config_init.yml
|
||||
- delegate_to_invalid.yml
|
||||
- deprecate-v2-galaxy-api.yml
|
||||
- distlib-dataclass-annotation.yml
|
||||
- dnf-installed-checks-api.yml
|
||||
- dnf5-from-rpm-allow_downgrade.yml
|
||||
- dwim_is_role_fix.yml
|
||||
- find-encoding.yml
|
||||
- first_found_fixes.yml
|
||||
- fix-allow-duplicates.yml
|
||||
- fix-ansible-galaxy-info-no-role-found.yml
|
||||
- fix-build-files-manifest-walk.yml
|
||||
- fix-default-ansible-galaxy-role-import-name.yml
|
||||
- fix-dnf-install-missing-url.yml
|
||||
- fix-expect-indefinite-timeout.yml
|
||||
- fix-import_role-_from-options.yml
|
||||
- fix-reboot-plugin.yml
|
||||
- fix-role-name-handler-prefix-listen.yml
|
||||
- fix-runtime-metadata-modules-action_plugin.yml
|
||||
- fix-vars-plugins-in-roles.yml
|
||||
- functools-update-wrapper.yml
|
||||
- galaxy_dep_res_msgs.yml
|
||||
- get_bin_path_required_parameter.yml
|
||||
- import_role_goes_public.yml
|
||||
- improve-tombstone-error.yml
|
||||
- internal_static_vars.yml
|
||||
- interpreter_discovery.yml
|
||||
- inv_available_hosts_to_frozenset.yml
|
||||
- iptables_match_set_flag.yml
|
||||
- j2_load_fix.yml
|
||||
- known_hosts_cert-authority_keys.yml
|
||||
- log_id.yml
|
||||
- log_verbosity.yml
|
||||
- lookups_updated.yml
|
||||
- miracle_linux_distribution_support.yml
|
||||
- mod_args.yml
|
||||
- module-ignore-unknown-options.yml
|
||||
- module_utils-basic-deprecations.yml
|
||||
- no_log_booly.yml
|
||||
- paramiko_globals.yml
|
||||
- pc_fixes.yml
|
||||
- pkg_mgr_peek.yml
|
||||
- ppa_https.yml
|
||||
- prettydoc.yml
|
||||
- pull_file_secrets.yml
|
||||
- pull_unfrack_dest.yml
|
||||
- py-tmpl-hardening.yml
|
||||
- reboot_timeout_fix.yml
|
||||
- request-open-reduce-complexity.yml
|
||||
- restore_role_param_precedence.yml
|
||||
- rm-compat-environ.yml
|
||||
- rm-obsolete-url-role-template.yml
|
||||
- role_fixes.yml
|
||||
- scp_if_ssh.yml
|
||||
- ssh_connection_test.yml
|
||||
- syslog_exception.yml
|
||||
- systemd_service_note.yml
|
||||
- thread_counts.yml
|
||||
- unarchive.yml
|
||||
- unarchive_fix.yml
|
||||
- unsafe-fixes-2.yml
|
||||
- unsafe-intern.yml
|
||||
- uri_action_cmode.yml
|
||||
- url_credentials_decode.yml
|
||||
- urls-no-py2.yml
|
||||
- urls-tls13-post-handshake-auth.yml
|
||||
- user-accept-yescrypt-hash.yml
|
||||
- v2.17.0-initial-commit.yaml
|
||||
- wait_for_mmap.yml
|
||||
- winrm-send-input.yml
|
||||
- winrm-task-timeout.yml
|
||||
- winrm-timeout.yml
|
||||
- yum-removal.yml
|
||||
release_date: '2024-04-08'
|
||||
2.17.0rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Fix handlers not being executed in lockstep using the linear strategy in some
|
||||
cases (https://github.com/ansible/ansible/issues/82307)
|
||||
- ansible-config will now properly template defaults before dumping them.
|
||||
- ansible_managed restored it's 'templatability' by ensuring the possible injection
|
||||
routes are cut off earlier in the process.
|
||||
- dnf5 - replace removed API calls
|
||||
- facts - add a generic detection for VMware in product name.
|
||||
release_summary: '| Release Date: 2024-04-29
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
removed_features:
|
||||
- Removed Python 2.7 and Python 3.6 as a supported remote version. Python 3.7+
|
||||
is now required for target execution.
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.0rc1_summary.yaml
|
||||
- 82307-handlers-lockstep-linear-fix.yml
|
||||
- ansible_managed_restore.yml
|
||||
- config_init_fix.yml
|
||||
- dnf5-api-breaks.yml
|
||||
- python-support.yml
|
||||
- vmware_facts.yml
|
||||
release_date: '2024-04-29'
|
||||
2.17.0rc2:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Add a version ceiling constraint for pypsrp to avoid potential breaking changes
|
||||
in the 1.0.0 release.
|
||||
- ansible-doc - fixed "inicates" typo in output
|
||||
- ansible-doc - format top-level descriptions with multiple paragraphs as multiple
|
||||
paragraphs, instead of concatenating them (https://github.com/ansible/ansible/pull/83155).
|
||||
- ensure we have logger before we log when we have increased verbosity.
|
||||
- uri - update the documentation for follow_redirects.
|
||||
release_summary: '| Release Date: 2024-05-13
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.0rc2_summary.yaml
|
||||
- 83155-ansible-doc-paragraphs.yml
|
||||
- ansible-doc-inicate.yml
|
||||
- fix_log_verbosity.yml
|
||||
- psrp-version-req.yml
|
||||
- uri_follow_redirect_bool.yml
|
||||
release_date: '2024-05-13'
|
||||
2.17.1:
|
||||
changes:
|
||||
minor_changes:
|
||||
- ansible-test - Update ``pypi-test-container`` to version 3.1.0.
|
||||
release_summary: '| Release Date: 2024-06-17
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.1_summary.yaml
|
||||
- ansible-test-pypi-test-container-update.yml
|
||||
release_date: '2024-06-17'
|
||||
2.17.1rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Fix rapid memory usage growth when notifying handlers using the ``listen``
|
||||
keyword (https://github.com/ansible/ansible/issues/83392)
|
||||
- Fix the task attribute ``resolved_action`` to show the FQCN instead of ``None``
|
||||
when ``action`` or ``local_action`` is used in the playbook.
|
||||
- Fix using ``module_defaults`` with ``local_action``/``action`` (https://github.com/ansible/ansible/issues/81905).
|
||||
- fixed unit test test_borken_cowsay to address mock not been properly applied
|
||||
when existing unix system already have cowsay installed.
|
||||
- powershell - Implement more robust deletion mechanism for C# code compilation
|
||||
temporary files. This should avoid scenarios where the underlying temporary
|
||||
directory may be temporarily locked by antivirus tools or other IO problems.
|
||||
A failure to delete one of these temporary directories will result in a warning
|
||||
rather than an outright failure.
|
||||
- shell plugin - properly quote all needed components of shell commands (https://github.com/ansible/ansible/issues/82535)
|
||||
release_summary: '| Release Date: 2024-06-10
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.1rc1_summary.yaml
|
||||
- 82535-properly-quote-shell.yml
|
||||
- 83327.yml
|
||||
- 83392-fix-memory-issues-handlers.yml
|
||||
- PowerShell-AddType-temp.yml
|
||||
- correct-callback-fqcn-old-style-action-invocation.yml
|
||||
release_date: '2024-06-10'
|
||||
2.17.2:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2024-07-15
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.2_summary.yaml
|
||||
release_date: '2024-07-15'
|
||||
2.17.2rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Fix a traceback when an environment variable contains certain special characters
|
||||
(https://github.com/ansible/ansible/issues/83498)
|
||||
- dnf, dnf5 - fix for installing a set of packages by specifying them using
|
||||
a wildcard character (https://github.com/ansible/ansible/issues/83373)
|
||||
- linear strategy now provides a properly templated task name to the v2_runner_on_started
|
||||
callback event.
|
||||
- replace - Updated before/after example (https://github.com/ansible/ansible/issues/83390).
|
||||
- templating hostvars under native jinja will not cause serialization errors
|
||||
anymore.
|
||||
release_summary: '| Release Date: 2024-07-08
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.2rc1_summary.yaml
|
||||
- 83373-dnf5-wildcard.yml
|
||||
- 83498-command-tb-env.yml
|
||||
- hostvars_fix.yml
|
||||
- linear_started_name.yml
|
||||
- replace_regex.yml
|
||||
release_date: '2024-07-08'
|
||||
2.17.2rc2:
|
||||
changes:
|
||||
bugfixes:
|
||||
- dnf - reverted incomplete fix from 2.17.2rc1 (https://github.com/ansible/ansible/pull/83504)
|
||||
- package_facts - ignore warnings sent by apk on stderr (https://github.com/ansible/ansible/issues/83501).
|
||||
release_summary: '| Release Date: 2024-07-09
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
|
||||
'
|
||||
codename: Gallows Pole
|
||||
fragments:
|
||||
- 2.17.2rc2_summary.yaml
|
||||
- dnf-revert.yaml
|
||||
- package_facts_apk.yml
|
||||
release_date: '2024-07-09'
|
||||
@ -1,22 +1,13 @@
|
||||
---
|
||||
title: ansible-core
|
||||
release_tag_re: '(v(?:[\d.ab\-]|rc)+)'
|
||||
pre_release_tag_re: '(?P<pre_release>(?:[ab]|rc)+\d*)$'
|
||||
changes_file: changelog.yaml
|
||||
changes_format: combined
|
||||
keep_fragments: true
|
||||
always_refresh: true
|
||||
ignore_other_fragment_extensions: true
|
||||
mention_ancestor: false
|
||||
notesdir: fragments
|
||||
prelude_section_name: release_summary
|
||||
new_plugins_after_name: removed_features
|
||||
sections:
|
||||
- ['major_changes', 'Major Changes']
|
||||
- ['minor_changes', 'Minor Changes']
|
||||
- ['breaking_changes', 'Breaking Changes / Porting Guide']
|
||||
- ['deprecated_features', 'Deprecated Features']
|
||||
- ['removed_features', 'Removed Features (previously deprecated)']
|
||||
- ['security_fixes', 'Security Fixes']
|
||||
- ['bugfixes', 'Bugfixes']
|
||||
- ['known_issues', 'Known Issues']
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-05-20
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-04-08
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-04-29
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-05-13
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-06-17
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-06-10
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-07-15
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-07-08
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-07-09
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.17/porting_guides/porting_guide_core_2.17.html>`__
|
||||
2
changelogs/fragments/20596-role-param_fix.yaml
Normal file
2
changelogs/fragments/20596-role-param_fix.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Fixed role's hash_params behavior to not union (https://github.com/ansible/ansible/issues/20596).
|
||||
4
changelogs/fragments/29124-has-dead-workers.yaml
Normal file
4
changelogs/fragments/29124-has-dead-workers.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
bugfixes:
|
||||
- TaskQueueManager - Ensure ``has_dead_workers`` can function, by using the
|
||||
correct reference, and only allow an exit code of 0.
|
||||
(https://github.com/ansible/ansible/issues/29124)
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- rabbitmq_policy - Add full check for rabbit policy changes (https://github.com/ansible/ansible/issues/29264)
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- add purge_tags parameter to s3_bucket to allow preservation of existing tags when updating tags.
|
||||
3
changelogs/fragments/31238-uri-multi-content-type.yaml
Normal file
3
changelogs/fragments/31238-uri-multi-content-type.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- uri - Handle multiple Content-Type headers correctly
|
||||
(https://github.com/ansible/ansible/pull/31238)
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- getent - add service parameter to getent to lookup specified service
|
||||
@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- "os_quota - fix failure to set compute or network quota when volume service is not available"
|
||||
2
changelogs/fragments/44624-dnsmadeeasy-fix_locale.yaml
Normal file
2
changelogs/fragments/44624-dnsmadeeasy-fix_locale.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- dnsmadeeasy - force the date to be rendered with C (POSIX system default) locale as English short date names are required by API
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- xml - Introduce ``insertbefore`` and ``insertafter`` to specify the position (https://github.com/ansible/ansible/pull/44811)
|
||||
2
changelogs/fragments/45631-empty-cow-whitelist.yml
Normal file
2
changelogs/fragments/45631-empty-cow-whitelist.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- cowsay - Fix issue with an empty cow_whitelist (https://github.com/ansible/ansible/issues/45631)
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- vmware_cluster_facts now supports tag facts (https://github.com/ansible/ansible/issues/46458).
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- vmware_host_facts now supports tag facts (https://github.com/ansible/ansible/issues/46461).
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- Add folder option in vmware_datastore_cluster to place datastore cluster in specific folder (https://github.com/ansible/ansible/issues/48010).
|
||||
2
changelogs/fragments/48394-meraki-idempotency-change.yml
Normal file
2
changelogs/fragments/48394-meraki-idempotency-change.yml
Normal file
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- "meraki_* - Idempotency check has been rewritten. The new version is more thorough."
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- "meraki_network - Add support for enabling or disabling VLANs on a network."
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- meraki_network - Add support for disabling remote status page on a network.
|
||||
2
changelogs/fragments/48971-meraki_ssid-docs.yml
Normal file
2
changelogs/fragments/48971-meraki_ssid-docs.yml
Normal file
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- meraki_ssid - Add examples to documentation.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user