Compare commits
152 Commits
stable-2.1
...
v2.5.0rc1
| Author | SHA1 | Date | |
|---|---|---|---|
| e77c1b9e42 | |||
| 98882b725f | |||
| 97a7c3f39c | |||
| 2ddcdb8720 | |||
| 917e5ae5d8 | |||
| ed9781bbfb | |||
| b1e125b718 | |||
| 3d1c8bc2e1 | |||
| f8d8d84f05 | |||
| 9bd7147bb8 | |||
| 7e378e791c | |||
| 980b6a00e2 | |||
| c4e94af4e9 | |||
| e93cc41211 | |||
| 84debca5fb | |||
| 26cdfd84a0 | |||
| 7965ecb962 | |||
| 138ed416eb | |||
| df78df5d90 | |||
| 61c1241a77 | |||
| 0057cfa066 | |||
| 54f9f06edc | |||
| cb73fba369 | |||
| 7f9fdbbb30 | |||
| 741b941f33 | |||
| 32515884ef | |||
| 77af8f36cb | |||
| 234ba3f8b3 | |||
| 2c8d9beca3 | |||
| bcc3ce8d74 | |||
| 7188165dd1 | |||
| c6af155049 | |||
| 16845be9b1 | |||
| 9935cda4a3 | |||
| 7e1ff91a5a | |||
| 9b00fd4ca1 | |||
| 28fb690cc3 | |||
| 6eb248a327 | |||
| b458dfc222 | |||
| 6ff000254f | |||
| d86d4907cc | |||
| 4f5ac56c53 | |||
| 8db5d139a1 | |||
| 108cbbc40e | |||
| 0ee6771659 | |||
| 6d1a9a8211 | |||
| 46b565cd96 | |||
| 21b74f7cce | |||
| 3b1c90cd7c | |||
| 9cea95203c | |||
| b5122731b1 | |||
| 688bf25bda | |||
| 51673f431f | |||
| 7dcf5aed02 | |||
| 9692394c7d | |||
| 22b4d69a7b | |||
| f5fa91c152 | |||
| b08bdc5f6d | |||
| d568701254 | |||
| 9049ba0f2d | |||
| 99b23dce92 | |||
| f00dd99ea2 | |||
| 57bccd10af | |||
| cf196613ff | |||
| 80b91613a8 | |||
| 62139bb828 | |||
| 3635961b1b | |||
| 179aa475a5 | |||
| dd92db800a | |||
| 51c4fceb64 | |||
| eb0232fa86 | |||
| 66e7c8d938 | |||
| 38b000062f | |||
| 92cb719a2d | |||
| abd7a9a384 | |||
| fb46cf3718 | |||
| ba6a242f17 | |||
| 5ce2822855 | |||
| a3ae64440d | |||
| 5a8313f3a2 | |||
| b85989205f | |||
| 66eed80f71 | |||
| e81c181881 | |||
| b546dde48c | |||
| eec7945222 | |||
| 76648f358e | |||
| 36e5e4ad62 | |||
| dd215eac0b | |||
| c5f7b5baa5 | |||
| 6f62dd66bb | |||
| e8beb180e1 | |||
| 92e64c9eb9 | |||
| fe9e887f86 | |||
| f8918e54bb | |||
| 5ca8b7829a | |||
| 784932875f | |||
| 3d81f94349 | |||
| a7a03bbf4a | |||
| 4848652c7a | |||
| bca8b80069 | |||
| c1dcbb42c7 | |||
| 38717551f8 | |||
| a6be3df24c | |||
| d4aa089639 | |||
| 2e91c2b640 | |||
| 71a34d005c | |||
| 74b120329c | |||
| 078467d18d | |||
| b6c9630094 | |||
| 41c6415941 | |||
| 5f46773151 | |||
| 15cbe1472d | |||
| 03c7751394 | |||
| 7dd4625dde | |||
| 25e02d17d2 | |||
| 375bc11139 | |||
| ac44b2062d | |||
| 4d79ab64d1 | |||
| 67d14c963a | |||
| 8833823195 | |||
| 52e47ce8fe | |||
| b7f1163ab9 | |||
| df751cd834 | |||
| 5c94b5daf2 | |||
| 3e8b0487bb | |||
| 3b7ca2ac10 | |||
| d03202e4d6 | |||
| 8998ec17b8 | |||
| 75528e56bf | |||
| 14dcf10882 | |||
| 707fd61a78 | |||
| c76caf3c29 | |||
| 82685806b2 | |||
| 533f4157d1 | |||
| be92a5f876 | |||
| 96b682b157 | |||
| c232d6cb85 | |||
| 72ad157b07 | |||
| 1b9dde7c29 | |||
| d2e5706467 | |||
| 50e79c5a14 | |||
| a1d53b4e98 | |||
| 67590e4e35 | |||
| 8e7b25025d | |||
| 3f475054fa | |||
| e2e6e14644 | |||
| a48cf0cb0d | |||
| ff7b627b8e | |||
| 1f49fa2129 | |||
| c1c5433733 | |||
| e55e5cf23e | |||
| 71c053bd8c |
@ -1,229 +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.8
|
||||
- test: 3.9
|
||||
- test: '3.10'
|
||||
- test: 3.11
|
||||
- test: 3.12
|
||||
- test: 3.13
|
||||
- stage: Windows
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Server {0}
|
||||
testFormat: windows/{0}/1
|
||||
targets:
|
||||
- name: 2016 WinRM HTTP
|
||||
test: 2016/winrm/http
|
||||
- name: 2019 WinRM HTTPS
|
||||
test: 2019/winrm/https
|
||||
- name: 2022 WinRM HTTPS
|
||||
test: 2022/winrm/https
|
||||
- name: 2022 PSRP HTTP
|
||||
test: 2022/psrp/http
|
||||
- name: 2022 SSH Key
|
||||
test: 2022/ssh/key
|
||||
- stage: Remote
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml # context/target
|
||||
parameters:
|
||||
targets:
|
||||
- name: macOS 14.3
|
||||
test: macos/14.3
|
||||
- name: RHEL 9.4 py39
|
||||
test: rhel/9.4@3.9
|
||||
- name: RHEL 9.4 py312
|
||||
test: rhel/9.4@3.12
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: FreeBSD 13.3
|
||||
test: freebsd/13.3
|
||||
- name: FreeBSD 14.1
|
||||
test: freebsd/14.1
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- template: templates/matrix.yml # context/controller
|
||||
parameters:
|
||||
targets:
|
||||
- name: macOS 14.3
|
||||
test: macos/14.3
|
||||
- name: RHEL 9.4
|
||||
test: rhel/9.4
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: FreeBSD 13.3
|
||||
test: freebsd/13.3
|
||||
- name: FreeBSD 14.1
|
||||
test: freebsd/14.1
|
||||
groups:
|
||||
- 3
|
||||
- 4
|
||||
- 5
|
||||
- template: templates/matrix.yml # context/controller (ansible-test container management)
|
||||
parameters:
|
||||
targets:
|
||||
- name: Alpine 3.20
|
||||
test: alpine/3.20
|
||||
- name: Fedora 40
|
||||
test: fedora/40
|
||||
- name: RHEL 9.4
|
||||
test: rhel/9.4
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu/24.04
|
||||
groups:
|
||||
- 6
|
||||
- stage: Docker
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml # context/target
|
||||
parameters:
|
||||
testFormat: linux/{0}
|
||||
targets:
|
||||
- name: Alpine 3.20
|
||||
test: alpine320
|
||||
- name: Fedora 40
|
||||
test: fedora40
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu2204
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu2404
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- template: templates/matrix.yml # context/controller
|
||||
parameters:
|
||||
testFormat: linux/{0}
|
||||
targets:
|
||||
- name: Alpine 3.20
|
||||
test: alpine320
|
||||
- name: Fedora 40
|
||||
test: fedora40
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu2404
|
||||
groups:
|
||||
- 3
|
||||
- 4
|
||||
- 5
|
||||
- stage: Galaxy
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Python {0}
|
||||
testFormat: galaxy/{0}/1
|
||||
targets:
|
||||
- test: 3.11
|
||||
- test: 3.12
|
||||
- test: 3.13
|
||||
- stage: Generic
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Python {0}
|
||||
testFormat: generic/{0}/1
|
||||
targets:
|
||||
- test: 3.11
|
||||
- test: 3.12
|
||||
- test: 3.13
|
||||
- stage: Incidental_Windows
|
||||
displayName: Incidental Windows
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Server {0}
|
||||
testFormat: i/windows/{0}
|
||||
targets:
|
||||
- name: 2016 WinRM HTTP
|
||||
test: 2016/winrm/http
|
||||
- name: 2019 WinRM HTTPS
|
||||
test: 2019/winrm/https
|
||||
- name: 2022 WinRM HTTPS
|
||||
test: 2022/winrm/https
|
||||
- name: 2022 PSRP HTTP
|
||||
test: 2022/psrp/http
|
||||
- name: 2022 SSH Key
|
||||
test: 2022/ssh/key
|
||||
- stage: Incidental
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: i/{0}/1
|
||||
targets:
|
||||
- name: IOS Python
|
||||
test: ios/csr1000v/
|
||||
- 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,34 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
cloud="${args[0]}"
|
||||
python="${args[1]}"
|
||||
group="${args[2]}"
|
||||
|
||||
target="shippable/${cloud}/group${group}/"
|
||||
|
||||
stage="${S:-prod}"
|
||||
|
||||
changed_all_target="shippable/${cloud}/smoketest/"
|
||||
|
||||
if ! ansible-test integration "${changed_all_target}" --list-targets > /dev/null 2>&1; then
|
||||
# no smoketest tests are available for this cloud
|
||||
changed_all_target="none"
|
||||
fi
|
||||
|
||||
if [ "${group}" == "1" ]; then
|
||||
# only run smoketest tests for group1
|
||||
changed_all_mode="include"
|
||||
else
|
||||
# smoketest tests already covered by group1
|
||||
changed_all_mode="exclude"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--remote-terminate always --remote-stage "${stage}" \
|
||||
--docker --python "${python}" --changed-all-target "${changed_all_target}" --changed-all-mode "${changed_all_mode}"
|
||||
@ -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 +0,0 @@
|
||||
cloud.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,46 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
version="${args[1]}"
|
||||
connection="${args[2]}"
|
||||
connection_setting="${args[3]}"
|
||||
|
||||
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 the version ${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
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test windows-integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--controller "docker:default,python=${python_default}" \
|
||||
--target "remote:windows/${version},connection=${connection}+${connection_setting},provider=${provider}" \
|
||||
--remote-terminate always --remote-stage "${stage}"
|
||||
@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
image="${args[1]}"
|
||||
|
||||
if [ "${#args[@]}" -gt 2 ]; then
|
||||
target="shippable/posix/group${args[2]}/"
|
||||
else
|
||||
target="shippable/posix/"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--docker "${image}"
|
||||
@ -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,89 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
version="${args[1]}"
|
||||
connection="${args[2]}"
|
||||
connection_setting="${args[3]}"
|
||||
group="${args[4]}"
|
||||
|
||||
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 the version ${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
|
||||
fi
|
||||
|
||||
for py_version in "${python_versions[@]}"; do
|
||||
changed_all_target="all"
|
||||
changed_all_mode="default"
|
||||
|
||||
if [ "${py_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 [ "${py_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"} \
|
||||
--changed-all-target "${changed_all_target}" --changed-all-mode "${changed_all_mode}" \
|
||||
--controller "docker:default,python=${py_version}" \
|
||||
--target "remote:windows/${version},connection=${connection}+${connection_setting},provider=${provider}" \
|
||||
--remote-terminate "${terminate}" --remote-stage "${stage}"
|
||||
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,5 +0,0 @@
|
||||
team = "ansible"
|
||||
repo = "ansible"
|
||||
check_sha = "f31421576b00f0b167cdbe61217c31c21a41ac02" # the very first commit in repo
|
||||
fix_commit_msg = false # Don't replace "#" with "GH-"
|
||||
default_branch = "devel"
|
||||
25
.coveragerc
Normal file
25
.coveragerc
Normal file
@ -0,0 +1,25 @@
|
||||
# This configuration file is used for manual execution of coverage
|
||||
# as well as for tests run through ansible-test.
|
||||
|
||||
[run]
|
||||
branch = True
|
||||
|
||||
# Enable concurrency. This also enables parallel mode, which results in
|
||||
# multiple coverage files being created. Concurrency allows us to collect
|
||||
# results from multiple tests simultaneously, as well as supporting multiple
|
||||
# test runs, such as from integration tests.
|
||||
concurrency = multiprocessing
|
||||
parallel = True
|
||||
|
||||
# When running tests through ansible-test, this option is overridden by
|
||||
# the COVERAGE_FILE environment variable. This option is present for
|
||||
# convenience when running coverage manually from this directory.
|
||||
data_file = test/results/coverage/coverage
|
||||
|
||||
# Don't collect or report code coverage from files matching these patterns.
|
||||
omit =
|
||||
*/python*/dist-packages/*
|
||||
*/python*/site-packages/*
|
||||
*/python*/distutils/*
|
||||
*/pyshared/*
|
||||
*/pytest
|
||||
@ -1,4 +0,0 @@
|
||||
# .git-blame-ignore-revs
|
||||
# Bulk PowerShell sanity fixes
|
||||
6def4a3180fe03981ba64c6d8db28fed3bb39c0c
|
||||
716631189cb5a3f66b3add98f39e64e98bc17bf7
|
||||
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -1 +1,4 @@
|
||||
CHANGELOG.md merge=union
|
||||
.github/ export-ignore
|
||||
hacking/ export-ignore
|
||||
ticket-stubs/ export-ignore
|
||||
|
||||
1275
.github/BOTMETA.yml
vendored
Normal file
1275
.github/BOTMETA.yml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2
.github/CODE_OF_CONDUCT.md
vendored
2
.github/CODE_OF_CONDUCT.md
vendored
@ -1,3 +1,3 @@
|
||||
# Community Code of Conduct
|
||||
|
||||
Please see the official [Ansible Community Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html).
|
||||
Please see the official [Ansible Community Code of Conduct](http://docs.ansible.com/ansible/latest/community.html#community-code-of-conduct).
|
||||
|
||||
78
.github/CONTRIBUTING.md
vendored
78
.github/CONTRIBUTING.md
vendored
@ -1,78 +0,0 @@
|
||||
# WELCOME TO ANSIBLE GITHUB
|
||||
|
||||
Hi! Nice to see you here!
|
||||
|
||||
## QUESTIONS ?
|
||||
|
||||
If you have questions about anything related to Ansible, get in touch with us!
|
||||
See [Communicating with the Ansible community](https://docs.ansible.com/ansible/devel/community/communication.html) to find out how.
|
||||
|
||||
The [Community Guide](https://docs.ansible.com/ansible/devel/community/index.html) also explains how to contribute
|
||||
and interact with the project, including how to submit bug reports and code to Ansible.
|
||||
|
||||
Please note that the GitHub issue tracker is not the best place to ask questions for several reasons.
|
||||
You'll get more helpful, and quicker, responses in the forum.
|
||||
|
||||
## CONTRIBUTING ?
|
||||
|
||||
By contributing to this project you agree to the [Developer Certificate of Origin (DCO)](#developer-certificate-of-origin-dco).
|
||||
|
||||
The Ansible project is licensed under the [GPL-3.0](COPYING) or later. Some portions of the code fall under other licenses as noted in individual files.
|
||||
|
||||
The Ansible project accepts contributions through GitHub pull requests.
|
||||
Please review the [Community Guide](https://docs.ansible.com/ansible/devel/community/index.html) for more information on contributing to Ansible.
|
||||
|
||||
## BUG TO REPORT ?
|
||||
|
||||
First and foremost, also check the [Community Guide](https://docs.ansible.com/ansible/devel/community/index.html).
|
||||
|
||||
You can report bugs or make enhancement requests at
|
||||
the [Ansible GitHub issue page](http://github.com/ansible/ansible/issues/new/choose) by filling out the issue template that will be presented.
|
||||
|
||||
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.
|
||||
```
|
||||
65
.github/ISSUE_TEMPLATE.md
vendored
65
.github/ISSUE_TEMPLATE.md
vendored
@ -1 +1,64 @@
|
||||
Please raise issues via the [new interface](https://github.com/ansible/ansible/issues/new/choose)
|
||||
<!---
|
||||
Verify first that your issue/request is not already reported on GitHub.
|
||||
Also test if the latest release, and devel branch are affected too.
|
||||
-->
|
||||
|
||||
##### ISSUE TYPE
|
||||
<!--- Pick one below and delete the rest -->
|
||||
- Bug Report
|
||||
- Feature Idea
|
||||
- Documentation Report
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!---
|
||||
Name of the module, plugin, task or feature
|
||||
Do not include extra details here, e.g. "vyos_command" not "the network module vyos_command" or the full path
|
||||
-->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste verbatim output from "ansible --version" between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!---
|
||||
If using Ansible 2.4 or above, paste the results of "ansible-config dump --only-changed"
|
||||
Otherwise, mention any settings you have changed/added/removed in ansible.cfg
|
||||
(or using the ANSIBLE_* environment variables).
|
||||
-->
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!---
|
||||
Mention the OS you are running Ansible from, and the OS you are
|
||||
managing, or say "N/A" for anything that is not platform-specific.
|
||||
Also mention the specific version of what you are trying to control,
|
||||
e.g. if this is a network bug the version of firmware on the network device.
|
||||
-->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly -->
|
||||
|
||||
##### STEPS TO REPRODUCE
|
||||
<!---
|
||||
For bugs, show exactly how to reproduce the problem, using a minimal test-case.
|
||||
For new features, show how the feature would be used.
|
||||
-->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- You can also paste gist.github.com links for larger files -->
|
||||
|
||||
##### EXPECTED RESULTS
|
||||
<!--- What did you expect to happen when running the steps above? -->
|
||||
|
||||
##### ACTUAL RESULTS
|
||||
<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->
|
||||
|
||||
<!--- Paste verbatim command output between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
266
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
266
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -1,266 +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 see
|
||||
[Communicating with the Ansible community][communication] to
|
||||
get in touch and ask questions.
|
||||
|
||||
|
||||
|
||||
[communication]:
|
||||
https://docs.ansible.com/ansible/devel/community/communication.html
|
||||
|
||||
[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 unfortunately, the current
|
||||
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/devel/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/devel/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/devel/community/reporting_bugs_and_features.html
|
||||
- name: 📝 Ansible Code of Conduct
|
||||
url: https://docs.ansible.com/ansible/devel/community/code_of_conduct.html?utm_medium=github&utm_source=issue_template_chooser
|
||||
about: ❤ Be nice to other members of the community. ☮ Behave.
|
||||
- name: 💬 Talk to the community
|
||||
url: https://docs.ansible.com/ansible/devel/community/communication.html?utm_medium=github&utm_source=issue_template_chooser#mailing-list-information
|
||||
about: Please ask and answer usage questions here
|
||||
- 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
|
||||
214
.github/ISSUE_TEMPLATE/documentation_report.yml
vendored
214
.github/ISSUE_TEMPLATE/documentation_report.yml
vendored
@ -1,214 +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 see
|
||||
[Communicating with the Ansible community][communication] to
|
||||
get in touch and ask questions.
|
||||
|
||||
|
||||
|
||||
[communication]:
|
||||
https://docs.ansible.com/ansible/devel/community/communication.html
|
||||
|
||||
[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/devel/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
|
||||
...
|
||||
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 in the [Ansible forum][forum].
|
||||
|
||||
|
||||
<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 see
|
||||
[Communicating with the Ansible community][communication] to
|
||||
get in touch and ask questions.
|
||||
|
||||
|
||||
|
||||
[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
|
||||
|
||||
[communication]:
|
||||
https://docs.ansible.com/ansible/devel/community/communication.html
|
||||
|
||||
[issue search]: ../search?q=is%3Aissue&type=issues
|
||||
|
||||
[forum help]:
|
||||
https://forum.ansible.com/c/help/6
|
||||
|
||||
[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 unfortunately, the current
|
||||
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/devel/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
|
||||
...
|
||||
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
|
||||
37
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
37
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
##### SUMMARY
|
||||
<!--- Describe the change, including rationale and design decisions -->
|
||||
|
||||
<!---
|
||||
If you are fixing an existing issue, please include "Fixes #nnn" in your
|
||||
commit message and your description; but you should still explain what
|
||||
the change does.
|
||||
-->
|
||||
|
||||
##### ISSUE TYPE
|
||||
<!--- Pick one below and delete the rest: -->
|
||||
- Feature Pull Request
|
||||
- New Module Pull Request
|
||||
- Bugfix Pull Request
|
||||
- Docs Pull Request
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Name of the module, plugin, module or task -->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste verbatim output from "ansible --version" between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
|
||||
##### ADDITIONAL INFORMATION
|
||||
<!---
|
||||
Include additional information to help people understand the change here.
|
||||
For bugs that don't have a linked bug report, a step-by-step reproduction
|
||||
of the problem is helpful.
|
||||
-->
|
||||
|
||||
<!--- Paste verbatim command output below, e.g. before and after your change -->
|
||||
```
|
||||
|
||||
```
|
||||
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
|
||||
|
||||
```
|
||||
19
.github/RELEASE_NAMES.txt
vendored
19
.github/RELEASE_NAMES.txt
vendored
@ -1,19 +0,0 @@
|
||||
2.18.0 Fool in the Rain
|
||||
2.17.0 Gallows Pole
|
||||
2.16.0 All My Love
|
||||
2.15.0 Ten Years Gone
|
||||
2.14.0 C'mon Everybody
|
||||
2.13.0 Nobody's Fault but Mine
|
||||
2.12.0 Dazed and Confused
|
||||
2.11.0 Hey Hey, What Can I Do
|
||||
2.10.0 When the Levee Breaks
|
||||
2.9.0 Immigrant Song
|
||||
2.8.0 How Many More Times
|
||||
2.7.0 In the Light
|
||||
2.6.0 Heartbreaker
|
||||
2.5.0 Kashmir
|
||||
2.4.0 Dancing Days
|
||||
2.3.0 Ramble On
|
||||
2.2.0 The Battle of Evermore
|
||||
2.1.0 The Song Remains the Same
|
||||
2.0.0 Over the Hills and Far Away
|
||||
15
.github/SECURITY.md
vendored
15
.github/SECURITY.md
vendored
@ -1,15 +0,0 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Ansible applies security fixes according to the 3-versions-back support
|
||||
policy. Please find more information in [our docs](
|
||||
https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html#release-status
|
||||
).
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
We encourage responsible disclosure practices for security
|
||||
vulnerabilities. Please read our [policies for reporting bugs](
|
||||
https://docs.ansible.com/ansible/devel/community/reporting_bugs_and_features.html#reporting-a-bug
|
||||
) if you want to report a security issue that might affect Ansible.
|
||||
56
.gitignore
vendored
56
.gitignore
vendored
@ -29,20 +29,14 @@ docs/man/man3/*
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
# docsite stuff...
|
||||
docs/api/_build/
|
||||
docs/api/rst/
|
||||
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,59 +47,44 @@ 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
|
||||
*.out
|
||||
.pytest_cache/
|
||||
.tox
|
||||
.cache
|
||||
.pytest_cache
|
||||
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/
|
||||
# First used in the `devel` branch during Ansible 2.18 development.
|
||||
/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
|
||||
# Release directory
|
||||
packaging/release/ansible_release
|
||||
/.cache/
|
||||
/test/results/
|
||||
/test/integration/cloud-config-aws.yml
|
||||
/test/results/coverage/*=coverage.*
|
||||
/test/results/coverage/coverage*
|
||||
/test/results/reports/coverage*.xml
|
||||
/test/results/reports/coverage*/
|
||||
/test/results/bot/*.json
|
||||
/test/results/junit/*.xml
|
||||
/test/results/logs/*.log
|
||||
/test/results/data/*.json
|
||||
/test/integration/inventory.remote
|
||||
/test/integration/inventory.networking
|
||||
/test/integration/inventory.winrm
|
||||
/test/integration/cloud-config-aws.yml
|
||||
@ -121,6 +100,3 @@ htmlcov/
|
||||
# ansible-test coverage results
|
||||
test/units/.coverage.*
|
||||
/test/integration/cloud-config-azure.yml
|
||||
/SYMLINK_CACHE.json
|
||||
changelogs/.plugin-cache.yaml
|
||||
.ansible-test-timeout.json
|
||||
|
||||
1
CHANGELOG.rst
Normal file
1
CHANGELOG.rst
Normal file
@ -0,0 +1 @@
|
||||
Per-version CHANGELOGS can be found `here <changelogs/>`_.
|
||||
316
CODING_GUIDELINES.md
Normal file
316
CODING_GUIDELINES.md
Normal file
@ -0,0 +1,316 @@
|
||||
Coding Guidelines
|
||||
=================
|
||||
|
||||
Hi! Thanks for your interest in contributing to Ansible.
|
||||
|
||||
Here are some guidelines for contributing code. The purpose of this document is to establish what we're looking for in code contributions, and to make sure
|
||||
new contributors know some of the conventions that we've been using.
|
||||
|
||||
We don't think much of this should be too strange to readers familiar with contributing to Python projects, though it helps if we all get on the same page.
|
||||
|
||||
Language
|
||||
========
|
||||
|
||||
* While not all components of Ansible must be in Python, core contributions to the Ansible repo must be written in Python. This is to maximize the ability of everyone to contribute.
|
||||
* If you want to write non-Python ansible modules or inventory scripts, that's fine, but they are not going to get merged in most likely. Sorry!!
|
||||
|
||||
PEP 8 and basic style checks
|
||||
============================
|
||||
|
||||
* [PEP 8](https://www.python.org/dev/peps/pep-0008/) is a great Python style guide, which you should read.
|
||||
* PEP 8 must not be strictly followed in all aspects, but most of it is good advice.
|
||||
* The line is limited to 160 characters.
|
||||
* To run checks for things we care about, use [ansible-test](http://docs.ansible.com/ansible/dev_guide/testing_pep8.html#running-locally).
|
||||
* Similarly, additional checks can be made with "make pyflakes".
|
||||
* There is no need to submit code changes for PEP 8 and pyflakes fixes, as these break attribution history. Project leadership will make these periodically.
|
||||
* Do not submit pull requests that simply adjust whitespace in the code.
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
* Much of ansible's testing needs are in integration, not unit tests. Add module tests there.
|
||||
* That being said, there are unit tests too!
|
||||
* Code written must absolutely pass tests (i.e. "make tests")
|
||||
* You should anticipate any error paths in your code and test down those error paths.
|
||||
* Additions to tests for core code are welcome, but not always possible. Be sure things are at least well tested manually in that case.
|
||||
|
||||
Whitespace
|
||||
==========
|
||||
|
||||
* Four space indent is strictly required
|
||||
* Include meaningful whitespace between lines of code
|
||||
|
||||
Shebang Lines
|
||||
=============
|
||||
|
||||
* /usr/bin/scripts should start with '/usr/bin/env python'
|
||||
* module code should still use '/usr/bin/python' as this is replaced automatically by 'ansible_python_interpreter', see the FAQ in the docs for more info.
|
||||
|
||||
Comments
|
||||
========
|
||||
|
||||
* Readability is one of the most important goals for this project
|
||||
* Comment any non-trivial code where someone might not know why you are doing something in a particular way
|
||||
* Though if something should be commented, that's often a sign someone should write a function
|
||||
* All new functions must have a basic docstring comment
|
||||
* Commenting above a line is preferable to commenting at the end of a line
|
||||
|
||||
Classes
|
||||
=======
|
||||
|
||||
* With the exception of module code (where inline is better), it is desirable to see classes in their own files.
|
||||
* Classes should generally not cause side effects as soon as they are instantiated, move meaningful behavior to methods rather than constructors.
|
||||
|
||||
Functions and Methods
|
||||
=====================
|
||||
|
||||
* In general, functions should not be 'too long' and should describe a meaningful amount of work
|
||||
* When code gets too nested, that's usually the sign the loop body could benefit from being a function
|
||||
* Parts of our existing code are not the best examples of this at times.
|
||||
* Functions should have names that describe what they do, along with docstrings
|
||||
* Functions should be named with_underscores
|
||||
* "Don't repeat yourself" is generally a good philosophy
|
||||
|
||||
Variables
|
||||
=========
|
||||
|
||||
* Use descriptive variable names instead of variables like 'x', unless x is an obvious loop index
|
||||
* Ansible python code uses identifiers like 'ClassesLikeThis and variables_like_this
|
||||
* Module parameters should also use_underscores and not runtogether
|
||||
|
||||
Module Security
|
||||
===============
|
||||
|
||||
* Modules must take steps to avoid passing user input from the shell and always check return codes
|
||||
* always use module.run_command instead of subprocess or Popen or os.system -- this is mandatory
|
||||
* if you need to use the shell you must pass use_unsafe_shell=True to module.run_command
|
||||
* if you do not need the shell, avoid using the shell
|
||||
* any variables that can come from the user input with use_unsafe_shell=True must be wrapped by pipes.quote(x)
|
||||
* downloads of https:// resource urls must import module_utils.urls and use the fetch_url method
|
||||
|
||||
Misc Preferences
|
||||
================
|
||||
|
||||
Use the dict constructor where possible when allocating dictionaries:
|
||||
|
||||
# not this:
|
||||
foo = {
|
||||
'a' : 12,
|
||||
'b' : 34
|
||||
}
|
||||
|
||||
# this:
|
||||
foo = dict(
|
||||
a=12,
|
||||
b=34,
|
||||
)
|
||||
|
||||
Do not line up variables
|
||||
|
||||
# not this
|
||||
a = 12
|
||||
foosball = 34
|
||||
xyz = 'dog'
|
||||
|
||||
# this
|
||||
a = 12
|
||||
foosball = 34
|
||||
xyz = 'dog'
|
||||
|
||||
Don't use line continuations:
|
||||
|
||||
# no
|
||||
if (this_is_a_very_long_line and foo and \
|
||||
i_am_going_to_continue_it):
|
||||
bar()
|
||||
|
||||
# better:
|
||||
if (this_is_a_very_long_line and foo and i_am_going_to_continue_it):
|
||||
bar()
|
||||
|
||||
Spacing:
|
||||
|
||||
# no
|
||||
x = [1,2,3]
|
||||
|
||||
# no
|
||||
x = [ 1, 2, 3 ]
|
||||
|
||||
# yes
|
||||
x = [1, 2, 3]
|
||||
|
||||
Spacing continued:
|
||||
|
||||
# no
|
||||
x=foo(12)
|
||||
|
||||
# no
|
||||
x = foo( 12 )
|
||||
|
||||
# yes
|
||||
x = foo(12)
|
||||
|
||||
Licenses
|
||||
========
|
||||
|
||||
Every file should have a license header, including the copyright of the original author. Major additions to the module are allowed
|
||||
to add an additional copyright line, and this is especially true of rewrites, but original authorship copyright messages should be preserved.
|
||||
|
||||
All contributions to the core repo should preserve original licenses and new contributions must include the GPLv3 header.
|
||||
|
||||
Module Documentation
|
||||
====================
|
||||
|
||||
All module pull requests must include a DOCUMENTATION docstring (YAML format,
|
||||
see other modules for examples) as well as an EXAMPLES docstring, which is free form.
|
||||
|
||||
When adding new modules, any new parameter must have a "version_added" attribute.
|
||||
When submitting a new module, the module should have a "version_added" attribute in the
|
||||
pull request as well, set to the current development version.
|
||||
|
||||
Be sure to check grammar and spelling.
|
||||
|
||||
It's frequently the case that modules get submitted with YAML that isn't valid,
|
||||
so you can run "make webdocs" from the checkout to preview your module's documentation.
|
||||
If it fails to build, take a look at your DOCUMENTATION string
|
||||
or you might have a Python syntax error in there too.
|
||||
|
||||
Python Imports
|
||||
==============
|
||||
|
||||
To make it clear what a module is importing, imports should not be sprinkled throughout the code.
|
||||
|
||||
Python Imports should happen at the top of the file, exempting code from module_utils.
|
||||
|
||||
When a conditional runtime import is required, do so something like this instead:
|
||||
|
||||
HAS_FOO = False
|
||||
try:
|
||||
import foo
|
||||
HAS_FOO = True
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
...
|
||||
|
||||
if not HAS_FOO:
|
||||
raise Exception("the foo library is required")
|
||||
|
||||
This makes it clear what optional dependencies are but allows this to be deferred until runtime. In the case of module code, the raising of the Exception will be replaced
|
||||
with a "module.exit_json" call.
|
||||
|
||||
Exceptions
|
||||
==========
|
||||
|
||||
In the main body of the code, use typed exceptions where possible:
|
||||
|
||||
# not this
|
||||
raise Exception("panic!")
|
||||
|
||||
# this
|
||||
from ansible import errors
|
||||
...
|
||||
raise errors.AnsibleError("panic!")
|
||||
|
||||
Similarly, exception checking should be fine grained:
|
||||
|
||||
# not this
|
||||
try:
|
||||
foo()
|
||||
except:
|
||||
bar()
|
||||
|
||||
# but this
|
||||
try:
|
||||
foo()
|
||||
except SomeTypedException:
|
||||
bar()
|
||||
|
||||
List Comprehensions
|
||||
===================
|
||||
|
||||
In general list comprehensions are always preferred to map() and filter() calls.
|
||||
|
||||
However, they can be abused. Optimize for readability, and avoid nesting them too deeply.
|
||||
|
||||
Regexes
|
||||
=======
|
||||
|
||||
There is a time and place for them, but here's an illustrative joke.
|
||||
|
||||
"A developer had a problem, and used a regular expression to solve it. Now the developer had two problems".
|
||||
|
||||
Often regexes are difficult to maintain, and a trusty call to other string operations can be a great solution, faster,
|
||||
and more readable.
|
||||
|
||||
File Conventions
|
||||
================
|
||||
|
||||
If a piece of code looks for a named YAML file in a directory, it should assume it can take no extension, or an extension of '.yml' or '.yaml'.
|
||||
This should be true against all code that loads files.
|
||||
|
||||
Any code that uses directories should consider the possibility that the directory may be symlink.
|
||||
|
||||
New Ansible language parameters
|
||||
===============================
|
||||
|
||||
If adding a new parameter, like 'can_fizzbuzz: True/False' be sure the value of the parameter is templated somewhere in the Runner code, as if anything can be parameterized in Ansible,
|
||||
there is a user that will try to parameterize it.
|
||||
|
||||
String Find
|
||||
===========
|
||||
|
||||
Use 'in':
|
||||
|
||||
# not this:
|
||||
if x.find('foo') != -1:
|
||||
|
||||
# this:
|
||||
if 'foo' in x:
|
||||
|
||||
String checks
|
||||
=============
|
||||
|
||||
To test if something is a string, consider that it may be unicode.
|
||||
|
||||
# no
|
||||
if type(x) == str:
|
||||
|
||||
# yes
|
||||
from ansible.module_utils.six import string_types
|
||||
if isinstance(x, string_types):
|
||||
|
||||
Cleverness
|
||||
==========
|
||||
|
||||
Ansible's code is intended to be read by as many people as possible, so we don't particularly encourage clever or heavily idiomatic code.
|
||||
|
||||
In particular, metaclasses are probably not appropriate, however entertaining they may be to add.
|
||||
|
||||
Git Practices
|
||||
=============
|
||||
|
||||
Pull requests cannot be accepted that contain merge commits.
|
||||
|
||||
Always do "git pull --rebase" and "git rebase" vs "git pull" or "git merge".
|
||||
|
||||
Always create a new branch for each pull request to avoid intermingling different features or fixes on the same branch.
|
||||
|
||||
|
||||
Python Version Compliance
|
||||
=========================
|
||||
|
||||
All code in Ansible core must support a minimum version of Python 2.6.
|
||||
|
||||
Module code must support a minimum of Python 2.4, with occasional exceptions for modules that require code that themselves require 2.6 and later.
|
||||
|
||||
A quick reminder is that list comprehensions in Python 2.4 are not as fully fleshed out, there are no 'dict' comprehensions, and there is no 'with' statement.
|
||||
But otherwise it's pretty much all the same.
|
||||
|
||||
The End
|
||||
=======
|
||||
|
||||
This was not meant to be a scary document, so we hope it wasn't, but we also hope this helps you write code that is easier to maintain by others in the future.
|
||||
If you have questions about this document, please ask on the ansible-devel mailing list.
|
||||
|
||||
Thank you!
|
||||
29
CONTRIBUTING.md
Normal file
29
CONTRIBUTING.md
Normal file
@ -0,0 +1,29 @@
|
||||
# WELCOME TO ANSIBLE GITHUB
|
||||
|
||||
Hi! Nice to see you here!
|
||||
|
||||
|
||||
## QUESTIONS ?
|
||||
|
||||
Please see the [community guide](http://docs.ansible.com/ansible/latest/community/index.html) for information on how to ask questions on the [mailing lists](http://docs.ansible.com/ansible/latest/community/communication.html#mailing-list-information) and IRC.
|
||||
|
||||
The GitHub issue tracker is not the best place for questions for various reasons, but both IRC and the mailing list are very helpful places for those things, as the community page explains best.
|
||||
|
||||
|
||||
## CONTRIBUTING ?
|
||||
|
||||
Please see the [community guide](http://docs.ansible.com/ansible/latest/community/index.html) for information regarding the contribution process. Important license agreement information is also included on that page.
|
||||
|
||||
|
||||
## BUG TO REPORT ?
|
||||
|
||||
First and foremost, also check the [community guide](http://docs.ansible.com/ansible/latest/community/index.html).
|
||||
|
||||
You can report bugs or make enhancement requests at the [Ansible GitHub issue page](http://github.com/ansible/ansible/issues/new) by filling out the issue template that will be presented.
|
||||
|
||||
Also please make sure you are testing on the latest released version of Ansible or the development branch. You can find the latest releases and development branch at:
|
||||
|
||||
- https://github.com/ansible/ansible/releases
|
||||
- https://github.com/ansible/ansible/archive/devel.tar.gz
|
||||
|
||||
Thanks!
|
||||
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>.
|
||||
|
||||
|
||||
30
MANIFEST.in
30
MANIFEST.in
@ -1,10 +1,22 @@
|
||||
include COPYING
|
||||
include changelogs/CHANGELOG*.rst
|
||||
include changelogs/changelog.yaml
|
||||
include licenses/*.txt
|
||||
prune ticket_stubs
|
||||
prune hacking
|
||||
include README.md COPYING
|
||||
include SYMLINK_CACHE.json
|
||||
include requirements.txt
|
||||
recursive-include packaging *.py *.j2
|
||||
recursive-include test/integration *
|
||||
recursive-include test/sanity *.in *.json *.py *.txt *.ini
|
||||
recursive-include test/support *.py *.ps1 *.psm1 *.cs *.md
|
||||
recursive-include test/units *
|
||||
include .coveragerc
|
||||
include .yamllint
|
||||
include examples/hosts
|
||||
include examples/ansible.cfg
|
||||
recursive-include lib/ansible/module_utils/powershell *
|
||||
recursive-include lib/ansible/modules *
|
||||
recursive-include lib/ansible/galaxy/data *
|
||||
recursive-include docs *
|
||||
recursive-include licenses *
|
||||
recursive-include packaging *
|
||||
recursive-include test *
|
||||
include Makefile
|
||||
include VERSION
|
||||
include MANIFEST.in
|
||||
include changelogs/*.rst
|
||||
include contrib/README.md
|
||||
recursive-include contrib/inventory *
|
||||
|
||||
3
MODULE_GUIDELINES.md
Normal file
3
MODULE_GUIDELINES.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Module Maintainer Guidelines
|
||||
|
||||
The Ansible Module Maintainer Guidelines can now be found in the [official Ansible community guide](http://docs.ansible.com/ansible/latest/community/maintainers.html).
|
||||
367
Makefile
Normal file
367
Makefile
Normal file
@ -0,0 +1,367 @@
|
||||
# WARN: gmake syntax
|
||||
########################################################
|
||||
# Makefile for Ansible
|
||||
#
|
||||
# useful targets:
|
||||
# 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/dev_guide/testing_units.html for requirements)
|
||||
# make pyflakes, make pep8 -- source code checks
|
||||
|
||||
########################################################
|
||||
# variable section
|
||||
|
||||
NAME = ansible
|
||||
OS = $(shell uname -s)
|
||||
PREFIX ?= '/usr/local'
|
||||
|
||||
# This doesn't evaluate until it's called. The -D argument is the
|
||||
# directory of the target file ($@), kinda like `dirname`.
|
||||
MANPAGES ?= $(patsubst %.asciidoc.in,%,$(wildcard ./docs/man/man1/ansible*.1.asciidoc.in))
|
||||
ifneq ($(shell which a2x 2>/dev/null),)
|
||||
ASCII2MAN = a2x -L -D $(dir $@) -d manpage -f manpage $<
|
||||
ASCII2HTMLMAN = a2x -L -D docs/html/man/ -d manpage -f xhtml
|
||||
else
|
||||
ASCII2MAN = @echo "ERROR: AsciiDoc 'a2x' command is not installed but is required to build $(MANPAGES)" && exit 1
|
||||
endif
|
||||
GENERATE_CLI = docs/bin/generate_man.py
|
||||
|
||||
PYTHON=python
|
||||
SITELIB = $(shell $(PYTHON) -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
|
||||
|
||||
# VERSION file provides one place to update the software version
|
||||
VERSION := $(shell cat VERSION | cut -f1 -d' ')
|
||||
RELEASE := $(shell cat VERSION | cut -f2 -d' ')
|
||||
|
||||
# Get the branch information from git
|
||||
ifneq ($(shell which git),)
|
||||
GIT_DATE := $(shell git log -n 1 --format="%ai")
|
||||
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="%at") +%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")
|
||||
ifeq ($(OFFICIAL),yes)
|
||||
DEB_RELEASE = $(RELEASE)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}')
|
||||
RPMRELEASE = $(RELEASE)
|
||||
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
|
||||
RPMNVR = "$(NAME)-$(VERSION)-$(RPMRELEASE)$(RPMDIST)"
|
||||
|
||||
# MOCK build parameters
|
||||
MOCK_BIN ?= mock
|
||||
MOCK_CFG ?=
|
||||
|
||||
# ansible-test parameters
|
||||
ANSIBLE_TEST ?= test/runner/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.asciidoc if %.1.asciidoc.in has been modified more
|
||||
# recently than %.1.asciidoc.
|
||||
%.1.asciidoc: %.1.asciidoc.in
|
||||
sed "s/%VERSION%/$(VERSION)/" $< > $@
|
||||
|
||||
# Regenerate %.1 if %.1.asciidoc or VERSION has been modified more
|
||||
# recently than %.1. (Implicitly runs the %.1.asciidoc recipe)
|
||||
%.1: %.1.asciidoc VERSION
|
||||
$(ASCII2MAN)
|
||||
|
||||
.PHONY: loc
|
||||
loc:
|
||||
sloccount lib library bin
|
||||
|
||||
.PHONY: pep8
|
||||
pep8:
|
||||
$(ANSIBLE_TEST) sanity --test pep8 --python $(PYTHON_VERSION) $(TEST_FLAGS)
|
||||
|
||||
.PHONY: pyflakes
|
||||
pyflakes:
|
||||
pyflakes lib/ansible/*.py lib/ansible/*/*.py bin/*
|
||||
|
||||
.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 "*.asciidoc" -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
|
||||
$(MAKE) -C docs/api 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
|
||||
sdist: clean docs
|
||||
$(PYTHON) setup.py sdist
|
||||
|
||||
.PHONY: sdist_upload
|
||||
sdist_upload: clean docs
|
||||
$(PYTHON) setup.py sdist upload 2>&1 |tee upload.log
|
||||
|
||||
# TODO: variable-ize major version number usages here
|
||||
.PHONY: changelog_reno
|
||||
changelog_reno:
|
||||
reno -d changelogs/ report --title 'Ansible 2.5 "Kashmir" Release Notes' --no-collapse-pre-release --no-show-source --earliest-version v2.5.0b1 --output changelogs/CHANGELOG-v2.5.rst
|
||||
|
||||
.PHONY: rpmcommon
|
||||
rpmcommon: sdist
|
||||
@mkdir -p rpm-build
|
||||
@cp dist/*.gz rpm-build/
|
||||
@sed -e 's#^Version:.*#Version: $(VERSION)#' -e 's#^Release:.*#Release: $(RPMRELEASE)%{?dist}$(REPOTAG)#' $(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/ --buildsrpm --spec rpm-build/$(NAME).spec --sources rpm-build/
|
||||
@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/ --rebuild rpm-build/$(NAME)-*.src.rpm
|
||||
@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}" \
|
||||
-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 %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm" \
|
||||
--define "__python `which $(PYTHON)`" \
|
||||
-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%|$(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)_$(VERSION)-$(DEB_RELEASE)~$${DIST}.dsc ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(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)_$(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)_$(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)_$(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)_$(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_asciidoc
|
||||
generate_asciidoc: 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_asciidoc
|
||||
make $(MANPAGES)
|
||||
|
||||
.PHONY: alldocs
|
||||
alldocs: docs webdocs
|
||||
|
||||
version:
|
||||
@echo $(VERSION)
|
||||
|
||||
123
README.md
123
README.md
@ -1,101 +1,56 @@
|
||||
[](https://pypi.org/project/ansible-core)
|
||||
[](https://docs.ansible.com/ansible/latest/)
|
||||
[](https://docs.ansible.com/ansible/devel/community/communication.html)
|
||||
[](https://dev.azure.com/ansible/ansible/_build/latest?definitionId=20&branchName=devel)
|
||||
[](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html)
|
||||
[](https://docs.ansible.com/ansible/devel/community/communication.html#mailing-list-information)
|
||||
[](COPYING)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/2372)
|
||||
[](https://pypi.python.org/pypi/ansible)
|
||||
[](https://app.shippable.com/projects/573f79d02a8192902e20e34b)
|
||||
|
||||
# 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/).
|
||||
Ansible
|
||||
=======
|
||||
|
||||
## Design Principles
|
||||
Ansible is a radically simple IT automation system. It handles configuration-management, application deployment, cloud provisioning, ad-hoc task-execution, and multinode orchestration - including trivializing things like zero-downtime rolling updates with load balancers.
|
||||
|
||||
* 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.
|
||||
Read the documentation and more at https://ansible.com/
|
||||
|
||||
## Use Ansible
|
||||
You can find installation instructions [here](https://docs.ansible.com/ansible/intro_installation.html) for a variety of platforms. Most users should probably install a released version of Ansible from `pip`, a package manager or our [release repository](https://releases.ansible.com/ansible/). [Officially supported](https://www.ansible.com/ansible-engine) builds of Ansible are also available. Some power users run directly from the development branch - while significant efforts are made to ensure that `devel` is reasonably stable, you're more likely to encounter breaking changes when running Ansible this way.
|
||||
|
||||
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.
|
||||
Design Principles
|
||||
=================
|
||||
|
||||
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.
|
||||
* 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.
|
||||
|
||||
## Communication
|
||||
Get Involved
|
||||
============
|
||||
|
||||
Join the Ansible forum to ask questions, get help, and interact with the
|
||||
community.
|
||||
* Read [Community Information](https://docs.ansible.com/community.html) 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.
|
||||
* All code submissions are done through pull requests. Take care to make sure no merge commits are in the submission, and use `git rebase` vs `git merge` for this reason. If submitting a large code change (other than modules), it's probably a good idea to join ansible-devel and talk about what you would like to do or add first and to avoid duplicate efforts. This not only helps everyone know what's going on, it also helps save time and effort if we decide some changes are needed.
|
||||
* Users list: [ansible-project](https://groups.google.com/group/ansible-project)
|
||||
* Development list: [ansible-devel](https://groups.google.com/group/ansible-devel)
|
||||
* Announcement list: [ansible-announce](https://groups.google.com/group/ansible-announce) - read only
|
||||
* irc.freenode.net: #ansible
|
||||
|
||||
* [Get Help](https://forum.ansible.com/c/help/6): Find help or share your Ansible knowledge to help others.
|
||||
Use tags to filter and subscribe to posts, such as the following:
|
||||
* Posts tagged with [ansible](https://forum.ansible.com/tag/ansible)
|
||||
* Posts tagged with [ansible-core](https://forum.ansible.com/tag/ansible-core)
|
||||
* Posts tagged with [playbook](https://forum.ansible.com/tag/playbook)
|
||||
* [Social Spaces](https://forum.ansible.com/c/chat/4): Meet and interact with fellow enthusiasts.
|
||||
* [News & Announcements](https://forum.ansible.com/c/news/5): Track project-wide announcements including social events.
|
||||
* [Bullhorn newsletter](https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn): Get release announcements and important changes.
|
||||
Branch Info
|
||||
===========
|
||||
|
||||
For more ways to get in touch, see [Communicating with the Ansible community](https://docs.ansible.com/ansible/devel/community/communication.html).
|
||||
* Releases are named after Led Zeppelin songs. (Releases prior to 2.0 were named after Van Halen songs.)
|
||||
* The devel branch corresponds to the release actively under development.
|
||||
* Various release-X.Y branches exist for previous releases.
|
||||
* We'd love to have your contributions, read [Community Information](https://docs.ansible.com/community.html) for notes on how to get started.
|
||||
|
||||
## Contribute to Ansible
|
||||
Authors
|
||||
=======
|
||||
|
||||
* Check out the [Contributor's Guide](./.github/CONTRIBUTING.md).
|
||||
* Read [Community Information](https://docs.ansible.com/ansible/devel/community) for all
|
||||
kinds of ways to contribute to and interact with the project,
|
||||
including how to submit bug reports and code to Ansible.
|
||||
* Submit a proposed code update through a pull request to the `devel` branch.
|
||||
* Talk to us before making larger changes
|
||||
to avoid duplicate efforts. This not only helps everyone
|
||||
know what is going on, but it also helps save time and effort if we decide
|
||||
some changes are needed.
|
||||
Ansible was created by [Michael DeHaan](https://github.com/mpdehaan) (michael.dehaan/gmail/com) and has contributions from over 1000 users (and growing). Thanks everyone!
|
||||
|
||||
## Coding Guidelines
|
||||
Ansible is sponsored by [Ansible, Inc](https://ansible.com)
|
||||
|
||||
We document our Coding Guidelines in the [Developer Guide](https://docs.ansible.com/ansible/devel/dev_guide/). We particularly suggest you review:
|
||||
|
||||
* [Contributing your module to Ansible](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_checklist.html)
|
||||
* [Conventions, tips, and pitfalls](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_best_practices.html)
|
||||
|
||||
## Branch Info
|
||||
|
||||
* The `devel` branch corresponds to the release actively under development.
|
||||
* The `stable-2.X` branches correspond to stable releases.
|
||||
* Create a branch based on `devel` and set up a [dev environment](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_general.html#common-environment-setup) if you want to open a PR.
|
||||
* See the [Ansible release and maintenance](https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html) page for information about active branches.
|
||||
|
||||
## Roadmap
|
||||
|
||||
Based on team and community feedback, an initial roadmap will be published for a major or minor version (ex: 2.7, 2.8).
|
||||
The [Ansible Roadmap page](https://docs.ansible.com/ansible/devel/roadmap/) details what is planned and how to influence the roadmap.
|
||||
|
||||
## Authors
|
||||
|
||||
Ansible was created by [Michael DeHaan](https://github.com/mpdehaan)
|
||||
and has contributions from over 5000 users (and growing). Thanks everyone!
|
||||
|
||||
[Ansible](https://www.ansible.com) is sponsored by [Red Hat, Inc.](https://www.redhat.com)
|
||||
|
||||
## License
|
||||
|
||||
GNU General Public License v3.0 or later
|
||||
License
|
||||
=======
|
||||
GNU General Public License v3.0
|
||||
|
||||
See [COPYING](COPYING) to see the full text.
|
||||
|
||||
88
RELEASES.txt
Normal file
88
RELEASES.txt
Normal file
@ -0,0 +1,88 @@
|
||||
Ansible Releases at a Glance
|
||||
============================
|
||||
|
||||
VERSION RELEASE CODE NAME
|
||||
++++++++++++++++++++++++++++++
|
||||
|
||||
2.5.0 TBD "Kashmir"
|
||||
2.4.3 01-31.2018 "Dancing Days"
|
||||
2.4.2 11-29-2017 "Dancing Days"
|
||||
2.4.1 10-25-2017 "Dancing Days"
|
||||
2.4.0 09-19-2017 "Dancing Days"
|
||||
2.3.2 2017-08-04 "Ramble On"
|
||||
2.3.1 2017-06-01 "Ramble On"
|
||||
2.3.0 2017-04-12 "Ramble On"
|
||||
2.2.3 2017-05-09 "The Battle of Evermore"
|
||||
2.2.2 2017-03-27 "The Battle of Evermore"
|
||||
2.2.1 2017-01-16 "The Battle of Evermore"
|
||||
2.2.0 2016-11-01 "The Battle of Evermore"
|
||||
2.1.6 2017-06-01 "The Song Remains the Same"
|
||||
2.1.5 2017-03-27 "The Song Remains the Same"
|
||||
2.1.4 2017-01-16 "The Song Remains the Same"
|
||||
2.1.3 2016-11-04 "The Song Remains the Same"
|
||||
2.1.2 2016-09-29 "The Song Remains the Same"
|
||||
2.1.1 2016-07-28 "The Song Remains the Same"
|
||||
2.1.0 2016-05-25 "The Song Remains the Same"
|
||||
2.0.2 2016-04-19 "Over the Hills and Far Away"
|
||||
2.0.1 2016-02-24 "Over the Hills and Far Away"
|
||||
2.0.0 2016-01-12 "Over the Hills and Far Away"
|
||||
1.9.6 2016-04-15 "Dancing In the Streets"
|
||||
1.9.5 2016-03-21 "Dancing In the Streets"
|
||||
1.9.4 2015-10-09 "Dancing In the Streets"
|
||||
1.9.3 2015-09-03 "Dancing In the Streets"
|
||||
1.9.2 2015-06-24 "Dancing In the Streets"
|
||||
1.9.1 2015-04-27 "Dancing In the Streets"
|
||||
1.9.0 2015-03-25 "Dancing In the Streets"
|
||||
1.8.4 2015-02-19 "You Really Got Me"
|
||||
1.8.3 2015-02-17 "You Really Got Me"
|
||||
1.8.2 2014-12-04 "You Really Got Me"
|
||||
1.8.1 2014-11-26 "You Really Got Me"
|
||||
1.8.0 2014-11-25 "You Really Got Me"
|
||||
1.7.2 2014-09-24 "Summer Nights"
|
||||
1.7.1 2014-08-14 "Summer Nights"
|
||||
1.7.0 2014-08-06 "Summer Nights"
|
||||
1.6.10 2014-07-25 "The Cradle Will Rock"
|
||||
1.6.9 2014-07-24 "The Cradle Will Rock"
|
||||
1.6.8 2014-07-22 "The Cradle Will Rock"
|
||||
1.6.7 2014-07-21 "The Cradle Will Rock"
|
||||
1.6.6 2014-07-01 "The Cradle Will Rock"
|
||||
1.6.5 2014-06-25 "The Cradle Will Rock"
|
||||
1.6.4 2014-06-25 "The Cradle Will Rock"
|
||||
1.6.3 2014-06-09 "The Cradle Will Rock"
|
||||
1.6.2 2014-05-23 "The Cradle Will Rock"
|
||||
1.6.1 2014-05-07 "The Cradle Will Rock"
|
||||
1.6.0 2014-05-05 "The Cradle Will Rock"
|
||||
1.5.5 2014-04-18 "Love Walks In"
|
||||
1.5.4 2014-04-01 "Love Walks In"
|
||||
1.5.3 2014-03-13 "Love Walks In"
|
||||
1.5.2 2014-03-11 "Love Walks In"
|
||||
1.5.1 2014-03-10 "Love Walks In"
|
||||
1.5.0 2014-02-28 "Love Walks In"
|
||||
1.4.5 2014-02-12 "Could This Be Magic?"
|
||||
1.4.4 2014-01-06 "Could This Be Magic?"
|
||||
1.4.3 2013-12-20 "Could This Be Magic?"
|
||||
1.4.2 2013-12-18 "Could This Be Magic?"
|
||||
1.4.1 2013-11-27 "Could This Be Magic?"
|
||||
1.4.0 2013-11-21 "Could This Be Magic?"
|
||||
1.3.4 2013-10-29 "Top of the World"
|
||||
1.3.3 2013-10-09 "Top of the World"
|
||||
1.3.2 2013-09-19 "Top of the World"
|
||||
1.3.1 2013-09-16 "Top of the World"
|
||||
1.3.0 2013-09-13 "Top of the World"
|
||||
1.2.3 2013-08-21 "Right Now"
|
||||
1.2.2 2013-07-05 "Right Now"
|
||||
1.2.1 2013-07-04 "Right Now"
|
||||
1.2.0 2013-06-10 "Right Now"
|
||||
1.1.0 2013-04-02 "Mean Street"
|
||||
1.0.0 2013-02-01 "Eruption"
|
||||
0.9.0 2012-11-30 "Dreams"
|
||||
0.8.0 2012-10-19 "Cathedral"
|
||||
0.7.0 2012-09-06 "Panama"
|
||||
0.6.0 2012-08-06 "Cabo"
|
||||
0.5.0 2012-07-04 "Amsterdam"
|
||||
0.4.0 2012-05-23 "Unchained"
|
||||
0.3.0 2012-04-23 "Baluchitherium"
|
||||
0.2.0 ? "Untitled"
|
||||
0.1.0 ? "Untitled"
|
||||
0.0.2 ? "Untitled"
|
||||
0.0.1 ? "Untitled"
|
||||
17
ROADMAP.rst
Normal file
17
ROADMAP.rst
Normal file
@ -0,0 +1,17 @@
|
||||
*******************************
|
||||
Roadmap For Ansible by Red Hat
|
||||
*******************************
|
||||
This document is now the location for published Ansible Core roadmaps.
|
||||
|
||||
The roadmap will be updated by version. Based on team and community feedback, an initial roadmap will be published for a major or minor version (2.0, 2.1). Subminor versions will generally not have roadmaps published.
|
||||
|
||||
2.1 was the first time Ansible has published this and asked for feedback in this manner. So feedback on the roadmap and the new process is quite welcome. The team is aiming for further transparency and better inclusion of both community desires and submissions.
|
||||
|
||||
These roadmaps are the team's *best guess* roadmaps based on the Ansible team's experience and are also based on requests and feedback from the community. There are things that may not make it on due to time constraints, lack of community maintainers, etc. And there may be things that got missed, so each roadmap is published both as an idea of what is upcoming in Ansible, and as a medium for seeking further feedback from the community. Here are the good places for you to submit feedback:
|
||||
|
||||
- Add to the agenda of a `Core IRC Meetings <https://github.com/ansible/community/blob/master/meetings/README.md>`_ (preferred)
|
||||
- Ansible's google-group: ansible-devel
|
||||
- AnsibleFest conferences.
|
||||
- IRC Freenode channel: #ansible-devel (this one may have things lost in lots of conversation, so a caution).
|
||||
|
||||
Ansible Roadmaps can be found `here <http://docs.ansible.com/ansible/devel/roadmap/>`_.
|
||||
2716
ansible-core-sitemap.xml
Normal file
2716
ansible-core-sitemap.xml
Normal file
File diff suppressed because it is too large
Load Diff
@ -1 +0,0 @@
|
||||
../lib/ansible/cli/adhoc.py
|
||||
163
bin/ansible
Executable file
163
bin/ansible
Executable file
@ -0,0 +1,163 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
########################################################
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
__requires__ = ['ansible']
|
||||
try:
|
||||
import pkg_resources
|
||||
except Exception:
|
||||
# Use pkg_resources to find the correct versions of libraries and set
|
||||
# sys.path appropriately when there are multiversion installs. But we
|
||||
# have code that better expresses the errors in the places where the code
|
||||
# is actually used (the deps are optional for many code paths) so we don't
|
||||
# want to fail here.
|
||||
pass
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
from ansible.errors import AnsibleError, AnsibleOptionsError, AnsibleParserError
|
||||
from ansible.module_utils._text import to_text
|
||||
|
||||
|
||||
# Used for determining if the system is running a new enough python version
|
||||
# and should only restrict on our documented minimum versions
|
||||
_PY3_MIN = sys.version_info[:2] >= (3, 5)
|
||||
_PY2_MIN = (2, 6) <= sys.version_info[:2] < (3,)
|
||||
_PY_MIN = _PY3_MIN or _PY2_MIN
|
||||
if not _PY_MIN:
|
||||
raise SystemExit('ERROR: Ansible requires a minimum of Python2 version 2.6 or Python3 version 3.5. Current version: %s' % ''.join(sys.version.splitlines()))
|
||||
|
||||
|
||||
class LastResort(object):
|
||||
# OUTPUT OF LAST RESORT
|
||||
def display(self, msg, log_only=None):
|
||||
print(msg, file=sys.stderr)
|
||||
|
||||
def error(self, msg, wrap_text=None):
|
||||
print(msg, file=sys.stderr)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
display = LastResort()
|
||||
|
||||
try: # bad ANSIBLE_CONFIG or config options can force ugly stacktrace
|
||||
import ansible.constants as C
|
||||
from ansible.utils.display import Display
|
||||
except AnsibleOptionsError as e:
|
||||
display.error(to_text(e), wrap_text=False)
|
||||
sys.exit(5)
|
||||
|
||||
cli = None
|
||||
me = os.path.basename(sys.argv[0])
|
||||
|
||||
try:
|
||||
display = Display()
|
||||
display.debug("starting run")
|
||||
|
||||
sub = None
|
||||
target = me.split('-')
|
||||
if target[-1][0].isdigit():
|
||||
# Remove any version or python version info as downstreams
|
||||
# sometimes add that
|
||||
target = target[:-1]
|
||||
|
||||
if len(target) > 1:
|
||||
sub = target[1]
|
||||
myclass = "%sCLI" % sub.capitalize()
|
||||
elif target[0] == 'ansible':
|
||||
sub = 'adhoc'
|
||||
myclass = 'AdHocCLI'
|
||||
else:
|
||||
raise AnsibleError("Unknown Ansible alias: %s" % me)
|
||||
|
||||
try:
|
||||
mycli = getattr(__import__("ansible.cli.%s" % sub, fromlist=[myclass]), myclass)
|
||||
except ImportError as e:
|
||||
# ImportError members have changed in py3
|
||||
if 'msg' in dir(e):
|
||||
msg = e.msg
|
||||
else:
|
||||
msg = e.message
|
||||
if msg.endswith(' %s' % sub):
|
||||
raise AnsibleError("Ansible sub-program not implemented: %s" % me)
|
||||
else:
|
||||
raise
|
||||
|
||||
try:
|
||||
args = [to_text(a, errors='surrogate_or_strict') for a in sys.argv]
|
||||
except UnicodeError:
|
||||
display.error('Command line args are not in utf-8, unable to continue. Ansible currently only understands utf-8')
|
||||
display.display(u"The full traceback was:\n\n%s" % to_text(traceback.format_exc()))
|
||||
exit_code = 6
|
||||
else:
|
||||
cli = mycli(args)
|
||||
cli.parse()
|
||||
exit_code = cli.run()
|
||||
|
||||
except AnsibleOptionsError as e:
|
||||
cli.parser.print_help()
|
||||
display.error(to_text(e), wrap_text=False)
|
||||
exit_code = 5
|
||||
except AnsibleParserError as e:
|
||||
display.error(to_text(e), wrap_text=False)
|
||||
exit_code = 4
|
||||
# TQM takes care of these, but leaving comment to reserve the exit codes
|
||||
# except AnsibleHostUnreachable as e:
|
||||
# display.error(str(e))
|
||||
# exit_code = 3
|
||||
# except AnsibleHostFailed as e:
|
||||
# display.error(str(e))
|
||||
# exit_code = 2
|
||||
except AnsibleError as e:
|
||||
display.error(to_text(e), wrap_text=False)
|
||||
exit_code = 1
|
||||
except KeyboardInterrupt:
|
||||
display.error("User interrupted execution")
|
||||
exit_code = 99
|
||||
except Exception as e:
|
||||
if C.DEFAULT_DEBUG:
|
||||
# Show raw stacktraces in debug mode, It also allow pdb to
|
||||
# enter post mortem mode.
|
||||
raise
|
||||
have_cli_options = cli is not None and cli.options is not None
|
||||
display.error("Unexpected Exception, this is probably a bug: %s" % to_text(e), wrap_text=False)
|
||||
if not have_cli_options or have_cli_options and cli.options.verbosity > 2:
|
||||
log_only = False
|
||||
if hasattr(e, 'orig_exc'):
|
||||
display.vvv('\nexception type: %s' % to_text(type(e.orig_exc)))
|
||||
why = to_text(e.orig_exc)
|
||||
if to_text(e) != why:
|
||||
display.vvv('\noriginal msg: %s' % why)
|
||||
else:
|
||||
display.display("to see the full traceback, use -vvv")
|
||||
log_only = True
|
||||
display.display(u"the full traceback was:\n\n%s" % to_text(traceback.format_exc()), log_only=log_only)
|
||||
exit_code = 250
|
||||
finally:
|
||||
# Remove ansible tmpdir
|
||||
shutil.rmtree(C.DEFAULT_LOCAL_TMP, True)
|
||||
|
||||
sys.exit(exit_code)
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/config.py
|
||||
ansible
|
||||
286
bin/ansible-connection
Executable file
286
bin/ansible-connection
Executable file
@ -0,0 +1,286 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright: (c) 2017, Ansible Project
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
|
||||
__metaclass__ = type
|
||||
__requires__ = ['ansible']
|
||||
|
||||
try:
|
||||
import pkg_resources
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
import fcntl
|
||||
import os
|
||||
import signal
|
||||
import socket
|
||||
import sys
|
||||
import traceback
|
||||
import errno
|
||||
import json
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible.module_utils._text import to_bytes, to_native, to_text
|
||||
from ansible.module_utils.six import PY3
|
||||
from ansible.module_utils.six.moves import cPickle, StringIO
|
||||
from ansible.module_utils.connection import Connection, ConnectionError, send_data, recv_data
|
||||
from ansible.module_utils.service import fork_process
|
||||
from ansible.playbook.play_context import PlayContext
|
||||
from ansible.plugins.loader import connection_loader
|
||||
from ansible.utils.path import unfrackpath, makedirs_safe
|
||||
from ansible.utils.display import Display
|
||||
from ansible.utils.jsonrpc import JsonRpcServer
|
||||
|
||||
|
||||
class ConnectionProcess(object):
|
||||
'''
|
||||
The connection process wraps around a Connection object that manages
|
||||
the connection to a remote device that persists over the playbook
|
||||
'''
|
||||
def __init__(self, fd, play_context, socket_path, original_path, ansible_playbook_pid=None):
|
||||
self.play_context = play_context
|
||||
self.socket_path = socket_path
|
||||
self.original_path = original_path
|
||||
|
||||
self.fd = fd
|
||||
self.exception = None
|
||||
|
||||
self.srv = JsonRpcServer()
|
||||
self.sock = None
|
||||
|
||||
self.connection = None
|
||||
self._ansible_playbook_pid = ansible_playbook_pid
|
||||
|
||||
def start(self):
|
||||
try:
|
||||
messages = list()
|
||||
result = {}
|
||||
|
||||
messages.append('control socket path is %s' % self.socket_path)
|
||||
|
||||
# If this is a relative path (~ gets expanded later) then plug the
|
||||
# key's path on to the directory we originally came from, so we can
|
||||
# find it now that our cwd is /
|
||||
if self.play_context.private_key_file and self.play_context.private_key_file[0] not in '~/':
|
||||
self.play_context.private_key_file = os.path.join(self.original_path, self.play_context.private_key_file)
|
||||
self.connection = connection_loader.get(self.play_context.connection, self.play_context, '/dev/null',
|
||||
ansible_playbook_pid=self._ansible_playbook_pid)
|
||||
self.connection.set_options()
|
||||
self.connection._connect()
|
||||
self.connection._socket_path = self.socket_path
|
||||
self.srv.register(self.connection)
|
||||
messages.extend(sys.stdout.getvalue().splitlines())
|
||||
messages.append('connection to remote device started successfully')
|
||||
|
||||
self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
self.sock.bind(self.socket_path)
|
||||
self.sock.listen(1)
|
||||
messages.append('local domain socket listeners started successfully')
|
||||
except Exception as exc:
|
||||
result['error'] = to_text(exc)
|
||||
result['exception'] = traceback.format_exc()
|
||||
finally:
|
||||
result['messages'] = messages
|
||||
self.fd.write(json.dumps(result))
|
||||
self.fd.close()
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
while self.connection.connected:
|
||||
signal.signal(signal.SIGALRM, self.connect_timeout)
|
||||
signal.signal(signal.SIGTERM, self.handler)
|
||||
signal.alarm(C.PERSISTENT_CONNECT_TIMEOUT)
|
||||
|
||||
self.exception = None
|
||||
(s, addr) = self.sock.accept()
|
||||
signal.alarm(0)
|
||||
|
||||
signal.signal(signal.SIGALRM, self.command_timeout)
|
||||
while True:
|
||||
data = recv_data(s)
|
||||
if not data:
|
||||
break
|
||||
|
||||
signal.alarm(self.connection._play_context.timeout)
|
||||
resp = self.srv.handle_request(data)
|
||||
signal.alarm(0)
|
||||
|
||||
send_data(s, to_bytes(resp))
|
||||
|
||||
s.close()
|
||||
|
||||
except Exception as e:
|
||||
# socket.accept() will raise EINTR if the socket.close() is called
|
||||
if hasattr(e, 'errno'):
|
||||
if e.errno != errno.EINTR:
|
||||
self.exception = traceback.format_exc()
|
||||
else:
|
||||
self.exception = traceback.format_exc()
|
||||
|
||||
finally:
|
||||
# when done, close the connection properly and cleanup
|
||||
# the socket file so it can be recreated
|
||||
self.shutdown()
|
||||
|
||||
def connect_timeout(self, signum, frame):
|
||||
display.display('persistent connection idle timeout triggered, timeout value is %s secs' % C.PERSISTENT_CONNECT_TIMEOUT, log_only=True)
|
||||
self.shutdown()
|
||||
|
||||
def command_timeout(self, signum, frame):
|
||||
display.display('command timeout triggered, timeout value is %s secs' % self.play_context.timeout, log_only=True)
|
||||
self.shutdown()
|
||||
|
||||
def handler(self, signum, frame):
|
||||
display.display('signal handler called with signal %s' % signum, log_only=True)
|
||||
self.shutdown()
|
||||
|
||||
def shutdown(self):
|
||||
""" Shuts down the local domain socket
|
||||
"""
|
||||
if os.path.exists(self.socket_path):
|
||||
try:
|
||||
if self.sock:
|
||||
self.sock.close()
|
||||
if self.connection:
|
||||
self.connection.close()
|
||||
except:
|
||||
pass
|
||||
finally:
|
||||
if os.path.exists(self.socket_path):
|
||||
os.remove(self.socket_path)
|
||||
setattr(self.connection, '_socket_path', None)
|
||||
setattr(self.connection, '_connected', False)
|
||||
display.display('shutdown complete', log_only=True)
|
||||
|
||||
|
||||
def main():
|
||||
""" Called to initiate the connect to the remote device
|
||||
"""
|
||||
rc = 0
|
||||
result = {}
|
||||
messages = list()
|
||||
socket_path = None
|
||||
|
||||
# Need stdin as a byte stream
|
||||
if PY3:
|
||||
stdin = sys.stdin.buffer
|
||||
else:
|
||||
stdin = sys.stdin
|
||||
|
||||
# Note: update the below log capture code after Display.display() is refactored.
|
||||
saved_stdout = sys.stdout
|
||||
sys.stdout = StringIO()
|
||||
|
||||
try:
|
||||
# read the play context data via stdin, which means depickling it
|
||||
cur_line = stdin.readline()
|
||||
init_data = b''
|
||||
|
||||
while cur_line.strip() != b'#END_INIT#':
|
||||
if cur_line == b'':
|
||||
raise Exception("EOF found before init data was complete")
|
||||
init_data += cur_line
|
||||
cur_line = stdin.readline()
|
||||
|
||||
if PY3:
|
||||
pc_data = cPickle.loads(init_data, encoding='bytes')
|
||||
else:
|
||||
pc_data = cPickle.loads(init_data)
|
||||
|
||||
play_context = PlayContext()
|
||||
play_context.deserialize(pc_data)
|
||||
display.verbosity = play_context.verbosity
|
||||
|
||||
except Exception as e:
|
||||
rc = 1
|
||||
result.update({
|
||||
'error': to_text(e),
|
||||
'exception': traceback.format_exc()
|
||||
})
|
||||
|
||||
if rc == 0:
|
||||
ssh = connection_loader.get('ssh', class_only=True)
|
||||
ansible_playbook_pid = sys.argv[1]
|
||||
cp = ssh._create_control_path(play_context.remote_addr, play_context.port, play_context.remote_user, play_context.connection, ansible_playbook_pid)
|
||||
|
||||
# create the persistent connection dir if need be and create the paths
|
||||
# which we will be using later
|
||||
tmp_path = unfrackpath(C.PERSISTENT_CONTROL_PATH_DIR)
|
||||
makedirs_safe(tmp_path)
|
||||
|
||||
lock_path = unfrackpath("%s/.ansible_pc_lock" % tmp_path)
|
||||
socket_path = unfrackpath(cp % dict(directory=tmp_path))
|
||||
|
||||
# if the socket file doesn't exist, spin up the daemon process
|
||||
lock_fd = os.open(lock_path, os.O_RDWR | os.O_CREAT, 0o600)
|
||||
fcntl.lockf(lock_fd, fcntl.LOCK_EX)
|
||||
|
||||
if not os.path.exists(socket_path):
|
||||
messages.append('local domain socket does not exist, starting it')
|
||||
original_path = os.getcwd()
|
||||
r, w = os.pipe()
|
||||
pid = fork_process()
|
||||
|
||||
if pid == 0:
|
||||
try:
|
||||
os.close(r)
|
||||
wfd = os.fdopen(w, 'w')
|
||||
process = ConnectionProcess(wfd, play_context, socket_path, original_path, ansible_playbook_pid)
|
||||
process.start()
|
||||
except Exception:
|
||||
messages.append(traceback.format_exc())
|
||||
rc = 1
|
||||
|
||||
fcntl.lockf(lock_fd, fcntl.LOCK_UN)
|
||||
os.close(lock_fd)
|
||||
|
||||
if rc == 0:
|
||||
process.run()
|
||||
|
||||
sys.exit(rc)
|
||||
|
||||
else:
|
||||
os.close(w)
|
||||
rfd = os.fdopen(r, 'r')
|
||||
data = json.loads(rfd.read())
|
||||
messages.extend(data.pop('messages'))
|
||||
result.update(data)
|
||||
|
||||
else:
|
||||
messages.append('found existing local domain socket, using it!')
|
||||
conn = Connection(socket_path)
|
||||
pc_data = to_text(init_data)
|
||||
try:
|
||||
messages.extend(conn.update_play_context(pc_data))
|
||||
except Exception as exc:
|
||||
# Only network_cli has update_play context, so missing this is
|
||||
# not fatal e.g. netconf
|
||||
if isinstance(exc, ConnectionError) and getattr(exc, 'code', None) == -32601:
|
||||
pass
|
||||
else:
|
||||
result.update({
|
||||
'error': to_text(exc),
|
||||
'exception': traceback.format_exc()
|
||||
})
|
||||
|
||||
messages.append(sys.stdout.getvalue())
|
||||
result.update({
|
||||
'messages': messages,
|
||||
'socket_path': socket_path
|
||||
})
|
||||
|
||||
sys.stdout = saved_stdout
|
||||
if 'exception' in result:
|
||||
rc = 1
|
||||
sys.stderr.write(json.dumps(result))
|
||||
else:
|
||||
rc = 0
|
||||
sys.stdout.write(json.dumps(result))
|
||||
|
||||
sys.exit(rc)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
display = Display()
|
||||
main()
|
||||
@ -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 +0,0 @@
|
||||
../test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/vault.py
|
||||
ansible
|
||||
2341
changelogs/CHANGELOG-legacy.rst
Normal file
2341
changelogs/CHANGELOG-legacy.rst
Normal file
File diff suppressed because it is too large
Load Diff
577
changelogs/CHANGELOG-v2.0.rst
Normal file
577
changelogs/CHANGELOG-v2.0.rst
Normal file
@ -0,0 +1,577 @@
|
||||
=======================================================
|
||||
Ansible 2.0 "Over the Hills and Far Away" Release Notes
|
||||
=======================================================
|
||||
|
||||
2.0.2 "Over the Hills and Far Away"
|
||||
-----------------------------------
|
||||
|
||||
- Backport of the 2.1 feature to ensure per-item callbacks are sent as
|
||||
they occur, rather than all at once at the end of the task.
|
||||
- Fixed bugs related to the iteration of tasks when certain
|
||||
combinations of roles, blocks, and includes were used, especially
|
||||
when handling errors in rescue/always portions of blocks.
|
||||
- Fixed handling of redirects in our helper code, and ported the uri
|
||||
module to use this helper code. This removes the httplib dependency
|
||||
for this module while fixing some bugs related to redirects and SSL
|
||||
certs.
|
||||
- Fixed some bugs related to the incorrect creation of extra temp
|
||||
directories for uploading files, which were not cleaned up properly.
|
||||
- Improved error reporting in certain situations, to provide more
|
||||
information such as the playbook file/line.
|
||||
- Fixed a bug related to the variable precedence of role parameters,
|
||||
especially when a role may be used both as a dependency of a role and
|
||||
directly by itself within the same play.
|
||||
- Fixed some bugs in the 2.0 implementation of do/until.
|
||||
- Fixed some bugs related to run\_once:
|
||||
- Ensure that all hosts are marked as failed if a task marked as
|
||||
run\_once fails.
|
||||
- Show a warning when using the free strategy when a run\_once task is
|
||||
encountered, as there is no way for the free strategy to guarantee
|
||||
the task is not run more than once.
|
||||
- Fixed a bug where the assemble module was not honoring check mode in
|
||||
some situations.
|
||||
- Fixed a bug related to delegate\_to, where we were incorrectly using
|
||||
variables from the inventory host rather than the delegated-to host.
|
||||
- The 'package' meta-module now properly squashes items down to a
|
||||
single execution (as the apt/yum/other package modules do).
|
||||
- Fixed a bug related to the ansible-galaxy CLI command dealing with
|
||||
paged results from the Galaxy server.
|
||||
- Pipelining support is now available for the local and jail connection
|
||||
plugins, which is useful for users who do not wish to have temp
|
||||
files/directories created when running tasks with these connection
|
||||
types.
|
||||
- Improvements in support for additional shell types.
|
||||
- Improvements in the code which is used to calculate checksums for
|
||||
remote files.
|
||||
- Some speed ups and bug fixes related to the variable merging code.
|
||||
- Workaround bug in python subprocess on El Capitan that was making
|
||||
vault fail when attempting to encrypt a file
|
||||
- Fix lxc\_container module having predictable temp file names and
|
||||
setting file permissions on the temporary file too leniently on a
|
||||
temporary file that was executed as a script. Addresses CVE-2016-3096
|
||||
- Fix a bug in the uri module where setting headers via module params
|
||||
that start with ``HEADER_`` were causing a traceback.
|
||||
- Fix bug in the free strategy that was causing it to synchronize its
|
||||
workers after every task (making it a lot more like linear than it
|
||||
should have been).
|
||||
|
||||
2.0.1 "Over the Hills and Far Away"
|
||||
-----------------------------------
|
||||
|
||||
- Fixes a major compatibility break in the synchronize module shipped
|
||||
with 2.0.0.x. That version of synchronize ran sudo on the controller
|
||||
prior to running rsync. In 1.9.x and previous, sudo was run on the
|
||||
host that rsync connected to. 2.0.1 restores the 1.9.x behaviour.
|
||||
- Additionally, several other problems with where synchronize chose to
|
||||
run when combined with delegate\_to were fixed. In particular, if a
|
||||
playbook targetted localhost and then delegated\_to a remote host the
|
||||
prior behavior (in 1.9.x and 2.0.0.x) was to copy files between the
|
||||
src and destination directories on the delegated host. This has now
|
||||
been fixed to copy between localhost and the delegated host.
|
||||
- Fix a regression where synchronize was unable to deal with unicode
|
||||
paths.
|
||||
- Fix a regression where synchronize deals with inventory hosts that
|
||||
use localhost but with an alternate port.
|
||||
- Fixes a regression where the retry files feature was not implemented.
|
||||
- Fixes a regression where the any\_errors\_fatal option was
|
||||
implemented in 2.0 incorrectly, and also adds a feature where
|
||||
any\_errors\_fatal can be set at the block level.
|
||||
- Fix tracebacks when playbooks or ansible itself were located in
|
||||
directories with unicode characters.
|
||||
- Fix bug when sending unicode characters to an external pager for
|
||||
display.
|
||||
- Fix a bug with squashing loops for special modules (mostly package
|
||||
managers). The optimization was squashing when the loop did not apply
|
||||
to the selection of packages. This has now been fixed.
|
||||
- Temp files created when using vault are now "shredded" using the unix
|
||||
shred program which overwrites the file with random data.
|
||||
- Some fixes to cloudstack modules for case sensitivity
|
||||
- Fix non-newstyle modules (non-python modules and old-style modules)
|
||||
to disabled pipelining.
|
||||
- Fix fetch module failing even if fail\_on\_missing is set to False
|
||||
- Fix for cornercase when local connections, sudo, and raw were used
|
||||
together.
|
||||
- Fix dnf module to remove dependent packages when state=absent is
|
||||
specified. This was a feature of the 1.9.x version that was left out
|
||||
by mistake when the module was rewritten for 2.0.
|
||||
- Fix bugs with non-english locales in yum, git, and apt modules
|
||||
- Fix a bug with the dnf module where state=latest could only upgrade,
|
||||
not install.
|
||||
- Fix to make implicit fact gathering task correctly inherit settings
|
||||
from play, this might cause an error if settings environment on play
|
||||
depending on 'ansible\_env' which was previously ignored
|
||||
|
||||
2.0 "Over the Hills and Far Away" - Jan 12, 2016
|
||||
------------------------------------------------
|
||||
|
||||
Major Changes:
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
- Releases are now named after Led Zeppelin songs, 1.9 will be the last
|
||||
Van Halen named release.
|
||||
- The new block/rescue/always directives allow for making task blocks
|
||||
and exception-like semantics
|
||||
- New strategy plugins (e.g. ``free``) allow control over the flow of
|
||||
task execution per play. The default (``linear``) will be the same as
|
||||
before.
|
||||
- Improved error handling, with more detailed parser messages. General
|
||||
exception handling and display has been revamped.
|
||||
- Task includes are now evaluated during execution, allowing more
|
||||
dynamic includes and options. Play includes are unchanged both still
|
||||
use the ``include`` directive.
|
||||
- "with\_" loops can now be used with task includes since they are
|
||||
dynamic.
|
||||
- Callback, connection, cache and lookup plugin APIs have changed.
|
||||
Existing plugins might require modification to work with the new
|
||||
versions.
|
||||
- Callbacks are now shipped in the active directory and don't need to
|
||||
be copied, just whitelisted in ansible.cfg.
|
||||
- Many API changes. Those integrating directly with Ansible's API will
|
||||
encounter breaking changes, but the new API is much easier to use and
|
||||
test.
|
||||
- Settings are now more inheritable; what you set at play, block or
|
||||
role will be automatically inherited by the contained tasks. This
|
||||
allows for new features to automatically be settable at all levels,
|
||||
previously we had to manually code this.
|
||||
- Vars are now settable at play, block, role and task level with the
|
||||
``vars`` directive and scoped to the tasks contained.
|
||||
- Template code now retains types for bools and numbers instead of
|
||||
turning them into strings. If you need the old behaviour, quote the
|
||||
value and it will get passed around as a string
|
||||
- Empty variables and variables set to null in yaml will no longer be
|
||||
converted to empty strings. They will retain the value of ``None``.
|
||||
To go back to the old behaviour, you can override the
|
||||
``null_representation`` setting to an empty string in your config
|
||||
file or by setting the ``ANSIBLE_NULL_REPRESENTATION`` environment
|
||||
variable.
|
||||
- Added ``meta: refresh_inventory`` to force rereading the inventory in
|
||||
a play. This re-executes inventory scripts, but does not force them
|
||||
to ignore any cache they might use.
|
||||
- New delegate\_facts directive, a boolean that allows you to apply
|
||||
facts to the delegated host (true/yes) instead of the
|
||||
inventory\_hostname (no/false) which is the default and previous
|
||||
behaviour.
|
||||
- local connections now work with 'su' as a privilege escalation method
|
||||
- Ansible 2.0 has deprecated the "ssh" from ansible\_ssh\_user,
|
||||
ansible\_ssh\_host, and ansible\_ssh\_port to become ansible\_user,
|
||||
ansible\_host, and ansible\_port.
|
||||
- New ssh configuration variables (``ansible_ssh_common_args``,
|
||||
``ansible_ssh_extra_args``) can be used to configure a per-group or
|
||||
per-host ssh ProxyCommand or set any other ssh options.
|
||||
``ansible_ssh_extra_args`` is used to set options that are accepted
|
||||
only by ssh (not sftp or scp, which have their own analogous
|
||||
settings).
|
||||
- ansible-pull can now verify the code it runs when using git as a
|
||||
source repository, using git's code signing and verification
|
||||
features.
|
||||
- Backslashes used when specifying parameters in jinja2 expressions in
|
||||
YAML dicts sometimes needed to be escaped twice. This has been fixed
|
||||
so that escaping once works. Here's an example of how playbooks need
|
||||
to be modified:
|
||||
|
||||
.. code:: yaml
|
||||
|
||||
# Syntax in 1.9.x
|
||||
- debug:
|
||||
msg: "{{ 'test1_junk 1\\\\3' | regex_replace('(.*)_junk (.*)', '\\\\1 \\\\2') }}"
|
||||
# Syntax in 2.0.x
|
||||
- debug:
|
||||
msg: "{{ 'test1_junk 1\\3' | regex_replace('(.*)_junk (.*)', '\\1 \\2') }}"
|
||||
|
||||
# Output:
|
||||
"msg": "test1 1\\3"
|
||||
|
||||
- When a string with a trailing newline was specified in the playbook
|
||||
via yaml dict format, the trailing newline was stripped. When
|
||||
specified in key=value format the trailing newlines were kept. In v2,
|
||||
both methods of specifying the string will keep the trailing
|
||||
newlines. If you relied on the trailing newline being stripped you
|
||||
can change your playbook like this:
|
||||
|
||||
.. code:: yaml
|
||||
|
||||
# Syntax in 1.9.2
|
||||
vars:
|
||||
message: >
|
||||
Testing
|
||||
some things
|
||||
tasks:
|
||||
- debug:
|
||||
msg: "{{ message }}"
|
||||
|
||||
# Syntax in 2.0.x
|
||||
vars:
|
||||
old_message: >
|
||||
Testing
|
||||
some things
|
||||
message: "{{ old_messsage[:-1] }}"
|
||||
- debug:
|
||||
msg: "{{ message }}"
|
||||
# Output
|
||||
"msg": "Testing some things"
|
||||
|
||||
- When specifying complex args as a variable, the variable must use the
|
||||
full jinja2 variable syntax ('{{var\_name}}') - bare variable names
|
||||
there are no longer accepted. In fact, even specifying args with
|
||||
variables has been deprecated, and will not be allowed in future
|
||||
versions:
|
||||
|
||||
.. code:: yaml
|
||||
|
||||
---
|
||||
- hosts: localhost
|
||||
connection: local
|
||||
gather_facts: false
|
||||
vars:
|
||||
my_dirs:
|
||||
- { path: /tmp/3a, state: directory, mode: 0755 }
|
||||
- { path: /tmp/3b, state: directory, mode: 0700 }
|
||||
tasks:
|
||||
- file:
|
||||
args: "{{item}}"
|
||||
with_items: my_dirs
|
||||
|
||||
Plugins
|
||||
~~~~~~~
|
||||
|
||||
- Rewritten dnf module that should be faster and less prone to
|
||||
encountering bugs in cornercases
|
||||
- WinRM connection plugin passes all vars named ``ansible_winrm_*`` to
|
||||
the underlying pywinrm client. This allows, for instance,
|
||||
``ansible_winrm_server_cert_validation=ignore`` to be used with newer
|
||||
versions of pywinrm to disable certificate validation on Python
|
||||
2.7.9+.
|
||||
- WinRM connection plugin put\_file is significantly faster and no
|
||||
longer has file size limitations.
|
||||
|
||||
Deprecated Modules (new ones in parens):
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- ec2\_ami\_search (ec2\_ami\_find)
|
||||
- quantum\_network (os\_network)
|
||||
- glance\_image
|
||||
- nova\_compute (os\_server)
|
||||
- quantum\_floating\_ip (os\_floating\_ip)
|
||||
- quantum\_router (os\_router)
|
||||
- quantum\_router\_gateway (os\_router)
|
||||
- quantum\_router\_interface (os\_router)
|
||||
|
||||
New Modules:
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- amazon
|
||||
- ec2\_ami\_copy
|
||||
- ec2\_ami\_find
|
||||
- ec2\_elb\_facts
|
||||
- ec2\_eni
|
||||
- ec2\_eni\_facts
|
||||
- ec2\_remote\_facts
|
||||
- ec2\_vpc\_igw
|
||||
- ec2\_vpc\_net
|
||||
- ec2\_vpc\_net\_facts
|
||||
- ec2\_vpc\_route\_table
|
||||
- ec2\_vpc\_route\_table\_facts
|
||||
- ec2\_vpc\_subnet
|
||||
- ec2\_vpc\_subnet\_facts
|
||||
- ec2\_win\_password
|
||||
- ecs\_cluster
|
||||
- ecs\_task
|
||||
- ecs\_taskdefinition
|
||||
- elasticache\_subnet\_group\_facts
|
||||
- iam
|
||||
- iam\_cert
|
||||
- iam\_policy
|
||||
- route53\_facts
|
||||
- route53\_health\_check
|
||||
- route53\_zone
|
||||
- s3\_bucket
|
||||
- s3\_lifecycle
|
||||
- s3\_logging
|
||||
- sns\_topic
|
||||
- sqs\_queue
|
||||
- sts\_assume\_role
|
||||
- apk
|
||||
- bigip\_gtm\_wide\_ip
|
||||
- bundler
|
||||
- centurylink
|
||||
- clc\_aa\_policy
|
||||
- clc\_alert\_policy
|
||||
- clc\_blueprint\_package
|
||||
- clc\_firewall\_policy
|
||||
- clc\_group
|
||||
- clc\_loadbalancer
|
||||
- clc\_modify\_server
|
||||
- clc\_publicip
|
||||
- clc\_server
|
||||
- clc\_server\_snapshot
|
||||
- circonus\_annotation
|
||||
- consul
|
||||
- consul
|
||||
- consul\_acl
|
||||
- consul\_kv
|
||||
- consul\_session
|
||||
- cloudtrail
|
||||
- cloudstack
|
||||
- cs\_account
|
||||
- cs\_affinitygroup
|
||||
- cs\_domain
|
||||
- cs\_facts
|
||||
- cs\_firewall
|
||||
- cs\_iso
|
||||
- cs\_instance
|
||||
- cs\_instancegroup
|
||||
- cs\_ip\_address
|
||||
- cs\_loadbalancer\_rule
|
||||
- cs\_loadbalancer\_rule\_member
|
||||
- cs\_network
|
||||
- cs\_portforward
|
||||
- cs\_project
|
||||
- cs\_securitygroup
|
||||
- cs\_securitygroup\_rule
|
||||
- cs\_sshkeypair
|
||||
- cs\_staticnat
|
||||
- cs\_template
|
||||
- cs\_user
|
||||
- cs\_vmsnapshot
|
||||
- cronvar
|
||||
- datadog\_monitor
|
||||
- deploy\_helper
|
||||
- docker
|
||||
- docker\_login
|
||||
- dpkg\_selections
|
||||
- elasticsearch\_plugin
|
||||
- expect
|
||||
- find
|
||||
- google
|
||||
- gce\_tag
|
||||
- hall
|
||||
- ipify\_facts
|
||||
- iptables
|
||||
- libvirt
|
||||
- virt\_net
|
||||
- virt\_pool
|
||||
- maven\_artifact
|
||||
- openstack
|
||||
- os\_auth
|
||||
- os\_client\_config
|
||||
- os\_image
|
||||
- os\_image\_facts
|
||||
- os\_floating\_ip
|
||||
- os\_ironic
|
||||
- os\_ironic\_node
|
||||
- os\_keypair
|
||||
- os\_network
|
||||
- os\_network\_facts
|
||||
- os\_nova\_flavor
|
||||
- os\_object
|
||||
- os\_port
|
||||
- os\_project
|
||||
- os\_router
|
||||
- os\_security\_group
|
||||
- os\_security\_group\_rule
|
||||
- os\_server
|
||||
- os\_server\_actions
|
||||
- os\_server\_facts
|
||||
- os\_server\_volume
|
||||
- os\_subnet
|
||||
- os\_subnet\_facts
|
||||
- os\_user
|
||||
- os\_user\_group
|
||||
- os\_volume
|
||||
- openvswitch\_db
|
||||
- osx\_defaults
|
||||
- pagerduty\_alert
|
||||
- pam\_limits
|
||||
- pear
|
||||
- profitbricks
|
||||
- profitbricks
|
||||
- profitbricks\_datacenter
|
||||
- profitbricks\_nic
|
||||
- profitbricks\_snapshot
|
||||
- profitbricks\_volume
|
||||
- profitbricks\_volume\_attachments
|
||||
- proxmox
|
||||
- proxmox
|
||||
- proxmox\_template
|
||||
- puppet
|
||||
- pushover
|
||||
- pushbullet
|
||||
- rax
|
||||
- rax\_clb\_ssl
|
||||
- rax\_mon\_alarm
|
||||
- rax\_mon\_check
|
||||
- rax\_mon\_entity
|
||||
- rax\_mon\_notification
|
||||
- rax\_mon\_notification\_plan
|
||||
- rabbitmq
|
||||
- rabbitmq\_binding
|
||||
- rabbitmq\_exchange
|
||||
- rabbitmq\_queue
|
||||
- selinux\_permissive
|
||||
- sendgrid
|
||||
- sensu
|
||||
- sensu\_check
|
||||
- sensu\_subscription
|
||||
- seport
|
||||
- slackpkg
|
||||
- solaris\_zone
|
||||
- taiga\_issue
|
||||
- vertica
|
||||
- vertica\_configuration
|
||||
- vertica\_facts
|
||||
- vertica\_role
|
||||
- vertica\_schema
|
||||
- vertica\_user
|
||||
- vmware
|
||||
- vca\_fw
|
||||
- vca\_nat
|
||||
- vmware\_cluster
|
||||
- vmware\_datacenter
|
||||
- vmware\_dns\_config
|
||||
- vmware\_dvs\_host
|
||||
- vmware\_dvs\_portgroup
|
||||
- vmware\_dvswitch
|
||||
- vmware\_host
|
||||
- vmware\_migrate\_vmk
|
||||
- vmware\_portgroup
|
||||
- vmware\_target\_canonical\_facts
|
||||
- vmware\_vm\_facts
|
||||
- vmware\_vm\_vss\_dvs\_migrate
|
||||
- vmware\_vmkernel
|
||||
- vmware\_vmkernel\_ip\_config
|
||||
- vmware\_vsan\_cluster
|
||||
- vmware\_vswitch
|
||||
- vsphere\_copy
|
||||
- webfaction
|
||||
- webfaction\_app
|
||||
- webfaction\_db
|
||||
- webfaction\_domain
|
||||
- webfaction\_mailbox
|
||||
- webfaction\_site
|
||||
- windows
|
||||
- win\_acl
|
||||
- win\_dotnet\_ngen
|
||||
- win\_environment
|
||||
- win\_firewall\_rule
|
||||
- win\_iis\_virtualdirectory
|
||||
- win\_iis\_webapplication
|
||||
- win\_iis\_webapppool
|
||||
- win\_iis\_webbinding
|
||||
- win\_iis\_website
|
||||
- win\_lineinfile
|
||||
- win\_nssm
|
||||
- win\_package
|
||||
- win\_regedit
|
||||
- win\_scheduled\_task
|
||||
- win\_unzip
|
||||
- win\_updates
|
||||
- win\_webpicmd
|
||||
- xenserver\_facts
|
||||
- zabbbix
|
||||
- zabbix\_host
|
||||
- zabbix\_hostmacro
|
||||
- zabbix\_screen
|
||||
- znode
|
||||
|
||||
New Inventory scripts:
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- cloudstack
|
||||
- fleetctl
|
||||
- openvz
|
||||
- nagios\_ndo
|
||||
- nsot
|
||||
- proxmox
|
||||
- rudder
|
||||
- serf
|
||||
|
||||
New Lookups:
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- credstash
|
||||
- hashi\_vault
|
||||
- ini
|
||||
- shelvefile
|
||||
|
||||
New Filters:
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- combine
|
||||
|
||||
New Connection:
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
- docker: for talking to docker containers on the ansible controller
|
||||
machine without using ssh.
|
||||
|
||||
New Callbacks:
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
- logentries: plugin to send play data to logentries service
|
||||
- skippy: same as default but does not display skip messages
|
||||
|
||||
Minor changes:
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
- Many more tests. The new API makes things more testable and we took
|
||||
advantage of it.
|
||||
- big\_ip modules now support turning off ssl certificate validation
|
||||
(use only for self-signed certificates).
|
||||
- Consolidated code from modules using urllib2 to normalize features,
|
||||
TLS and SNI support.
|
||||
- synchronize module's dest\_port parameter now takes precedence over
|
||||
the ansible\_ssh\_port inventory setting.
|
||||
- Play output is now dynamically sized to terminal with a minimum of 80
|
||||
coluumns (old default).
|
||||
- vars\_prompt and pause are now skipped with a warning if the play is
|
||||
called noninteractively (i.e. pull from cron).
|
||||
- Support for OpenBSD's 'doas' privilege escalation method.
|
||||
- Most vault operations can now be done over multilple files.
|
||||
- ansible-vault encrypt/decrypt read from stdin if no other input file
|
||||
is given, and can write to a given ``--output file`` (including
|
||||
stdout, '-'). This lets you avoid ever writing sensitive plaintext to
|
||||
disk.
|
||||
- ansible-vault rekey accepts the --new-vault-password-file option.
|
||||
- ansible-vault now preserves file permissions on edit and rekey and
|
||||
defaults to restrictive permissions for other options.
|
||||
- Configuration items defined as paths (local only) now all support
|
||||
shell style interpolations.
|
||||
- Many fixes and new options added to modules, too many to list here.
|
||||
- Now you can see task file and line number when using verbosity of 3
|
||||
or above.
|
||||
- The ``[x-y]`` host range syntax is no longer supported. Note that
|
||||
``[0:1]`` matches two hosts, i.e. the range is inclusive of its
|
||||
endpoints.
|
||||
- We now recommend the use of ``pattern1,pattern2`` to combine host
|
||||
matching patterns.
|
||||
- The use of ':' as a separator conflicts with IPv6 addresses and host
|
||||
ranges. It will be deprecated in the future.
|
||||
- The undocumented use of ';' as a separator is now deprecated.
|
||||
- modules and callbacks have been extended to support no\_log to avoid
|
||||
data disclosure.
|
||||
- new managed\_syslog option has been added to control output to syslog
|
||||
on managed machines, no\_log supersedes this settings.
|
||||
- Lookup, vars and action plugin pathing has been normalized, all now
|
||||
follow the same sequence to find relative files.
|
||||
- We do not ignore the explicitly set login user for ssh when it
|
||||
matches the 'current user' anymore, this allows overriding
|
||||
.ssh/config when it is set explicitly. Leaving it unset will still
|
||||
use the same user and respect .ssh/config. This also means
|
||||
ansible\_ssh\_user can now return a None value.
|
||||
- environment variables passed to remote shells now default to
|
||||
'controller' settings, with fallback to en\_US.UTF8 which was the
|
||||
previous default.
|
||||
- add\_hosts is much stricter about host name and will prevent invalid
|
||||
names from being added.
|
||||
- ansible-pull now defaults to doing shallow checkouts with git, use
|
||||
``--full`` to return to previous behaviour.
|
||||
- random cows are more random
|
||||
- when: now gets the registered var after the first iteration, making
|
||||
it possible to break out of item loops
|
||||
- Handling of undefined variables has changed. In most places they will
|
||||
now raise an error instead of silently injecting an empty string. Use
|
||||
the default filter if you want to approximate the old behaviour:
|
||||
|
||||
::
|
||||
|
||||
- debug: msg="The error message was: {{error_code |default('') }}"
|
||||
383
changelogs/CHANGELOG-v2.1.rst
Normal file
383
changelogs/CHANGELOG-v2.1.rst
Normal file
@ -0,0 +1,383 @@
|
||||
=====================================================
|
||||
Ansible 2.1 "The Song Remains the Same" Release Notes
|
||||
=====================================================
|
||||
|
||||
2.1.4 "The Song Remains the Same" - 2017-01-16
|
||||
----------------------------------------------
|
||||
|
||||
- Security fix for CVE-2016-9587 - An attacker with control over a
|
||||
client system being managed by Ansible and the ability to send facts
|
||||
back to the Ansible server could use this flaw to execute arbitrary
|
||||
code on the Ansible server as the user and group Ansible is running
|
||||
as.
|
||||
- Fixed a bug with conditionals in loops, where undefined variables and
|
||||
other errors will defer raising the error until the conditional has
|
||||
been evaluated.
|
||||
- Added a version check for jinja2-2.9, which does not fully work with
|
||||
Ansible currently.
|
||||
|
||||
2.1.3 "The Song Remains the Same" - 2016-11-04
|
||||
----------------------------------------------
|
||||
|
||||
- Security fix for CVE-2016-8628 - Command injection by compromised
|
||||
server via fact variables. In some situations, facts returned by
|
||||
modules could overwrite connection-based facts or some other special
|
||||
variables, leading to injected commands running on the Ansible
|
||||
controller as the user running Ansible (or via escalated
|
||||
permissions).
|
||||
- Security fix for CVE-2016-8614 - apt\_key module not properly
|
||||
validating keys in some situations.
|
||||
|
||||
Minor Changes:
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
- The subversion module from core now marks its password parameter as
|
||||
no\_log so the password is obscured when logging.
|
||||
- The postgresql\_lang and postgresql\_ext modules from extras now mark
|
||||
login\_password as no\_log so the password is obscured when logging.
|
||||
- Fixed several bugs related to locating files relative to
|
||||
role/playbook directories.
|
||||
- Fixed a bug in the way hosts were tested for failed states, resulting
|
||||
in incorrectly skipped block sessions.
|
||||
- Fixed a bug in the way our custom JSON encoder is used for the
|
||||
``to_json*`` filters.
|
||||
- Fixed some bugs related to the use of non-ascii characters in become
|
||||
passwords.
|
||||
- Fixed a bug with Azure modules which may be using the latest rc6
|
||||
library.
|
||||
- Backported some docker\_common fixes.
|
||||
|
||||
2.1.2 "The Song Remains the Same" - 2016-09-29
|
||||
----------------------------------------------
|
||||
|
||||
Minor Changes
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
- Fixed a bug related to creation of retry files (#17456)
|
||||
- Fixed a bug in the way include params are used when an include task
|
||||
is dynamic (#17064)
|
||||
- Fixed a bug related to including blocks in an include task (#15963)
|
||||
- Fixed a bug related to the use of hostvars internally when creating
|
||||
the connection plugin. This prevents things like variables using
|
||||
lookups from being evaluated unnecessarily (#17024)
|
||||
- Fixed a bug where using a variable containing a list for the
|
||||
``hosts`` of a play resulted in an list of lists (#16583)
|
||||
- Fixed a bug where integer values would cause an error if a module
|
||||
param was of type ``float`` (no issue)
|
||||
- Fixed a bug with net\_template failing if src was not specified
|
||||
(#17726)
|
||||
- Fixed a bug in "ansible-galaxy import" (#17417)
|
||||
- Fixed a bug in which INI files incorrectly treated a hosts range as a
|
||||
section header (#15331)
|
||||
- Fixed a bug in which the max\_fail\_percentage calculation
|
||||
erroneously caused a series of plays to stop executing (#15954)
|
||||
- Fixed a bug in which the task names were not properly templated
|
||||
(#16295)
|
||||
- Fixed a bug causing "squashed" loops (ie. yum, apt) to incorrectly
|
||||
report results (ansible-modules-core#4214)
|
||||
- Fixed several bugs related to includes:
|
||||
- when including statically, make sure that all parents were also
|
||||
included statically (issue #16990)
|
||||
- properly resolve nested static include paths
|
||||
- print a message when a file is statically included
|
||||
- Fixed a bug in which module params expected to be float types were
|
||||
not converted from integers (only strings) (#17325)
|
||||
- Fixed a bug introduced by static includes in 2.1, which prevented
|
||||
notifications from going to the "top level" handler name.
|
||||
- Fixed a bug where a group\_vars or host\_vars directory in the
|
||||
current working directory would be used (and would take precedence)
|
||||
over those in the inventory and/or playbook directory.
|
||||
- Fixed a bug which could occur when the result of an async task did
|
||||
not parse as valid JSON.
|
||||
- (re)-allowed the use of ansible\_python\_interpreter lines with more
|
||||
than one argument.
|
||||
- Fixed several bugs related to the creation of the implicit localhost
|
||||
in inventory.
|
||||
- Fixed a bug related to an unspecified number of retries when using
|
||||
until.
|
||||
- Fixed a race-condition bug when creating temp directories before the
|
||||
worker process is forked.
|
||||
- Fix a bug with async's poll keyword not making use of
|
||||
ansible\_python\_interpreter to run (and thus breaking when
|
||||
/usr/bin/python is not present on the remote machine.)
|
||||
- Fix a bug where hosts that started with a range in inventory were
|
||||
being treated as an invalid section header.
|
||||
|
||||
Module fixes: \* Fixed a bug where the temporary CA files created by the
|
||||
module helper code were not being deleted properly in some situations
|
||||
(#17073) \* Fixed many bugs in the unarchive module \* Fixes for module
|
||||
ec2: - Fixed a bug related to source\_dest\_check when used with non-vpc
|
||||
instances (core#3243) - Fixed a bug in ec2 where instances were not
|
||||
powering of when referenced via tags only (core#4765) - Fixed a bug
|
||||
where instances with multiple interfaces were not powering up/down
|
||||
correctly (core#3234) \* Fixes for module get\_url: - Fixed a bug in
|
||||
get\_url module to force a download if there is a checksum mismatch
|
||||
regardless of the last modified time (core#4262) - Fixed a bug in
|
||||
get\_url module to properly process FTP results (core#3661 and
|
||||
core#4601) \* Fixed a bug in win\_user related to users with disabled
|
||||
accounts/expired passwords (core#4369) \* ini\_file: - Fixed a bug where
|
||||
option lines are now inserted before blank lines. - Fixed a bug where
|
||||
leading whitespace prevented matches on options. \* Fixed a bug in
|
||||
iam\_cert when dup\_ok is used as a string. \* Fixed a bug in
|
||||
postgresql\_db related to the changed logic when state=absent. \* Fixed
|
||||
a bug where single\_transaction and quick were not passed into db\_dump
|
||||
for the mysql\_db module. \* Fixed a bug where the fetch module was not
|
||||
idempotent when retrieving the target of a symlink. \* Many minor fixes
|
||||
for bugs in extras modules.
|
||||
|
||||
Deprecations
|
||||
~~~~~~~~~~~~
|
||||
|
||||
- Deprecated the use of ``_fixup_perms``. Use ``_fixup_perms2``
|
||||
instead. This change only impacts custom action plugins using
|
||||
``_fixup_perms``.
|
||||
|
||||
Incompatible Changes
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Use of ``_fixup_perms`` with ``recursive=True`` (the default) is no
|
||||
longer supported. Custom action plugins using ``_fixup_perms`` will
|
||||
require changes unless they already use ``recursive=False``. Use
|
||||
``_fixup_perms2`` if support for previous releases is not required.
|
||||
Otherwise use ``_fixup_perms`` with ``recursive=False``.
|
||||
|
||||
2.1 "The Song Remains the Same"
|
||||
-------------------------------
|
||||
|
||||
Major Changes:
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
- Official support for the networking modules, originally available in
|
||||
2.0 as a tech preview.
|
||||
- Refactored and expanded support for Docker with new modules and many
|
||||
improvements to existing modules, as well as a new Kubernetes module.
|
||||
- Added new modules for Azure (see below for the full list)
|
||||
- Added the ability to specify includes as "static" (either through a
|
||||
configuration option or on a per-include basis). When includes are
|
||||
static, they are loaded at compile time and cannot contain dynamic
|
||||
features like loops.
|
||||
- Added a new strategy ``debug``, which allows per-task debugging of
|
||||
playbooks, for more details see
|
||||
https://docs.ansible.com/ansible/playbooks\_debugger.html
|
||||
- Added a new option for tasks: ``loop_control``. This currently only
|
||||
supports one option - ``loop_var``, which allows a different loop
|
||||
variable from ``item`` to be used.
|
||||
- Added the ability to filter facts returned by the fact gathering
|
||||
setup step using the ``gather_subset`` option on the play or in the
|
||||
ansible.cfg configuration file. See
|
||||
http://docs.ansible.com/ansible/intro\_configuration.html#gathering
|
||||
for details on the format of the option.
|
||||
- Added the ability to send per-item callbacks, rather than a batch
|
||||
update (this more closely resembles the behavior of Ansible 1.x).
|
||||
- Added facility for modules to send back 'diff' for display when
|
||||
ansible is called with --diff, updated several modules to return this
|
||||
info
|
||||
- Added ansible-console tool, a REPL shell that allows running adhoc
|
||||
tasks against a chosen inventory (based on
|
||||
https://github.com/dominis/ansible-shell)
|
||||
- Added two new variables, which are set when the ``rescue`` portion of
|
||||
a ``block`` is started:
|
||||
- ``ansible_failed_task``, which contains the serialized version of the
|
||||
failed task.
|
||||
- ``ansible_failed_result``, which contains the result of the failed
|
||||
task.
|
||||
- New meta action, ``meta: clear_host_errors`` which will clear any
|
||||
hosts which were marked as failed (but not unreachable hosts).
|
||||
- New meta action, ``meta: clear_facts`` which will remove existing
|
||||
facts for the current host from current memory and facts cache.
|
||||
- copy module can now transparently use a vaulted file as source, if
|
||||
vault passwords were provided it will decrypt and copy on the fly.
|
||||
- The way new-style python modules (which include all of the
|
||||
non-windows modules shipped with Ansible) are assembled before
|
||||
execution on the remote machine has been changed. The new way stays
|
||||
closer to how python imports modules which will make it easier to
|
||||
write modules which rely heavily on shared code.
|
||||
- Reduce the situations in which a module can end up as world readable.
|
||||
For details, see:
|
||||
https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user
|
||||
- Re-implemented the retry file feature, which had been left out of 2.0
|
||||
(fix was backported to 2.0.1 originally).
|
||||
- Improved winrm argument validation and feature sniffing (for upcoming
|
||||
pywinrm NTLM support).
|
||||
- Improved winrm error handling: basic parsing of stderr from CLIXML
|
||||
stream.
|
||||
|
||||
New Modules
|
||||
^^^^^^^^^^^
|
||||
|
||||
- aws
|
||||
- ec2\_vol\_facts
|
||||
- ec2\_vpc\_dhcp\_options
|
||||
- ec2\_vpc\_net\_facts
|
||||
- ec2\_snapshot\_facts
|
||||
- azure:
|
||||
- azure\_rm\_deployment
|
||||
- azure\_rm\_networkinterface
|
||||
- azure\_rm\_networkinterface\_facts (TECH PREVIEW)
|
||||
- azure\_rm\_publicipaddress
|
||||
- azure\_rm\_publicipaddress\_facts (TECH PREVIEW)
|
||||
- azure\_rm\_resourcegroup
|
||||
- azure\_rm\_resourcegroup\_facts (TECH PREVIEW)
|
||||
- azure\_rm\_securitygroup
|
||||
- azure\_rm\_securitygroup\_facts (TECH PREVIEW)
|
||||
- azure\_rm\_storageaccount
|
||||
- azure\_rm\_storageaccount\_facts (TECH PREVIEW)
|
||||
- azure\_rm\_storageblob
|
||||
- azure\_rm\_subnet
|
||||
- azure\_rm\_virtualmachine
|
||||
- azure\_rm\_virtualmachineimage\_facts (TECH PREVIEW)
|
||||
- azure\_rm\_virtualnetwork
|
||||
- azure\_rm\_virtualnetwork\_facts (TECH PREVIEW)
|
||||
- cloudflare\_dns
|
||||
- cloudstack
|
||||
- cs\_cluster
|
||||
- cs\_configuration
|
||||
- cs\_instance\_facts
|
||||
- cs\_pod
|
||||
- cs\_resourcelimit
|
||||
- cs\_volume
|
||||
- cs\_zone
|
||||
- cs\_zone\_facts
|
||||
- clustering
|
||||
- kubernetes
|
||||
- cumulus
|
||||
- cl\_bond
|
||||
- cl\_bridge
|
||||
- cl\_img\_install
|
||||
- cl\_interface
|
||||
- cl\_interface\_policy
|
||||
- cl\_license
|
||||
- cl\_ports
|
||||
- eos
|
||||
- eos\_command
|
||||
- eos\_config
|
||||
- eos\_eapi
|
||||
- eos\_template
|
||||
- gitlab
|
||||
- gitlab\_group
|
||||
- gitlab\_project
|
||||
- gitlab\_user
|
||||
- ios
|
||||
- ios\_command
|
||||
- ios\_config
|
||||
- ios\_template
|
||||
- iosxr
|
||||
- iosxr\_command
|
||||
- iosxr\_config
|
||||
- iosxr\_template
|
||||
- junos
|
||||
- junos\_command
|
||||
- junos\_config
|
||||
- junos\_facts
|
||||
- junos\_netconf
|
||||
- junos\_package
|
||||
- junos\_template
|
||||
- make
|
||||
- mongodb\_parameter
|
||||
- nxos
|
||||
- nxos\_command
|
||||
- nxos\_config
|
||||
- nxos\_facts
|
||||
- nxos\_feature
|
||||
- nxos\_interface
|
||||
- nxos\_ip\_interface
|
||||
- nxos\_nxapi
|
||||
- nxos\_ping
|
||||
- nxos\_switchport
|
||||
- nxos\_template
|
||||
- nxos\_vlan
|
||||
- nxos\_vrf
|
||||
- nxos\_vrf\_interface
|
||||
- nxos\_vrrp
|
||||
- openstack
|
||||
- os\_flavor\_facts
|
||||
- os\_group
|
||||
- os\_ironic\_inspect
|
||||
- os\_keystone\_domain\_facts
|
||||
- os\_keystone\_role
|
||||
- os\_port\_facts
|
||||
- os\_project\_facts
|
||||
- os\_user\_facts
|
||||
- os\_user\_role
|
||||
- openswitch
|
||||
- ops\_command
|
||||
- ops\_config
|
||||
- ops\_facts
|
||||
- ops\_template
|
||||
- softlayer
|
||||
- sl\_vm
|
||||
- vmware
|
||||
- vmware\_maintenancemode
|
||||
- vmware\_vm\_shell
|
||||
- windows
|
||||
- win\_acl\_inheritance
|
||||
- win\_owner
|
||||
- win\_reboot
|
||||
- win\_regmerge
|
||||
- win\_timezone
|
||||
- yum\_repository
|
||||
|
||||
New Strategies
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
- debug
|
||||
|
||||
New Filters
|
||||
^^^^^^^^^^^
|
||||
|
||||
- extract
|
||||
- ip4\_hex
|
||||
- regex\_search
|
||||
- regex\_findall
|
||||
|
||||
New Callbacks
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
- actionable (only shows changed and failed)
|
||||
- slack
|
||||
- json
|
||||
|
||||
New Tests
|
||||
^^^^^^^^^
|
||||
|
||||
- issubset
|
||||
- issuperset
|
||||
|
||||
New Inventory scripts:
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- brook
|
||||
- rackhd
|
||||
- azure\_rm
|
||||
|
||||
Minor Changes:
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
- Added support for pipelining mode to more connection plugins, which
|
||||
helps prevent module data from being written to disk.
|
||||
- Added a new '!unsafe' YAML decorator, which can be used in playbooks
|
||||
to ensure a string is not templated. For example:
|
||||
``foo: !unsafe "Don't template {{me}}"``.
|
||||
- Callbacks now have access to the options with which the CLI was
|
||||
called
|
||||
- Debug now has verbosity option to control when to display by matching
|
||||
number of -v in command line
|
||||
- Modules now get verbosity, diff and other flags as passed to ansible
|
||||
- Mount facts now also show 'network mounts' that use the pattern
|
||||
``<host>:/<mount>``
|
||||
- Plugins are now sorted before loading. This means, for instance, if
|
||||
you want two custom callback plugins to run in a certain order you
|
||||
can name them 10-first-callback.py and 20-second-callback.py.
|
||||
- Added (alpha) Centirfy's dzdo as another become meethod (privilege
|
||||
escalation)
|
||||
|
||||
Deprecations:
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
- Deprecated the use of "bare" variables in loops (ie.
|
||||
``with_items: foo``, where ``foo`` is a variable). The full jinja2
|
||||
variable syntax of ``{{foo}}`` should always be used instead. This
|
||||
warning will be removed completely in 2.3, after which time it will
|
||||
be an error.
|
||||
- play\_hosts magic variable, use ansible\_play\_batch or
|
||||
ansible\_play\_hosts instead.
|
||||
@ -1,402 +0,0 @@
|
||||
==================================================
|
||||
ansible-core 2.18 "Fool in the Rain" Release Notes
|
||||
==================================================
|
||||
|
||||
.. contents:: Topics
|
||||
|
||||
v2.18.6
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2025-05-19
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Use the ``-t`` option to set the stop timeout when stopping a container. This avoids use of the ``--time`` option which was deprecated in Docker v28.0.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Ansible will now ensure predictable permissions on remote artifacts, until now it only ensured executable and relied on system masks for the rest.
|
||||
- ansible-doc - fix indentation for first line of descriptions of suboptions and sub-return values (https://github.com/ansible/ansible/pull/84690).
|
||||
- ansible-doc - fix line wrapping for first line of description of options and return values (https://github.com/ansible/ansible/pull/84690).
|
||||
- dnf5 - avoid generating excessive transaction entries in the dnf5 history (https://github.com/ansible/ansible/issues/85046)
|
||||
- dnf5 - when ``bugfix`` and/or ``security`` is specified, skip packages that do not have any such updates, even for new versions of libdnf5 where this functionality changed and it is considered failure
|
||||
- script - Fix up become support for Windows scripts when become was set through host variables and not on the task directly - https://github.com/ansible/ansible/issues/85076
|
||||
|
||||
v2.18.5
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2025-04-21
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- build - Pin ``wheel`` in ``pyproject.toml`` to ensure compatibility with supported ``setuptools`` versions.
|
||||
- dnf5 - Handle forwarded exceptions from dnf5-5.2.13 where a generic ``RuntimeError`` was previously raised
|
||||
- find - skip ENOENT error code while recursively enumerating files. find module will now be tolerant to race conditions that remove files or directories from the target it is currently inspecting. (https://github.com/ansible/ansible/issues/84873).
|
||||
- gather_facts action, will now add setup when 'smart' appears with other modules in the FACTS_MODULES setting (#84750).
|
||||
- uri - Form location correctly when the server returns a relative redirect (https://github.com/ansible/ansible/issues/84540)
|
||||
|
||||
v2.18.4
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2025-03-25
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Windows - add support for running on system where WDAC is in audit mode with ``Dynamic Code Security`` enabled.
|
||||
- dnf5 - fix ``is_installed`` check for packages that are not installed but listed as provided by an installed package (https://github.com/ansible/ansible/issues/84578)
|
||||
- dnf5 - libdnf5 - use ``conf.pkg_gpgcheck`` instead of deprecated ``conf.gpgcheck`` which is used only as a fallback
|
||||
- facts - gather pagesize and calculate respective values depending upon architecture (https://github.com/ansible/ansible/issues/84773).
|
||||
- module respawn - limit to supported Python versions
|
||||
|
||||
v2.18.3
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2025-02-24
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Automatically retry HTTP GET/PUT/DELETE requests on exceptions.
|
||||
- ansible-test - Use Python's ``urllib`` instead of ``curl`` for HTTP requests.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- include_vars - fixed erroneous warning if an unreserved variable name contains a single character that matches a reserved variable. (https://github.com/ansible/ansible/issues/84623)
|
||||
- linear strategy - fix executing ``end_role`` meta tasks for each host, instead of handling these as implicit run_once tasks (https://github.com/ansible/ansible/issues/84660).
|
||||
|
||||
v2.18.2
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2025-01-27
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Ansible will now also warn when reserved keywords are set via a module (set_fact, include_vars, etc).
|
||||
- Ansible.Basic - Fix ``required_if`` check when the option value to check is unset or set to null.
|
||||
- Use consistent multiprocessing context for action write locks
|
||||
- ansible-test - Fix up coverage reporting to properly translate the temporary path of integration test modules to the expected static test module path.
|
||||
- ansible-vault will now correctly handle `--prompt`, previously it would issue an error about stdin if no 2nd argument was passed
|
||||
- copy action now prevents user from setting internal options.
|
||||
- gather_facts action now defaults to `ansible.legacy.setup` if `smart` was set, no network OS was found and no other alias for `setup` was present.
|
||||
- gather_facts action will now issues errors and warnings as appropriate if a network OS is detected but no facts modules are defined for it.
|
||||
- ssh - Improve the logic for parsing CLIXML data in stderr when working with Windows host. This fixes issues when the raw stderr contains invalid UTF-8 byte sequences and improves embedded CLIXML sequences.
|
||||
- ssh - connection options were incorrectly templated during ``reset_connection`` tasks (https://github.com/ansible/ansible/pull/84238).
|
||||
|
||||
v2.18.1
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-12-02
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - When detection of the current container network fails, a warning is now issued and execution continues. This simplifies usage in cases where the current container cannot be inspected, such as when running in GitHub Codespaces.
|
||||
|
||||
Security Fixes
|
||||
--------------
|
||||
|
||||
- Templating will not prefer AnsibleUnsafe when a variable is referenced via hostvars - CVE-2024-11079
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix returning 'unreachable' for the overall task result. This prevents false positives when a looped task has unignored unreachable items (https://github.com/ansible/ansible/issues/84019).
|
||||
- ansible-test - Fix traceback that occurs after an interactive command fails.
|
||||
- dnf5 - fix installing a package using ``state=latest`` when a binary of the same name as the package is already installed (https://github.com/ansible/ansible/issues/84259)
|
||||
- dnf5 - matching on a binary can be achieved only by specifying a full path (https://github.com/ansible/ansible/issues/84334)
|
||||
- runas become - Fix up become logic to still get the SYSTEM token with the most privileges when running as SYSTEM.
|
||||
|
||||
v2.18.0
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-11-04
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- Add ``gid_min``, ``gid_max`` to the group plugin to overwrite the defaults provided by the ``/etc/login.defs`` file (https://github.com/ansible/ansible/pull/81770).
|
||||
- Add ``python3.13`` to the default ``INTERPRETER_PYTHON_FALLBACK`` list.
|
||||
- Add ``uid_min``, ``uid_max`` to the user plugin to overwrite the defaults provided by the ``/etc/login.defs`` file (https://github.com/ansible/ansible/pull/81770).
|
||||
- Add a new meta task ``end_role`` (https://github.com/ansible/ansible/issues/22286)
|
||||
- Add a new mount_facts module to support gathering information about mounts that are excluded by default fact gathering.
|
||||
- Introducing COLOR_INCLUDED parameter. This can set a specific color for "included" events.
|
||||
- Removed the shell ``environment`` config entry as this is already covered by the play/task directives documentation and the value itself is not used in the shell plugins. This should remove any confusion around how people set the environment for a task.
|
||||
- Suppress cryptography deprecation warnings for Blowfish and TripleDES when the ``paramiko`` Python module is installed.
|
||||
- The minimum supported Python version on targets is now Python 3.8.
|
||||
- ``ansible-galaxy collection publish`` - add configuration options for the initial poll interval and the exponential when checking the import status of a collection, since the default is relatively slow.
|
||||
- ansible-config has new 'validate' option to find mispelled/forgein configurations in ini file or environment variables.
|
||||
- ansible-doc - show examples in role entrypoint argument specs (https://github.com/ansible/ansible/pull/82671).
|
||||
- ansible-galaxy - Handle authentication errors and token expiration
|
||||
- ansible-test - Add Ubuntu 24.04 remote.
|
||||
- ansible-test - Add support for Python 3.13.
|
||||
- ansible-test - An ``ansible_core.egg-info`` directory is no longer generated when running tests.
|
||||
- ansible-test - Connection options can be set for ansible-test managed remote Windows instances.
|
||||
- ansible-test - Default to Python 3.13 in the ``base`` and ``default`` containers.
|
||||
- ansible-test - Disable the ``deprecated-`` prefixed ``pylint`` rules as their results vary by Python version.
|
||||
- ansible-test - Improve container runtime probe error handling. When unexpected probe output is encountered, an error with more useful debugging information is provided.
|
||||
- ansible-test - Improve the error message shown when an unknown ``--remote`` or ``--docker`` option is given.
|
||||
- ansible-test - Remove Python 2.7 compatibility imports.
|
||||
- ansible-test - Removed the ``vyos/1.1.8`` network remote as it is no longer functional.
|
||||
- ansible-test - Replace Alpine 3.19 container and remote with Alpine 3.20.
|
||||
- ansible-test - Replace Fedora 39 container and remote with Fedora 40.
|
||||
- ansible-test - Replace FreeBSD 14.0 remote with FreeBSD 14.1.
|
||||
- ansible-test - Replace RHEL 9.3 remote with RHEL 9.4.
|
||||
- ansible-test - Replace Ubuntu 20.04 container with Ubuntu 24.04 container.
|
||||
- ansible-test - The ``empty-init`` sanity test no longer applies to ``module_utils`` packages.
|
||||
- ansible-test - Update ``ansible-test-utility-container`` to version 3.1.0.
|
||||
- ansible-test - Update ``base`` and ``default`` containers to omit Python 3.7.
|
||||
- ansible-test - Update ``coverage`` to version 7.6.1.
|
||||
- ansible-test - Update ``http-test-container`` to version 3.0.0.
|
||||
- ansible-test - Update ``nios-test-container`` to version 5.0.0.
|
||||
- ansible-test - Update ``pylint`` sanity test to use version 3.3.1.
|
||||
- ansible-test - Update ``pypi-test-container`` to version 3.2.0.
|
||||
- ansible-test - Update the ``base`` and ``default`` containers.
|
||||
- ansible-test - Updated the frozen requirements for all sanity tests.
|
||||
- ansible-test - Upgrade ``pip`` used in ansible-test managed virtual environments from version 24.0 to 24.2.
|
||||
- ansible-test - Virtual environments created by ansible-test no longer include the ``wheel`` or ``setuptools`` packages.
|
||||
- ansible-test - update HTTP test container to 3.2.0 (https://github.com/ansible/ansible/pull/83469).
|
||||
- ansible.log now also shows log severity field
|
||||
- distribution.py - Added SL-Micro in Suse OS Family. (https://github.com/ansible/ansible/pull/83541)
|
||||
- dnf - minor internal changes in how the errors from the dnf API are handled; rely solely on the exceptions rather than inspecting text embedded in them
|
||||
- dnf - remove legacy code for unsupported dnf versions
|
||||
- dnf5 - implement ``enable_plugin`` and ``disable_plugin`` options
|
||||
- fact gathering - Gather /proc/sysinfo facts on s390 Linux on Z
|
||||
- facts - add systemd version and features
|
||||
- find - change the datatype of ``elements`` to ``path`` in option ``paths`` (https://github.com/ansible/ansible/pull/83575).
|
||||
- ini lookup - add new ``interpolation`` option (https://github.com/ansible/ansible/issues/83755)
|
||||
- isidentifier - remove unwanted Python 2 specific code.
|
||||
- loop_control - add a break_when option to to break out of a task loop early based on Jinja2 expressions (https://github.com/ansible/ansible/issues/83442).
|
||||
- package_facts module now supports using aliases for supported package managers, for example managers=yum or managers=dnf will resolve to using the underlying rpm.
|
||||
- plugins, deprecations and warnings concerning configuration are now displayed to the user, technical issue that prevented 'de-duplication' have been resolved.
|
||||
- psrp - Remove connection plugin extras vars lookup. This should have no affect on existing users as all options have been documented.
|
||||
- remove extraneous selinux import (https://github.com/ansible/ansible/issues/83657).
|
||||
- replace random with secrets library.
|
||||
- rpm_key - allow validation of gpg key with a subkey fingerprint
|
||||
- rpm_key - enable gpg validation that requires presence of multiple fingerprints
|
||||
- service_mgr - add support for dinit service manager (https://github.com/ansible/ansible/pull/83489).
|
||||
- task timeout now returns timedout key with frame/code that was in execution when the timeout is triggered.
|
||||
- timedout test for checking if a task result represents a 'timed out' task.
|
||||
- unarchive - Remove Python 2.7 compatibility imports.
|
||||
- validate-modules sanity test - detect if names of an option (option name + aliases) do not match between argument spec and documentation (https://github.com/ansible/ansible/issues/83598, https://github.com/ansible/ansible/pull/83599).
|
||||
- validate-modules sanity test - reject option/aliases names that are identical up to casing but belong to different options (https://github.com/ansible/ansible/pull/83530).
|
||||
- vaulted_file test filter added, to test if the provided path is an 'Ansible vaulted' file
|
||||
- yum_repository - add ``excludepkgs`` alias to the ``exclude`` option.
|
||||
|
||||
Breaking Changes / Porting Guide
|
||||
--------------------------------
|
||||
|
||||
- Stopped wrapping all commands sent over SSH on a Windows target with a ``powershell.exe`` executable. This results in one less process being started on each command for Windows to improve efficiency, simplify the code, and make ``raw`` an actual raw command run with the default shell configured on the Windows sshd settings. This should have no affect on most tasks except for ``raw`` which now is not guaranteed to always be running in a PowerShell shell and from having the console output codepage set to UTF-8. To avoid this issue either swap to using ``ansible.windows.win_command``, ``ansible.windows.win_shell``, ``ansible.windows.win_powershell`` or manually wrap the raw command with the shell commands needed to set the output console encoding.
|
||||
- persistent connection plugins - The ``ANSIBLE_CONNECTION_PATH`` config option no longer has any effect.
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- Deprecate ``ansible.module_utils.basic.AnsibleModule.safe_eval`` and ``ansible.module_utils.common.safe_eval`` as they are no longer used.
|
||||
- persistent connection plugins - The ``ANSIBLE_CONNECTION_PATH`` config option no longer has any effect, and will be removed in a future release.
|
||||
- yum_repository - deprecate ``async`` option as it has been removed in RHEL 8 and will be removed in ansible-core 2.22.
|
||||
- yum_repository - the following options are deprecated: ``deltarpm_metadata_percentage``, ``gpgcakey``, ``http_caching``, ``keepalive``, ``metadata_expire_filter``, ``mirrorlist_expire``, ``protect``, ``ssl_check_cert_permissions``, ``ui_repoid_vars`` as they have no effect for dnf as an underlying package manager. The options will be removed in ansible-core 2.22.
|
||||
|
||||
Removed Features (previously deprecated)
|
||||
----------------------------------------
|
||||
|
||||
- Play - removed deprecated ``ROLE_CACHE`` property in favor of ``role_cache``.
|
||||
- Remove deprecated `VariableManager._get_delegated_vars` method (https://github.com/ansible/ansible/issues/82950)
|
||||
- Removed Python 3.10 as a supported version on the controller. Python 3.11 or newer is required.
|
||||
- Removed support for setting the ``vars`` keyword to lists of dictionaries. It is now required to be a single dictionary.
|
||||
- loader - remove deprecated non-inclusive words (https://github.com/ansible/ansible/issues/82947).
|
||||
- paramiko_ssh - removed deprecated ssh_args from the paramiko_ssh connection plugin (https://github.com/ansible/ansible/issues/82939).
|
||||
- paramiko_ssh - removed deprecated ssh_common_args from the paramiko_ssh connection plugin (https://github.com/ansible/ansible/issues/82940).
|
||||
- paramiko_ssh - removed deprecated ssh_extra_args from the paramiko_ssh connection plugin (https://github.com/ansible/ansible/issues/82941).
|
||||
- play_context - remove deprecated PlayContext.verbosity property (https://github.com/ansible/ansible/issues/82945).
|
||||
- utils/listify - remove deprecated 'loader' argument from listify_lookup_plugin_terms API (https://github.com/ansible/ansible/issues/82949).
|
||||
|
||||
Security Fixes
|
||||
--------------
|
||||
|
||||
- include_vars action - Ensure that result masking is correctly requested when vault-encrypted files are read. (CVE-2024-8775)
|
||||
- task result processing - Ensure that action-sourced result masking (``_ansible_no_log=True``) is preserved. (CVE-2024-8775)
|
||||
- user action won't allow ssh-keygen, chown and chmod to run on existing ssh public key file, avoiding traversal on existing symlinks (CVE-2024-9902).
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- -> runas become - Generate new token for the SYSTEM token to use for become. This should result in the full SYSTEM token being used and problems starting the process that fails with ``The process creation has been blocked``.
|
||||
- Add a version ceiling constraint for pypsrp to avoid potential breaking changes in the 1.0.0 release.
|
||||
- Add descriptions for ``ansible-galaxy install --help` and ``ansible-galaxy role|collection install --help``.
|
||||
- Avoid truncating floats when casting into int, as it can lead to truncation and unexpected results. 0.99999 will be 0, not 1.
|
||||
- COLOR_SKIP will not alter "included" events color display anymore.
|
||||
- Callbacks now correctly get the resolved connection plugin name as the connection used.
|
||||
- Darwin - add unit tests for Darwin hardware fact gathering.
|
||||
- Errors now preserve stacked error messages even when YAML is involved.
|
||||
- Fix ``SemanticVersion.parse()`` to store the version string so that ``__repr__`` reports it instead of ``None`` (https://github.com/ansible/ansible/pull/83831).
|
||||
- Fix a traceback when an environment variable contains certain special characters (https://github.com/ansible/ansible/issues/83498)
|
||||
- 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 an issue where registered variable was not available for templating in ``loop_control.label`` on skipped looped tasks (https://github.com/ansible/ansible/issues/83619)
|
||||
- Fix disabling SSL verification when installing collections and roles from git repositories. If ``--ignore-certs`` isn't provided, the value for the ``GALAXY_IGNORE_CERTS`` configuration option will be used (https://github.com/ansible/ansible/issues/83326).
|
||||
- Fix for ``meta`` tasks breaking host/fork affinity with ``host_pinned`` strategy (https://github.com/ansible/ansible/issues/83294)
|
||||
- Fix handlers not being executed in lockstep using the linear strategy in some cases (https://github.com/ansible/ansible/issues/82307)
|
||||
- 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).
|
||||
- Fix using the current task's directory for looking up relative paths within roles (https://github.com/ansible/ansible/issues/82695).
|
||||
- Improve performance on large inventories by reducing the number of implicit meta tasks.
|
||||
- Remove deprecated config options DEFAULT_FACT_PATH, DEFAULT_GATHER_SUBSET, and DEFAULT_GATHER_TIMEOUT in favor of setting ``fact_path``, ``gather_subset`` and ``gather_timeout`` as ``module_defaults`` for ``ansible.builtin.setup``.
|
||||
These will apply to both the ``gather_facts`` play keyword, and any ``ansible.builtin.setup`` tasks.
|
||||
To configure these options only for the ``gather_facts`` keyword, set these options as play keywords also.
|
||||
- Set LANGUAGE environment variable is set to a non-English locale (https://github.com/ansible/ansible/issues/83608).
|
||||
- Use the requested error message in the ansible.module_utils.facts.timeout timeout function instead of hardcoding one.
|
||||
- ``ansible-galaxy install --help`` - Fix the usage text and document that the requirements file passed to ``-r`` can include collections and roles.
|
||||
- ``ansible-galaxy role install`` - update the default timeout to download archive URLs from 20 seconds to 60 (https://github.com/ansible/ansible/issues/83521).
|
||||
- ``end_host`` - fix incorrect return code when executing ``end_host`` in the ``rescue`` section (https://github.com/ansible/ansible/issues/83447)
|
||||
- ``package``/``dnf`` action plugins - provide the reason behind the failure to gather the ``ansible_pkg_mgr`` fact to identify the package backend
|
||||
- addressed issue of trailing text been ignored, non-ASCII characters are parsed, enhance white space handling and fixed overly permissive issue of human_to_bytes filter(https://github.com/ansible/ansible/issues/82075)
|
||||
- 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-doc - handle no_fail condition for role.
|
||||
- ansible-doc - make colors configurable.
|
||||
- ansible-galaxy collection install - remove old installation info when installing collections (https://github.com/ansible/ansible/issues/83182).
|
||||
- ansible-galaxy role install - fix symlinks (https://github.com/ansible/ansible/issues/82702, https://github.com/ansible/ansible/issues/81965).
|
||||
- ansible-test - Enable the ``sys.unraisablehook`` work-around for the ``pylint`` sanity test on Python 3.11. Previously the work-around was only enabled for Python 3.12 and later. However, the same issue has been discovered on Python 3.11.
|
||||
- ansible-test - The ``pylint`` sanity test now includes the controller/target context of files when grouping them. This allows the ``--py-version`` option to be passed to ``pylint`` to indicate the minimum supported Python version for each test context, preventing ``pylint`` from defaulting to the Python version used to invoke the test.
|
||||
- ansible-test action-plugin-docs - Fix to check for sidecar documentation for action plugins
|
||||
- ansible_managed restored it's 'templatability' by ensuring the possible injection routes are cut off earlier in the process.
|
||||
- apt - report changed=True when some packages are being removed (https://github.com/ansible/ansible/issues/46314).
|
||||
- apt_* - add more info messages raised while updating apt cache (https://github.com/ansible/ansible/issues/77941).
|
||||
- assemble - update argument_spec with 'decrypt' option which is required by action plugin (https://github.com/ansible/ansible/issues/80840).
|
||||
- atomic_move - fix using the setgid bit on the parent directory when creating files (https://github.com/ansible/ansible/issues/46742, https://github.com/ansible/ansible/issues/67177).
|
||||
- config, restored the ability to set module compression via a variable
|
||||
- connection plugins using the 'extras' option feature would need variables to match the plugin's loaded name, sometimes requiring fqcn, which is not the same as the documented/declared/expected variables. Now we fall back to the 'basename' of the fqcn, but plugin authors can still set the expected value directly.
|
||||
- copy - mtime/atime not updated. Fix now update mtime/atime(https://github.com/ansible/ansible/issues/83013)
|
||||
- csvfile lookup - give an error when no search term is provided using modern config syntax (https://github.com/ansible/ansible/issues/83689).
|
||||
- debconf - fix normalization of value representation for boolean vtypes in new packages (https://github.com/ansible/ansible/issues/83594)
|
||||
- debconf - set empty password values (https://github.com/ansible/ansible/issues/83214).
|
||||
- delay keyword is now a float, matching the underlying 'time' API and user expectations.
|
||||
- display - warn user about empty log filepath (https://github.com/ansible/ansible/issues/79959).
|
||||
- display now does a better job of mapping warnings/errors to the proper log severity when using ansible.log. We still use color as a fallback mapping (now prioritiezed by severity) but mostly rely on it beind directly set by warnning/errors calls.
|
||||
- distro package - update the distro package version from 1.8.0 to 1.9.0 (https://github.com/ansible/ansible/issues/82935)
|
||||
- dnf - Ensure that we are handling DownloadError properly in the dnf module
|
||||
- dnf - Substitute variables in DNF cache path (https://github.com/ansible/ansible/pull/80094).
|
||||
- dnf - fix an issue where two packages of the same ``evr`` but different arch failed to install (https://github.com/ansible/ansible/issues/83406)
|
||||
- dnf - honor installroot for ``cachedir``, ``logdir`` and ``persistdir``
|
||||
- dnf - perform variable substitutions in ``logdir`` and ``persistdir``
|
||||
- dnf, dnf5 - fix for installing a set of packages by specifying them using a wildcard character (https://github.com/ansible/ansible/issues/83373)
|
||||
- dnf5 - fix traceback when ``enable_plugins``/``disable_plugins`` is used on ``python3-libdnf5`` versions that do not support this functionality
|
||||
- dnf5 - re-introduce the ``state: installed`` alias to ``state: present`` (https://github.com/ansible/ansible/issues/83960)
|
||||
- dnf5 - replace removed API calls
|
||||
- ensure we have logger before we log when we have increased verbosity.
|
||||
- facts - `support_discard` now returns `0` if either `discard_granularity` or `discard_max_hw_bytes` is zero; otherwise it returns the value of `discard_granularity`, as before (https://github.com/ansible/ansible/pull/83480).
|
||||
- facts - add a generic detection for VMware in product name.
|
||||
- facts - add facts about x86_64 flags to detect microarchitecture (https://github.com/ansible/ansible/issues/83331).
|
||||
- facts - skip if distribution file path is directory, instead of raising error (https://github.com/ansible/ansible/issues/84006).
|
||||
- fetch - add error message when using ``dest`` with a trailing slash that becomes a local directory - https://github.com/ansible/ansible/issues/82878
|
||||
- file - retrieve the link's full path when hard linking a soft link with follow (https://github.com/ansible/ansible/issues/33911).
|
||||
- fixed the issue of creating user directory using tilde(~) always reported "changed".(https://github.com/ansible/ansible/issues/82490)
|
||||
- fixed unit test test_borken_cowsay to address mock not been properly applied when existing unix system already have cowsay installed.
|
||||
- freebsd - refactor dmidecode fact gathering code for simplicity.
|
||||
- freebsd - update disk and slices regex for fact gathering (https://github.com/ansible/ansible/pull/82081).
|
||||
- get_url - Verify checksum using tmpsrc, not dest (https://github.com/ansible/ansible/pull/64092)
|
||||
- git - check if git version is available or not before using it for comparison (https://github.com/ansible/ansible/issues/72321).
|
||||
- include_tasks - Display location when attempting to load a task list where ``include_*`` did not specify any value - https://github.com/ansible/ansible/issues/83874
|
||||
- known_hosts - the returned module invocation now accurately reflects the module arguments.
|
||||
- linear strategy now provides a properly templated task name to the v2_runner_on_started callback event.
|
||||
- linear strategy: fix handlers included via ``include_tasks`` handler to be executed in lockstep (https://github.com/ansible/ansible/issues/83019)
|
||||
- linux - remove extraneous get_bin_path API call.
|
||||
- local - handle error while parsing values in ini files (https://github.com/ansible/ansible/issues/82717).
|
||||
- lookup - Fixed examples of csv lookup plugin (https://github.com/ansible/ansible/issues/83031).
|
||||
- module_defaults - do not display action/module deprecation warnings when using an action_group that contains a deprecated plugin (https://github.com/ansible/ansible/issues/83490).
|
||||
- module_utils atomic_move (used by most file based modules), now correctly handles permission copy and setting mtime correctly across all paths
|
||||
- package_facts - apk fix when cache is empty (https://github.com/ansible/ansible/issues/83126).
|
||||
- package_facts - no longer fails silently when the selected package manager is unable to list packages.
|
||||
- package_facts - returns the correct warning when package listing fails.
|
||||
- persistent connection plugins - The correct Ansible persistent connection helper is now always used. Previously, the wrong script could be used, depending on the value of the ``PATH`` environment variable. As a result, users were sometimes required to set ``ANSIBLE_CONNECTION_PATH`` to use the correct script.
|
||||
- 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.
|
||||
- powershell - Improve CLIXML decoding to decode all control characters and unicode characters that are encoded as surrogate pairs.
|
||||
- psrp - Fix bug when attempting to fetch a file path that contains special glob characters like ``[]``
|
||||
- replace - Updated before/after example (https://github.com/ansible/ansible/issues/83390).
|
||||
- runtime-metadata sanity test - do not crash on deprecations if ``galaxy.yml`` contains an empty ``version`` field (https://github.com/ansible/ansible/pull/83831).
|
||||
- service - fix order of CLI arguments on FreeBSD (https://github.com/ansible/ansible/pull/81377).
|
||||
- service_facts - don't crash if OpenBSD rcctl variable contains '=' character (https://github.com/ansible/ansible/issues/83457)
|
||||
- service_facts will now detect failed services more accurately across systemd implementations.
|
||||
- setup module (fact gathering), added fallbcak code path to handle mount fact gathering in linux when threading is not available
|
||||
- setup/gather_facts will skip missing ``sysctl`` instead of being a fatal error (https://github.com/ansible/ansible/pull/81297).
|
||||
- shell plugin - properly quote all needed components of shell commands (https://github.com/ansible/ansible/issues/82535)
|
||||
- ssh - Fix bug when attempting to fetch a file path with characters that should be quoted when using the ``piped`` transfer method
|
||||
- support the countme option when using yum_repository
|
||||
- systemd - extend systemctl is-enabled check to handle "enabled-runtime" (https://github.com/ansible/ansible/pull/77754).
|
||||
- systemd facts - handle AttributeError raised while gathering facts on non-systemd hosts.
|
||||
- systemd_service - handle mask operation failure (https://github.com/ansible/ansible/issues/81649).
|
||||
- templating hostvars under native jinja will not cause serialization errors anymore.
|
||||
- the raw arguments error now just displays the short names of modules instead of every possible variation
|
||||
- unarchive - Better handling of files with an invalid timestamp in zip file (https://github.com/ansible/ansible/issues/81092).
|
||||
- unarchive - trigger change when size and content differ when other properties are unchanged (https://github.com/ansible/ansible/pull/83454).
|
||||
- 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 - deprecate 'yes' and 'no' value for 'follow_redirects' parameter.
|
||||
- user action will now require O(force) to overwrite the public part of an ssh key when generating ssh keys, as was already the case for the private part.
|
||||
- user module now avoids changing ownership of files symlinked in provided home dir skeleton
|
||||
- vault - handle vault password file value when it is directory (https://github.com/ansible/ansible/issues/42960).
|
||||
- vault.is_encrypted_file is now optimized to be called in runtime and not for being called in tests
|
||||
- vault_encrypted test documentation, name and examples have been fixed, other parts were clarified
|
||||
- winrm - Add retry after exceeding commands per user quota that can occur in loops and action plugins running multiple commands.
|
||||
|
||||
Known Issues
|
||||
------------
|
||||
|
||||
- ansible-test - When using ansible-test containers with Podman on a Ubuntu 24.04 host, ansible-test must be run as a non-root user to avoid permission issues caused by AppArmor.
|
||||
- ansible-test - When using the Fedora 40 container with Podman on a Ubuntu 24.04 host, the ``unix-chkpwd`` AppArmor profile must be disabled on the host to allow SSH connections to the container.
|
||||
|
||||
New Plugins
|
||||
-----------
|
||||
|
||||
Test
|
||||
~~~~
|
||||
|
||||
- timedout - did the task time out
|
||||
- vaulted_file - Is this file an encrypted vault
|
||||
|
||||
New Modules
|
||||
-----------
|
||||
|
||||
Lib
|
||||
~~~
|
||||
|
||||
ansible.modules
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
- mount_facts - Retrieve mount information.
|
||||
427
changelogs/CHANGELOG-v2.2.rst
Normal file
427
changelogs/CHANGELOG-v2.2.rst
Normal file
@ -0,0 +1,427 @@
|
||||
==================================================
|
||||
Ansible 2.2 "The Battle of Evermore" Release Notes
|
||||
==================================================
|
||||
|
||||
2.2.1 "The Battle of Evermore" - 2017-01-16
|
||||
-------------------------------------------
|
||||
|
||||
Major Changes
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
- Security fix for CVE-2016-9587 - An attacker with control over a
|
||||
client system being managed by Ansible and the ability to send facts
|
||||
back to the Ansible server could use this flaw to execute arbitrary
|
||||
code on the Ansible server as the user and group Ansible is running
|
||||
as.
|
||||
|
||||
Minor Changes
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
- Fixes a bug where undefined variables in with\_\* loops would cause a
|
||||
task failure even if the when condition would cause the task to be
|
||||
skipped.
|
||||
- Fixed a bug related to roles where in certain situations a role may
|
||||
be run more than once despite not allowing duplicates.
|
||||
- Fixed some additional bugs related to atomic\_move for modules.
|
||||
- Fixes multiple bugs related to field/attribute inheritance in nested
|
||||
blocks and includes, as well as task iteration logic during failures.
|
||||
- Fixed pip installing packages into virtualenvs using the system pip
|
||||
instead of the virtualenv pip.
|
||||
- Fixed dnf on systems with dnf-2.0.x (some changes in the API).
|
||||
- Fixed traceback with dnf install of groups.
|
||||
- Fixes a bug in which include\_vars was not working with failed\_when.
|
||||
- Fix for include\_vars only loading files with .yml, .yaml, and .json
|
||||
extensions. This was only supposed to apply to loading a directory of
|
||||
vars files.
|
||||
- Fixes several bugs related to properly incrementing the failed count
|
||||
in the host statistics.
|
||||
- Fixes a bug with listening handlers which did not specify a ``name``
|
||||
field.
|
||||
- Fixes a bug with the ``play_hosts`` internal variable, so that it
|
||||
properly reflects the current list of hosts.
|
||||
- Fixes a bug related to the v2\_playbook\_on\_start callback method
|
||||
and legacy (v1) plugins.
|
||||
- Fixes an openssh related process exit race condition, related to the
|
||||
fact that connections using ControlPersist do not close stderr.
|
||||
- Improvements and fixes to OpenBSD fact gathering.
|
||||
- Updated ``make deb`` to use pbuilder. Use ``make local_deb`` for the
|
||||
previous non-pbuilder build.
|
||||
- Fixed Windows async to avoid blocking due to handle inheritance.
|
||||
- Fixed bugs in the mount module on older Linux kernels and BSDs
|
||||
- Various minor fixes for Python 3
|
||||
- Inserted some checks for jinja2-2.9, which can cause some issues with
|
||||
Ansible currently.
|
||||
|
||||
2.2 "The Battle of Evermore" - 2016-11-01
|
||||
-----------------------------------------
|
||||
|
||||
Major Changes:
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
- Added the ``listen`` feature for modules. This feature allows tasks
|
||||
to more easily notify multiple handlers, as well as making it easier
|
||||
for handlers from decoupled roles to be notified.
|
||||
- Major performance improvements.
|
||||
- Added support for binary modules
|
||||
- Added the ability to specify serial batches as a list
|
||||
(``serial: [1, 5, 10]``), which allows for so-called "canary" actions
|
||||
in one play.
|
||||
- Fixed 'local type' plugins and actions to have a more predictable
|
||||
relative path. Fixes a regression of 1.9 (PR #16805). Existing users
|
||||
of 2.x will need to adjust related tasks.
|
||||
- ``meta`` tasks can now use conditionals.
|
||||
- ``raw`` now returns ``changed: true`` to be consistent with
|
||||
shell/command/script modules. Add ``changed_when: false`` to ``raw``
|
||||
tasks to restore the pre-2.2 behavior if necessary.
|
||||
- New privilege escalation become method ``ksu``
|
||||
- Windows ``async:`` support for long-running or background tasks.
|
||||
- Windows ``environment:`` support for setting module environment vars
|
||||
in play/task.
|
||||
- Added a new ``meta`` option: ``end_play``, which can be used to skip
|
||||
to the end of a play.
|
||||
- roles can now be included in the middle of a task list via the new
|
||||
``include_role`` module, this also allows for making the role import
|
||||
'loopable' and/or conditional.
|
||||
- The service module has been changed to use system specific modules if
|
||||
they exist and fall back to the old service module if they cannot be
|
||||
found or detected.
|
||||
- Add ability to specify what ssh client binary to use on the
|
||||
controller. This can be configured via ssh\_executable in the ansible
|
||||
config file or by setting ansible\_ssh\_executable as an inventory
|
||||
variable if different ones are needed for different hosts.
|
||||
- Windows:
|
||||
- several facts were modified or renamed for consistency with their
|
||||
Unix counterparts, and many new facts were added. If your playbooks
|
||||
rely on any of the following keys, please ensure they are using the
|
||||
correct key names and/or values:
|
||||
|
||||
- ansible\_date\_time.date (changed to use yyyy-mm-dd format instead
|
||||
of default system-locale format)
|
||||
- ansible\_date\_time.iso8601 (changed to UTC instead of local time)
|
||||
- ansible\_distribution (now uses OS caption string, e.g.:
|
||||
"Microsoft Windows Server 2012 R2 Standard", version is still
|
||||
available on ansible\_distribution\_version)
|
||||
- ansible\_totalmem (renamed to ansible\_memtotal\_mb, units changed
|
||||
to MB instead of bytes)
|
||||
|
||||
- ``async:`` support for long-running or background tasks.
|
||||
- ``environment:`` support for setting module environment vars in
|
||||
play/task.
|
||||
- Tech Preview: Work has been done to get Ansible running under
|
||||
Python3. This work is not complete enough to depend upon in
|
||||
production environments but it is enough to begin testing it.
|
||||
- Most of the controller side should now work. Users should be able to
|
||||
run python3 /usr/bin/ansible and python3 /usr/bin/ansible-playbook
|
||||
and have core features of ansible work.
|
||||
- A few of the most essential modules have been audited and are known
|
||||
to work. Others work out of the box.
|
||||
- We are using unit and integration tests to help us port code and not
|
||||
regress later. Even if you are not familiar with python you can still
|
||||
help by contributing integration tests (just ansible roles) that
|
||||
exercise more of the code to make sure it continues to run on both
|
||||
Python2 and Python3.
|
||||
- scp\_if\_ssh now supports True, False and "smart". "smart" is the
|
||||
default and will retry failed sftp transfers with scp.
|
||||
- Network:
|
||||
- Refactored all network modules to remove duplicate code and take
|
||||
advantage of Ansiballz implementation
|
||||
- All functionality from \*\_template network modules have been
|
||||
combined into \*\_config module
|
||||
- Network \*\_command modules not longer allow configuration mode
|
||||
statements
|
||||
|
||||
New Modules
|
||||
^^^^^^^^^^^
|
||||
|
||||
- apache2\_mod\_proxy
|
||||
- asa
|
||||
- asa\_acl
|
||||
- asa\_command
|
||||
- asa\_config
|
||||
- atomic
|
||||
- atomic\_host
|
||||
- atomic\_image
|
||||
- aws
|
||||
- cloudformation\_facts
|
||||
- ec2\_asg\_facts
|
||||
- ec2\_customer\_gateway
|
||||
- ec2\_lc\_find
|
||||
- ec2\_vpc\_dhcp\_options\_facts
|
||||
- ec2\_vpc\_nacl
|
||||
- ec2\_vpc\_nacl\_facts
|
||||
- ec2\_vpc\_nat\_gateway
|
||||
- ec2\_vpc\_peer
|
||||
- ec2\_vpc\_vgw
|
||||
- efs
|
||||
- efs\_facts
|
||||
- execute\_lambda
|
||||
- iam\_mfa\_device\_facts
|
||||
- iam\_server\_certificate\_facts
|
||||
- kinesis\_stream
|
||||
- lambda
|
||||
- lambda\_alias
|
||||
- lambda\_event
|
||||
- lambda\_facts
|
||||
- redshift
|
||||
- redshift\_subnet\_group
|
||||
- s3\_website
|
||||
- sts\_session\_token
|
||||
- cloudstack
|
||||
- cs\_router
|
||||
- cs\_snapshot\_policy
|
||||
- dellos6
|
||||
- dellos6\_command
|
||||
- dellos6\_config
|
||||
- dellos6\_facts
|
||||
- dellos9
|
||||
- dellos9\_command
|
||||
- dellos9\_config
|
||||
- dellos9\_facts
|
||||
- dellos10
|
||||
- dellos10\_command
|
||||
- dellos10\_config
|
||||
- dellos10\_facts
|
||||
- digital\_ocean\_block\_storage
|
||||
- docker
|
||||
- docker\_network
|
||||
- eos
|
||||
- eos\_facts
|
||||
- exoscale:
|
||||
- exo\_dns\_domain
|
||||
- exo\_dns\_record
|
||||
- f5:
|
||||
- bigip\_device\_dns
|
||||
- bigip\_device\_ntp
|
||||
- bigip\_device\_sshd
|
||||
- bigip\_gtm\_datacenter
|
||||
- bigip\_gtm\_virtual\_server
|
||||
- bigip\_irule
|
||||
- bigip\_routedomain
|
||||
- bigip\_selfip
|
||||
- bigip\_ssl\_certificate
|
||||
- bigip\_sys\_db
|
||||
- bigip\_vlan
|
||||
- github
|
||||
- github\_key
|
||||
- github\_release
|
||||
- google
|
||||
- gcdns\_record
|
||||
- gcdns\_zone
|
||||
- gce\_mig
|
||||
- honeybadger\_deployment
|
||||
- illumos
|
||||
- dladm\_etherstub
|
||||
- dladm\_vnic
|
||||
- flowadm
|
||||
- ipadm\_if
|
||||
- ipadm\_prop
|
||||
- ipmi
|
||||
- ipmi\_boot
|
||||
- ipmi\_power
|
||||
- ios
|
||||
- ios\_facts
|
||||
- iosxr
|
||||
- iosxr\_facts
|
||||
- include\_role
|
||||
- jenkins
|
||||
- jenkins\_job
|
||||
- jenkins\_plugin
|
||||
- kibana\_plugin
|
||||
- letsencrypt
|
||||
- logicmonitor
|
||||
- logicmonitor\_facts
|
||||
- lxd
|
||||
- lxd\_profile
|
||||
- lxd\_container
|
||||
- netapp
|
||||
- netapp\_e\_amg
|
||||
- netapp\_e\_amg\_role
|
||||
- netapp\_e\_amg\_sync
|
||||
- netapp\_e\_auth
|
||||
- netapp\_e\_facts
|
||||
- netapp\_e\_flashcache
|
||||
- netapp\_e\_hostgroup
|
||||
- netapp\_e\_host
|
||||
- netapp\_e\_lun\_mapping
|
||||
- netapp\_e\_snapshot\_group
|
||||
- netapp\_e\_snapshot\_images
|
||||
- netapp\_e\_snapshot\_volume
|
||||
- netapp\_e\_storage\_system
|
||||
- netapp\_e\_storagepool
|
||||
- netapp\_e\_volume
|
||||
- netapp\_e\_volume\_copy
|
||||
- netconf\_config
|
||||
- netvisor
|
||||
- pn\_cluster
|
||||
- pn\_ospfarea
|
||||
- pn\_ospf
|
||||
- pn\_show
|
||||
- pn\_trunk
|
||||
- pn\_vlag
|
||||
- pn\_vlan
|
||||
- pn\_vrouterbgp
|
||||
- pn\_vrouterif
|
||||
- pn\_vrouterlbif
|
||||
- pn\_vrouter
|
||||
- nxos
|
||||
- nxos\_aaa\_server\_host
|
||||
- nxos\_aaa\_server
|
||||
- nxos\_acl\_interface
|
||||
- nxos\_acl
|
||||
- nxos\_bgp\_af
|
||||
- nxos\_bgp\_neighbor\_af
|
||||
- nxos\_bgp\_neighbor
|
||||
- nxos\_bgp
|
||||
- nxos\_evpn\_global
|
||||
- nxos\_evpn\_vni
|
||||
- nxos\_file\_copy
|
||||
- nxos\_gir\_profile\_management
|
||||
- nxos\_gir
|
||||
- nxos\_hsrp
|
||||
- nxos\_igmp\_interface
|
||||
- nxos\_igmp
|
||||
- nxos\_igmp\_snooping
|
||||
- nxos\_install\_os
|
||||
- nxos\_interface\_ospf
|
||||
- nxos\_mtu
|
||||
- nxos\_ntp\_auth
|
||||
- nxos\_ntp\_options
|
||||
- nxos\_ntp
|
||||
- nxos\_ospf
|
||||
- nxos\_ospf\_vrf
|
||||
- nxos\_overlay\_global
|
||||
- nxos\_pim\_interface
|
||||
- nxos\_pim
|
||||
- nxos\_pim\_rp\_address
|
||||
- nxos\_portchannel
|
||||
- nxos\_rollback
|
||||
- nxos\_smu
|
||||
- nxos\_snapshot
|
||||
- nxos\_snmp\_community
|
||||
- nxos\_snmp\_contact
|
||||
- nxos\_snmp\_host
|
||||
- nxos\_snmp\_location
|
||||
- nxos\_snmp\_traps
|
||||
- nxos\_snmp\_user
|
||||
- nxos\_static\_route
|
||||
- nxos\_udld\_interface
|
||||
- nxos\_udld
|
||||
- nxos\_vpc\_interface
|
||||
- nxos\_vpc
|
||||
- nxos\_vrf\_af
|
||||
- nxos\_vtp\_domain
|
||||
- nxos\_vtp\_password
|
||||
- nxos\_vtp\_version
|
||||
- nxos\_vxlan\_vtep
|
||||
- nxos\_vxlan\_vtep\_vni
|
||||
- mssql\_db
|
||||
- ovh\_ip\_loadbalancing\_backend
|
||||
- opendj\_backendprop
|
||||
- openstack
|
||||
- os\_keystone\_service
|
||||
- os\_recordset
|
||||
- os\_server\_group
|
||||
- os\_stack
|
||||
- os\_zone
|
||||
- ovirt
|
||||
- ovirt\_auth
|
||||
- ovirt\_disks
|
||||
- ovirt\_vms
|
||||
- rhevm
|
||||
- rocketchat
|
||||
- sefcontext
|
||||
- sensu\_subscription
|
||||
- smartos
|
||||
- smartos\_image\_facts
|
||||
- sros
|
||||
- sros\_command
|
||||
- sros\_config
|
||||
- sros\_rollback
|
||||
- statusio\_maintenance
|
||||
- systemd
|
||||
- telegram
|
||||
- univention
|
||||
- udm\_dns\_record
|
||||
- udm\_dns\_zone
|
||||
- udm\_group
|
||||
- udm\_share
|
||||
- udm\_user
|
||||
- vmware
|
||||
- vmware\_guest
|
||||
- vmware\_local\_user\_manager
|
||||
- vmware\_vmotion
|
||||
- vyos
|
||||
- vyos\_command
|
||||
- vyos\_config
|
||||
- vyos\_facts
|
||||
- wakeonlan
|
||||
- windows
|
||||
- win\_command
|
||||
- win\_robocopy
|
||||
- win\_shell
|
||||
|
||||
New Callbacks
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
- foreman
|
||||
|
||||
Minor Changes
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
- now -vvv shows exact path from which 'currently executing module' was
|
||||
picked up from.
|
||||
- loop\_control now has a label option to allow fine grained control
|
||||
what gets displayed per item
|
||||
- loop\_control now has a pause option to allow pausing for N seconds
|
||||
between loop iterations of a task.
|
||||
- New privilege escalation become method ``ksu``
|
||||
- ``raw`` now returns ``changed: true`` to be consistent with
|
||||
shell/command/script modules. Add ``changed_when: false`` to ``raw``
|
||||
tasks to restore the pre-2.2 behavior if necessary.
|
||||
- removed previously deprecated ';' as host list separator.
|
||||
- Only check if the default ssh client supports ControlPersist once
|
||||
instead of once for each host + task combination.
|
||||
- Fix a problem with the pip module updating the python pip package
|
||||
itself.
|
||||
- ansible\_play\_hosts is a new magic variable to provide a list of
|
||||
hosts in scope for the current play. Unlike play\_hosts it is not
|
||||
subject to the 'serial' keyword.
|
||||
- ansible\_play\_batch is a new magic variable meant to substitute the
|
||||
current play\_hosts.
|
||||
|
||||
For custom front ends using the API
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- ansible.parsing.vault:
|
||||
- VaultLib.is\_encrypted() has been deprecated. It will be removed in
|
||||
2.4. Use ansible.parsing.vault.is\_encrypted() instead
|
||||
- VaultFile has been removed. This unfinished code was never used
|
||||
inside of Ansible. The feature it was intended to support has now
|
||||
been implemented without using this.
|
||||
- VaultAES, the older, insecure encrypted format that debuted in
|
||||
Ansible-1.5 and was replaced by VaultAES256 less than a week later,
|
||||
now has a deprecation warning. **It will be removed in 2.3**. In the
|
||||
unlikely event that you wrote a vault file in that 1 week window and
|
||||
have never modified the file since (ansible-vault automatically
|
||||
re-encrypts the file using VaultAES256 whenever it is written to but
|
||||
not read), run ``ansible-vault rekey [filename]`` to move to
|
||||
VaultAES256.
|
||||
|
||||
Removed Deprecated
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- ';' as host list separator.
|
||||
- with\_ 'bare variable' handling, now loop items must always be
|
||||
templated ``{{ }}`` or they will be considered as plain strings.
|
||||
- skipping task on 'missing attribute' in loop variable, now in a loop
|
||||
an undefined attribute will return an error instead of skipping the
|
||||
task.
|
||||
- skipping on undefined variables in loop, now loops will have to
|
||||
define a variable or use ``|default`` to avoid errors.
|
||||
|
||||
Deprecations
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Notice given that the following will be removed in Ansible 2.4: \*
|
||||
Modules \* eos\_template \* ios\_template \* iosxr\_template \*
|
||||
junos\_template \* nxos\_template \* ops\_template
|
||||
554
changelogs/CHANGELOG-v2.3.rst
Normal file
554
changelogs/CHANGELOG-v2.3.rst
Normal file
@ -0,0 +1,554 @@
|
||||
=====================================
|
||||
Ansible 2.3 "Ramble On" Release Notes
|
||||
=====================================
|
||||
|
||||
2.3.3 "Ramble On" - TBD
|
||||
-----------------------
|
||||
|
||||
Bugfixes
|
||||
~~~~~~~~
|
||||
|
||||
- Fix alternatives module handlling of non existing options
|
||||
- Fix synchronize traceback with the docker connection plugin
|
||||
- Do not escape backslashes in the template lookup plugin to mirror
|
||||
what the template module does
|
||||
- Fix the expires option of the postgresq\_user module
|
||||
- Fix for win\_acl when settings permissions on registry objects that
|
||||
use ``ALL APPLICATION PACKAGES`` and
|
||||
``ALL RESTRICTED APPLICATION PACKAGES``
|
||||
- Python3 fixes
|
||||
- asorted azure modules
|
||||
- pause module
|
||||
- hacking/env-setup script
|
||||
- Fix traceback when checking for passwords in logged strings when
|
||||
logging executed commands.
|
||||
- docker\_login module
|
||||
- Workaround python-libselinux API change in the seboolean module
|
||||
- digital\_ocean\_tag module
|
||||
- Fix the zip filter
|
||||
- Fix user module combining bytes and text
|
||||
- Fix for security groups in the amazon efs module
|
||||
- Fix for the jail connection plugin not finding the named jail
|
||||
- Fix for blockinfile's parameters insertbefore and insertafter
|
||||
- ios\_config: Fix traceback when the efaults parameter is not set
|
||||
- iosxr\_config: Fixed unicode error when UTF-8 characters are in
|
||||
configs
|
||||
- Fix check mode in archive module
|
||||
- Fix UnboundLocalError in check mode in cs\_role module
|
||||
- Fix to always use lowercase hostnames for host keys in known\_hosts
|
||||
module
|
||||
- Added missing return results for win\_stat
|
||||
- Fix rabbitmq modules to give a helpful error if requests is not
|
||||
installed
|
||||
- Fix yum module not deleting rpms that it downloaded
|
||||
- Fix yum module failing with a URL to an rpm
|
||||
- Fix file module inappropriately expanding literal dollar signs in a
|
||||
path read from the filesystem as an environment variable.
|
||||
- Fix the ssh "smart" transport setting which automatically selects the
|
||||
best means of transferring files over ssh (sftp, ssh, piped).
|
||||
- Fix authentication by api\_key parameter in exoscale modules.
|
||||
- vmware module\_utils shared code ssl/validate\_certs fixes in
|
||||
connection logic
|
||||
- allow 'bridge' facts to work for certain containers that create
|
||||
conflicting ones with connection plugins
|
||||
- Fix for win\_get\_url to use TLS 1.2/1.1 if it is available on the
|
||||
host
|
||||
- Fix for the filetree lookup with non-ascii group names
|
||||
- Better message for invalid keywords/options in task due to undefined
|
||||
expressions
|
||||
- Fixed check mode for enable on Solaris for service module
|
||||
- Fix cloudtrail module to allow AWS profiles other than the default
|
||||
- Fix an encoding issue with secret (password) vars\_prompts
|
||||
|
||||
2.3.2 "Ramble On" - 2017-08-04
|
||||
------------------------------
|
||||
|
||||
Bugfixes
|
||||
~~~~~~~~
|
||||
|
||||
- Fix partend i18n issues
|
||||
- fixed handling of extra vars for tower\_job\_template (#25272)
|
||||
- Python3 bugfixes
|
||||
- Fix sorting of ec2 policies
|
||||
- Fix digital\_ocean dynamic inventory script
|
||||
- Fix for the docker connection plugin
|
||||
- Fix pip module when using python3's pyvenv and python3 -m venv to
|
||||
create virtualenvs
|
||||
- Fix for the AnsiBallZ wrapper so that it gives a better error message
|
||||
when there's not enough disk space to create its tempdir.
|
||||
- Fix so ansilbe-galaxy install --force with unversioned roles will
|
||||
once again overwrite old versions.
|
||||
- Fix for RabbitMQ 3.6.7 endpoint return code changing.
|
||||
- Fix for Foreman organization creation
|
||||
- fixed incorrect fail\_json ref in rpm\_key
|
||||
- Corrected requried on hash\_name for dynamodb\_table
|
||||
- Fix for fetch action plugin not validating correctly
|
||||
- Avoid vault view writing display to logs
|
||||
- htpasswd: fix passlib module version comparison
|
||||
- Fix for flowdock error message when external\_user\_name is missing
|
||||
- fixed corner case for delegate\_to, loops and delegate\_facts
|
||||
- fixed wait\_for python2.4/2.5 compatibility (this is last version
|
||||
this is needed)
|
||||
- fix for adhoc not obeying callback options
|
||||
- fix for win\_find where it fails to recursively scan empty nested
|
||||
directories
|
||||
- fix non-pipelined code paths for Windows (eg,
|
||||
ANSIBLE\_KEEP\_REMOTE\_FILES, non-pipelined connection plugins)
|
||||
- fix for win\_updates where args and check mode were ignored due to
|
||||
common code change
|
||||
- fix for unprivileged users to Windows runas become method
|
||||
- fix starttls code path for mail module
|
||||
- fix missing LC\_TYPE in parted module
|
||||
- fix CN parsing with OpenSSL 1.1 in letsencrypt module
|
||||
- fix params assignment in jabber module
|
||||
- fix TXT record type handling in exo\_dns\_record module
|
||||
- fix message queue message ttl can't be 0 in rabbitmq\_queue module
|
||||
- CloudStack bugfixes:
|
||||
- fix template upload for users in cs\_template module, change default
|
||||
to is\_routing=None
|
||||
- several fixes in cs\_host module fixes hypervisor handling
|
||||
- fix network param ignored due typo in cs\_nic module
|
||||
- fix missing type bool in module cs\_zone
|
||||
- fix KeyError: 'sshkeypair' in cs\_instance module for CloudStack v4.5
|
||||
and before
|
||||
- fix for win\_chocolatey where trying to upgrade all the packages as
|
||||
per the example docs fails
|
||||
- fix for win\_chocolatey where it did not fail if the version set did
|
||||
not exist
|
||||
- fix for win\_regedit always changing a reg key if the dword values
|
||||
set is a hex
|
||||
- fix for wait\_for on non-Linux systems with newer versions of psutil
|
||||
- fix eos\_banner code and test issues
|
||||
- run tearup and teardown of EAPI service only on EAPI tests
|
||||
- fix eos\_config tests so only Eth1 and Eth2 are used
|
||||
- Fix for potential bug when using legacy inventory vars for
|
||||
configuring the su password.
|
||||
- Fix crash in file module when directories contain non-utf8 filenames
|
||||
- Fix for dnf groupinstall with dnf-2.x
|
||||
- Fix seboolean module for incompatibility in newer Python3 selinux
|
||||
bindings
|
||||
- Optimization for inventory, no need to dedup at every stage, its
|
||||
redundant and slow
|
||||
- Fix fact gathering for package and service action plugins
|
||||
- make random\_choice more error resilient (#27380)
|
||||
- ensure prefix in plugin loading to avoid conflicts
|
||||
- fix for a small number of modules (tempfile, possibly copy) which
|
||||
could fail if the tempdir on the remote box was a symlink
|
||||
- fix non-pipelined code paths for Windows (eg,
|
||||
ANSIBLE\_KEEP\_REMOTE\_FILES, non-pipelined connection plugins)
|
||||
- fix for win\_updates where args and check mode were ignored due to
|
||||
common code change
|
||||
|
||||
2.3.1 "Ramble On" - 2017-06-01
|
||||
------------------------------
|
||||
|
||||
Bugfixes
|
||||
~~~~~~~~
|
||||
|
||||
- Security fix for CVE-2017-7481 - data for lookup plugins used as
|
||||
variables was not being correctly marked as "unsafe".
|
||||
- Fix default value of fetch module's validate\_checksum to be True
|
||||
- Added fix for "meta: refresh\_connection" not working with default
|
||||
'smart' connection.
|
||||
- Fix template so that the --diff command line option works when the
|
||||
destination is a directory
|
||||
- Fix python3 bugs in pam\_limits
|
||||
- Fix unbound error when using module deprecation as a single string
|
||||
- Several places in which error handling was broken due to bad
|
||||
conversions or just typos
|
||||
- Fix to user module for appending/setting groups on OpenBSD (flags
|
||||
were reversed)
|
||||
- assemble fix to use safer os.join.path, avoids charset issues
|
||||
- fixed issue with solaris facts and i18n
|
||||
- added python2.4 compatiblity fix to sysctl module
|
||||
- Fix comparison of exisiting container security opts in the
|
||||
docker\_container module
|
||||
- fixed service module invocation of insserv on certain platforms
|
||||
- Fix traceback in os\_user in an error case.
|
||||
- Fix docker container to restart a container when changing to fewer
|
||||
exposed ports
|
||||
- Fix tracebacks in docker\_network
|
||||
- Fixes to detection of updated docker images
|
||||
- Handle detection of docker image changes when published ports is
|
||||
changed
|
||||
- Fix for docker\_container restarting images when links list is empty.
|
||||
|
||||
2.3 "Ramble On" - 2017-04-12
|
||||
----------------------------
|
||||
|
||||
Moving to Ansible 2.3 guide
|
||||
http://docs.ansible.com/ansible/porting\_guide\_2.3.html
|
||||
|
||||
Major Changes
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
- Documented and renamed the previously released 'single var vaulting'
|
||||
feature, allowing user to use vault encryption for single variables
|
||||
in a normal YAML vars file.
|
||||
- Allow module\_utils for custom modules to be placed in site-specific
|
||||
directories and shipped in roles
|
||||
- On platforms that support it, use more modern system polling API
|
||||
instead of select in the ssh connection plugin. This removes one
|
||||
limitation on how many parallel forks are feasible on these systems.
|
||||
- Windows/WinRM supports (experimental) become method "runas" to run
|
||||
modules and scripts as a different user, and to transparently access
|
||||
network resources.
|
||||
- The WinRM connection plugin now uses pipelining when executing
|
||||
modules, resulting in significantly faster execution for small tasks.
|
||||
- The WinRM connection plugin can now manage Kerberos tickets
|
||||
automatically when ``ansible_winrm_transport=kerberos`` and
|
||||
``ansible_user``/``ansible_password`` are specified.
|
||||
- Refactored/standardized most Windows modules, adding check-mode and
|
||||
diff support where possible.
|
||||
- Extended Windows module API with parameter-type support, helper
|
||||
functions. (i.e. Expand-Environment, Add-Warning,
|
||||
Add-DeprecatationWarning)
|
||||
- restructured how async works to allow it to apply to action plugins
|
||||
that choose to support it.
|
||||
|
||||
Minor Changes
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
- The version and release facts for OpenBSD hosts were reversed. This
|
||||
has been changed so that version has the numeric portion and release
|
||||
has the name of the release.
|
||||
- removed 'package' from default squash actions as not all package
|
||||
managers support it and it creates errors when using loops, any user
|
||||
can add back via config options if they don't use those package
|
||||
managers or otherwise avoid the errors.
|
||||
- Blocks can now have a ``name`` field, to aid in playbook readability.
|
||||
- default strategy is now configurable via ansible.cfg or environment
|
||||
variable.
|
||||
- Added 'ansible\_playbook\_python' which contains 'current python
|
||||
executable', it can be blank in some cases in which Ansible is not
|
||||
invoked via the standard CLI (sys.executable limitation).
|
||||
- Added 'metadata' to modules to enable classification
|
||||
- ansible-doc now displays path to module and existing 'metadata'
|
||||
- added optional 'piped' transfer method to ssh plugin for when scp and
|
||||
sftp are missing, ssh plugin is also now 'smarter' when using these
|
||||
options
|
||||
- default controlpersist path is now a custom hash of host-port-user to
|
||||
avoid the socket path length errors for long hostnames
|
||||
- Various fixes for Python3 compatibility
|
||||
- Fixed issues with inventory formats not handling 'all' and
|
||||
'ungrouped' in an uniform way.
|
||||
- 'service' tasks can now use async again, we had lost this capability
|
||||
when changed into an action plugin.
|
||||
- made any\_errors\_fatal inheritable from play to task and all other
|
||||
objects in between.
|
||||
- many small performance improvements in inventory and variable
|
||||
handling and in task execution.
|
||||
- Added a retry class to the ec2\_asg module since customers were
|
||||
running into throttling errors (AWSRetry is a solution for modules
|
||||
using boto3 which isn't applicable here).
|
||||
|
||||
Deprecations
|
||||
~~~~~~~~~~~~
|
||||
|
||||
- Specifying --tags (or --skip-tags) multiple times on the command line
|
||||
currently leads to the last one overriding all the previous ones.
|
||||
This behaviour is deprecated. In the future, if you specify --tags
|
||||
multiple times the tags will be merged together. From now on, using
|
||||
--tags multiple times on one command line will emit a deprecation
|
||||
warning. Setting the merge\_multiple\_cli\_tags option to True in the
|
||||
ansible.cfg file will enable the new behaviour. In 2.4, the default
|
||||
will be to merge and you can enable the old overwriting behaviour via
|
||||
the config option. In 2.5, multiple --tags options will be merged
|
||||
with no way to go back to the old behaviour.
|
||||
|
||||
- Modules (scheduled for removal in 2.5)
|
||||
- ec2\_vpc
|
||||
- cl\_bond
|
||||
- cl\_bridge
|
||||
- cl\_img\_install
|
||||
- cl\_interface
|
||||
- cl\_interface\_policy
|
||||
- cl\_license
|
||||
- cl\_ports
|
||||
- nxos\_mtu, use nxos\_system instead
|
||||
|
||||
New: Callbacks
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
- dense: minimal stdout output with fallback to default when verbose
|
||||
|
||||
New: lookups
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- keyring: allows getting password from the 'controller' system's
|
||||
keyrings
|
||||
- chef\_databag: allows querying Chef Databags via pychef library
|
||||
|
||||
New: cache
|
||||
^^^^^^^^^^
|
||||
|
||||
- pickle (uses python's own serializer)
|
||||
- yaml
|
||||
|
||||
New: inventory scripts
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- oVirt/RHV
|
||||
|
||||
New: filters
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- combinations
|
||||
- permutations
|
||||
- zip
|
||||
- zip\_longest
|
||||
|
||||
Module Notes
|
||||
~~~~~~~~~~~~
|
||||
|
||||
- AWS lambda: previously ignored changes that only affected one
|
||||
parameter. Existing deployments may have outstanding changes that
|
||||
this bugfix will apply.
|
||||
- oVirt/RHV: Added support for 4.1 features and the following:
|
||||
- data centers, clusters, hosts, storage domains and networks
|
||||
management.
|
||||
- hosts and virtual machines affinity groups and labels.
|
||||
- users, groups and permissions management.
|
||||
- Improved virtual machines and disks management.
|
||||
- Mount: Some fixes so bind mounts are not mounted each time the
|
||||
playbook runs.
|
||||
|
||||
New Modules
|
||||
~~~~~~~~~~~
|
||||
|
||||
- a10\_server\_axapi3
|
||||
- amazon:
|
||||
- aws\_kms
|
||||
- cloudfront\_facts
|
||||
- ec2\_group\_facts
|
||||
- ec2\_lc\_facts
|
||||
- ec2\_vpc\_igw\_facts
|
||||
- ec2\_vpc\_nat\_gateway\_facts
|
||||
- ec2\_vpc\_vgw\_facts
|
||||
- ecs\_ecr
|
||||
- elasticache\_parameter\_group
|
||||
- elasticache\_snapshot
|
||||
- iam\_role
|
||||
- s3\_sync
|
||||
- archive
|
||||
- beadm
|
||||
- bigswitch:
|
||||
- bigmon\_chain
|
||||
- bigmon\_policy
|
||||
- cisco
|
||||
- cisco\_spark
|
||||
- cloudengine:
|
||||
- ce\_command
|
||||
- cloudscale\_server
|
||||
- cloudstack:
|
||||
- cs\_host
|
||||
- cs\_nic
|
||||
- cs\_region
|
||||
- cs\_role
|
||||
- cs\_vpc
|
||||
- dimensiondata\_network
|
||||
- eos:
|
||||
- eos\_banner
|
||||
- eos\_system
|
||||
- eos\_user
|
||||
- f5:
|
||||
- bigip\_gtm\_facts
|
||||
- bigip\_hostname
|
||||
- bigip\_snat\_pool
|
||||
- bigip\_sys\_global
|
||||
- foreman:
|
||||
- foreman
|
||||
- katello
|
||||
- fortios
|
||||
- fortios\_config
|
||||
- gconftool2
|
||||
- google:
|
||||
- gce\_eip
|
||||
- gce\_snapshot
|
||||
- gcpubsub
|
||||
- gcpubsub\_facts
|
||||
- hpilo:
|
||||
- hpilo\_boot
|
||||
- hpilo\_facts
|
||||
- hponcfg
|
||||
- icinga2\_feature
|
||||
- illumos:
|
||||
- dladm\_iptun
|
||||
- dladm\_linkprop
|
||||
- dladm\_vlan
|
||||
- ipadm\_addr
|
||||
- ipadm\_addrprop
|
||||
- ipadm\_ifprop
|
||||
- infinidat:
|
||||
- infini\_export
|
||||
- infini\_export\_client
|
||||
- infini\_fs
|
||||
- infini\_host
|
||||
- infini\_pool
|
||||
- infini\_vol
|
||||
- ipa:
|
||||
- ipa\_group
|
||||
- ipa\_hbacrule
|
||||
- ipa\_host
|
||||
- ipa\_hostgroup
|
||||
- ipa\_role
|
||||
- ipa\_sudocmd
|
||||
- ipa\_sudocmdgroup
|
||||
- ipa\_sudorule
|
||||
- ipa\_user
|
||||
- ipinfoio\_facts
|
||||
- ios:
|
||||
- ios\_banner
|
||||
- ios\_system
|
||||
- ios\_vrf
|
||||
- iosxr\_system
|
||||
- iso\_extract
|
||||
- java\_cert
|
||||
- jenkins\_script
|
||||
- ldap:
|
||||
- ldap\_attr
|
||||
- ldap\_entry
|
||||
- logstash\_plugin
|
||||
- mattermost
|
||||
- net\_command
|
||||
- netapp:
|
||||
- sf\_account\_manager
|
||||
- sf\_snapshot\_schedule\_manager
|
||||
- sf\_volume\_manager
|
||||
- sf\_volume\_access\_group\_manager
|
||||
- nginx\_status\_facts
|
||||
- nsupdate
|
||||
- omapi\_host
|
||||
- openssl:
|
||||
- openssl\_privatekey
|
||||
- openssl\_publickey
|
||||
- openstack:
|
||||
- os\_nova\_host\_aggregate
|
||||
- os\_quota
|
||||
- openwrt\_init
|
||||
- ordnance:
|
||||
- ordnance\_config
|
||||
- ordnance\_facts
|
||||
- ovirt:
|
||||
- ovirt\_affinity\_groups
|
||||
- ovirt\_affinity\_labels
|
||||
- ovirt\_affinity\_labels\_facts
|
||||
- ovirt\_clusters
|
||||
- ovirt\_clusters\_facts
|
||||
- ovirt\_datacenters
|
||||
- ovirt\_datacenters\_facts
|
||||
- ovirt\_external\_providers
|
||||
- ovirt\_external\_providers\_facts
|
||||
- ovirt\_groups
|
||||
- ovirt\_groups\_facts
|
||||
- ovirt\_host\_networks
|
||||
- ovirt\_host\_pm
|
||||
- ovirt\_hosts
|
||||
- ovirt\_hosts\_facts
|
||||
- ovirt\_mac\_pools
|
||||
- ovirt\_networks
|
||||
- ovirt\_networks\_facts
|
||||
- ovirt\_nics
|
||||
- ovirt\_nics\_facts
|
||||
- ovirt\_permissions
|
||||
- ovirt\_permissions\_facts
|
||||
- ovirt\_quotas
|
||||
- ovirt\_quotas\_facts
|
||||
- ovirt\_snapshots
|
||||
- ovirt\_snapshots\_facts
|
||||
- ovirt\_storage\_domains
|
||||
- ovirt\_storage\_domains\_facts
|
||||
- ovirt\_tags
|
||||
- ovirt\_tags\_facts
|
||||
- ovirt\_templates
|
||||
- ovirt\_templates\_facts
|
||||
- ovirt\_users
|
||||
- ovirt\_users\_facts
|
||||
- ovirt\_vmpools
|
||||
- ovirt\_vmpools\_facts
|
||||
- ovirt\_vms\_facts
|
||||
- pacemaker\_cluster
|
||||
- packet:
|
||||
- packet\_device
|
||||
- packet\_sshkey
|
||||
- pamd
|
||||
- panos:
|
||||
- panos\_address
|
||||
- panos\_admin
|
||||
- panos\_admpwd
|
||||
- panos\_cert\_gen\_ssh
|
||||
- panos\_check
|
||||
- panos\_commit
|
||||
- panos\_dag
|
||||
- panos\_import
|
||||
- panos\_interface
|
||||
- panos\_lic
|
||||
- panos\_loadcfg
|
||||
- panos\_mgtconfig
|
||||
- panos\_nat\_policy
|
||||
- panos\_pg
|
||||
- panos\_restart
|
||||
- panos\_security\_policy
|
||||
- panos\_service
|
||||
- postgresql\_schema
|
||||
- proxmox\_kvm
|
||||
- proxysql:
|
||||
- proxysql\_backend\_servers
|
||||
- proxysql\_global\_variables
|
||||
- proxysql\_manage\_config
|
||||
- proxysql\_mysql\_users
|
||||
- proxysql\_query\_rules
|
||||
- proxysql\_replication\_hostgroups
|
||||
- proxysql\_scheduler
|
||||
- pubnub\_blocks
|
||||
- pulp\_repo
|
||||
- runit
|
||||
- serverless
|
||||
- set\_stats
|
||||
- panos:
|
||||
- panos\_security\_policy
|
||||
- smartos:
|
||||
- imgadm
|
||||
- vmadm
|
||||
- sorcery
|
||||
- stacki\_host
|
||||
- swupd
|
||||
- tempfile
|
||||
- tower:
|
||||
- tower\_credential
|
||||
- tower\_group
|
||||
- tower\_host
|
||||
- tower\_inventory
|
||||
- tower\_job\_template
|
||||
- tower\_label
|
||||
- tower\_organization
|
||||
- tower\_project
|
||||
- tower\_role
|
||||
- tower\_team
|
||||
- tower\_user
|
||||
- vmware:
|
||||
- vmware\_guest\_facts
|
||||
- vmware\_guest\_snapshot
|
||||
- web\_infrastructure:
|
||||
- jenkins\_script
|
||||
- system
|
||||
- parted
|
||||
- windows:
|
||||
- win\_disk\_image
|
||||
- win\_dns\_client
|
||||
- win\_domain
|
||||
- win\_domain\_controller
|
||||
- win\_domain\_membership
|
||||
- win\_find
|
||||
- win\_msg
|
||||
- win\_path
|
||||
- win\_psexec
|
||||
- win\_reg\_stat
|
||||
- win\_region
|
||||
- win\_say
|
||||
- win\_shortcut
|
||||
- win\_tempfile
|
||||
- xbps
|
||||
- zfs:
|
||||
- zfs\_facts
|
||||
- zpool\_facts
|
||||
921
changelogs/CHANGELOG-v2.4.rst
Normal file
921
changelogs/CHANGELOG-v2.4.rst
Normal file
@ -0,0 +1,921 @@
|
||||
========================================
|
||||
Ansible 2.4 "Dancing Days" Release Notes
|
||||
========================================
|
||||
|
||||
2.4.1 "Dancing Days" - 2017-10-25
|
||||
---------------------------------
|
||||
|
||||
Bugfixes
|
||||
~~~~~~~~
|
||||
|
||||
- Security fix for CVE-2017-7550 the jenkins\_plugin module was logging
|
||||
the jenkins server password if the url\_password was passed via the
|
||||
params field: https://github.com/ansible/ansible/pull/30875
|
||||
- Update openssl\* module documentation to show openssl-0.16 is the
|
||||
minimum version
|
||||
- Fix openssl\_certificate's csr handling
|
||||
- Python-3 fixes
|
||||
- Fix openssl\_certificate parameter assertion on Python3
|
||||
- Fix for python3 and nonascii strings in inventory plugins
|
||||
(https://github.com/ansible/ansible/pull/30666)
|
||||
- Fix missing urllib in iam\_policy
|
||||
- Fix crypttab module for bytes<=>text string mismatch (
|
||||
https://github.com/ansible/ansible/pull/30457 )
|
||||
- Fix lxc\_container module combining bytes with text (
|
||||
https://github.com/ansible/ansible/pull/30572 )
|
||||
- Fix map doesn't return a list on python3 in ec2\_snapshot\_facts
|
||||
module (https://github.com/ansible/ansible/pull/30606)
|
||||
- Fix uri (and other url retrieving) modules when used with a proxy.
|
||||
(https://github.com/ansible/ansible/issues/31109)
|
||||
- Fix azure\_rm dynamic inventory script ConfigParser usage.
|
||||
- Fix for win\_file to respect check mode when deleting directories
|
||||
- Fix for Ansible.ModuleUtils.Legacy.psm1 to return list params
|
||||
correctly
|
||||
- Fix for a proper logout in the module ovirt\_vms
|
||||
- Fixed docs for 'password' lookup
|
||||
- Corrected and added missing feature and porting docs for 2.4
|
||||
- Fix for Ansible.ModuleUtils.CamelConversion to handle empty lists and
|
||||
lists with one entry
|
||||
- Fix nxos terminal regex to parse username correctly.
|
||||
- Fix colors for selective callback
|
||||
- Fix for 'New password' prompt on 'ansible-vault edit'
|
||||
(https://github.com/ansible/ansible/issues/30491)
|
||||
- Fix for 'ansible-vault encrypt' with vault\_password\_file in config
|
||||
and --ask-vault-pass cli
|
||||
(https://github.com/ansible/ansible/pull/30514#pullrequestreview-63395903)
|
||||
- updated porting guide with notes for callbacks and config
|
||||
- Added backwards compatiblity shim for callbacks that do not inherit
|
||||
from CallbackBase
|
||||
- Corrected issue with configuration and multiple ini entries being
|
||||
overwriten even when not set.
|
||||
- backported fix for doc generation (plugin\_formatter)
|
||||
- Fix ec2\_lc module for an unknown parameter name
|
||||
(https://github.com/ansible/ansible/pull/30573)
|
||||
- Change configuration of defaults to use standard jinja2 instead of
|
||||
custom eval() for using variables in the default field of config
|
||||
(https://github.com/ansible/ansible/pull/30650)
|
||||
- added missing entry in chlog deprecation
|
||||
- Fixed precedence and values for become flags and executable settings
|
||||
- Fix for win\_domain\_membership to throw more helpful error messages
|
||||
and check/fix when calling WMI function after changing workgroup
|
||||
- Fix for win\_power\_plan to compare the OS version's correctly and
|
||||
work on Windows 10/Server 2016
|
||||
- Fix module doc for typo in telnet command option
|
||||
- Fix OpenBSD pkg\_mgr fact
|
||||
(https://github.com/ansible/ansible/issues/30623)
|
||||
- Fix encoding error when there are nonascii values in the path to the
|
||||
ssh binary
|
||||
- removed YAML inventory group name validation, broke existing setups
|
||||
and should be global in any case, and configurable
|
||||
- performance improvment for inventory, had slown down considerably
|
||||
from 2.3
|
||||
- Fix cpu facts on sparc64
|
||||
(https://github.com/ansible/ansible/pull/30261)
|
||||
- Fix ansible\_distribution fact for Arch linux
|
||||
(https://github.com/ansible/ansible/issues/30600)
|
||||
- remove print statements from play\_context/become
|
||||
- Fix vault errors after 'ansible-vault edit'
|
||||
(https://github.com/ansible/ansible/issues/30575)
|
||||
- updated api doc example to match api changes
|
||||
- corrected issues with slack callback plugin
|
||||
- it is import\_playbook, not import\_plays, docs now reflect this
|
||||
- fixed typo and missed include/import conversion in import\_tasks docs
|
||||
- updated porting docs with note about inventory\_dir
|
||||
- removed extension requirement for yaml inventory plugin to restore
|
||||
previous behaviour
|
||||
- fixed ansible-pull to now correctly deal with inventory
|
||||
- corrected dig lookup docs
|
||||
- fix type handling for sensu\_silence so the module works
|
||||
- added fix for win\_iis\_webapppool to correctly handle array elements
|
||||
- Fix bugs caused by lack of collector ordering like service\_mgr being
|
||||
incorrect (https://github.com/ansible/ansible/issues/30753)
|
||||
- Fix os\_image when the id parameter is not set in the task. (
|
||||
https://github.com/ansible/ansible/pull/29147 )
|
||||
- Fix for the winrm connection to use proper task vars
|
||||
- removed typo from dig lookup docs
|
||||
- Updated win\_chocolatey example to be clearer around what should be
|
||||
used with become
|
||||
- Fix for copy module when permissions are changed but the file
|
||||
contents are not ( https://github.com/ansible/ansible/issues/30556 )
|
||||
- corrected YAML\_FILENAME\_EXTENSIONS ini setter as key/section were
|
||||
swapped
|
||||
- Better error message when a yaml inventory is invalid
|
||||
- avoid include\_Xs conflating vars with options
|
||||
- Fix aws\_s3 module handling ``encrypt`` option
|
||||
(https://github.com/ansible/ansible/pull/31203)
|
||||
- Fix for win\_msg to document and show error when message is greater
|
||||
than 255 characters
|
||||
- Fix for win\_dotnet\_ngen to work after recent regression
|
||||
- fixed backwards compat method for config
|
||||
- removed docs for prematurely added ssh specific pipelining settings
|
||||
- fixed redis cache typo
|
||||
- Fix AttributeError during inventory group deserialization
|
||||
(https://github.com/ansible/ansible/issues/30903)
|
||||
- Fix 'ansible-vault encrypt --output=-'
|
||||
(https://github.com/ansible/ansible/issues/30550)
|
||||
- restore pre 2.4 pipeline configuration options (env and ini)
|
||||
- Fix win\_copy regression: handling of vault-encrypted source files
|
||||
(https://github.com/ansible/ansible/pull/31084)
|
||||
- Updated return values for win\_reg\_stat to correctly show what is
|
||||
being returned (https://github.com/ansible/ansible/pull/31252)
|
||||
- reduced normal error redundancy and verbosity, display on increased
|
||||
and when needed
|
||||
- Give an informative error instead of a traceback if include\_vars dir
|
||||
is file instead of directory
|
||||
(https://github.com/ansible/ansible/pull/31157)
|
||||
- Fix monit module's version check for color support
|
||||
(https://github.com/ansible/ansible/pull/31212)
|
||||
- Make ``elasticsearch_plugin`` module work with both 2.x and 5.x
|
||||
(https://github.com/ansible/ansible/issues/21989)
|
||||
- Fix for become on Windows to handle ignored errors
|
||||
(https://github.com/ansible/ansible/issues/30468)
|
||||
- Fix removal of newlines when writing SELinux config
|
||||
(https://github.com/ansible/ansible/issues/30618)
|
||||
- clarified extension requirement for constructed inv plugin
|
||||
- really turn off inventory caching, toggle will be added in 2.5
|
||||
- for inventory sources, dont follow symlinks to calculate base
|
||||
directory, used for group/host\_vars
|
||||
- Port the uptime.py example script to the new inventory API.
|
||||
- inventory\_file variable again returns full path, not just basename
|
||||
- added info about cwd group/host vars to porting guide
|
||||
- Fix name parsing out of envra in the yum module
|
||||
- give user friendly error on badly formatted yaml inventory source
|
||||
- Fix any\_errors\_fatal setting in playbooks.
|
||||
- Fix setting of ssh-extra-args from the cli
|
||||
(https://github.com/ansible/ansible/pull/31326)
|
||||
- Change SELinux fact behavior to always return a dictionary.
|
||||
(https://github.com/ansible/ansible/issues/18692)
|
||||
- Revert a fix for using non /bin/sh shells for modules' running
|
||||
commands as this was causing output from commands to change, thus
|
||||
breaking playbooks. See the original bug for details and links to the
|
||||
eventual fix: https://github.com/ansible/ansible/issues/24169
|
||||
- Do not log data field in ``docker_secrets`` module
|
||||
(https://github.com/ansible/ansible/pull/31366)
|
||||
- Fix rpm\_key taking the wrong 8 chars from the keyid
|
||||
(https://github.com/ansible/ansible/pull/31045)
|
||||
- chown errors now more informative
|
||||
- Fix for win\_copy to copy a source file that has invalid windows
|
||||
characters in the filename, the dest still must be have valid windows
|
||||
characters
|
||||
(https://github.com/ansible/ansible/issues/31336#issuecomment-334649927)
|
||||
- Fix systemd module to not run daemon-reload in check mode.
|
||||
- fixed some parsing and selection issues with inventory manager, fixed
|
||||
minor bugs in yaml and constructed plugins
|
||||
- Fix the ping module documentation to reference win\_ping instead of
|
||||
itself: https://github.com/ansible/ansible/pull/31444
|
||||
- Fix for ec2\_win\_password to allow blank key\_passphrase again
|
||||
(https://github.com/ansible/ansible/pull/28791)
|
||||
- added toggle for vars\_plugin behaviour to execute relative to
|
||||
playbook, set default to revert to previous way.
|
||||
- Fix for win\_copy to not remove destination file on change when in
|
||||
check mode (https://github.com/ansible/ansible/pull/31469)
|
||||
- Fix include\_role usage of role\_name
|
||||
(https://github.com/ansible/ansible/pull/31463)
|
||||
- Fix service and package forcing a second run of the setup module to
|
||||
function (https://github.com/ansible/ansible/issues/31485)
|
||||
- Better error message when attempting to use include or import with
|
||||
/usr/bin/ansible (https://github.com/ansible/ansible/pull/31492/)
|
||||
- Fix ``sysctl`` module to remove etries when ``state=absent``
|
||||
(https://github.com/ansible/ansible/issues/29920)
|
||||
- Fix for ec2\_group to avoid trying to iterate over None
|
||||
(https://github.com/ansible/ansible/pull/31531)
|
||||
- Fix for ec2\_group for a possible KeyError bug
|
||||
(https://github.com/ansible/ansible/pull/31540)
|
||||
- Fix for the rpm\_key module when importing the first gpg key on a
|
||||
system (https://github.com/ansible/ansible/pull/31514)
|
||||
- Fix for aws\_s3 metadata to use the correct parameters when uploading
|
||||
a file (https://github.com/ansible/ansible/issues/31232)
|
||||
- Fix for the yum module when installing from file/url crashes
|
||||
(https://github.com/ansible/ansible/pull/31529)
|
||||
- Improved error messaging for Windows become/runas when username is
|
||||
bogus (https://github.com/ansible/ansible/pull/31551)
|
||||
- Fix rollback feature in junos\_config to now allow configuration
|
||||
rollback on device (https://github.com/ansible/ansible/pull/31424)
|
||||
- Remove command executed log from ansible-connection
|
||||
(https://github.com/ansible/ansible/pull/31581)
|
||||
- Fix relative paths to be relative to config file when there is no
|
||||
playbook available (https://github.com/ansible/ansible/issues/31533)
|
||||
- Fix Inventory plugins to use the configured inventory plugin path
|
||||
(https://github.com/ansible/ansible/issues/31605)
|
||||
- Fix include task to be dynamic
|
||||
(https://github.com/ansible/ansible/issues/31593)
|
||||
- A couple fixes to the test process to account for new testing
|
||||
resources in our ci system and an upstream cryptography update that
|
||||
didn't work with pip-8.x
|
||||
- Document backup\_path in a few dellos modules and vyos\_config
|
||||
(https://github.com/ansible/ansible/issues/31844)
|
||||
- Fix for vmware\_vm\_facts with dangling inaccessible VM which don't
|
||||
have MAC addresses (https://github.com/ansible/ansible/pull/31629)
|
||||
- Fix for win\_regedit sending extra data that could confuse ansible's
|
||||
result parsing (https://github.com/ansible/ansible/pull/31813)
|
||||
- Fix git module to correctly cleanup temporary dirs
|
||||
(https://github.com/ansible/ansible/pull/31541)
|
||||
- Fix for modules which use atomic\_move() to rename files raising an
|
||||
exception if a file could not be opened. Fix will return a nice error
|
||||
message instead: https://github.com/ansible/ansible/issues/31786
|
||||
- Fix ansible-doc and ansible-console module-path option
|
||||
(https://github.com/ansible/ansible/pull/31744)
|
||||
- Fix for hostname module on RHEL 7.5
|
||||
(https://github.com/ansible/ansible/issues/31811)
|
||||
- Fix provider password leak in logs for asa modules
|
||||
(https://github.com/ansible/ansible/issues/32343)
|
||||
- Fix tagging for dynamodb\_table if region is not explicitly passed to
|
||||
the module (https://github.com/ansible/ansible/pull/32557)
|
||||
- Fix Python 3 decode error in ``cloudflare_dns``
|
||||
(https://github.com/ansible/ansible/pull/32065)
|
||||
|
||||
Known Bugs
|
||||
~~~~~~~~~~
|
||||
|
||||
- Implicit localhost is getting ansible\_connection from all:vars
|
||||
instead of from the implicit localhost definition
|
||||
(https://github.com/ansible/ansible/issues/31420)
|
||||
|
||||
2.4 "Dancing Days" - 2017/09/18
|
||||
-------------------------------
|
||||
|
||||
Major Changes
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
- Support for Python-2.4 and Python-2.5 on the managed system's side
|
||||
was dropped. If you need to manage a system that ships with
|
||||
Python-2.4 or Python-2.5, you'll need to install Python-2.6 or better
|
||||
on the managed system or run Ansible-2.3 until you can upgrade the
|
||||
system.
|
||||
- New import/include keywords to replace the old bare ``include``
|
||||
directives. The use of ``static: {yes|no}`` on such includes is now
|
||||
deprecated.
|
||||
|
||||
- Using ``import_*`` (``import_playbook``, ``import_tasks``,
|
||||
``import_role``) directives are static.
|
||||
- Using ``include_*`` (``include_tasks``, ``include_role``)
|
||||
directives are dynamic. This is done to avoid collisions and
|
||||
possible security issues as facts come from the remote targets and
|
||||
they might be compromised.
|
||||
|
||||
- New ``order`` play level keyword that allows the user to change the
|
||||
order in which Ansible processes hosts when dispatching tasks.
|
||||
- Users can now set group merge priority for groups of the same depth
|
||||
(parent child relationship), using the new ``ansible_group_priority``
|
||||
variable, when values are the same or don't exist it will fallback to
|
||||
the previous sorting by name'.
|
||||
- Inventory has been revamped:
|
||||
- Inventory classes have been split to allow for better management and
|
||||
deduplication
|
||||
- Logic that each inventory source duplicated is now common and pushed
|
||||
up to reconciliation
|
||||
- VariableManager has been updated for better interaction with
|
||||
inventory
|
||||
- Updated CLI with helper method to initialize base objects for plays
|
||||
- New inventory plugins for creating inventory
|
||||
- Old inventory formats are still supported via plugins
|
||||
- Inline host\_list is also an inventory plugin, an example alternative
|
||||
``advanced_host_list`` is also provided (it supports ranges)
|
||||
- New configuration option to list enabled plugins and precedence order
|
||||
``[inventory]enable_plugins`` in ansible.cfg
|
||||
- vars\_plugins have been reworked, they are now run from Vars manager
|
||||
and API has changed (need docs)
|
||||
- Loading group\_vars/host\_vars is now a vars plugin and can be
|
||||
overridden
|
||||
- It is now possible to specify multiple inventory sources in the
|
||||
command line (-i /etc/hosts1 -i /opt/hosts2)
|
||||
- Inventory plugins can use the cache plugin (i.e. virtualbox) and is
|
||||
affected by ``meta: refresh_inventory``
|
||||
- Group variable precedence is now configurable via new 'precedence'
|
||||
option in ansible.cfg (needs docs)
|
||||
- Improved warnings and error messages across the board
|
||||
- Configuration has been changed from a hardcoded listing in the
|
||||
constants module to dynamically loaded from yaml definitions
|
||||
- Also added an ansible-config CLI to allow for listing config options
|
||||
and dumping current config (including origin)
|
||||
- TODO: build upon this to add many features detailed in ansible-config
|
||||
proposal https://github.com/ansible/proposals/issues/35
|
||||
- Windows modules now support the use of multiple shared module\_utils
|
||||
files in the form of Powershell modules (.psm1), via
|
||||
``#Requires -Module Ansible.ModuleUtils.Whatever.psm1``
|
||||
- Python module argument\_spec now supports custom validation logic by
|
||||
accepting a callable as the ``type`` argument.
|
||||
- Windows become\_method: runas is no longer marked ``experimental``
|
||||
- Windows become\_method: runas now works across all authtypes and will
|
||||
auto-elevate under UAC if WinRM user has "Act as part of the
|
||||
operating system" privilege
|
||||
|
||||
Deprecations
|
||||
~~~~~~~~~~~~
|
||||
|
||||
- The behaviour when specifying ``--tags`` (or ``--skip-tags``)
|
||||
multiple times on the command line has changed so that the tags are
|
||||
merged together by default. See the documentation for how to
|
||||
temporarily use the old behaviour if needed:
|
||||
https://docs.ansible.com/ansible/intro\_configuration.html#merge-multiple-cli-tags
|
||||
- The ``fetch`` module's ``validate_md5`` parameter has been deprecated
|
||||
and will be removed in 2.8. If you wish to disable post-validation of
|
||||
the downloaded file, use validate\_checksum instead.
|
||||
- Those using ansible as a library should note that the
|
||||
``ansible.vars.unsafe_proxy`` module is deprecated and slated to go
|
||||
away in 2.8. The functionality has been moved to
|
||||
``ansible.utils.unsafe_proxy`` to avoid a circular import.
|
||||
- The win\_get\_url module has the dictionary 'win\_get\_url' in its
|
||||
results deprecated, its content is now also available directly in the
|
||||
resulting output, like other modules.
|
||||
- Previously deprecated 'hostfile' config settings have been
|
||||
're-deprecated' as before the code did not warn about deprecated
|
||||
configuration settings, but it does now.
|
||||
|
||||
Deprecated Modules (to be removed in 2.8):
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- azure: use M(azure\_rm\_virtualmachine) instead
|
||||
- cs\_nic: replaced by cs\_instance\_nic\_secondaryip, also see new
|
||||
module cs\_instance\_nic for managing nics
|
||||
- ec2\_facts: replaced by ec2\_metadata\_facts
|
||||
- ec2\_remote\_facts: replaced by ec2\_instance\_facts
|
||||
- panos\_address: use M(panos\_object) instead
|
||||
- panos\_nat\_policy: use M(panos\_nat\_rule) instead
|
||||
- panos\_security\_policy: use M(panos\_security\_rule) instead
|
||||
- panos\_service: use M(panos\_object) instead
|
||||
- s3: replaced by aws\_s3
|
||||
- win\_msi: use M(win\_package) instead
|
||||
|
||||
Removed Modules (previously deprecated):
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- eos\_template: use eos\_config instead
|
||||
- ios\_template: use ios\_config instead
|
||||
- iosxr\_template: use iosxr\_config instead
|
||||
- junos\_template: use junos\_config instead
|
||||
- nxos\_template: use nxos\_config instead
|
||||
- openswitch
|
||||
- ops\_template: use ops\_config instead
|
||||
|
||||
Minor Changes
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
- Now deprecated configuration options issue warnings when set.
|
||||
- Removed unused and deprecated config option ``pattern``
|
||||
- Updated the copy of six bundled for modules to use from 1.4.1 to
|
||||
1.10.0
|
||||
- The ``inventory_dir`` var is not a global anymore, as we now allow
|
||||
multiple inventory sources, it is now host dependant. This means it
|
||||
cannot be used wherever host vars are not permitted, for example in
|
||||
task/handler names.
|
||||
- Fixed a cornercase with ini inventory vars. Previously, if an
|
||||
inventory var was a quoted string with hash marks ("#") in it then
|
||||
the parsed string included the quotes. Now the string will not be
|
||||
quoted. Previously, if the quoting ended before the string finished
|
||||
and then the hash mark appeared, the hash mark was included as part
|
||||
of the string. Now it is treated as a trailing comment:
|
||||
|
||||
# Before: var1="string#comment" ===> var1: ""string#comment""
|
||||
var1="string" #comment ===> var1: ""string" #comment" # After:
|
||||
var1="string#comment" ===> var1: "string#comment" var1="string"
|
||||
#comment ===> var1: "string"
|
||||
|
||||
The new behaviour mirrors how the variables would appear if there was no
|
||||
hash mark in the string. \* As of 2.4.0, the fetch module fails if there
|
||||
are errors reading the remote file. Use ``ignore_errors`` or
|
||||
``failed_when`` in playbooks if you wish to ignore errors. \*
|
||||
Experimentally added pmrun become method. \* Enable the docker
|
||||
connection plugin to use su as a become method \* Add an encoding
|
||||
parameter for the replace module so that it can operate on non-utf-8
|
||||
files \* By default, Ansible now uses the cryptography module to
|
||||
implement vault instead of the older pycrypto module. \* Changed task
|
||||
state resulting from both ``rc`` and ``failed`` fields returned, 'rc' no
|
||||
longer overrides 'failed'. Test plugins have also been updated
|
||||
accordingly. \* The win\_unzip module no longer includes dictionary
|
||||
'win\_unzip' in its results, the content is now directly in the
|
||||
resulting output, like pretty much every other module. \* Rewrite of the
|
||||
copy module so that it handles cornercases with symbolic links and empty
|
||||
directories. The copy module has a new parameter, ``local_follow`` which
|
||||
controls how links on the source system are treated. (The older
|
||||
parameter, follow is for links on the remote system.) \* Update the
|
||||
handling of symbolic file permissions in file-related mode parameters to
|
||||
deal with multiple operators. For instance, ``mode='u=rw+x-X'`` to set
|
||||
the execute bit on directories, remove it from filea, and set read-write
|
||||
on both is now supported \* Added better cookie parsing to
|
||||
fetch\_url/open\_url. Cookies are now in a dictionary named ``cookies``
|
||||
in the fetch\_url result. Anything using ``open_url`` directly can pass
|
||||
a cookie object as a named arg (``cookies``), and then parse/format the
|
||||
cookies in the result. \* The bundled copy of six in
|
||||
lib/ansible/module\_utils/six is now used unconditionally. The code to
|
||||
fallback on a system six interfered with static analysis of the code so
|
||||
the cost of using the fallback code became too high. Distributions which
|
||||
wish to unbundle may do so by replacing the bundled six in
|
||||
ansible/module\_utils/six/\ **init**.py. Six is tricky to unbundle,
|
||||
however, so they may want to base their efforts off the code we were
|
||||
using: \*
|
||||
https://github.com/ansible/ansible/blob/2fff690caab6a1c6a81973f704be3fbd0bde2c2f/lib/ansible/module\_utils/six/\ **init**.py
|
||||
\* Update ipaddr Jinja filters to replace existing non RFC compliant
|
||||
ones. Added additional filters for easier use of handling IP addresses.
|
||||
(PR #26566) \* datetime filter updated to use default format of
|
||||
datetime.datetime (ISO8601) \* The junit plugin now has an option to
|
||||
report a junit test failure on changes for idempotent testing. \* New
|
||||
'diff' keyword allows setting diff mode on playbook objects, overriding
|
||||
command line option and config. \* New config settings for inventory to:
|
||||
- control inventory plugins used - extensions of files to ignore when
|
||||
using inventory directory - patterns of files to ignore when using
|
||||
inventory directory - option to toggle failed inventory source parsing
|
||||
between an error or a warning \* More fixes for Python 3 across the code
|
||||
base. \* win\_shell and win\_command modules now properly preserve
|
||||
quoted arguments passed on the command-line. Tasks that attempted to
|
||||
work around the issue by adding extra quotes/escaping may need to be
|
||||
reworked. See https://github.com/ansible/ansible/issues/23019 for
|
||||
additional detail. \* All configuration paths are now relative to the
|
||||
``ansible.cfg`` file used. \* By user request, a 'configuration macro'
|
||||
(``CWD``) is available to force configured paths to be relative to the
|
||||
current working directory. Please note that this is unsafe and not
|
||||
recommended.
|
||||
|
||||
New Callbacks:
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
- full\_skip
|
||||
- profile\_roles
|
||||
- stderr
|
||||
|
||||
New Filters:
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- parse\_cli
|
||||
- parse\_cli\_textfsm
|
||||
|
||||
New Inventory Plugins:
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- advanced\_host\_list
|
||||
- constructed
|
||||
- host\_list
|
||||
- ini
|
||||
- script
|
||||
- virtualbox
|
||||
- yaml
|
||||
|
||||
New Inventory scripts:
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- lxd
|
||||
|
||||
New: Tests
|
||||
^^^^^^^^^^
|
||||
|
||||
- ``any``: true if any element is true
|
||||
- ``all``: true if all elements are true
|
||||
|
||||
Module Notes
|
||||
~~~~~~~~~~~~
|
||||
|
||||
- The docker\_container module has gained a new option, ``working_dir``
|
||||
which allows specifying the working directory for the command being
|
||||
run in the image.
|
||||
- The ec2\_win\_password module now requires the cryptography python
|
||||
module be installed to run
|
||||
- The stat module added a field, lnk\_target. When the file being
|
||||
stated is a symlink, lnk\_target will contain the target of the link.
|
||||
This differs from lnk\_source when the target is specified relative
|
||||
to the symlink. In this case, lnk\_target will remain relative while
|
||||
lnk\_source will be expanded to an absolute path.
|
||||
- The archive module has a new parameter exclude\_path which lists
|
||||
paths to exclude from the archive
|
||||
- The yum module has a new parameter security which limits state=latest
|
||||
to security updates
|
||||
- The template module gained a follow parameter to match with copy and
|
||||
file. Like those modules, template defaults this parameter to False.
|
||||
Previously, template hardcoded this to true.
|
||||
- Added a new parameter to command module that lets users specify data
|
||||
to pipe into the command's stdin.
|
||||
- The azure\_rm modules now accept a ``cloud_environment`` arg to
|
||||
access regional and private clouds.
|
||||
- The azure\_rm modules and inventory script now require at least
|
||||
version 2.0.0 of the Azure Python SDK.
|
||||
|
||||
New Modules
|
||||
~~~~~~~~~~~
|
||||
|
||||
Cloud
|
||||
^^^^^
|
||||
|
||||
- amazon
|
||||
- aws\_api\_gateway
|
||||
- aws\_direct\_connect\_connection
|
||||
- aws\_direct\_connect\_link\_aggregation\_group
|
||||
- aws\_s3
|
||||
- aws\_s3\_bucket\_facts
|
||||
- aws\_waf\_facts
|
||||
- data\_pipeline
|
||||
- dynamodb\_ttl
|
||||
- ec2\_instance\_facts
|
||||
- ec2\_metadata\_facts
|
||||
- ec2\_vpc\_dhcp\_option\_facts
|
||||
- ec2\_vpc\_endpoint
|
||||
- ec2\_vpc\_endpoint\_facts
|
||||
- ec2\_vpc\_peering\_facts
|
||||
- ecs\_attribute
|
||||
- elb\_application\_lb
|
||||
- elb\_application\_lb\_facts
|
||||
- elb\_target\_group
|
||||
- elb\_target\_group\_facts
|
||||
- iam\_group
|
||||
- iam\_managed\_policy
|
||||
- lightsail
|
||||
- redshift\_facts
|
||||
- azure
|
||||
- azure\_rm\_acs
|
||||
- azure\_rm\_availabilityset
|
||||
- azure\_rm\_availabilityset\_facts
|
||||
- azure\_rm\_dnsrecordset
|
||||
- azure\_rm\_dnsrecordset\_facts
|
||||
- azure\_rm\_dnszone
|
||||
- azure\_rm\_dnszone\_facts
|
||||
- azure\_rm\_functionapp
|
||||
- azure\_rm\_functionapp\_facts
|
||||
- azure\_rm\_loadbalancer
|
||||
- azure\_rm\_loadbalancer\_facts
|
||||
- azure\_rm\_managed\_disk
|
||||
- azure\_rm\_managed\_disk\_facts
|
||||
- azure\_rm\_virtualmachine\_extension
|
||||
- azure\_rm\_virtualmachine\_scaleset
|
||||
- azure\_rm\_virtualmachine\_scaleset\_facts
|
||||
- atomic
|
||||
- atomic\_container
|
||||
- cloudstack
|
||||
- cs\_instance\_nic
|
||||
- cs\_instance\_nic\_secondaryip
|
||||
- cs\_network\_acl
|
||||
- cs\_network\_acl\_rule
|
||||
- cs\_storage\_pool
|
||||
- cs\_vpn\_gateway
|
||||
- digital\_ocean
|
||||
- digital\_ocean\_floating\_ip
|
||||
- docker
|
||||
- docker\_secret
|
||||
- docker\_volume
|
||||
- google
|
||||
- gce\_labels
|
||||
- gcp\_backend\_service
|
||||
- gcp\_forwarding\_rule
|
||||
- gcp\_healthcheck
|
||||
- gcp\_target\_proxy
|
||||
- gcp\_url\_map
|
||||
- misc
|
||||
- helm
|
||||
- ovirt
|
||||
- ovirt\_host\_storage\_facts
|
||||
- ovirt\_scheduling\_policies\_facts
|
||||
- ovirt\_storage\_connections
|
||||
- vmware
|
||||
- vcenter\_license
|
||||
- vmware\_guest\_find
|
||||
- vmware\_guest\_tools\_wait
|
||||
- vmware\_resource\_pool
|
||||
|
||||
Commands
|
||||
^^^^^^^^
|
||||
|
||||
- telnet
|
||||
|
||||
Crypto
|
||||
^^^^^^
|
||||
|
||||
- openssl\_certificate
|
||||
- openssl\_csr
|
||||
|
||||
Files
|
||||
^^^^^
|
||||
|
||||
- xml
|
||||
|
||||
Identity
|
||||
^^^^^^^^
|
||||
|
||||
- cyberark
|
||||
- cyberark\_authentication
|
||||
- cyberark\_user
|
||||
- ipa
|
||||
- ipa\_dnsrecord
|
||||
|
||||
Monitoring
|
||||
^^^^^^^^^^
|
||||
|
||||
- sensu\_client
|
||||
- sensu\_handler
|
||||
- sensu\_silence
|
||||
|
||||
Network
|
||||
^^^^^^^
|
||||
|
||||
- aci
|
||||
- aci\_aep
|
||||
- aci\_ap
|
||||
- aci\_bd
|
||||
- aci\_bd\_subnet
|
||||
- aci\_bd\_to\_l3out
|
||||
- aci\_contract
|
||||
- aci\_contract\_subject\_to\_filter
|
||||
- aci\_epg
|
||||
- aci\_epg\_monitoring\_policy
|
||||
- aci\_epg\_to\_contract
|
||||
- aci\_epg\_to\_domain
|
||||
- aci\_filter
|
||||
- aci\_filter\_entry
|
||||
- aci\_intf\_policy\_fc
|
||||
- aci\_intf\_policy\_l2
|
||||
- aci\_intf\_policy\_lldp
|
||||
- aci\_intf\_policy\_mcp
|
||||
- aci\_intf\_policy\_port\_channel
|
||||
- aci\_intf\_policy\_port\_security
|
||||
- aci\_l3out\_route\_tag\_policy
|
||||
- aci\_rest
|
||||
- aci\_taboo\_contract
|
||||
- aci\_tenant
|
||||
- aci\_tenant\_action\_rule\_profile
|
||||
- aci\_tenant\_span\_dst\_group
|
||||
- aci\_vrf
|
||||
- aireos
|
||||
- aireos\_command
|
||||
- aireos\_config
|
||||
- aruba
|
||||
- aruba\_command
|
||||
- aruba\_config
|
||||
- avi
|
||||
- avi\_actiongroupconfig
|
||||
- avi\_alertconfig
|
||||
- avi\_alertemailconfig
|
||||
- avi\_alertscriptconfig
|
||||
- avi\_alertsyslogconfig
|
||||
- avi\_authprofile
|
||||
- avi\_backup
|
||||
- avi\_backupconfiguration
|
||||
- avi\_cloud
|
||||
- avi\_cloudconnectoruser
|
||||
- avi\_cloudproperties
|
||||
- avi\_cluster
|
||||
- avi\_controllerproperties
|
||||
- avi\_dnspolicy
|
||||
- avi\_gslb
|
||||
- avi\_gslbapplicationpersistenceprofile
|
||||
- avi\_gslbgeodbprofile
|
||||
- avi\_gslbhealthmonitor
|
||||
- avi\_gslbservice
|
||||
- avi\_hardwaresecuritymodulegroup
|
||||
- avi\_httppolicyset
|
||||
- avi\_ipaddrgroup
|
||||
- avi\_ipamdnsproviderprofile
|
||||
- avi\_microservicegroup
|
||||
- avi\_network
|
||||
- avi\_networksecuritypolicy
|
||||
- avi\_poolgroupdeploymentpolicy
|
||||
- avi\_prioritylabels
|
||||
- avi\_scheduler
|
||||
- avi\_seproperties
|
||||
- avi\_serverautoscalepolicy
|
||||
- avi\_serviceengine
|
||||
- avi\_serviceenginegroup
|
||||
- avi\_snmptrapprofile
|
||||
- avi\_stringgroup
|
||||
- avi\_trafficcloneprofile
|
||||
- avi\_useraccountprofile
|
||||
- avi\_vrfcontext
|
||||
- avi\_vsdatascriptset
|
||||
- avi\_vsvip
|
||||
- avi\_webhook
|
||||
- bigswitch
|
||||
- bcf\_switch
|
||||
- cloudengine
|
||||
- ce\_aaa\_server
|
||||
- ce\_aaa\_server\_host
|
||||
- ce\_acl
|
||||
- ce\_acl\_advance
|
||||
- ce\_acl\_interface
|
||||
- ce\_bfd\_global
|
||||
- ce\_bfd\_session
|
||||
- ce\_bfd\_view
|
||||
- ce\_bgp
|
||||
- ce\_bgp\_af
|
||||
- ce\_bgp\_neighbor
|
||||
- ce\_bgp\_neighbor\_af
|
||||
- ce\_config
|
||||
- ce\_dldp
|
||||
- ce\_dldp\_interface
|
||||
- ce\_eth\_trunk
|
||||
- ce\_evpn\_bd\_vni
|
||||
- ce\_evpn\_bgp
|
||||
- ce\_evpn\_bgp\_rr
|
||||
- ce\_evpn\_global
|
||||
- ce\_facts
|
||||
- ce\_file\_copy
|
||||
- ce\_info\_center\_debug
|
||||
- ce\_info\_center\_global
|
||||
- ce\_info\_center\_log
|
||||
- ce\_info\_center\_trap
|
||||
- ce\_interface
|
||||
- ce\_interface\_ospf
|
||||
- ce\_ip\_interface
|
||||
- ce\_link\_status
|
||||
- ce\_mlag\_config
|
||||
- ce\_mlag\_interface
|
||||
- ce\_mtu
|
||||
- ce\_netconf
|
||||
- ce\_netstream\_aging
|
||||
- ce\_netstream\_export
|
||||
- ce\_netstream\_global
|
||||
- ce\_netstream\_template
|
||||
- ce\_ntp
|
||||
- ce\_ntp\_auth
|
||||
- ce\_ospf
|
||||
- ce\_ospf\_vrf
|
||||
- ce\_reboot
|
||||
- ce\_rollback
|
||||
- ce\_sflow
|
||||
- ce\_snmp\_community
|
||||
- ce\_snmp\_contact
|
||||
- ce\_snmp\_location
|
||||
- ce\_snmp\_target\_host
|
||||
- ce\_snmp\_traps
|
||||
- ce\_snmp\_user
|
||||
- ce\_startup
|
||||
- ce\_static\_route
|
||||
- ce\_stp
|
||||
- ce\_switchport
|
||||
- ce\_vlan
|
||||
- ce\_vrf
|
||||
- ce\_vrf\_af
|
||||
- ce\_vrf\_interface
|
||||
- ce\_vrrp
|
||||
- ce\_vxlan\_arp
|
||||
- ce\_vxlan\_gateway
|
||||
- ce\_vxlan\_global
|
||||
- ce\_vxlan\_tunnel
|
||||
- ce\_vxlan\_vap
|
||||
- cloudvision
|
||||
- cv\_server\_provision
|
||||
- eos
|
||||
- eos\_logging
|
||||
- eos\_vlan
|
||||
- eos\_vrf
|
||||
- f5
|
||||
- bigip\_command
|
||||
- bigip\_config
|
||||
- bigip\_configsync\_actions
|
||||
- bigip\_gtm\_pool
|
||||
- bigip\_iapp\_service
|
||||
- bigip\_iapp\_template
|
||||
- bigip\_monitor\_tcp\_echo
|
||||
- bigip\_monitor\_tcp\_half\_open
|
||||
- bigip\_provision
|
||||
- bigip\_qkview
|
||||
- bigip\_snmp
|
||||
- bigip\_snmp\_trap
|
||||
- bigip\_ucs
|
||||
- bigip\_user
|
||||
- bigip\_virtual\_address
|
||||
- fortios
|
||||
- fortios\_address
|
||||
- interface
|
||||
- net\_interface
|
||||
- net\_linkagg
|
||||
- net\_lldp\_interface
|
||||
- ios
|
||||
- ios\_interface
|
||||
- ios\_logging
|
||||
- ios\_static\_route
|
||||
- ios\_user
|
||||
- iosxr
|
||||
- iosxr\_banner
|
||||
- iosxr\_interface
|
||||
- iosxr\_logging
|
||||
- iosxr\_user
|
||||
- junos
|
||||
- junos\_banner
|
||||
- junos\_interface
|
||||
- junos\_l3\_interface
|
||||
- junos\_linkagg
|
||||
- junos\_lldp
|
||||
- junos\_lldp\_interface
|
||||
- junos\_logging
|
||||
- junos\_static\_route
|
||||
- junos\_system
|
||||
- junos\_vlan
|
||||
- junos\_vrf
|
||||
- layer2
|
||||
- net\_l2\_interface
|
||||
- net\_vlan
|
||||
- layer3
|
||||
- net\_l3\_interface
|
||||
- net\_vrf
|
||||
- netscaler
|
||||
- netscaler\_cs\_action
|
||||
- netscaler\_cs\_policy
|
||||
- netscaler\_cs\_vserver
|
||||
- netscaler\_gslb\_service
|
||||
- netscaler\_gslb\_site
|
||||
- netscaler\_gslb\_vserver
|
||||
- netscaler\_lb\_monitor
|
||||
- netscaler\_lb\_vserver
|
||||
- netscaler\_save\_config
|
||||
- netscaler\_server
|
||||
- netscaler\_service
|
||||
- netscaler\_servicegroup
|
||||
- netscaler\_ssl\_certkey
|
||||
- nuage
|
||||
- nuage\_vspk
|
||||
- nxos
|
||||
- nxos\_banner
|
||||
- nxos\_logging
|
||||
- panos
|
||||
- panos\_nat\_rule
|
||||
- panos\_object
|
||||
- panos\_security\_rule
|
||||
- protocol
|
||||
- net\_lldp
|
||||
- routing
|
||||
- net\_static\_route
|
||||
- system
|
||||
- net\_banner
|
||||
- net\_logging
|
||||
- net\_system
|
||||
- net\_user
|
||||
- vyos
|
||||
- vyos\_banner
|
||||
- vyos\_interface
|
||||
- vyos\_l3\_interface
|
||||
- vyos\_linkagg
|
||||
- vyos\_lldp
|
||||
- vyos\_lldp\_interface
|
||||
- vyos\_logging
|
||||
- vyos\_static\_route
|
||||
- vyos\_user
|
||||
|
||||
Notification
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- bearychat
|
||||
- catapult
|
||||
- office\_365\_connector\_card
|
||||
|
||||
Remote Management
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
- hpe
|
||||
- oneview\_fc\_network
|
||||
- imc
|
||||
- imc\_rest
|
||||
- manageiq
|
||||
- manageiq\_user
|
||||
|
||||
Source Control
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
- github\_deploy\_key
|
||||
- github\_issue
|
||||
|
||||
Storage
|
||||
^^^^^^^
|
||||
|
||||
- nuage\_vpsk
|
||||
- panos
|
||||
- panos\_sag
|
||||
- purestorage
|
||||
- purefa\_hg
|
||||
- purefa\_host
|
||||
- purefa\_pg
|
||||
- purefa\_snap
|
||||
- purefa\_volume
|
||||
|
||||
System
|
||||
^^^^^^
|
||||
|
||||
- aix\_lvol
|
||||
- awall
|
||||
- dconf
|
||||
- interfaces\_file
|
||||
|
||||
Web Infrastructure
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- gunicorn
|
||||
- rundeck\_acl\_policy
|
||||
- rundeck\_project
|
||||
|
||||
Windows
|
||||
^^^^^^^
|
||||
|
||||
- win\_defrag
|
||||
- win\_domain\_group
|
||||
- win\_domain\_user
|
||||
- win\_dsc
|
||||
- win\_eventlog
|
||||
- win\_eventlog\_entry
|
||||
- win\_firewall
|
||||
- win\_group\_membership
|
||||
- win\_hotfix
|
||||
- win\_mapped\_drive
|
||||
- win\_pagefile
|
||||
- win\_power\_plan
|
||||
- win\_psmodule
|
||||
- win\_rabbitmq\_plugin
|
||||
- win\_route
|
||||
- win\_security\_policy
|
||||
- win\_toast
|
||||
- win\_user\_right
|
||||
- win\_wait\_for
|
||||
- win\_wakeonlan
|
||||
704
changelogs/CHANGELOG-v2.5.rst
Normal file
704
changelogs/CHANGELOG-v2.5.rst
Normal file
@ -0,0 +1,704 @@
|
||||
===================================
|
||||
Ansible 2.5 "Kashmir" Release Notes
|
||||
===================================
|
||||
|
||||
v2.5.0rc1
|
||||
=========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2018-02-22
|
||||
| Estimated Final Release: mid-March 2018
|
||||
| `Porting Guide <http://docs.ansible.com/ansible/devel/porting_guides.html>`_
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- aci_* modules - added signature based authentication
|
||||
|
||||
- aci_* modules - included dedicated ACI documentation
|
||||
|
||||
- aci_* modules - improved ACI return values
|
||||
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- Apstra's ``aos_*`` modules are deprecated as they do not work with AOS 2.1 or higher. See new modules at `https://github.com/apstra <https://github.com/apstra>`_.
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- include_role - improved performance and recursion depth (https://github.com/ansible/ansible/pull/36470)
|
||||
|
||||
- lineinfile - fixed regexp used with insert(before|after) inserting duplicate lines (https://github.com/ansible/ansible/pull/36156)
|
||||
|
||||
- Fix for ansible_*_interpreter on Python3 when using non-newstyle modules. Those include old-style ansible modules and Ansible modules written in non-python scripting languages (https://github.com/ansible/ansible/pull/36541)
|
||||
|
||||
- fix for ansible-vault always requesting passwords (https://github.com/ansible/ansible/issues/33027)
|
||||
|
||||
- ios CLI - fixed prompt detection (https://github.com/ansible/ansible/issues/35662)
|
||||
|
||||
- nxos_user - fixed structured output issue (https://github.com/ansible/ansible/pull/36193)
|
||||
|
||||
- nxos_* modules - various fixes (https://github.com/ansible/ansible/pull/36340)
|
||||
|
||||
- nxos_* modules - various fixes (https://github.com/ansible/ansible/pull/36374)
|
||||
|
||||
- nxos_install_os - kickstart_image_file is no longer required (https://github.com/ansible/ansible/pull/36319)
|
||||
|
||||
- script/patch - fixed tempfile ownership issues (https://github.com/ansible/ansible/issues/36398)
|
||||
|
||||
- nxos_bgp_neighbor - fixed various module arg issues (https://github.com/ansible/ansible/pull/36318)
|
||||
|
||||
- vyos_l3_interface - fixed issues with multiple addresses on an interface (https://github.com/ansible/ansible/pull/36377)
|
||||
|
||||
- nxos_banner - fixed issues with unstructured output (https://github.com/ansible/ansible/pull/36411)
|
||||
|
||||
- nxos_bgp_neighbor_af - fixed various issues (https://github.com/ansible/ansible/pull/36472)
|
||||
|
||||
- vyos_config - fixed IndexError in sanitize_config (https://github.com/ansible/ansible/pull/36375)
|
||||
|
||||
- cs_user - fixed user_api_secret return for ACS 4.10+ (https://github.com/ansible/ansible/pull/36447)
|
||||
|
||||
- nxos_* modules - various fixes (https://github.com/ansible/ansible/pull/36514)
|
||||
|
||||
- fix cases where INVENTORY_UNPARSED_IS_FAILED didn't fail (https://github.com/ansible/ansible/issues/36034)
|
||||
|
||||
- aws_ses_identity - fixed failure on missing identity info (https://github.com/ansible/ansible/issues/36065)
|
||||
|
||||
- ec2_vpc_net_facts - fixed traceback for regions other than us-east-1 (https://github.com/ansible/ansible/pull/35302)
|
||||
|
||||
- aws_waf_* - fixed traceback on WAFStaleDataException (https://github.com/ansible/ansible/pull/36405)
|
||||
|
||||
- ec2_group - fixed check_mode when using tags (https://github.com/ansible/ansible/pull/36503)
|
||||
|
||||
- loop item labels will now update if templated (https://github.com/ansible/ansible/pull/36430)
|
||||
|
||||
- win_feature - will display a more helpful error when it fails during execution (https://github.com/ansible/ansible/pull/36491)
|
||||
|
||||
|
||||
v2.5.0b2
|
||||
========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2018-02-15
|
||||
|
||||
|
||||
Major Changes
|
||||
-------------
|
||||
|
||||
- New simpler and more intuitive 'loop' keyword for task loops. The ``with_<lookup>`` loops will likely be deprecated in the near future and eventually removed.
|
||||
|
||||
- Added fact namespacing; from now on facts will be available under ``ansible_facts`` namespace (for example: ``ansible_facts.os_distribution``)
|
||||
without the ``ansible_`` prefix. They will continue to be added into the main namespace directly, but now with a configuration toggle to
|
||||
enable this. This is currently on by default, but in the future it will default to off.
|
||||
|
||||
- Added a configuration file that a site administrator can use to specify modules to exclude from being used.
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-inventory - now supports a ``--export`` option to preserve group_var data (https://github.com/ansible/ansible/pull/36188)
|
||||
|
||||
- Added a few new magic vars corresponding to configuration/command
|
||||
line options: ``ansible_diff_mode``, ``ansible_inventory_sources``,
|
||||
``ansible_limit``, ``ansible_run_tags`` , ``ansible_forks`` and
|
||||
``ansible_skip_tags``
|
||||
|
||||
- Updated the bundled copy of the six library to 1.11.0
|
||||
|
||||
- Added support to ``become`` ``NT AUTHORITY\System``,
|
||||
``NT AUTHORITY\LocalService``, and ``NT AUTHORITY\NetworkService`` on Windows hosts
|
||||
|
||||
- Fixed ``become`` to work with async on Windows hosts
|
||||
|
||||
- Improved ``become`` elevation process to work on standard
|
||||
Administrator users without disabling UAC on Windows hosts
|
||||
|
||||
- The jenkins\_plugin and yum\_repository plugins had their ``params``
|
||||
option removed because they circumvented Ansible's option processing.
|
||||
|
||||
- The combine filter now accepts a list of dicts as well as dicts directly
|
||||
|
||||
- New CLI options for ansible-inventory, ansible-console and ansible to
|
||||
allow specifying a playbook\_dir to be used for relative search
|
||||
paths.
|
||||
|
||||
- `The `stat`` and ``win_stat`` modules have changed the default value of
|
||||
``get_md5`` to ``False`` which will result in the ``md5`` return
|
||||
value not being returned. This option will be removed altogether in
|
||||
Ansible 2.9. Use ``get_checksum: True`` with
|
||||
``checksum_algorithm: md5`` to return an md5 hash of the file under
|
||||
the ``checksum`` return value.
|
||||
|
||||
- The ``osx_say`` module was renamed into ``say``.
|
||||
|
||||
- Task debugger functionality was moved into ``StrategyBase``, and
|
||||
extended to allow explicit invocation from use of the ``debugger``
|
||||
keyword. The ``debug`` strategy is still functional, and is now just
|
||||
a trigger to enable this functionality.
|
||||
|
||||
- The documentation has undergone a major overhaul. Content has been moved into
|
||||
targeted guides; the table of contents has been cleaned up and streamlined;
|
||||
the CSS theme has been updated to a custom version of the most recent
|
||||
ReadTheDocs theme, and the underlying directory structure for the RST files
|
||||
has been reorganized.
|
||||
|
||||
- The ANSIBLE\_REMOTE\_TMP environment variable has been added to
|
||||
supplement (and override) ANSIBLE\_REMOTE\_TEMP. This matches with
|
||||
the spelling of the config value. ANSIBLE\_REMOTE\_TEMP will be
|
||||
deprecated in the future.
|
||||
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- Previously deprecated 'hostfile' config settings have been
|
||||
're-deprecated' because previously code did not warn about deprecated
|
||||
configuration settings.
|
||||
|
||||
- Using Ansible-provided Jinja tests as filters is deprecated and will
|
||||
be removed in Ansible 2.9.
|
||||
|
||||
- The ``stat`` and ``win_stat`` modules have deprecated ``get_md5`` and the ``md5``
|
||||
return values. These options will become undocumented in Ansible
|
||||
2.9 and removed in a later version.
|
||||
|
||||
- The ``redis_kv`` lookup has been deprecated in favor of new ``redis`` lookup
|
||||
|
||||
- Passing arbitrary parameters that begin with ``HEADER_`` to the uri
|
||||
module, used for passing http headers, is deprecated. Use the
|
||||
``headers`` parameter with a dictionary of header names to value
|
||||
instead. This will be removed in Ansible 2.9
|
||||
|
||||
- Passing arbitrary parameters to the zfs module to set zfs properties
|
||||
is deprecated. Use the ``extra_zfs_properties`` parameter with a
|
||||
dictionary of property names to values instead. This will be removed
|
||||
in Ansible 2.9.
|
||||
|
||||
- Use of the AnsibleModule parameter ``check\_invalid\_arguments`` in custom modules is deprecated. In the future, all parameters will be
|
||||
checked to see whether they are listed in the arg spec and an error raised if they are not listed. This behaviour is the current and
|
||||
future default so most custom modules can simply remove ``check\_invalid\_arguments`` if they set it to the default value of True.
|
||||
The ``check\_invalid\_arguments`` parameter will be removed in Ansible 2.9.
|
||||
|
||||
- The nxos\_ip\_interface module is deprecated in Ansible 2.5. Use nxos\_l3\_interface module instead.
|
||||
|
||||
- The nxos\_portchannel module is deprecated in Ansible 2.5. Use nxos\_linkagg module instead.
|
||||
|
||||
- The nxos\_switchport module is deprecated in Ansible 2.5. Use nxos\_l2\_interface module instead.
|
||||
|
||||
- The ec2\_ami\_find has been deprecated; use ec2\_ami\_facts instead.
|
||||
|
||||
- panos\_security\_policy: Use panos\_security\_rule - the old module uses deprecated API calls
|
||||
|
||||
- vsphere\_guest is deprecated in Ansible 2.5 and will be removed in Ansible-2.9. Use vmware\_guest module instead.
|
||||
|
||||
|
||||
Removed Features (previously deprecated)
|
||||
----------------------------------------
|
||||
|
||||
- accelerate.
|
||||
|
||||
- boundary\_meter: There was no deprecation period for this but the
|
||||
hosted service it relied on has gone away so the module has been
|
||||
removed. `#29387 <https://github.com/ansible/ansible/issues/29387>`__
|
||||
|
||||
- cl\_ : cl\_interface, cl\_interface\_policy, cl\_bridge,
|
||||
cl\_img\_install, cl\_ports, cl\_license, cl\_bond. Use ``nclu``
|
||||
instead
|
||||
|
||||
- docker. Use docker\_container and docker\_image instead.
|
||||
|
||||
- ec2\_vpc.
|
||||
|
||||
- ec2\_ami\_search, use ec2\_ami\_facts instead.
|
||||
|
||||
- nxos\_mtu. Use nxos\_system's ``system_mtu`` option instead. To specify an interface's MTU use nxos\_interface.
|
||||
|
||||
- panos\_nat\_policy: Use panos\_nat\_rule the old module uses deprecated API calls
|
||||
|
||||
|
||||
New Lookup Plugins
|
||||
------------------
|
||||
|
||||
- aws\_account\_attribute: Query AWS account attributes such as EC2-Classic availability
|
||||
|
||||
- aws\_service\_ip\_ranges: Query AWS IP ranges for services such as EC2/S3
|
||||
|
||||
- aws\_ssm: Query AWS ssm data
|
||||
|
||||
- config: Lookup Ansible settings
|
||||
|
||||
- conjur\_variable: Fetch credentials from CyberArk Conjur
|
||||
|
||||
- k8s: Query the K8s API
|
||||
|
||||
- nios: Query Infoblox NIOS objects
|
||||
|
||||
- openshift: Return info from Openshift installation
|
||||
|
||||
- redis: look up date from Redis DB, deprecates the redis\_kv one.
|
||||
|
||||
|
||||
New Callback Plugins
|
||||
--------------------
|
||||
|
||||
- null
|
||||
|
||||
- unixy
|
||||
|
||||
- yaml
|
||||
|
||||
|
||||
New Connection Plugins
|
||||
----------------------
|
||||
|
||||
- kubectl
|
||||
|
||||
- oc
|
||||
|
||||
- netconf
|
||||
|
||||
- network\_cli
|
||||
- The existing network\_cli and netconf connection plugins can now be used directly with network modules. See
|
||||
`Network Best Practices for Ansible 2.5 <http://docs.ansible.com/ansible/devel/network_best_practices_2.5.html>`_ for more details.
|
||||
|
||||
|
||||
New Filter Plugins
|
||||
------------------
|
||||
|
||||
- parse\_xml
|
||||
|
||||
|
||||
New Modules
|
||||
-----------
|
||||
|
||||
- Cloud (amazon)
|
||||
- aws\_acm\_facts
|
||||
- aws\_application\_scaling\_policy
|
||||
- aws\_az\_facts
|
||||
- aws\_batch\_compute\_environment
|
||||
- aws\_batch\_job\_definition
|
||||
- aws\_batch\_job\_queue
|
||||
- aws\_direct\_connect\_gateway
|
||||
- aws\_direct\_connect\_virtual\_interface
|
||||
- aws\_elasticbeanstalk\_app
|
||||
- aws\_kms\_facts
|
||||
- aws\_region\_facts
|
||||
- aws\_s3\_cors
|
||||
- aws\_ses\_identity
|
||||
- aws\_ssm\_parameter\_store
|
||||
- aws\_waf\_condition
|
||||
- aws\_waf\_rule
|
||||
- aws\_waf\_web\_acl
|
||||
- cloudfront\_distribution
|
||||
- cloudfront\_invalidation
|
||||
- cloudfront\_origin\_access\_identity
|
||||
- cloudwatchlogs\_log\_group
|
||||
- cloudwatchlogs\_log\_group\_facts
|
||||
- ec2\_ami\_facts
|
||||
- ec2\_asg\_lifecycle\_hook
|
||||
- ec2\_customer\_gateway\_facts
|
||||
- ec2\_instance
|
||||
- ec2\_placement\_group
|
||||
- ec2\_placement\_group\_facts
|
||||
- ec2\_vpc\_egress\_igw
|
||||
- ecs\_taskdefinition\_facts
|
||||
- elasticache\_facts
|
||||
- elb\_target
|
||||
- iam\_role\_facts
|
||||
- iam\_user
|
||||
|
||||
- Cloud (azure)
|
||||
- azure\_rm\_containerinstance
|
||||
- azure\_rm\_containerregistry
|
||||
- azure\_rm\_image
|
||||
- azure\_rm\_keyvault
|
||||
- azure\_rm\_keyvaultkey
|
||||
- azure\_rm\_keyvaultsecret
|
||||
- azure\_rm\_mysqldatabase
|
||||
- azure\_rm\_mysqlserve
|
||||
- azure\_rm\_postgresqldatabase
|
||||
- azure\_rm\_postgresqlserver
|
||||
- azure\_rm\_sqldatabase
|
||||
- azure\_rm\_sqlserver
|
||||
- azure\_rm\_sqlserver\_facts
|
||||
|
||||
- Cloud (cloudstack)
|
||||
- cs\_network\_offering
|
||||
- cs\_service\_offering
|
||||
- cs\_vpc\_offering
|
||||
- cs\_vpn\_connection
|
||||
- cs\_vpn\_customer\_gateway
|
||||
|
||||
- Cloud (digital\_ocean)
|
||||
- digital\_ocean\_certificate
|
||||
- digital\_ocean\_floating\_ip\_facts
|
||||
- digital\_ocean\_sshkey\_facts
|
||||
|
||||
- Cloud (google)
|
||||
- gcp\_dns\_managed\_zone
|
||||
|
||||
- Cloud (misc)
|
||||
- cloudscale\_floating\_ip
|
||||
- spotinst\_aws\_elastigroup
|
||||
- terraform
|
||||
|
||||
- Cloud (oneandone)
|
||||
- oneandone\_firewall\_policy
|
||||
- oneandone\_load\_balancer
|
||||
- oneandone\_monitoring\_policy
|
||||
- oneandone\_private\_network
|
||||
- oneandone\_public\_ip
|
||||
- oneandone\_server
|
||||
|
||||
- Cloud (openstack)
|
||||
- os\_keystone\_endpoint
|
||||
- os\_project\_access
|
||||
|
||||
- Cloud (ovirt)
|
||||
- ovirt\_api\_facts
|
||||
- ovirt\_disk\_facts
|
||||
|
||||
- Cloud (vmware)
|
||||
- vcenter\_folder
|
||||
- vmware\_cfg\_backup
|
||||
- vmware\_datastore\_facts
|
||||
- vmware\_drs\_rule\_facts
|
||||
- vmware\_guest\_file\_operation
|
||||
- vmware\_guest\_powerstate
|
||||
- vmware\_host\_acceptance
|
||||
- vmware\_host\_config\_facts
|
||||
- vmware\_host\_config\_manager
|
||||
- vmware\_host\_datastore
|
||||
- vmware\_host\_dns\_facts
|
||||
- vmware\_host\_facts
|
||||
- vmware\_host\_firewall\_facts
|
||||
- vmware\_host\_firewall\_manager
|
||||
- vmware\_host\_lockdown
|
||||
- vmware\_host\_ntp
|
||||
- vmware\_host\_package\_facts
|
||||
- vmware\_host\_service\_facts
|
||||
- vmware\_host\_service\_manager
|
||||
- vmware\_host\_vmnic\_facts
|
||||
- vmware\_local\_role\_manager
|
||||
- vmware\_vm\_vm\_drs\_rule
|
||||
- vmware\_vmkernel\_facts
|
||||
|
||||
- Cloud (vultr)
|
||||
- vr\_account\_facts
|
||||
- vr\_dns\_domain
|
||||
- vr\_dns\_record
|
||||
- vr\_firewall\_group
|
||||
- vr\_firewall\_rule
|
||||
- vr\_server
|
||||
- vr\_ssh\_key
|
||||
- vr\_startup\_script
|
||||
- vr\_user
|
||||
|
||||
- Clustering
|
||||
- etcd3
|
||||
- k8s
|
||||
- k8s\_raw
|
||||
- k8s\_scale
|
||||
- openshift
|
||||
- openshift\_raw
|
||||
- openshift\_scale
|
||||
|
||||
- Crypto
|
||||
- openssl\_dhparam
|
||||
|
||||
- Database
|
||||
- influxdb
|
||||
- influxdb\_query
|
||||
- influxdb\_user
|
||||
- influxdb\_write
|
||||
|
||||
- Identity
|
||||
- ipa
|
||||
- ipa\_dnszone
|
||||
- ipa\_service
|
||||
- ipa\_subca
|
||||
- keycloak
|
||||
- keycloak\_client
|
||||
- keycloak\_clienttemplate
|
||||
|
||||
- Monitoring
|
||||
- grafana\_dashboard
|
||||
- grafana\_datasource
|
||||
- grafana\_plugin
|
||||
- icinga2\_host
|
||||
- zabbix
|
||||
- zabbix\_proxy
|
||||
- zabbix\_template
|
||||
|
||||
- Net Tools
|
||||
- ip\_netns
|
||||
- nios
|
||||
- nios\_dns\_view
|
||||
- nios\_host\_record
|
||||
- nios\_network
|
||||
- nios\_network\_view
|
||||
- nios\_zone
|
||||
|
||||
- Network (aci)
|
||||
- aci\_aaa\_user
|
||||
- aci\_aaa\_user\_certificate
|
||||
- aci\_access\_port\_to\_interface\_policy\_leaf\_profile
|
||||
- aci\_aep\_to\_domain
|
||||
- aci\_domain
|
||||
- aci\_domain\_to\_encap\_pool
|
||||
- aci\_domain\_to\_vlan\_pool
|
||||
- aci\_encap\_pool
|
||||
- aci\_encap\_pool\_range
|
||||
- aci\_fabric\_node
|
||||
- aci\_firmware\_source
|
||||
- aci\_interface\_policy\_leaf\_policy\_group
|
||||
- aci\_interface\_policy\_leaf\_profile
|
||||
- aci\_interface\_selector\_to\_switch\_policy\_leaf\_profile
|
||||
- aci\_static\_binding\_to\_epg
|
||||
- aci\_switch\_leaf\_selector
|
||||
- aci\_switch\_policy\_leaf\_profile
|
||||
- aci\_switch\_policy\_vpc\_protection\_group
|
||||
- aci\_vlan\_pool
|
||||
- aci\_vlan\_pool\_encap\_block
|
||||
|
||||
- Network (avi)
|
||||
- avi\_api\_version
|
||||
- avi\_clusterclouddetails
|
||||
- avi\_customipamdnsprofile
|
||||
- avi\_errorpagebody
|
||||
- avi\_errorpageprofile
|
||||
- avi\_gslbservice\_patch\_member
|
||||
- avi\_wafpolicy
|
||||
- avi\_wafprofile
|
||||
|
||||
- Network (dimension data)
|
||||
- dimensiondata\_vlan
|
||||
|
||||
- Network (edgeos)
|
||||
- edgeos\_command
|
||||
- edgeos\_config
|
||||
- edgeos\_facts
|
||||
|
||||
- Network (enos)
|
||||
- enos\_command
|
||||
- enos\_config
|
||||
- enos\_facts
|
||||
|
||||
- Network (eos)
|
||||
- eos\_interface
|
||||
- eos\_l2\_interface
|
||||
- eos\_l3\_interface
|
||||
- eos\_linkagg
|
||||
- eos\_lldp
|
||||
- eos\_static\_route
|
||||
|
||||
- Network (f5)
|
||||
- bigip\_asm\_policy
|
||||
- bigip\_device\_connectivity
|
||||
- bigip\_device\_group
|
||||
- bigip\_device\_group\_member
|
||||
- bigip\_device\_httpd
|
||||
- bigip\_device\_trust
|
||||
- bigip\_gtm\_server
|
||||
- bigip\_iapplx\_package
|
||||
- bigip\_monitor\_http
|
||||
- bigip\_monitor\_https
|
||||
- bigip\_monitor\_snmp\_dca
|
||||
- bigip\_monitor\_udp
|
||||
- bigip\_partition
|
||||
- bigip\_policy
|
||||
- bigip\_policy\_rule
|
||||
- bigip\_profile\_client\_ssl
|
||||
- bigip\_remote\_syslog
|
||||
- bigip\_security\_address\_list
|
||||
- bigip\_security\_port\_list
|
||||
- bigip\_software\_update
|
||||
- bigip\_ssl\_key
|
||||
- bigip\_static\_route
|
||||
- bigip\_traffic\_group
|
||||
- bigip\_ucs\_fetch
|
||||
- bigip\_vcmp\_guest
|
||||
- bigip\_wait
|
||||
- bigiq\_regkey\_license
|
||||
- bigiq\_regkey\_pool
|
||||
|
||||
- Network (fortimanager)
|
||||
- fmgr\_script
|
||||
|
||||
- Network (ios)
|
||||
- ios\_l2\_interface
|
||||
- ios\_l3\_interface
|
||||
- ios\_linkagg
|
||||
- ios\_lldp
|
||||
- ios\_vlan
|
||||
|
||||
- Network (iosxr)
|
||||
- iosxr\_netconf
|
||||
|
||||
- Network (ironware)
|
||||
- ironware\_command
|
||||
- ironware\_config
|
||||
- ironware\_facts
|
||||
|
||||
- Network (junos)
|
||||
- junos\_l2\_interface
|
||||
- junos\_scp
|
||||
|
||||
- Network (netact)
|
||||
- netact\_cm\_command
|
||||
|
||||
- Network (netscaler)
|
||||
- netscaler\_nitro\_request
|
||||
|
||||
- Network (nso)
|
||||
- nso\_action
|
||||
- nso\_config
|
||||
- nso\_query
|
||||
- nso\_show
|
||||
- nso\_verify
|
||||
|
||||
- Network (nxos)
|
||||
- nxos\_l2\_interface
|
||||
- nxos\_l3\_interface
|
||||
- nxos\_linkagg
|
||||
- nxos\_lldp
|
||||
|
||||
- Network (onyx)
|
||||
- onyx\_bgp
|
||||
- onyx\_command
|
||||
- onyx\_config
|
||||
- onyx\_facts
|
||||
- onyx\_interface
|
||||
- onyx\_l2\_interface
|
||||
- onyx\_l3\_interface
|
||||
- onyx\_linkagg
|
||||
- onyx\_lldp
|
||||
- onyx\_lldp\_interface
|
||||
- onyx\_magp
|
||||
- onyx\_mlag\_ipl
|
||||
- onyx\_mlag\_vip
|
||||
- onyx\_ospf
|
||||
- onyx\_pfc\_interface
|
||||
- onyx\_protocol
|
||||
- onyx\_vlan
|
||||
|
||||
- Network (panos)
|
||||
- panos\_dag\_tags
|
||||
- panos\_match\_rule
|
||||
- panos\_op
|
||||
- panos\_query\_rules
|
||||
|
||||
- Network (radware)
|
||||
- vdirect\_commit
|
||||
- vdirect\_runnable
|
||||
|
||||
- Network (vyos)
|
||||
- vyos\_vlan
|
||||
|
||||
- Notification
|
||||
- logentries\_msg
|
||||
- say
|
||||
- snow\_record
|
||||
|
||||
- Packaging
|
||||
- os
|
||||
- package\_facts
|
||||
- rhsm\_repository
|
||||
|
||||
- Remote Management (manageiq)
|
||||
- manageiq\_alert\_profiles
|
||||
- manageiq\_alerts
|
||||
- manageiq\_policies
|
||||
- manageiq\_tags
|
||||
|
||||
- Remote Management (oneview)
|
||||
- oneview\_datacenter\_facts
|
||||
- oneview\_enclosure\_facts
|
||||
- oneview\_logical\_interconnect\_group
|
||||
- oneview\_logical\_interconnect\_group\_facts
|
||||
- oneview\_san\_manager\_facts
|
||||
|
||||
- Remote Management (ucs)
|
||||
- ucs\_ip\_pool
|
||||
- ucs\_lan\_connectivity
|
||||
- ucs\_mac\_pool
|
||||
- ucs\_san\_connectivity
|
||||
- ucs\_vhba\_template
|
||||
- ucs\_vlans
|
||||
- ucs\_vnic\_template
|
||||
- ucs\_vsans
|
||||
- ucs\_wwn\_pool
|
||||
|
||||
- System
|
||||
- mksysb
|
||||
- nosh
|
||||
- service\_facts
|
||||
- vdo
|
||||
|
||||
- Web Infrastructure
|
||||
- jenkins\_job\_facts
|
||||
|
||||
- Windows
|
||||
- win\_audit\_policy\_system
|
||||
- win\_audit\_rule
|
||||
- win\_certificate\_store
|
||||
- win\_disk\_facts
|
||||
- win\_product\_facts
|
||||
- win\_scheduled\_task\_stat
|
||||
- win\_whoami
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- azure_rm modules - updated with internal changes to use API profiles and kwargs for future Azure Stack support and better stability between SDK updates. (https://github.com/ansible/ansible/pull/35538)
|
||||
|
||||
- fixed memory bloat on nested includes by preventing blocks from self-parenting (https://github.com/ansible/ansible/pull/36075)
|
||||
|
||||
- updated to ensure displayed messages under peristent connections are returned to the controller (https://github.com/ansible/ansible/pull/36064)
|
||||
|
||||
- eos_vrf and eos_eapi - fixed vrf parsing (https://github.com/ansible/ansible/pull/35791)
|
||||
|
||||
- interface_file - now accepts interfaces without address family or method (https://github.com/ansible/ansible/pull/34200)
|
||||
|
||||
- lineinfile - fixed insertion if pattern already exists (https://github.com/ansible/ansible/pull/33393)
|
||||
|
||||
- nxos_evpn_vni - fixed a number of issues (https://github.com/ansible/ansible/pull/35930)
|
||||
|
||||
- nxos_igmp_interface - fixed response handling for different nxos versions (https://github.com/ansible/ansible/pull/35959)
|
||||
|
||||
- nxos_interface_ospf - added various bugfixes (https://github.com/ansible/ansible/pull/35988)
|
||||
|
||||
- openshift modules - updated to client version 0.4.0 (https://github.com/ansible/ansible/pull/35127)
|
||||
|
||||
- fixed templating issues in loop_control (https://github.com/ansible/ansible/pull/36124)
|
||||
|
||||
- ansible-config - fixed traceback when no config file is present (https://github.com/ansible/ansible/issues/35965)
|
||||
|
||||
- added various fixes to Linux virtualization facts (https://github.com/ansible/ansible/issues/36038)
|
||||
|
||||
- fixed failure when remote_tmp is a subdir of a system tempdir (https://github.com/ansible/ansible/pull/36143)
|
||||
|
||||
- ios_ping - updated to allow for count > 70 (https://github.com/ansible/ansible/pull/36142)
|
||||
|
||||
- vmware_guest_snapshot - updated to always check for root snapshot (https://github.com/ansible/ansible/pull/36001)
|
||||
|
||||
- vyos - added fixes to check mode support (https://github.com/ansible/ansible/pull/35977)
|
||||
|
||||
- vyos_l3_interface - added support for localhost (https://github.com/ansible/ansible/pull/36141)
|
||||
|
||||
- win_domain_controller - updated to only specify ReadOnlyReplica when necessary (https://github.com/ansible/ansible/pull/36017)
|
||||
|
||||
- win_updates - fixed regression with string category names (https://github.com/ansible/ansible/pull/36015)
|
||||
|
||||
- win_uri - fixed issues with the creates and removes options (https://github.com/ansible/ansible/pull/36016)
|
||||
|
||||
@ -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,867 +0,0 @@
|
||||
ancestor: 2.17.0
|
||||
releases:
|
||||
2.18.0:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2024-11-04
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.0_summary.yaml
|
||||
release_date: '2024-11-04'
|
||||
2.18.0b1:
|
||||
changes:
|
||||
breaking_changes:
|
||||
- Stopped wrapping all commands sent over SSH on a Windows target with a ``powershell.exe``
|
||||
executable. This results in one less process being started on each command
|
||||
for Windows to improve efficiency, simplify the code, and make ``raw`` an
|
||||
actual raw command run with the default shell configured on the Windows sshd
|
||||
settings. This should have no affect on most tasks except for ``raw`` which
|
||||
now is not guaranteed to always be running in a PowerShell shell and from
|
||||
having the console output codepage set to UTF-8. To avoid this issue either
|
||||
swap to using ``ansible.windows.win_command``, ``ansible.windows.win_shell``,
|
||||
``ansible.windows.win_powershell`` or manually wrap the raw command with the
|
||||
shell commands needed to set the output console encoding.
|
||||
- persistent connection plugins - The ``ANSIBLE_CONNECTION_PATH`` config option
|
||||
no longer has any effect.
|
||||
bugfixes:
|
||||
- -> runas become - Generate new token for the SYSTEM token to use for become.
|
||||
This should result in the full SYSTEM token being used and problems starting
|
||||
the process that fails with ``The process creation has been blocked``.
|
||||
- Add a version ceiling constraint for pypsrp to avoid potential breaking changes
|
||||
in the 1.0.0 release.
|
||||
- Add descriptions for ``ansible-galaxy install --help` and ``ansible-galaxy
|
||||
role|collection install --help``.
|
||||
- Avoid truncating floats when casting into int, as it can lead to truncation
|
||||
and unexpected results. 0.99999 will be 0, not 1.
|
||||
- COLOR_SKIP will not alter "included" events color display anymore.
|
||||
- Callbacks now correctly get the resolved connection plugin name as the connection
|
||||
used.
|
||||
- Darwin - add unit tests for Darwin hardware fact gathering.
|
||||
- Fix ``SemanticVersion.parse()`` to store the version string so that ``__repr__``
|
||||
reports it instead of ``None`` (https://github.com/ansible/ansible/pull/83831).
|
||||
- Fix a traceback when an environment variable contains certain special characters
|
||||
(https://github.com/ansible/ansible/issues/83498)
|
||||
- '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 an issue where registered variable was not available for templating in
|
||||
``loop_control.label`` on skipped looped tasks (https://github.com/ansible/ansible/issues/83619)
|
||||
- Fix for ``meta`` tasks breaking host/fork affinity with ``host_pinned`` strategy
|
||||
(https://github.com/ansible/ansible/issues/83294)
|
||||
- Fix handlers not being executed in lockstep using the linear strategy in some
|
||||
cases (https://github.com/ansible/ansible/issues/82307)
|
||||
- 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).
|
||||
- Fix using the current task's directory for looking up relative paths within
|
||||
roles (https://github.com/ansible/ansible/issues/82695).
|
||||
- 'Remove deprecated config options DEFAULT_FACT_PATH, DEFAULT_GATHER_SUBSET,
|
||||
and DEFAULT_GATHER_TIMEOUT in favor of setting ``fact_path``, ``gather_subset``
|
||||
and ``gather_timeout`` as ``module_defaults`` for ``ansible.builtin.setup``.
|
||||
|
||||
These will apply to both the ``gather_facts`` play keyword, and any ``ansible.builtin.setup``
|
||||
tasks.
|
||||
|
||||
To configure these options only for the ``gather_facts`` keyword, set these
|
||||
options as play keywords also.'
|
||||
- Set LANGUAGE environment variable is set to a non-English locale (https://github.com/ansible/ansible/issues/83608).
|
||||
- '``ansible-galaxy install --help`` - Fix the usage text and document that
|
||||
the requirements file passed to ``-r`` can include collections and roles.'
|
||||
- '``ansible-galaxy role install`` - update the default timeout to download
|
||||
archive URLs from 20 seconds to 60 (https://github.com/ansible/ansible/issues/83521).'
|
||||
- '``end_host`` - fix incorrect return code when executing ``end_host`` in the
|
||||
``rescue`` section (https://github.com/ansible/ansible/issues/83447)'
|
||||
- addressed issue of trailing text been ignored, non-ASCII characters are parsed,
|
||||
enhance white space handling and fixed overly permissive issue of human_to_bytes
|
||||
filter(https://github.com/ansible/ansible/issues/82075)
|
||||
- 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-doc - handle no_fail condition for role.
|
||||
- ansible-doc - make colors configurable.
|
||||
- ansible-galaxy collection install - remove old installation info when installing
|
||||
collections (https://github.com/ansible/ansible/issues/83182).
|
||||
- ansible-galaxy role install - fix symlinks (https://github.com/ansible/ansible/issues/82702,
|
||||
https://github.com/ansible/ansible/issues/81965).
|
||||
- ansible-test - The ``pylint`` sanity test now includes the controller/target
|
||||
context of files when grouping them. This allows the ``--py-version`` option
|
||||
to be passed to ``pylint`` to indicate the minimum supported Python version
|
||||
for each test context, preventing ``pylint`` from defaulting to the Python
|
||||
version used to invoke the test.
|
||||
- ansible-test action-plugin-docs - Fix to check for sidecar documentation for
|
||||
action plugins
|
||||
- ansible_managed restored it's 'templatability' by ensuring the possible injection
|
||||
routes are cut off earlier in the process.
|
||||
- apt - report changed=True when some packages are being removed (https://github.com/ansible/ansible/issues/46314).
|
||||
- apt_* - add more info messages raised while updating apt cache (https://github.com/ansible/ansible/issues/77941).
|
||||
- assemble - update argument_spec with 'decrypt' option which is required by
|
||||
action plugin (https://github.com/ansible/ansible/issues/80840).
|
||||
- atomic_move - fix using the setgid bit on the parent directory when creating
|
||||
files (https://github.com/ansible/ansible/issues/46742, https://github.com/ansible/ansible/issues/67177).
|
||||
- config, restored the ability to set module compression via a variable
|
||||
- connection plugins using the 'extras' option feature would need variables
|
||||
to match the plugin's loaded name, sometimes requiring fqcn, which is not
|
||||
the same as the documented/declared/expected variables. Now we fall back to
|
||||
the 'basename' of the fqcn, but plugin authors can still set the expected
|
||||
value directly.
|
||||
- copy - mtime/atime not updated. Fix now update mtime/atime(https://github.com/ansible/ansible/issues/83013)
|
||||
- csvfile lookup - give an error when no search term is provided using modern
|
||||
config syntax (https://github.com/ansible/ansible/issues/83689).
|
||||
- debconf - fix normalization of value representation for boolean vtypes in
|
||||
new packages (https://github.com/ansible/ansible/issues/83594)
|
||||
- delay keyword is now a float, matching the underlying 'time' API and user
|
||||
expectations.
|
||||
- display - warn user about empty log filepath (https://github.com/ansible/ansible/issues/79959).
|
||||
- display now does a better job of mapping warnings/errors to the proper log
|
||||
severity when using ansible.log. We still use color as a fallback mapping
|
||||
(now prioritiezed by severity) but mostly rely on it beind directly set by
|
||||
warnning/errors calls.
|
||||
- distro package - update the distro package version from 1.8.0 to 1.9.0 (https://github.com/ansible/ansible/issues/82935)
|
||||
- dnf - Ensure that we are handling DownloadError properly in the dnf module
|
||||
- dnf - Substitute variables in DNF cache path (https://github.com/ansible/ansible/pull/80094).
|
||||
- dnf - fix an issue where two packages of the same ``evr`` but different arch
|
||||
failed to install (https://github.com/ansible/ansible/issues/83406)
|
||||
- dnf - honor installroot for ``cachedir``, ``logdir`` and ``persistdir``
|
||||
- dnf - perform variable substitutions in ``logdir`` and ``persistdir``
|
||||
- dnf, dnf5 - fix for installing a set of packages by specifying them using
|
||||
a wildcard character (https://github.com/ansible/ansible/issues/83373)
|
||||
- 'dnf5 - re-introduce the ``state: installed`` alias to ``state: present``
|
||||
(https://github.com/ansible/ansible/issues/83960)'
|
||||
- dnf5 - replace removed API calls
|
||||
- ensure we have logger before we log when we have increased verbosity.
|
||||
- facts - `support_discard` now returns `0` if either `discard_granularity`
|
||||
or `discard_max_hw_bytes` is zero; otherwise it returns the value of `discard_granularity`,
|
||||
as before (https://github.com/ansible/ansible/pull/83480).
|
||||
- facts - add a generic detection for VMware in product name.
|
||||
- facts - add facts about x86_64 flags to detect microarchitecture (https://github.com/ansible/ansible/issues/83331).
|
||||
- fetch - add error message when using ``dest`` with a trailing slash that becomes
|
||||
a local directory - https://github.com/ansible/ansible/issues/82878
|
||||
- file - retrieve the link's full path when hard linking a soft link with follow
|
||||
(https://github.com/ansible/ansible/issues/33911).
|
||||
- fixed the issue of creating user directory using tilde(~) always reported
|
||||
"changed".(https://github.com/ansible/ansible/issues/82490)
|
||||
- fixed unit test test_borken_cowsay to address mock not been properly applied
|
||||
when existing unix system already have cowsay installed.
|
||||
- freebsd - refactor dmidecode fact gathering code for simplicity.
|
||||
- freebsd - update disk and slices regex for fact gathering (https://github.com/ansible/ansible/pull/82081).
|
||||
- get_url - Verify checksum using tmpsrc, not dest (https://github.com/ansible/ansible/pull/64092)
|
||||
- git - check if git version is available or not before using it for comparison
|
||||
(https://github.com/ansible/ansible/issues/72321).
|
||||
- include_tasks - Display location when attempting to load a task list where
|
||||
``include_*`` did not specify any value - https://github.com/ansible/ansible/issues/83874
|
||||
- known_hosts - the returned module invocation now accurately reflects the module
|
||||
arguments.
|
||||
- linear strategy now provides a properly templated task name to the v2_runner_on_started
|
||||
callback event.
|
||||
- 'linear strategy: fix handlers included via ``include_tasks`` handler to be
|
||||
executed in lockstep (https://github.com/ansible/ansible/issues/83019)'
|
||||
- linux - remove extraneous get_bin_path API call.
|
||||
- local - handle error while parsing values in ini files (https://github.com/ansible/ansible/issues/82717).
|
||||
- lookup - Fixed examples of csv lookup plugin (https://github.com/ansible/ansible/issues/83031).
|
||||
- module_defaults - do not display action/module deprecation warnings when using
|
||||
an action_group that contains a deprecated plugin (https://github.com/ansible/ansible/issues/83490).
|
||||
- module_utils atomic_move (used by most file based modules), now correctly
|
||||
handles permission copy and setting mtime correctly across all paths
|
||||
- package_facts - apk fix when cache is empty (https://github.com/ansible/ansible/issues/83126).
|
||||
- package_facts - no longer fails silently when the selected package manager
|
||||
is unable to list packages.
|
||||
- package_facts - returns the correct warning when package listing fails.
|
||||
- persistent connection plugins - The correct Ansible persistent connection
|
||||
helper is now always used. Previously, the wrong script could be used, depending
|
||||
on the value of the ``PATH`` environment variable. As a result, users were
|
||||
sometimes required to set ``ANSIBLE_CONNECTION_PATH`` to use the correct script.
|
||||
- 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.
|
||||
- powershell - Improve CLIXML decoding to decode all control characters and
|
||||
unicode characters that are encoded as surrogate pairs.
|
||||
- psrp - Fix bug when attempting to fetch a file path that contains special
|
||||
glob characters like ``[]``
|
||||
- replace - Updated before/after example (https://github.com/ansible/ansible/issues/83390).
|
||||
- runtime-metadata sanity test - do not crash on deprecations if ``galaxy.yml``
|
||||
contains an empty ``version`` field (https://github.com/ansible/ansible/pull/83831).
|
||||
- service - fix order of CLI arguments on FreeBSD (https://github.com/ansible/ansible/pull/81377).
|
||||
- service_facts - don't crash if OpenBSD rcctl variable contains '=' character
|
||||
(https://github.com/ansible/ansible/issues/83457)
|
||||
- service_facts will now detect failed services more accurately across systemd
|
||||
implementations.
|
||||
- setup module (fact gathering), added fallbcak code path to handle mount fact
|
||||
gathering in linux when threading is not available
|
||||
- setup/gather_facts will skip missing ``sysctl`` instead of being a fatal error
|
||||
(https://github.com/ansible/ansible/pull/81297).
|
||||
- shell plugin - properly quote all needed components of shell commands (https://github.com/ansible/ansible/issues/82535)
|
||||
- ssh - Fix bug when attempting to fetch a file path with characters that should
|
||||
be quoted when using the ``piped`` transfer method
|
||||
- support the countme option when using yum_repository
|
||||
- systemd - extend systemctl is-enabled check to handle "enabled-runtime" (https://github.com/ansible/ansible/pull/77754).
|
||||
- systemd facts - handle AttributeError raised while gathering facts on non-systemd
|
||||
hosts.
|
||||
- systemd_service - handle mask operation failure (https://github.com/ansible/ansible/issues/81649).
|
||||
- templating hostvars under native jinja will not cause serialization errors
|
||||
anymore.
|
||||
- the raw arguments error now just displays the short names of modules instead
|
||||
of every possible variation
|
||||
- unarchive - Better handling of files with an invalid timestamp in zip file
|
||||
(https://github.com/ansible/ansible/issues/81092).
|
||||
- unarchive - trigger change when size and content differ when other properties
|
||||
are unchanged (https://github.com/ansible/ansible/pull/83454).
|
||||
- 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 - deprecate 'yes' and 'no' value for 'follow_redirects' parameter.
|
||||
- vault - handle vault password file value when it is directory (https://github.com/ansible/ansible/issues/42960).
|
||||
- vault.is_encrypted_file is now optimized to be called in runtime and not for
|
||||
being called in tests
|
||||
- vault_encrypted test documentation, name and examples have been fixed, other
|
||||
parts were clarified
|
||||
- winrm - Add retry after exceeding commands per user quota that can occur in
|
||||
loops and action plugins running multiple commands.
|
||||
deprecated_features:
|
||||
- Deprecate ``ansible.module_utils.basic.AnsibleModule.safe_eval`` and ``ansible.module_utils.common.safe_eval``
|
||||
as they are no longer used.
|
||||
- persistent connection plugins - The ``ANSIBLE_CONNECTION_PATH`` config option
|
||||
no longer has any effect, and will be removed in a future release.
|
||||
- yum_repository - deprecate ``async`` option as it has been removed in RHEL
|
||||
8 and will be removed in ansible-core 2.22.
|
||||
- 'yum_repository - the following options are deprecated: ``deltarpm_metadata_percentage``,
|
||||
``gpgcakey``, ``http_caching``, ``keepalive``, ``metadata_expire_filter``,
|
||||
``mirrorlist_expire``, ``protect``, ``ssl_check_cert_permissions``, ``ui_repoid_vars``
|
||||
as they have no effect for dnf as an underlying package manager. The options
|
||||
will be removed in ansible-core 2.22.'
|
||||
known_issues:
|
||||
- ansible-test - When using ansible-test containers with Podman on a Ubuntu
|
||||
24.04 host, ansible-test must be run as a non-root user to avoid permission
|
||||
issues caused by AppArmor.
|
||||
- ansible-test - When using the Fedora 40 container with Podman on a Ubuntu
|
||||
24.04 host, the ``unix-chkpwd`` AppArmor profile must be disabled on the host
|
||||
to allow SSH connections to the container.
|
||||
minor_changes:
|
||||
- Add ``gid_min``, ``gid_max`` to the group plugin to overwrite the defaults
|
||||
provided by the ``/etc/login.defs`` file (https://github.com/ansible/ansible/pull/81770).
|
||||
- Add ``python3.13`` to the default ``INTERPRETER_PYTHON_FALLBACK`` list.
|
||||
- Add ``uid_min``, ``uid_max`` to the user plugin to overwrite the defaults
|
||||
provided by the ``/etc/login.defs`` file (https://github.com/ansible/ansible/pull/81770).
|
||||
- Add a new meta task ``end_role`` (https://github.com/ansible/ansible/issues/22286)
|
||||
- Add a new mount_facts module to support gathering information about mounts
|
||||
that are excluded by default fact gathering.
|
||||
- Introducing COLOR_INCLUDED parameter. This can set a specific color for "included"
|
||||
events.
|
||||
- Removed the shell ``environment`` config entry as this is already covered
|
||||
by the play/task directives documentation and the value itself is not used
|
||||
in the shell plugins. This should remove any confusion around how people set
|
||||
the environment for a task.
|
||||
- Suppress cryptography deprecation warnings for Blowfish and TripleDES when
|
||||
the ``paramiko`` Python module is installed.
|
||||
- The minimum supported Python version on targets is now Python 3.8.
|
||||
- '``ansible-galaxy collection publish`` - add configuration options for the
|
||||
initial poll interval and the exponential when checking the import status
|
||||
of a collection, since the default is relatively slow.'
|
||||
- ansible-config has new 'validate' option to find mispelled/forgein configurations
|
||||
in ini file or environment variables.
|
||||
- ansible-doc - show examples in role entrypoint argument specs (https://github.com/ansible/ansible/pull/82671).
|
||||
- ansible-galaxy - Handle authentication errors and token expiration
|
||||
- ansible-test - Add Ubuntu 24.04 remote.
|
||||
- ansible-test - Add support for Python 3.13.
|
||||
- ansible-test - An ``ansible_core.egg-info`` directory is no longer generated
|
||||
when running tests.
|
||||
- ansible-test - Connection options can be set for ansible-test managed remote
|
||||
Windows instances.
|
||||
- ansible-test - Improve the error message shown when an unknown ``--remote``
|
||||
or ``--docker`` option is given.
|
||||
- ansible-test - Remove Python 2.7 compatibility imports.
|
||||
- ansible-test - Removed the ``vyos/1.1.8`` network remote as it is no longer
|
||||
functional.
|
||||
- ansible-test - Replace Alpine 3.19 container and remote with Alpine 3.20.
|
||||
- ansible-test - Replace Fedora 39 container and remote with Fedora 40.
|
||||
- ansible-test - Replace FreeBSD 14.0 remote with FreeBSD 14.1.
|
||||
- ansible-test - Replace RHEL 9.3 remote with RHEL 9.4.
|
||||
- ansible-test - Replace Ubuntu 20.04 container with Ubuntu 24.04 container.
|
||||
- ansible-test - The ``empty-init`` sanity test no longer applies to ``module_utils``
|
||||
packages.
|
||||
- ansible-test - Update ``ansible-test-utility-container`` to version 3.1.0.
|
||||
- ansible-test - Update ``base`` and ``default`` containers to omit Python 3.7.
|
||||
- ansible-test - Update ``coverage`` to version 7.6.1.
|
||||
- ansible-test - Update ``http-test-container`` to version 3.0.0.
|
||||
- ansible-test - Update ``nios-test-container`` to version 5.0.0.
|
||||
- ansible-test - Update ``pypi-test-container`` to version 3.2.0.
|
||||
- ansible-test - Updated the frozen requirements for all sanity tests.
|
||||
- ansible-test - Upgrade ``pip`` used in ansible-test managed virtual environments
|
||||
from version 24.0 to 24.2.
|
||||
- ansible-test - Virtual environments created by ansible-test no longer include
|
||||
the ``wheel`` or ``setuptools`` packages.
|
||||
- ansible-test - update HTTP test container to 3.2.0 (https://github.com/ansible/ansible/pull/83469).
|
||||
- ansible.log now also shows log severity field
|
||||
- distribution.py - Added SL-Micro in Suse OS Family. (https://github.com/ansible/ansible/pull/83541)
|
||||
- dnf - minor internal changes in how the errors from the dnf API are handled;
|
||||
rely solely on the exceptions rather than inspecting text embedded in them
|
||||
- dnf - remove legacy code for unsupported dnf versions
|
||||
- dnf5 - implement ``enable_plugin`` and ``disable_plugin`` options
|
||||
- fact gathering - Gather /proc/sysinfo facts on s390 Linux on Z
|
||||
- facts - add systemd version and features
|
||||
- find - change the datatype of ``elements`` to ``path`` in option ``paths``
|
||||
(https://github.com/ansible/ansible/pull/83575).
|
||||
- ini lookup - add new ``interpolation`` option (https://github.com/ansible/ansible/issues/83755)
|
||||
- isidentifier - remove unwanted Python 2 specific code.
|
||||
- loop_control - add a break_when option to to break out of a task loop early
|
||||
based on Jinja2 expressions (https://github.com/ansible/ansible/issues/83442).
|
||||
- package_facts module now supports using aliases for supported package managers,
|
||||
for example managers=yum or managers=dnf will resolve to using the underlying
|
||||
rpm.
|
||||
- plugins, deprecations and warnings concerning configuration are now displayed
|
||||
to the user, technical issue that prevented 'de-duplication' have been resolved.
|
||||
- psrp - Remove connection plugin extras vars lookup. This should have no affect
|
||||
on existing users as all options have been documented.
|
||||
- remove extraneous selinux import (https://github.com/ansible/ansible/issues/83657).
|
||||
- replace random with secrets library.
|
||||
- rpm_key - allow validation of gpg key with a subkey fingerprint
|
||||
- rpm_key - enable gpg validation that requires presence of multiple fingerprints
|
||||
- service_mgr - add support for dinit service manager (https://github.com/ansible/ansible/pull/83489).
|
||||
- task timeout now returns timedout key with frame/code that was in execution
|
||||
when the timeout is triggered.
|
||||
- timedout test for checking if a task result represents a 'timed out' task.
|
||||
- unarchive - Remove Python 2.7 compatibility imports.
|
||||
- validate-modules sanity test - detect if names of an option (option name +
|
||||
aliases) do not match between argument spec and documentation (https://github.com/ansible/ansible/issues/83598,
|
||||
https://github.com/ansible/ansible/pull/83599).
|
||||
- validate-modules sanity test - reject option/aliases names that are identical
|
||||
up to casing but belong to different options (https://github.com/ansible/ansible/pull/83530).
|
||||
- vaulted_file test filter added, to test if the provided path is an 'Ansible
|
||||
vaulted' file
|
||||
- yum_repository - add ``excludepkgs`` alias to the ``exclude`` option.
|
||||
release_summary: '| Release Date: 2024-09-24
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
removed_features:
|
||||
- Play - removed deprecated ``ROLE_CACHE`` property in favor of ``role_cache``.
|
||||
- Remove deprecated `VariableManager._get_delegated_vars` method (https://github.com/ansible/ansible/issues/82950)
|
||||
- Removed Python 3.10 as a supported version on the controller. Python 3.11
|
||||
or newer is required.
|
||||
- Removed support for setting the ``vars`` keyword to lists of dictionaries.
|
||||
It is now required to be a single dictionary.
|
||||
- loader - remove deprecated non-inclusive words (https://github.com/ansible/ansible/issues/82947).
|
||||
- paramiko_ssh - removed deprecated ssh_args from the paramiko_ssh connection
|
||||
plugin (https://github.com/ansible/ansible/issues/82939).
|
||||
- paramiko_ssh - removed deprecated ssh_common_args from the paramiko_ssh connection
|
||||
plugin (https://github.com/ansible/ansible/issues/82940).
|
||||
- paramiko_ssh - removed deprecated ssh_extra_args from the paramiko_ssh connection
|
||||
plugin (https://github.com/ansible/ansible/issues/82941).
|
||||
- play_context - remove deprecated PlayContext.verbosity property (https://github.com/ansible/ansible/issues/82945).
|
||||
- utils/listify - remove deprecated 'loader' argument from listify_lookup_plugin_terms
|
||||
API (https://github.com/ansible/ansible/issues/82949).
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.0b1_summary.yaml
|
||||
- 42960_vault_password.yml
|
||||
- 46314.yml
|
||||
- 46742-atomic_move-fix-setgid.yml
|
||||
- 62151-loop_control-until.yml
|
||||
- 64092-get_url_verify_tmpsrc_checksum.yml
|
||||
- 72321_git.yml
|
||||
- 81770-add-uid-guid-minmax-keys.yml
|
||||
- 82075.yml
|
||||
- 82307-handlers-lockstep-linear-fix.yml
|
||||
- 82490_creating_user_dir_using_tilde_always_reports_changed.yml
|
||||
- 82535-properly-quote-shell.yml
|
||||
- 82671-ansible-doc-role-examples.yml
|
||||
- 82708-unsafe-plugin-name-error.yml
|
||||
- 82831_countme_yum_repository.yml
|
||||
- 82878-fetch-dest-is-dir.yml
|
||||
- 82941.yml
|
||||
- 82946.yml
|
||||
- 82947.yml
|
||||
- 83019-linear-handlers-lockstep-fix.yml
|
||||
- 83031.yml
|
||||
- 83155-ansible-doc-paragraphs.yml
|
||||
- 83235-copy-module-update-mtime.yml
|
||||
- 83294-meta-host_pinned-affinity.yml
|
||||
- 83327.yml
|
||||
- 83331.yml
|
||||
- 83373-dnf5-wildcard.yml
|
||||
- 83392-fix-memory-issues-handlers.yml
|
||||
- 83406-dnf-fix-arch-cmp.yml
|
||||
- 83447-end_host-rescue-rc.yml
|
||||
- 83457-service_facts-openbsd-dont-crash-in-equals.yml
|
||||
- 83469-http-test-container.yml
|
||||
- 83480-fix-support-discard.yml
|
||||
- 83498-command-tb-env.yml
|
||||
- 83508_mount_facts.yml
|
||||
- 83530-validate-modules-casing.yml
|
||||
- 83540-update_disto_version.yml
|
||||
- 83541-add-sl-micro-suse-family.yaml
|
||||
- 83575-fix-sanity-ignore-for-find.yml
|
||||
- 83599-validate-modules-aliases.yml
|
||||
- 83601-debconf-normalize-bools.yml
|
||||
- 83619-loop-label-register.yml
|
||||
- 83716-enable-subkey-fingerprint-validation-in-rpm-key-module.yml
|
||||
- 83755-ini-new-interpolation-option.yml
|
||||
- 83803-collection-import-poll-interval.yml
|
||||
- 83831-runtime-metadata-fix.yml
|
||||
- 83874-include-parse-error-location.yml
|
||||
- 83960-dnf5-state-installed-fix.yml
|
||||
- PowerShell-AddType-temp.yml
|
||||
- action-plugin-docs-sidecar.yml
|
||||
- add_systemd_facts.yml
|
||||
- ansible-config-validate.yml
|
||||
- ansible-doc-color.yml
|
||||
- ansible-doc-inicate.yml
|
||||
- ansible-doc.yml
|
||||
- ansible-drop-python-3.7.yml
|
||||
- ansible-galaxy-install-archive-url-timeout.yml
|
||||
- ansible-galaxy-install-help.yml
|
||||
- ansible-galaxy-role-install-symlink.yml
|
||||
- ansible-test-container-update.yml
|
||||
- ansible-test-coverage-update.yml
|
||||
- ansible-test-error-message-improvement.yml
|
||||
- ansible-test-http-test-container-update.yml
|
||||
- ansible-test-nios-container.yml
|
||||
- ansible-test-no-egg-info.yml
|
||||
- ansible-test-platform-updates.yml
|
||||
- ansible-test-pylint-py-version.yml
|
||||
- ansible-test-pypi-test-container-update.yml
|
||||
- ansible-test-sanity-empty-init.yml
|
||||
- ansible-test-sanity-test-requirements.yml
|
||||
- ansible-test-utility-container-update.yml
|
||||
- ansible-test-venv-bootstrap.yml
|
||||
- ansible-test-vyos.yml
|
||||
- ansible-test-windows-remote.yml
|
||||
- ansible_connection_path.yml
|
||||
- ansible_managed_restore.yml
|
||||
- apk_package_facts.yml
|
||||
- apt_cache.yml
|
||||
- assemble.yml
|
||||
- atomic_update_perms_time.yml
|
||||
- become-runas-system.yml
|
||||
- cleanup-outdated-galaxy-install-info.yml
|
||||
- colors_for_included_events.yml
|
||||
- config_init_fix.yml
|
||||
- correct-callback-fqcn-old-style-action-invocation.yml
|
||||
- correct_connection_callback.yml
|
||||
- darwin_facts.yml
|
||||
- delay_type.yml
|
||||
- deprecate-safe-evals.yml
|
||||
- dinit.yml
|
||||
- display_fix_log_severity.yml
|
||||
- dnf-exceptions-vs-text.yml
|
||||
- dnf-installroot-substitutions.yml
|
||||
- dnf-remove-legacy-code.yml
|
||||
- dnf5-api-breaks.yml
|
||||
- dnf5-enable-disable-plugins.yml
|
||||
- dnf_cache_path.yml
|
||||
- dnf_handle_downloaderror.yml
|
||||
- dwim_is_role_fix_task_relative.yml
|
||||
- empty_log_path.yml
|
||||
- enabled_runtime.yml
|
||||
- end_role.yml
|
||||
- extras_fix.yml
|
||||
- fetch-filename.yml
|
||||
- file_hardlink.yml
|
||||
- fix-inconsistent-csvfile-missing-search-error.yml
|
||||
- fix-module-defaults-deprecations.yml
|
||||
- fix_floating_ints.yml
|
||||
- fix_log_verbosity.yml
|
||||
- freebsd_disk_regex.yml
|
||||
- freebsd_facts_refactor.yml
|
||||
- freebsd_service.yml
|
||||
- galaxy-reauth-error-handling.yml
|
||||
- gather-s390-sysinfo.yml
|
||||
- gather_facts_single.yml
|
||||
- getoffmylawn.yml
|
||||
- hostvars_fix.yml
|
||||
- isidentifier.yml
|
||||
- known_hosts_module_args.yml
|
||||
- language.yml
|
||||
- linear_started_name.yml
|
||||
- linux_network_get.yml
|
||||
- listify.yml
|
||||
- local_facts_d.yml
|
||||
- mask_me.yml
|
||||
- mc_fix.yml
|
||||
- package_facts_aliases.yml
|
||||
- package_facts_warnings.yml
|
||||
- powershell-clixml.yml
|
||||
- psrp-extras.yml
|
||||
- psrp-version-req.yml
|
||||
- python-3.13.yml
|
||||
- raw_clean_msg.yml
|
||||
- remove-deprecated-gather-facts-config.yml
|
||||
- remove-deprecated-get_delegated_vars.yml
|
||||
- remove-deprecated-role-cache.yml
|
||||
- remove-deprecated-vars-syntax.yml
|
||||
- remove-python-2-compat.yml
|
||||
- remove-python3.10-controller-support.yml
|
||||
- replace_regex.yml
|
||||
- secrets.yml
|
||||
- selinux_import.yml
|
||||
- service_facts_systemd_fix.yml
|
||||
- shell-environment.yml
|
||||
- ssh-windows.yml
|
||||
- suppress-paramiko-warnings.yml
|
||||
- sysctl_fact_fix.yml
|
||||
- systemd_facts.yml
|
||||
- timedout_test.yml
|
||||
- timeout_show_frame.yml
|
||||
- unarchive_differs.yml
|
||||
- unarchive_timestamp.yml
|
||||
- unsafe-fixes-2.yml
|
||||
- unsafe-intern.yml
|
||||
- uri_follow_redirect.yml
|
||||
- v2.18.0-initial-commit.yaml
|
||||
- vaulted_file_and_fixes.yml
|
||||
- vmware_facts.yml
|
||||
- winrm-quota.yml
|
||||
- yum_repository.yml
|
||||
modules:
|
||||
- description: Retrieve mount information.
|
||||
name: mount_facts
|
||||
namespace: lib.ansible.modules
|
||||
plugins:
|
||||
test:
|
||||
- description: did the task time out
|
||||
name: timedout
|
||||
namespace: null
|
||||
- description: Is this file an encrypted vault
|
||||
name: vaulted_file
|
||||
namespace: null
|
||||
release_date: '2024-09-24'
|
||||
2.18.0rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Errors now preserve stacked error messages even when YAML is involved.
|
||||
- Fix disabling SSL verification when installing collections and roles from
|
||||
git repositories. If ``--ignore-certs`` isn't provided, the value for the
|
||||
``GALAXY_IGNORE_CERTS`` configuration option will be used (https://github.com/ansible/ansible/issues/83326).
|
||||
- Improve performance on large inventories by reducing the number of implicit
|
||||
meta tasks.
|
||||
- Use the requested error message in the ansible.module_utils.facts.timeout
|
||||
timeout function instead of hardcoding one.
|
||||
- '``package``/``dnf`` action plugins - provide the reason behind the failure
|
||||
to gather the ``ansible_pkg_mgr`` fact to identify the package backend'
|
||||
- ansible-test - Enable the ``sys.unraisablehook`` work-around for the ``pylint``
|
||||
sanity test on Python 3.11. Previously the work-around was only enabled for
|
||||
Python 3.12 and later. However, the same issue has been discovered on Python
|
||||
3.11.
|
||||
- debconf - set empty password values (https://github.com/ansible/ansible/issues/83214).
|
||||
- dnf5 - fix traceback when ``enable_plugins``/``disable_plugins`` is used on
|
||||
``python3-libdnf5`` versions that do not support this functionality
|
||||
- facts - skip if distribution file path is directory, instead of raising error
|
||||
(https://github.com/ansible/ansible/issues/84006).
|
||||
- user module now avoids changing ownership of files symlinked in provided home
|
||||
dir skeleton
|
||||
minor_changes:
|
||||
- ansible-test - Default to Python 3.13 in the ``base`` and ``default`` containers.
|
||||
- ansible-test - Disable the ``deprecated-`` prefixed ``pylint`` rules as their
|
||||
results vary by Python version.
|
||||
- ansible-test - Improve container runtime probe error handling. When unexpected
|
||||
probe output is encountered, an error with more useful debugging information
|
||||
is provided.
|
||||
- ansible-test - Update ``pylint`` sanity test to use version 3.3.1.
|
||||
- ansible-test - Update the ``base`` and ``default`` containers.
|
||||
release_summary: '| Release Date: 2024-10-14
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.0rc1_summary.yaml
|
||||
- ansible-test-probe-error-handling.yml
|
||||
- ansible-test-pylint-fix.yml
|
||||
- ansible-test-update.yml
|
||||
- debconf_empty_password.yml
|
||||
- dnf5-plugins-compat.yml
|
||||
- fix-ansible-galaxy-ignore-certs.yml
|
||||
- fix-module-utils-facts-timeout.yml
|
||||
- fix_errors.yml
|
||||
- os_family.yml
|
||||
- package-dnf-action-plugins-facts-fail-msg.yml
|
||||
- skip-implicit-flush_handlers-no-notify.yml
|
||||
- user_action_fix.yml
|
||||
release_date: '2024-10-14'
|
||||
2.18.0rc2:
|
||||
changes:
|
||||
bugfixes:
|
||||
- user action will now require O(force) to overwrite the public part of an ssh
|
||||
key when generating ssh keys, as was already the case for the private part.
|
||||
release_summary: '| Release Date: 2024-10-29
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
security_fixes:
|
||||
- include_vars action - Ensure that result masking is correctly requested when
|
||||
vault-encrypted files are read. (CVE-2024-8775)
|
||||
- task result processing - Ensure that action-sourced result masking (``_ansible_no_log=True``)
|
||||
is preserved. (CVE-2024-8775)
|
||||
- user action won't allow ssh-keygen, chown and chmod to run on existing ssh
|
||||
public key file, avoiding traversal on existing symlinks (CVE-2024-9902).
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.0rc2_summary.yaml
|
||||
- cve-2024-8775.yml
|
||||
- user_ssh_fix.yml
|
||||
release_date: '2024-10-29'
|
||||
2.18.1:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2024-12-02
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.1_summary.yaml
|
||||
release_date: '2024-12-02'
|
||||
2.18.1rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Fix returning 'unreachable' for the overall task result. This prevents false
|
||||
positives when a looped task has unignored unreachable items (https://github.com/ansible/ansible/issues/84019).
|
||||
- ansible-test - Fix traceback that occurs after an interactive command fails.
|
||||
- dnf5 - fix installing a package using ``state=latest`` when a binary of the
|
||||
same name as the package is already installed (https://github.com/ansible/ansible/issues/84259)
|
||||
- dnf5 - matching on a binary can be achieved only by specifying a full path
|
||||
(https://github.com/ansible/ansible/issues/84334)
|
||||
- runas become - Fix up become logic to still get the SYSTEM token with the
|
||||
most privileges when running as SYSTEM.
|
||||
minor_changes:
|
||||
- ansible-test - When detection of the current container network fails, a warning
|
||||
is now issued and execution continues. This simplifies usage in cases where
|
||||
the current container cannot be inspected, such as when running in GitHub
|
||||
Codespaces.
|
||||
release_summary: '| Release Date: 2024-11-25
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
security_fixes:
|
||||
- Templating will not prefer AnsibleUnsafe when a variable is referenced via
|
||||
hostvars - CVE-2024-11079
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.1rc1_summary.yaml
|
||||
- 84019-ignore_unreachable-loop.yml
|
||||
- 84259-dnf5-latest-fix.yml
|
||||
- 84334-dnf5-consolidate-settings.yml
|
||||
- ansible-test-fix-command-traceback.yml
|
||||
- ansible-test-network-detection.yml
|
||||
- become-runas-system-deux.yml
|
||||
- unsafe_hostvars_fix.yml
|
||||
release_date: '2024-11-25'
|
||||
2.18.2:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2025-01-27
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.2_summary.yaml
|
||||
release_date: '2025-01-27'
|
||||
2.18.2rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Ansible will now also warn when reserved keywords are set via a module (set_fact,
|
||||
include_vars, etc).
|
||||
- Ansible.Basic - Fix ``required_if`` check when the option value to check is
|
||||
unset or set to null.
|
||||
- Use consistent multiprocessing context for action write locks
|
||||
- ansible-test - Fix up coverage reporting to properly translate the temporary
|
||||
path of integration test modules to the expected static test module path.
|
||||
- ansible-vault will now correctly handle `--prompt`, previously it would issue
|
||||
an error about stdin if no 2nd argument was passed
|
||||
- copy action now prevents user from setting internal options.
|
||||
- gather_facts action now defaults to `ansible.legacy.setup` if `smart` was
|
||||
set, no network OS was found and no other alias for `setup` was present.
|
||||
- gather_facts action will now issues errors and warnings as appropriate if
|
||||
a network OS is detected but no facts modules are defined for it.
|
||||
- ssh - Improve the logic for parsing CLIXML data in stderr when working with
|
||||
Windows host. This fixes issues when the raw stderr contains invalid UTF-8
|
||||
byte sequences and improves embedded CLIXML sequences.
|
||||
- ssh - connection options were incorrectly templated during ``reset_connection``
|
||||
tasks (https://github.com/ansible/ansible/pull/84238).
|
||||
release_summary: '| Release Date: 2025-01-20
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.2rc1_summary.yaml
|
||||
- 84238-fix-reset_connection-ssh_executable-templated.yml
|
||||
- Ansible.Basic-required_if-null.yml
|
||||
- ansible-test-coverage-test-files.yml
|
||||
- copy_validate_input.yml
|
||||
- gather_facts_netos_fixes.yml
|
||||
- macos-correct-lock.yml
|
||||
- reserved_module_chekc.yml
|
||||
- ssh-clixml.yml
|
||||
- vault_cli_fix.yml
|
||||
release_date: '2025-01-20'
|
||||
2.18.3:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2025-02-24
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.3_summary.yaml
|
||||
release_date: '2025-02-24'
|
||||
2.18.3rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- include_vars - fixed erroneous warning if an unreserved variable name contains
|
||||
a single character that matches a reserved variable. (https://github.com/ansible/ansible/issues/84623)
|
||||
- linear strategy - fix executing ``end_role`` meta tasks for each host, instead
|
||||
of handling these as implicit run_once tasks (https://github.com/ansible/ansible/issues/84660).
|
||||
minor_changes:
|
||||
- ansible-test - Automatically retry HTTP GET/PUT/DELETE requests on exceptions.
|
||||
- ansible-test - Use Python's ``urllib`` instead of ``curl`` for HTTP requests.
|
||||
release_summary: '| Release Date: 2025-02-17
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.3rc1_summary.yaml
|
||||
- 84660-fix-meta-end_role-linear-strategy.yml
|
||||
- ansible-test-curl.yml
|
||||
- fix-include_vars-reserved-warning.yml
|
||||
release_date: '2025-02-17'
|
||||
2.18.4:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2025-03-25
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.4_summary.yaml
|
||||
release_date: '2025-03-25'
|
||||
2.18.4rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Windows - add support for running on system where WDAC is in audit mode with
|
||||
``Dynamic Code Security`` enabled.
|
||||
- dnf5 - fix ``is_installed`` check for packages that are not installed but
|
||||
listed as provided by an installed package (https://github.com/ansible/ansible/issues/84578)
|
||||
- dnf5 - libdnf5 - use ``conf.pkg_gpgcheck`` instead of deprecated ``conf.gpgcheck``
|
||||
which is used only as a fallback
|
||||
- facts - gather pagesize and calculate respective values depending upon architecture
|
||||
(https://github.com/ansible/ansible/issues/84773).
|
||||
- module respawn - limit to supported Python versions
|
||||
release_summary: '| Release Date: 2025-03-17
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.4rc1_summary.yaml
|
||||
- 84578-dnf5-is_installed-provides.yml
|
||||
- darwin_pagesize.yml
|
||||
- dnf5-remove-usage-deprecated-option.yml
|
||||
- respawn-min-python.yml
|
||||
- win-wdac-audit.yml
|
||||
release_date: '2025-03-17'
|
||||
2.18.5:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2025-04-21
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.5_summary.yaml
|
||||
release_date: '2025-04-21'
|
||||
2.18.5rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- build - Pin ``wheel`` in ``pyproject.toml`` to ensure compatibility with supported
|
||||
``setuptools`` versions.
|
||||
- dnf5 - Handle forwarded exceptions from dnf5-5.2.13 where a generic ``RuntimeError``
|
||||
was previously raised
|
||||
- find - skip ENOENT error code while recursively enumerating files. find module
|
||||
will now be tolerant to race conditions that remove files or directories from
|
||||
the target it is currently inspecting. (https://github.com/ansible/ansible/issues/84873).
|
||||
- gather_facts action, will now add setup when 'smart' appears with other modules
|
||||
in the FACTS_MODULES setting (#84750).
|
||||
- uri - Form location correctly when the server returns a relative redirect
|
||||
(https://github.com/ansible/ansible/issues/84540)
|
||||
release_summary: '| Release Date: 2025-04-14
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.5rc1_summary.yaml
|
||||
- 84540-uri-relative-redirect.yml
|
||||
- dnf5-exception-forwarding.yml
|
||||
- find_enoent.yml
|
||||
- gather_facts_smart_fix.yml
|
||||
- pin-wheel.yml
|
||||
release_date: '2025-04-14'
|
||||
2.18.6:
|
||||
changes:
|
||||
release_summary: '| Release Date: 2025-05-19
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.6_summary.yaml
|
||||
release_date: '2025-05-19'
|
||||
2.18.6rc1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Ansible will now ensure predictable permissions on remote artifacts, until
|
||||
now it only ensured executable and relied on system masks for the rest.
|
||||
- ansible-doc - fix indentation for first line of descriptions of suboptions
|
||||
and sub-return values (https://github.com/ansible/ansible/pull/84690).
|
||||
- ansible-doc - fix line wrapping for first line of description of options and
|
||||
return values (https://github.com/ansible/ansible/pull/84690).
|
||||
- dnf5 - avoid generating excessive transaction entries in the dnf5 history
|
||||
(https://github.com/ansible/ansible/issues/85046)
|
||||
- dnf5 - when ``bugfix`` and/or ``security`` is specified, skip packages that
|
||||
do not have any such updates, even for new versions of libdnf5 where this
|
||||
functionality changed and it is considered failure
|
||||
- script - Fix up become support for Windows scripts when become was set through
|
||||
host variables and not on the task directly - https://github.com/ansible/ansible/issues/85076
|
||||
minor_changes:
|
||||
- ansible-test - Use the ``-t`` option to set the stop timeout when stopping
|
||||
a container. This avoids use of the ``--time`` option which was deprecated
|
||||
in Docker v28.0.
|
||||
release_summary: '| Release Date: 2025-05-12
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
|
||||
'
|
||||
codename: Fool in the Rain
|
||||
fragments:
|
||||
- 2.18.6rc1_summary.yaml
|
||||
- 84690-ansible-doc-indent-wrapping.yml
|
||||
- 85046-dnf5-history-entries.yml
|
||||
- ansible-test-container-stop.yml
|
||||
- dnf5-advisory-type.yml
|
||||
- ensure_remote_perms.yml
|
||||
- win-script-become.yml
|
||||
release_date: '2025-05-12'
|
||||
@ -1,22 +1,18 @@
|
||||
---
|
||||
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']
|
||||
- ['new_lookup_plugins', 'New Lookup Plugins']
|
||||
- ['new_callback_plugins', 'New Callback Plugins']
|
||||
- ['new_connection_plugins', 'New Connection Plugins']
|
||||
- ['new_test_plugins', 'New Test Plugins']
|
||||
- ['new_filter_plugins', 'New Filter Plugins']
|
||||
- ['new_modules', 'New Modules']
|
||||
- ['bugfixes', 'Bugfixes']
|
||||
- ['known_issues', 'Known Issues']
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-11-04
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-09-24
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-10-14
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-10-29
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-12-02
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-11-25
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2025-01-27
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2025-01-20
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2025-02-24
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2025-02-17
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2025-03-25
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user