mirror of https://github.com/ansible/ansible.git
Compare commits
381 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
7b4d4ed672 | 22 hours ago |
|
|
335db20951 | 2 days ago |
|
|
251fec31b4 | 3 days ago |
|
|
cc839f013a | 1 week ago |
|
|
a5a2b77911 | 1 week ago |
|
|
17f3698384 | 1 week ago |
|
|
5f2d96c60e | 1 week ago |
|
|
6bb7bd760f | 1 week ago |
|
|
bff3a9aeb9 | 2 weeks ago |
|
|
9d9a8d78ee | 2 weeks ago |
|
|
6d428ca8f0 | 2 weeks ago |
|
|
ce84d3157d | 2 weeks ago |
|
|
2797659df4 | 2 weeks ago |
|
|
7ebc9fa5d6 | 2 weeks ago |
|
|
af9009b00d | 2 weeks ago |
|
|
e2ae13cf38 | 2 weeks ago |
|
|
76fb182b63 | 3 weeks ago |
|
|
3d26431e4f | 3 weeks ago |
|
|
69c9fbed26 | 3 weeks ago |
|
|
eb0ada3d28 | 3 weeks ago |
|
|
dc3cc0f9ea | 3 weeks ago |
|
|
83d2ce771c | 3 weeks ago |
|
|
e0f61dfce4 | 3 weeks ago |
|
|
13a7393cfe | 3 weeks ago |
|
|
222f786f23 | 3 weeks ago |
|
|
76f07034b3 | 3 weeks ago |
|
|
89ba882b08 | 3 weeks ago |
|
|
6a4b199054 | 4 weeks ago |
|
|
4184d9665e | 4 weeks ago |
|
|
707a5ec617 | 4 weeks ago |
|
|
e3cff24134 | 4 weeks ago |
|
|
a4ae978122 | 4 weeks ago |
|
|
8ac5c8580b | 4 weeks ago |
|
|
5b8ae0b5b5 | 4 weeks ago |
|
|
a2dda41bb6 | 4 weeks ago |
|
|
388ce79fcd | 4 weeks ago |
|
|
3c3a06b8fd | 4 weeks ago |
|
|
f743dfce93 | 4 weeks ago |
|
|
55e4ba224d | 1 month ago |
|
|
829373bfb9 | 1 month ago |
|
|
3c5bb535a9 | 1 month ago |
|
|
5904846342 | 1 month ago |
|
|
730af3239d | 1 month ago |
|
|
13496b9e11 | 1 month ago |
|
|
f2a4d6de12 | 1 month ago |
|
|
2e8a859477 | 1 month ago |
|
|
bb30a7fa1f | 1 month ago |
|
|
3bf54c8128 | 1 month ago |
|
|
12acd5c18f | 1 month ago |
|
|
8d07ed6318 | 1 month ago |
|
|
d9d11d6ff6 | 1 month ago |
|
|
7bd2475a70 | 1 month ago |
|
|
169e6bead3 | 1 month ago |
|
|
516a114ef6 | 1 month ago |
|
|
68f5a7ca1c | 1 month ago |
|
|
087931546d | 1 month ago |
|
|
df34bf9e70 | 1 month ago |
|
|
e4b4787c02 | 1 month ago |
|
|
6dd48814f2 | 1 month ago |
|
|
ef53d63953 | 1 month ago |
|
|
367de4498b | 1 month ago |
|
|
9a350ff104 | 1 month ago |
|
|
9f1177a056 | 1 month ago |
|
|
790b66f383 | 1 month ago |
|
|
192948434c | 1 month ago |
|
|
d6051b18dd | 1 month ago |
|
|
f1f5b934c2 | 1 month ago |
|
|
719681bbe2 | 1 month ago |
|
|
ccfb7b1364 | 1 month ago |
|
|
1cb2932c95 | 1 month ago |
|
|
99bb587906 | 1 month ago |
|
|
22721b5d63 | 2 months ago |
|
|
823c117563 | 2 months ago |
|
|
1a3e63c794 | 2 months ago |
|
|
2799a684fc | 2 months ago |
|
|
05d5b0f168 | 2 months ago |
|
|
726e8d6548 | 2 months ago |
|
|
9fcf1f7c58 | 2 months ago |
|
|
c02f59ca3a | 2 months ago |
|
|
83c79240ec | 2 months ago |
|
|
7c2311d547 | 2 months ago |
|
|
de7dd5bbb2 | 2 months ago |
|
|
5a9afe4409 | 2 months ago |
|
|
9ee667030f | 2 months ago |
|
|
82b64d4b69 | 2 months ago |
|
|
06456c68ec | 2 months ago |
|
|
53afc6f203 | 2 months ago |
|
|
0cd36ce6d0 | 2 months ago |
|
|
c9131aa847 | 2 months ago |
|
|
feda8fc564 | 2 months ago |
|
|
6673a14a9e | 2 months ago |
|
|
0c7dcb65cf | 2 months ago |
|
|
686c3658ae | 2 months ago |
|
|
cb2ecda514 | 2 months ago |
|
|
313c6f6b4d | 2 months ago |
|
|
6bee84318d | 2 months ago |
|
|
c3f87b31d1 | 2 months ago |
|
|
c5e6227bdb | 2 months ago |
|
|
eafa139f77 | 2 months ago |
|
|
c6d8d206af | 2 months ago |
|
|
5125ec797c | 2 months ago |
|
|
5fc4b8c106 | 2 months ago |
|
|
1e572ba5cc | 2 months ago |
|
|
58bad71859 | 2 months ago |
|
|
79ddee15a0 | 3 months ago |
|
|
27a56a34df | 3 months ago |
|
|
c87dc6ed7d | 3 months ago |
|
|
43bb87107d | 3 months ago |
|
|
5e8815b823 | 3 months ago |
|
|
ced362a50d | 3 months ago |
|
|
e30da51731 | 3 months ago |
|
|
967d654ef6 | 3 months ago |
|
|
9966e01f81 | 3 months ago |
|
|
18691ec83f | 3 months ago |
|
|
cf9d78206c | 3 months ago |
|
|
d2940880ed | 3 months ago |
|
|
60511c2a08 | 3 months ago |
|
|
ddbedc6ac6 | 3 months ago |
|
|
eda1383da7 | 3 months ago |
|
|
250610b924 | 3 months ago |
|
|
aad9fbd4f5 | 3 months ago |
|
|
df1da0419e | 3 months ago |
|
|
1cd4369815 | 3 months ago |
|
|
065f202d30 | 3 months ago |
|
|
36f00cdf1a | 3 months ago |
|
|
975f60ebf9 | 3 months ago |
|
|
a805356358 | 3 months ago |
|
|
a25fd1021a | 3 months ago |
|
|
f29d432c69 | 3 months ago |
|
|
a345a404e0 | 3 months ago |
|
|
3582997698 | 3 months ago |
|
|
94c78cb38f | 3 months ago |
|
|
c59db5349e | 3 months ago |
|
|
4209d714db | 3 months ago |
|
|
4c27ccf8f4 | 3 months ago |
|
|
d93f63ecfb | 3 months ago |
|
|
0ed37ca899 | 3 months ago |
|
|
7b1644e0b3 | 3 months ago |
|
|
a8dc3fae1e | 3 months ago |
|
|
be9e57366b | 3 months ago |
|
|
e8a3be9de5 | 3 months ago |
|
|
6976e13075 | 3 months ago |
|
|
b3ef4f7671 | 3 months ago |
|
|
3ec07418aa | 3 months ago |
|
|
14115afdb2 | 3 months ago |
|
|
5e78bc8eda | 3 months ago |
|
|
7b598f3fc9 | 3 months ago |
|
|
534b8c225a | 3 months ago |
|
|
931c923e0e | 3 months ago |
|
|
75ad1f8d6a | 3 months ago |
|
|
8b6446f2d5 | 3 months ago |
|
|
c5ddc93767 | 4 months ago |
|
|
b1fc98c8ad | 4 months ago |
|
|
558676fcdc | 4 months ago |
|
|
3518d48146 | 4 months ago |
|
|
0467e1eaa9 | 4 months ago |
|
|
5345ac9911 | 4 months ago |
|
|
603dd2d793 | 4 months ago |
|
|
18289c403d | 4 months ago |
|
|
e3c9908679 | 4 months ago |
|
|
76748b8478 | 4 months ago |
|
|
00fe38215c | 4 months ago |
|
|
4cb5fe44b6 | 4 months ago |
|
|
90f62f3fdf | 4 months ago |
|
|
0cc771dc3c | 4 months ago |
|
|
45d62a726c | 4 months ago |
|
|
15e9f51e2d | 4 months ago |
|
|
9a6420e1d5 | 4 months ago |
|
|
4c04b8c7c3 | 4 months ago |
|
|
9ed7164ed6 | 4 months ago |
|
|
faf86ca2b3 | 4 months ago |
|
|
ca5871f256 | 4 months ago |
|
|
945516c209 | 4 months ago |
|
|
97b2242b78 | 4 months ago |
|
|
817f0af239 | 4 months ago |
|
|
c0256d6edf | 4 months ago |
|
|
dc5209a3fd | 4 months ago |
|
|
5083eaffc6 | 4 months ago |
|
|
f2612fbe3a | 4 months ago |
|
|
8aad1418f6 | 4 months ago |
|
|
29a298a617 | 4 months ago |
|
|
f51e626c32 | 4 months ago |
|
|
5faa256178 | 4 months ago |
|
|
340ca1b493 | 4 months ago |
|
|
fcb829f724 | 4 months ago |
|
|
ac5eb232e9 | 4 months ago |
|
|
e62cfa2c02 | 4 months ago |
|
|
62dc40ce1c | 4 months ago |
|
|
5fbce46dcf | 4 months ago |
|
|
6b2b665ef7 | 4 months ago |
|
|
647e7409eb | 4 months ago |
|
|
43a20c9f68 | 4 months ago |
|
|
9b266da14f | 4 months ago |
|
|
58c9f48029 | 4 months ago |
|
|
2e71e5aeb9 | 4 months ago |
|
|
35830cb054 | 4 months ago |
|
|
ea238c9eb5 | 4 months ago |
|
|
ee297bb7ca | 4 months ago |
|
|
853752a3eb | 4 months ago |
|
|
181dbdbf27 | 4 months ago |
|
|
cdb7af094b | 4 months ago |
|
|
19f9c66004 | 4 months ago |
|
|
a0d56d2f4f | 4 months ago |
|
|
2fbd7c114e | 4 months ago |
|
|
737c68ace3 | 4 months ago |
|
|
d2be8684b3 | 4 months ago |
|
|
a2427e45df | 4 months ago |
|
|
19c7ec6ed2 | 4 months ago |
|
|
8c3d23513f | 5 months ago |
|
|
3882366585 | 5 months ago |
|
|
eb5e57a8f0 | 5 months ago |
|
|
ee96f8e912 | 5 months ago |
|
|
319dca2ea8 | 5 months ago |
|
|
da6735160d | 5 months ago |
|
|
c24b187f88 | 5 months ago |
|
|
e4135b6f19 | 5 months ago |
|
|
8207406306 | 5 months ago |
|
|
34f2f39abe | 5 months ago |
|
|
d19366331f | 5 months ago |
|
|
35252fd96c | 5 months ago |
|
|
6b347bfbf7 | 5 months ago |
|
|
a032f96222 | 5 months ago |
|
|
e162eda1e6 | 5 months ago |
|
|
205ca648bf | 5 months ago |
|
|
557733abb1 | 5 months ago |
|
|
a4e3575077 | 5 months ago |
|
|
a1d25cca00 | 5 months ago |
|
|
6ff6339191 | 5 months ago |
|
|
d6efb7db8a | 5 months ago |
|
|
ac8c66d431 | 5 months ago |
|
|
3511299e1e | 5 months ago |
|
|
7216e04139 | 5 months ago |
|
|
54ccad9e46 | 5 months ago |
|
|
fcffd707c6 | 5 months ago |
|
|
73369f53af | 5 months ago |
|
|
29cdba1fee | 5 months ago |
|
|
649c9ec443 | 5 months ago |
|
|
db819d2514 | 5 months ago |
|
|
4a03ccbd41 | 5 months ago |
|
|
66a7cfe77d | 5 months ago |
|
|
11f5563895 | 5 months ago |
|
|
e7c7df7074 | 5 months ago |
|
|
547c64f326 | 5 months ago |
|
|
1f8937b57e | 5 months ago |
|
|
3c52b14c9e | 5 months ago |
|
|
578d25f286 | 5 months ago |
|
|
ef9d92b31d | 6 months ago |
|
|
dde10a9afb | 6 months ago |
|
|
3354d0d4e2 | 6 months ago |
|
|
fa9f286096 | 6 months ago |
|
|
34abc83822 | 6 months ago |
|
|
46abcfcc82 | 6 months ago |
|
|
8e9f5fb9d5 | 6 months ago |
|
|
d922398c4d | 6 months ago |
|
|
678c6abc98 | 6 months ago |
|
|
83fcaeaa8b | 6 months ago |
|
|
eec57ec396 | 6 months ago |
|
|
778fdcbef1 | 6 months ago |
|
|
f6be5ab224 | 6 months ago |
|
|
093ac8df2d | 6 months ago |
|
|
025e9cfae6 | 6 months ago |
|
|
ed90a424a9 | 6 months ago |
|
|
f7e0612a85 | 6 months ago |
|
|
2991883672 | 6 months ago |
|
|
cace19f365 | 6 months ago |
|
|
7ef13cb29e | 6 months ago |
|
|
137036e96f | 6 months ago |
|
|
02c21742a3 | 6 months ago |
|
|
a09b25a356 | 6 months ago |
|
|
8ec403a3b9 | 6 months ago |
|
|
4b0a5c5c63 | 6 months ago |
|
|
76ad0b636f | 6 months ago |
|
|
7e495f4b20 | 6 months ago |
|
|
56de597fc7 | 6 months ago |
|
|
c8324aa01a | 6 months ago |
|
|
d3977ebc88 | 6 months ago |
|
|
2cfb158536 | 6 months ago |
|
|
bdc6c8e16a | 6 months ago |
|
|
1d1bbe3424 | 6 months ago |
|
|
714f796384 | 6 months ago |
|
|
45dd2c0647 | 6 months ago |
|
|
aa8d58a174 | 6 months ago |
|
|
532edf4c35 | 6 months ago |
|
|
4956619ac2 | 6 months ago |
|
|
2bed98bd20 | 6 months ago |
|
|
600c1e67b4 | 6 months ago |
|
|
43c0132caa | 6 months ago |
|
|
9f0a8075e3 | 6 months ago |
|
|
2b7204527b | 6 months ago |
|
|
ea7ad90c31 | 6 months ago |
|
|
051f7e5944 | 6 months ago |
|
|
1c06c46cc1 | 6 months ago |
|
|
6198c7377f | 6 months ago |
|
|
7da24ca7b0 | 6 months ago |
|
|
0bbd8847c4 | 6 months ago |
|
|
bbbfbd57e2 | 6 months ago |
|
|
d7c4d0119f | 6 months ago |
|
|
df0b417f2d | 6 months ago |
|
|
8f2622c39f | 6 months ago |
|
|
01bb9393d7 | 6 months ago |
|
|
3505572470 | 6 months ago |
|
|
487d699226 | 6 months ago |
|
|
b4741fc495 | 6 months ago |
|
|
0ee1c36779 | 6 months ago |
|
|
2a24633964 | 6 months ago |
|
|
eafe5fc739 | 6 months ago |
|
|
cbcefc53a3 | 6 months ago |
|
|
d41a3430b7 | 6 months ago |
|
|
0e2f770a24 | 6 months ago |
|
|
91453e30af | 6 months ago |
|
|
e2a5377b9a | 6 months ago |
|
|
b71d9aa4a5 | 6 months ago |
|
|
356bf336bd | 6 months ago |
|
|
f05b1d1ccf | 6 months ago |
|
|
99a3346de6 | 6 months ago |
|
|
a0132fec0b | 6 months ago |
|
|
3b66150cc3 | 6 months ago |
|
|
068157618c | 6 months ago |
|
|
f635a22d81 | 6 months ago |
|
|
17cee7a982 | 7 months ago |
|
|
359173c006 | 7 months ago |
|
|
e226294855 | 7 months ago |
|
|
53b0f1645b | 7 months ago |
|
|
c6a2e5ea75 | 7 months ago |
|
|
6a1c24ca99 | 7 months ago |
|
|
75f7b2267d | 7 months ago |
|
|
e82be177cd | 7 months ago |
|
|
feda0a5c6e | 7 months ago |
|
|
1e64707592 | 7 months ago |
|
|
242bb9ebab | 7 months ago |
|
|
40c919d7bd | 7 months ago |
|
|
97dd5f104c | 7 months ago |
|
|
14bf64ddf8 | 7 months ago |
|
|
ebd022ee42 | 7 months ago |
|
|
930ffd1a83 | 7 months ago |
|
|
ed0e78fd9c | 7 months ago |
|
|
460343510c | 7 months ago |
|
|
fe2d9e316a | 7 months ago |
|
|
7ac74ab591 | 7 months ago |
|
|
588410fe50 | 7 months ago |
|
|
f5a85493c1 | 7 months ago |
|
|
567fda6906 | 7 months ago |
|
|
e5476972da | 7 months ago |
|
|
7be1359841 | 7 months ago |
|
|
93aa611435 | 7 months ago |
|
|
9a426fe303 | 7 months ago |
|
|
fc8a227647 | 7 months ago |
|
|
9efba4f972 | 7 months ago |
|
|
8a4fb78988 | 7 months ago |
|
|
7b69cf3266 | 7 months ago |
|
|
4fe9606530 | 7 months ago |
|
|
d33bedc48f | 7 months ago |
|
|
dcc5dac184 | 7 months ago |
|
|
471c5229a7 | 7 months ago |
|
|
8b9ddf5544 | 7 months ago |
|
|
7e00053a30 | 7 months ago |
|
|
107842fd7d | 7 months ago |
|
|
1c29910087 | 7 months ago |
|
|
ff6998f2b9 | 7 months ago |
|
|
e4cac2ac33 | 7 months ago |
|
|
9f894b81c2 | 7 months ago |
|
|
cff49a62ec | 7 months ago |
|
|
dbf131c07d | 7 months ago |
|
|
0aa8afbaf4 | 7 months ago |
|
|
aab732cb82 | 7 months ago |
|
|
8ab342f8cc | 7 months ago |
|
|
03181ac87b | 7 months ago |
|
|
2033993d89 | 8 months ago |
|
|
1daa8412d5 | 8 months ago |
|
|
2cbb721f6f | 8 months ago |
|
|
e6dc17cda4 | 8 months ago |
|
|
5f6aef95ac | 8 months ago |
|
|
1b6b910439 | 8 months ago |
|
|
f7d03474a5 | 8 months ago |
|
|
93e6f012cb | 8 months ago |
|
|
6cc97447aa | 8 months ago |
|
|
e094d48b1b | 8 months ago |
|
|
500a4aba08 | 8 months ago |
|
|
4868effc71 | 8 months ago |
|
|
352d8ec33a | 8 months ago |
|
|
9ddfe9db39 | 8 months ago |
@ -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
|
||||
@ -0,0 +1,6 @@
|
||||
[tool.pip-tools]
|
||||
allow-unsafe = true # weird outdated default
|
||||
annotation-style = "line" # put the source tracking comments inline
|
||||
generate-hashes = false # pip bug https://github.com/pypa/pip/issues/9243
|
||||
resolver = "backtracking" # modern depresolver
|
||||
strip-extras = true # so that output files are true pip constraints
|
||||
@ -0,0 +1 @@
|
||||
codecov-cli
|
||||
@ -0,0 +1,18 @@
|
||||
#
|
||||
# This file is autogenerated by pip-compile with Python 3.13
|
||||
# by the following command:
|
||||
#
|
||||
# pip-compile --allow-unsafe --annotation-style=line --output-file=codecov.txt --strip-extras codecov.in
|
||||
#
|
||||
certifi==2025.8.3 # via requests, sentry-sdk
|
||||
charset-normalizer==3.4.3 # via requests
|
||||
click==8.2.1 # via codecov-cli
|
||||
codecov-cli==11.2.3 # via -r codecov.in
|
||||
idna==3.10 # via requests
|
||||
ijson==3.4.0 # via codecov-cli
|
||||
pyyaml==6.0.2 # via codecov-cli
|
||||
requests==2.32.5 # via responses
|
||||
responses==0.21.0 # via codecov-cli
|
||||
sentry-sdk==2.38.0 # via codecov-cli
|
||||
test-results-parser==0.5.4 # via codecov-cli
|
||||
urllib3==2.5.0 # via requests, responses, sentry-sdk
|
||||
@ -0,0 +1,55 @@
|
||||
---
|
||||
description: Review an Ansible PR following the project's standardized process from CLAUDE.md
|
||||
argument-hint: <pr_number>
|
||||
allowed-tools: [TodoWrite, Bash(gh pr view:*), Bash(gh pr diff:*), Bash(gh pr checkout:*), Bash(gh pr checks:*), Read, Grep, Glob, Search]
|
||||
---
|
||||
|
||||
PR Review Command
|
||||
=================
|
||||
|
||||
Review an Ansible PR following the project's standardized process from `CLAUDE.md`.
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
```bash
|
||||
/review <pr_number>
|
||||
```
|
||||
|
||||
Arguments
|
||||
---------
|
||||
|
||||
- `pr_number` (required): The GitHub PR number to review
|
||||
|
||||
Implementation
|
||||
--------------
|
||||
|
||||
This command implements the PR Review Guidelines documented in the `PR Review Guidelines` section of CLAUDE.md.
|
||||
|
||||
Review Process Steps
|
||||
--------------------
|
||||
|
||||
The command follows these numbered steps from CLAUDE.md:
|
||||
|
||||
1. **Create TodoWrite list** for systematic review tracking
|
||||
2. **Get PR details**: `gh pr view <number>` to understand scope, motivation and the desired outcome
|
||||
3. **Get PR diff**: `gh pr diff <number>` to see all changes
|
||||
4. **Check required components FIRST**:
|
||||
- Verify changelog fragment exists in `changelogs/fragments/`
|
||||
- Verify changelog uses correct section (check `changelogs/config.yaml`)
|
||||
- Verify tests exist and specifically cover the changed code paths
|
||||
- Unit tests should be pytest style, and functional rather than tightly coupled to mocking
|
||||
- Integration tests required for almost all plugin changes
|
||||
5. **Checkout PR branch**: `gh pr checkout <number>` to examine code holistically
|
||||
6. **Review existing feedback**: `gh pr view <number> --comments` for all comments and previous reviews
|
||||
7. **Verify all issues addressed**: Ensure bot failures, reviewer requests, and discussion points are resolved
|
||||
8. **Call out unresolved feedback**: Explicitly mention any discussions/requests that remain unaddressed
|
||||
|
||||
Critical Review Elements
|
||||
------------------------
|
||||
|
||||
- **Licensing**: Verify GPLv3/BSD-2-Clause compatibility for any new dependencies
|
||||
- **Test scope**: Tests must exercise actual changed code, not just add random coverage
|
||||
- **Changelog validation**: Fragment structure follows sections defined in `changelogs/config.yaml`
|
||||
|
||||
Each step is tracked in TodoWrite for visibility and systematic completion. A review round should not exceed 20 feedback items.
|
||||
@ -0,0 +1,3 @@
|
||||
- @AGENTS.md
|
||||
- @~/.claude/ansible.md
|
||||
- @CLAUDE.local.md
|
||||
@ -1,383 +0,0 @@
|
||||
==================================================================
|
||||
ansible-core 2.19 "What Is and What Should Never Be" Release Notes
|
||||
==================================================================
|
||||
|
||||
.. contents:: Topics
|
||||
|
||||
v2.19.0b3
|
||||
=========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2025-05-06
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.19/porting_guides/porting_guide_core_2.19.html>`__
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-config will now show internal, but not test configuration entries. This allows for debugging but still denoting the configurations as internal use only (_ prefix).
|
||||
- ansible-test - Improved ``pylint`` checks for Ansible-specific deprecation functions.
|
||||
- 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.
|
||||
- collection metadata - The collection loader now parses scalar values from ``meta/runtime.yml`` as strings. This avoids issues caused by unquoted values such as versions or dates being parsed as types other than strings.
|
||||
- deprecation warnings - Deprecation warning APIs automatically capture the identity of the deprecating plugin. The ``collection_name`` argument is only required to correctly attribute deprecations that occur in module_utils or other non-plugin code.
|
||||
- deprecation warnings - Improved deprecation messages to more clearly indicate the affected content, including plugin name when available.
|
||||
- deprecations - Collection name strings not of the form ``ns.coll`` passed to deprecation API functions will result in an error.
|
||||
- deprecations - Removed support for specifying deprecation dates as a ``datetime.date``, which was included in an earlier 2.19 pre-release.
|
||||
- deprecations - Some argument names to ``deprecate_value`` for consistency with existing APIs. An earlier 2.19 pre-release included a ``removal_`` prefix on the ``date`` and ``version`` arguments.
|
||||
- modules - The ``AnsibleModule.deprecate`` function no longer sends deprecation messages to the target host's logging system.
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- Passing a ``warnings` or ``deprecations`` key to ``exit_json`` or ``fail_json`` is deprecated. Use ``AnsibleModule.warn`` or ``AnsibleModule.deprecate`` instead.
|
||||
- plugins - Accessing plugins with ``_``-prefixed filenames without the ``_`` prefix is deprecated.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Ansible will now ensure predictable permissions on remote artifacts, until now it only ensured executable and relied on system masks for the rest.
|
||||
- dnf5 - avoid generating excessive transaction entries in the dnf5 history (https://github.com/ansible/ansible/issues/85046)
|
||||
|
||||
v2.19.0b2
|
||||
=========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2025-04-24
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.19/porting_guides/porting_guide_core_2.19.html>`__
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- comment filter - Improve the error message shown when an invalid ``style`` argument is provided.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Remove use of `required` parameter in `get_bin_path` which has been deprecated.
|
||||
- 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).
|
||||
|
||||
v2.19.0b1
|
||||
=========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2025-04-14
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.19/porting_guides/porting_guide_core_2.19.html>`__
|
||||
|
||||
Major Changes
|
||||
-------------
|
||||
|
||||
- Jinja plugins - Jinja builtin filter and test plugins are now accessible via their fully-qualified names ``ansible.builtin.{name}``.
|
||||
- Task Execution / Forks - Forks no longer inherit stdio from the parent ``ansible-playbook`` process. ``stdout``, ``stderr``, and ``stdin`` within a worker are detached from the terminal, and non-functional. All needs to access stdio from a fork for controller side plugins requires use of ``Display``.
|
||||
- ansible-test - Packages beneath ``module_utils`` can now contain ``__init__.py`` files.
|
||||
- variables - The type system underlying Ansible's variable storage has been significantly overhauled and formalized. Attempts to store unsupported Python object types in variables will now result in an error.
|
||||
- variables - To support new Ansible features, many variable objects are now represented by subclasses of their respective native Python types. In most cases, they behave indistinguishably from their original types, but some Python libraries do not handle builtin object subclasses properly. Custom plugins that interact with such libraries may require changes to convert and pass the native types.
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- Added a -vvvvv log message indicating when a host fails to produce output within the timeout period.
|
||||
- AnsibleModule.uri - Add option ``multipart_encoding`` for ``form-multipart`` files in body to change default base64 encoding for files
|
||||
- INVENTORY_IGNORE_EXTS config, removed ``ini`` from the default list, inventory scripts using a corresponding .ini configuration are rare now and inventory.ini files are more common. Those that need to ignore the ini files for inventory scripts can still add it to configuration.
|
||||
- Jinja plugins - Plugins can declare support for undefined values.
|
||||
- Jinja2 version 3.1.0 or later is now required on the controller.
|
||||
- Move ``follow_redirects`` parameter to module_utils so external modules can reuse it.
|
||||
- PlayIterator - do not return tasks from already executed roles so specific strategy plugins do not have to do the filtering of such tasks themselves
|
||||
- SSH Escalation-related -vvv log messages now include the associated host information.
|
||||
- Windows - Add support for Windows Server 2025 to Ansible and as an ``ansible-test`` remote target - https://github.com/ansible/ansible/issues/84229
|
||||
- Windows - refactor the async implementation to better handle errors during bootstrapping and avoid WMI when possible.
|
||||
- ``ansible-galaxy collection install`` — the collection dependency resolver now prints out conflicts it hits during dependency resolution when it's taking too long and it ends up backtracking a lot. It also displays suggestions on how to help it compute the result more quickly.
|
||||
- ansible, ansible-console, ansible-pull - add --flush-cache option (https://github.com/ansible/ansible/issues/83749).
|
||||
- ansible-galaxy - Add support for Keycloak service accounts
|
||||
- ansible-galaxy - support ``resolvelib >= 0.5.3, < 2.0.0`` (https://github.com/ansible/ansible/issues/84217).
|
||||
- ansible-test - Added a macOS 15.3 remote VM, replacing 14.3.
|
||||
- ansible-test - Automatically retry HTTP GET/PUT/DELETE requests on exceptions.
|
||||
- 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 - Disable the ``pep8`` sanity test rules ``E701`` and ``E704`` to improve compatibility with ``black``.
|
||||
- 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 - Replace container Alpine 3.20 with 3.21.
|
||||
- ansible-test - Replace container Fedora 40 with 41.
|
||||
- ansible-test - Replace remote Alpine 3.20 with 3.21.
|
||||
- ansible-test - Replace remote Fedora 40 with 41.
|
||||
- ansible-test - Replace remote FreeBSD 13.3 with 13.5.
|
||||
- ansible-test - Replace remote FreeBSD 14.1 with 14.2.
|
||||
- ansible-test - Replace remote RHEL 9.4 with 9.5.
|
||||
- ansible-test - Show a more user-friendly error message when a ``runme.sh`` script is not executable.
|
||||
- ansible-test - The ``yamllint`` sanity test now enforces string values for the ``!vault`` tag.
|
||||
- ansible-test - Update ``nios-test-container`` to version 7.0.0.
|
||||
- ansible-test - Update ``pylint`` sanity test to use version 3.3.1.
|
||||
- ansible-test - Update distro containers to remove unnecessary pakages (apache2, subversion, ruby).
|
||||
- ansible-test - Update sanity test requirements to latest available versions.
|
||||
- ansible-test - Update the HTTP test container.
|
||||
- ansible-test - Update the PyPI test container.
|
||||
- ansible-test - Update the ``base`` and ``default`` containers.
|
||||
- ansible-test - Update the utility container.
|
||||
- ansible-test - Use Python's ``urllib`` instead of ``curl`` for HTTP requests.
|
||||
- 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.
|
||||
- ansible-test acme test container - bump `version to 2.3.0 <https://github.com/ansible/acme-test-container/releases/tag/2.3.0>`__ to include newer versions of Pebble, dependencies, and runtimes. This adds support for ACME profiles, ``dns-account-01`` support, and some smaller improvements (https://github.com/ansible/ansible/pull/84547).
|
||||
- apt_key module - add notes to docs and errors to point at the CLI tool deprecation by Debian and alternatives
|
||||
- apt_repository module - add notes to errors to point at the CLI tool deprecation by Debian and alternatives
|
||||
- become plugins get new property 'pipelining' to show support or lack there of for the feature.
|
||||
- callback plugins - add has_option() to CallbackBase to match other functions overloaded from AnsiblePlugin
|
||||
- callback plugins - fix get_options() for CallbackBase
|
||||
- copy - fix sanity test failures (https://github.com/ansible/ansible/pull/83643).
|
||||
- copy - parameter ``local_follow`` was incorrectly documented as having default value ``True`` (https://github.com/ansible/ansible/pull/83643).
|
||||
- cron - Provide additional error information while writing cron file (https://github.com/ansible/ansible/issues/83223).
|
||||
- csvfile - let the config system do the typecasting (https://github.com/ansible/ansible/pull/82263).
|
||||
- display - Deduplication of warning and error messages considers the full content of the message (including source and traceback contexts, if enabled). This may result in fewer messages being omitted.
|
||||
- distribution - Added openSUSE MicroOS to Suse OS family (#84685).
|
||||
- dnf5, apt - add ``auto_install_module_deps`` option (https://github.com/ansible/ansible/issues/84206)
|
||||
- docs - add collection name in message from which the module is being deprecated (https://github.com/ansible/ansible/issues/84116).
|
||||
- env lookup - The error message generated for a missing environment variable when ``default`` is an undefined value (e.g. ``undef('something')``) will contain the hint from that undefined value, except when the undefined value is the default of ``undef()`` with no arguments. Previously, any existing undefined hint would be ignored.
|
||||
- file - enable file module to disable diff_mode (https://github.com/ansible/ansible/issues/80817).
|
||||
- file - make code more readable and simple.
|
||||
- filter - add support for URL-safe encoding and decoding in b64encode and b64decode (https://github.com/ansible/ansible/issues/84147).
|
||||
- find - add a checksum_algorithm parameter to specify which type of checksum the module will return
|
||||
- from_json filter - The filter accepts a ``profile`` argument, which defaults to ``tagless``.
|
||||
- handlers - Templated handler names with syntax errors, or that resolve to ``omit`` are now skipped like handlers with undefined variables in their name.
|
||||
- improved error message for yaml parsing errors in plugin documentation
|
||||
- local connection plugin - A new ``become_strip_preamble`` config option (default True) was added; disable to preserve diagnostic ``become`` output in task results.
|
||||
- local connection plugin - A new ``become_success_timeout`` operation-wide timeout config (default 10s) was added for ``become``.
|
||||
- local connection plugin - When a ``become`` plugin's ``prompt`` value is a non-string after the ``check_password_prompt`` callback has completed, no prompt stripping will occur on stderr.
|
||||
- lookup_template - add an option to trim blocks while templating (https://github.com/ansible/ansible/issues/75962).
|
||||
- module - set ipv4 and ipv6 rules simultaneously in iptables module (https://github.com/ansible/ansible/issues/84404).
|
||||
- module_utils - Add ``NoReturn`` type annotations to functions which never return.
|
||||
- modules - PowerShell modules can now receive ``datetime.date``, ``datetime.time`` and ``datetime.datetime`` values as ISO 8601 strings.
|
||||
- modules - PowerShell modules can now receive strings sourced from inline vault-encrypted strings.
|
||||
- modules - Unhandled exceptions during Python module execution are now returned as structured data from the target. This allows the new traceback handling to be applied to exceptions raised on targets.
|
||||
- pipelining logic has mostly moved to connection plugins so they can decide/override settings.
|
||||
- plugin error handling - When raising exceptions in an exception handler, be sure to use ``raise ... from`` as appropriate. This supersedes the use of the ``AnsibleError`` arg ``orig_exc`` to represent the cause. Specifying ``orig_exc`` as the cause is still permitted. Failure to use ``raise ... from`` when ``orig_exc`` is set will result in a warning. Additionally, if the two cause exceptions do not match, a warning will be issued.
|
||||
- removed harcoding of su plugin as it now works with pipelining.
|
||||
- runtime-metadata sanity test - improve validation of ``action_groups`` (https://github.com/ansible/ansible/pull/83965).
|
||||
- service_facts module got freebsd support added.
|
||||
- ssh connection plugin - Support ``SSH_ASKPASS`` mechanism to provide passwords, making it the default, but still offering an explicit choice to use ``sshpass`` (https://github.com/ansible/ansible/pull/83936)
|
||||
- ssh connection plugin now overrides pipelining when a tty is requested.
|
||||
- ssh-agent - ``ansible``, ``ansible-playbook`` and ``ansible-console`` are capable of spawning or reusing an ssh-agent, allowing plugins to interact with the ssh-agent. Additionally a pure python ssh-agent client has been added, enabling easy interaction with the agent. The ssh connection plugin contains new functionality via ``ansible_ssh_private_key`` and ``ansible_ssh_private_key_passphrase``, for loading an SSH private key into the agent from a variable.
|
||||
- templating - Access to an undefined variable from inside a lookup, filter, or test (which raises MarkerError) no longer ends processing of the current template. The triggering undefined value is returned as the result of the offending plugin invocation, and the template continues to execute.
|
||||
- templating - Embedding ``range()`` values in containers such as lists will result in an error on use. Previously the value would be converted to a string representing the range parameters, such as ``range(0, 3)``.
|
||||
- templating - Handling of omitted values is now a first-class feature of the template engine, and is usable in all Ansible Jinja template contexts. Any template that resolves to ``omit`` is automatically removed from its parent container during templating.
|
||||
- templating - Template evaluation is lazier than in previous versions. Template expressions which resolve only portions of a data structure no longer result in the entire structure being templated.
|
||||
- templating - Templating errors now provide more information about both the location and context of the error, especially for deeply-nested and/or indirected templating scenarios.
|
||||
- templating - Unified ``omit`` behavior now requires that plugins calling ``Templar.template()`` handle cases where the entire template result is omitted, by catching the ``AnsibleValueOmittedError`` that is raised. Previously, this condition caused a randomly-generated string marker to appear in the template result.
|
||||
- templating - Variables of type ``set`` and ``tuple`` are now converted to ``list`` when exiting the final pass of templating.
|
||||
- to_json / to_nice_json filters - The filters accept a ``profile`` argument, which defaults to ``tagless``.
|
||||
- troubleshooting - Tracebacks can be collected and displayed for most errors, warnings, and deprecation warnings (including those generated by modules). Tracebacks are no longer enabled with ``-vvv``; the behavior is directly configurable via the ``DISPLAY_TRACEBACK`` config option. Module tracebacks passed to ``fail_json`` via the ``exception`` kwarg will not be included in the task result unless error tracebacks are configured.
|
||||
- undef jinja function - The ``undef`` jinja function now raises an error if a non-string hint is given. Attempting to use an undefined hint also results in an error, ensuring incorrect use of the function can be distinguished from the function's normal behavior.
|
||||
- validate-modules sanity test - make sure that ``module`` and ``plugin`` ``seealso`` entries use FQCNs (https://github.com/ansible/ansible/pull/84325).
|
||||
- vault - improved vault filter documentation by adding missing example content for dump_template_data.j2, refining examples for clarity, and ensuring variable consistency (https://github.com/ansible/ansible/issues/83583).
|
||||
- warnings - All warnings (including deprecation warnings) issued during a task's execution are now accessible via the ``warnings`` and ``deprecations`` keys on the task result.
|
||||
- when the ``dict`` lookup is given a non-dict argument, show the value of the argument and its type in the error message.
|
||||
- windows - add hard minimum limit for PowerShell to 5.1. Ansible dropped support for older versions of PowerShell in the 2.16 release but this reqirement is now enforced at runtime.
|
||||
- windows - refactor windows exec runner to improve efficiency and add better error reporting on failures.
|
||||
- winrm - Remove need for pexpect on macOS hosts when using ``kinit`` to retrieve the Kerberos TGT. By default the code will now only use the builtin ``subprocess`` library which should handle issues with select and a high fd count and also simplify the code.
|
||||
|
||||
Breaking Changes / Porting Guide
|
||||
--------------------------------
|
||||
|
||||
- Support for the ``toml`` library has been removed from TOML inventory parsing and dumping. Use ``tomli`` for parsing on Python 3.10. Python 3.11 and later have built-in support for parsing. Use ``tomli-w`` to support outputting inventory in TOML format.
|
||||
- assert - The ``quiet`` argument must be a commonly-accepted boolean value. Previously, unrecognized values were silently treated as False.
|
||||
- callback plugins - The structure of the ``exception``, ``warnings`` and ``deprecations`` values visible to callbacks has changed. Callbacks that inspect or serialize these values may require special handling.
|
||||
- conditionals - Conditional expressions that result in non-boolean values are now an error by default. Such results often indicate unintentional use of templates where they are not supported, resulting in a conditional that is always true. When this option is enabled, conditional expressions which are a literal ``None`` or empty string will evaluate as true, for backwards compatibility. The error can be temporarily changed to a deprecation warning by enabling the ``ALLOW_BROKEN_CONDITIONALS`` config option.
|
||||
- first_found lookup - When specifying ``files`` or ``paths`` as a templated list containing undefined values, the undefined list elements will be discarded with a warning. Previously, the entire list would be discarded without any warning.
|
||||
- internals - The ``AnsibleLoader`` and ``AnsibleDumper`` classes for working with YAML are now factory functions and cannot be extended.
|
||||
- internals - The ``ansible.utils.native_jinja`` Python module has been removed.
|
||||
- inventory - Invalid variable names provided by inventories result in an inventory parse failure. This behavior is now consistent with other variable name usages throughout Ansible.
|
||||
- lookup plugins - Lookup plugins called as `with_(lookup)` will no longer have the `_subdir` attribute set.
|
||||
- lookup plugins - ``terms`` will always be passed to ``run`` as the first positional arg, where previously it was sometimes passed as a keyword arg when using ``with_`` syntax.
|
||||
- loops - Omit placeholders no longer leak between loop item templating and task templating. Previously, ``omit`` placeholders could remain embedded in loop items after templating and be used as an ``omit`` for task templating. Now, values resolving to ``omit`` are dropped immediately when loop items are templated. To turn missing values into an ``omit`` for task templating, use ``| default(omit)``. This solution is backwards compatible with previous versions of ansible-core.
|
||||
- modules - Ansible modules using ``sys.excepthook`` must use a standard ``try/except`` instead.
|
||||
- plugins - Any plugin that sources or creates templates must properly tag them as trusted.
|
||||
- plugins - Custom Jinja plugins that accept undefined top-level arguments must opt in to receiving them.
|
||||
- plugins - Custom Jinja plugins that use ``environment.getitem`` to retrieve undefined values will now trigger a ``MarkerError`` exception. This exception must be handled to allow the plugin to return a ``Marker``, or the plugin must opt-in to accepting ``Marker`` values.
|
||||
- public API - The ``ansible.vars.fact_cache.FactCache`` wrapper has been removed.
|
||||
- serialization of ``omit`` sentinel - Serialization of variables containing ``omit`` sentinels (e.g., by the ``to_json`` and ``to_yaml`` filters or ``ansible-inventory``) will fail if the variable has not completed templating. Previously, serialization succeeded with placeholder strings emitted in the serialized output.
|
||||
- set_fact - The string values "yes", "no", "true" and "false" were previously converted (ignoring case) to boolean values when not using Jinja2 native mode. Since Jinja2 native mode is always used, this conversion no longer occurs. When boolean values are required, native boolean syntax should be used where variables are defined, such as in YAML. When native boolean syntax is not an option, the ``bool`` filter can be used to parse string values into booleans.
|
||||
- template lookup - The ``convert_data`` option is deprecated and no longer has any effect. Use the ``from_json`` filter on the lookup result instead.
|
||||
- templating - Access to ``_`` prefixed attributes and methods, and methods with known side effects, is no longer permitted. In cases where a matching mapping key is present, the associated value will be returned instead of an error. This increases template environment isolation and ensures more consistent behavior between the ``.`` and ``[]`` operators.
|
||||
- templating - Conditionals and lookups which use embedded inline templates in Jinja string constants now display a warning. These templates should be converted to their expression equivalent.
|
||||
- templating - Many Jinja plugins (filters, lookups, tests) and methods previously silently ignored undefined inputs, which often masked subtle errors. Passing an undefined argument to a Jinja plugin or method that does not declare undefined support now results in an undefined value.
|
||||
- templating - Templates are always rendered in Jinja2 native mode. As a result, non-string values are no longer automatically converted to strings.
|
||||
- templating - Templates resulting in ``None`` are no longer automatically converted to an empty string.
|
||||
- templating - Templates with embedded inline templates that were not contained within a Jinja string constant now result in an error, as support for multi-pass templating was removed for security reasons. In most cases, such templates can be easily rewritten to avoid the use of embedded inline templates.
|
||||
- templating - The ``allow_unsafe_lookups`` option no longer has any effect. Lookup plugins are responsible for tagging strings containing templates to allow evaluation as a template.
|
||||
- templating - The result of the ``range()`` global function cannot be returned from a template- it should always be passed to a filter (e.g., ``random``). Previously, range objects returned from an intermediate template were always converted to a list, which is inconsistent with inline consumption of range objects.
|
||||
- templating - ``#jinja2:`` overrides in templates with invalid override names or types are now templating errors.
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- CLI - The ``--inventory-file`` option alias is deprecated. Use the ``-i`` or ``--inventory`` option instead.
|
||||
- Stategy Plugins - Use of strategy plugins not provided in ``ansible.builtin`` are deprecated and do not carry any backwards compatibility guarantees going forward. A future release will remove the ability to use external strategy plugins. No alternative for third party strategy plugins is currently planned.
|
||||
- ``ansible.module_utils.compat.datetime`` - The datetime compatibility shims are now deprecated. They are scheduled to be removed in ``ansible-core`` v2.21. This includes ``UTC``, ``utcfromtimestamp()`` and ``utcnow`` importable from said module (https://github.com/ansible/ansible/pull/81874).
|
||||
- bool filter - Support for coercing unrecognized input values (including None) has been deprecated. Consult the filter documentation for acceptable values, or consider use of the ``truthy`` and ``falsy`` tests.
|
||||
- cache plugins - The `ansible.plugins.cache.base` Python module is deprecated. Use `ansible.plugins.cache` instead.
|
||||
- callback plugins - The `v2_on_any` callback method is deprecated. Use specific callback methods instead.
|
||||
- callback plugins - The v1 callback API (callback methods not prefixed with `v2_`) is deprecated. Use `v2_` prefixed methods instead.
|
||||
- conditionals - Conditionals using Jinja templating delimiters (e.g., ``{{``, ``{%``) should be rewritten as expressions without delimiters, unless the entire conditional value is a single template that resolves to a trusted string expression. This is useful for dynamic indirection of conditional expressions, but is limited to trusted literal string expressions.
|
||||
- config - The ``ACTION_WARNINGS`` config has no effect. It previously disabled command warnings, which have since been removed.
|
||||
- config - The ``DEFAULT_JINJA2_NATIVE`` option has no effect. Jinja2 native mode is now the default and only option.
|
||||
- config - The ``DEFAULT_NULL_REPRESENTATION`` option has no effect. Null values are no longer automatically converted to another value during templating of single variable references.
|
||||
- display - The ``Display.get_deprecation_message`` method has been deprecated. Call ``Display.deprecated`` to display a deprecation message, or call it with ``removed=True`` to raise an ``AnsibleError``.
|
||||
- file loading - Loading text files with ``DataLoader`` containing data that cannot be decoded under the expected encoding is deprecated. In most cases the encoding must be UTF-8, although some plugins allow choosing a different encoding. Previously, invalid data was silently wrapped in Unicode surrogate escape sequences, often resulting in later errors or other data corruption.
|
||||
- first_found lookup - Splitting of file paths on ``,;:`` is deprecated. Pass a list of paths instead. The ``split`` method on strings can be used to split variables into a list as needed.
|
||||
- interpreter discovery - The ``auto_legacy`` and ``auto_legacy_silent`` options for ``INTERPRETER_PYTHON`` are deprecated. Use ``auto`` or ``auto_silent`` options instead, as they have the same effect.
|
||||
- oneline callback - The ``oneline`` callback and its associated ad-hoc CLI args (``-o``, ``--one-line``) are deprecated.
|
||||
- paramiko - The paramiko connection plugin has been deprecated with planned removal in 2.21.
|
||||
- playbook variables - The ``play_hosts`` variable has been deprecated, use ``ansible_play_batch`` instead.
|
||||
- plugin error handling - The ``AnsibleError`` constructor arg ``suppress_extended_error`` is deprecated. Using ``suppress_extended_error=True`` has the same effect as ``show_content=False``.
|
||||
- plugins - The ``listify_lookup_plugin_terms`` function is obsolete and in most cases no longer needed.
|
||||
- template lookup - The jinja2_native option is no longer used in the Ansible Core code base. Jinja2 native mode is now the default and only option.
|
||||
- templating - Support for enabling Jinja2 extensions (not plugins) has been deprecated.
|
||||
- templating - The ``ansible_managed`` variable available for certain templating scenarios, such as the ``template`` action and ``template`` lookup has been deprecated. Define and use a custom variable instead of relying on ``ansible_managed``.
|
||||
- templating - The ``disable_lookups`` option has no effect, since plugins must be updated to apply trust before any templating can be performed.
|
||||
- to_yaml/to_nice_yaml filters - Implicit YAML dumping of vaulted value ciphertext is deprecated. Set `dump_vault_tags` to explicitly specify the desired behavior.
|
||||
- tree callback - The ``tree`` callback and its associated ad-hoc CLI args (``-t``, ``--tree``) are deprecated.
|
||||
|
||||
Removed Features (previously deprecated)
|
||||
----------------------------------------
|
||||
|
||||
- Remove deprecated plural form of collection path (https://github.com/ansible/ansible/pull/84156).
|
||||
- Removed deprecated STRING_CONVERSION_ACTION (https://github.com/ansible/ansible/issues/84220).
|
||||
- encrypt - passing unsupported passlib hashtype now raises AnsibleFilterError.
|
||||
- manager - remove deprecated include_delegate_to parameter from get_vars API.
|
||||
- modules - Modules returning non-UTF8 strings now result in an error. The ``MODULE_STRICT_UTF8_RESPONSE`` setting can be used to disable this check.
|
||||
- removed deprecated pycompat24 and compat.importlib.
|
||||
- selector - remove deprecated compat.selector related files (https://github.com/ansible/ansible/pull/84155).
|
||||
- windows - removed common module functions ``ConvertFrom-AnsibleJson``, ``Format-AnsibleException`` from Windows modules as they are not used and add uneeded complexity to the code.
|
||||
|
||||
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)
|
||||
- templating - Ansible's template engine no longer processes Jinja templates in strings unless they are marked as coming from a trusted source. Untrusted strings containing Jinja template markers are ignored with a warning. Examples of trusted sources include playbooks, vars files, and many inventory sources. Examples of untrusted sources include module results and facts. Plugins which have not been updated to preserve trust while manipulating strings may inadvertently cause them to lose their trusted status.
|
||||
- templating - Changes to conditional expression handling removed numerous instances of insecure multi-pass templating (which could result in execution of untrusted template expressions).
|
||||
- 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
|
||||
--------
|
||||
|
||||
- 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.
|
||||
- Correctly return ``False`` when using the ``filter`` and ``test`` Jinja tests on plugin names which are not filters or tests, respectively. (resolves issue https://github.com/ansible/ansible/issues/82084)
|
||||
- Do not run implicit ``flush_handlers`` meta tasks when the whole play is excluded from the run due to tags specified.
|
||||
- Errors now preserve stacked error messages even when YAML is involved.
|
||||
- Fix a display.debug statement with the wrong param in _get_diff_data() method
|
||||
- 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 ipv6 pattern bug in lib/ansible/parsing/utils/addresses.py (https://github.com/ansible/ansible/issues/84237)
|
||||
- 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).
|
||||
- Implicit ``meta: flush_handlers`` tasks now have a parent block to prevent potential tracebacks when calling methods like ``get_play()`` on them internally.
|
||||
- Improve performance on large inventories by reducing the number of implicit meta tasks.
|
||||
- Jinja plugins - Errors raised will always be derived from ``AnsibleTemplatePluginError``.
|
||||
- Optimize the way tasks from within ``include_tasks``/``include_role`` are inserted into the play.
|
||||
- Time out waiting on become is an unreachable error (https://github.com/ansible/ansible/issues/84468)
|
||||
- Use consistent multiprocessing context for action write locks
|
||||
- Use the requested error message in the ansible.module_utils.facts.timeout timeout function instead of hardcoding one.
|
||||
- Windows - add support for running on system where WDAC is in audit mode with ``Dynamic Code Security`` enabled.
|
||||
- YAML parsing - The `!unsafe` tag no longer coerces non-string scalars to strings.
|
||||
- ``ansible-galaxy`` — the collection dependency resolver now treats version specifiers starting with ``!=`` as unpinned.
|
||||
- ``package``/``dnf`` action plugins - provide the reason behind the failure to gather the ``ansible_pkg_mgr`` fact to identify the package backend
|
||||
- action plugins - Action plugins that raise unhandled exceptions no longer terminate playbook loops. Previously, exceptions raised by an action plugin caused abnormal loop termination and loss of loop iteration results.
|
||||
- ansible-config - format galaxy server configs while dumping in JSON format (https://github.com/ansible/ansible/issues/84840).
|
||||
- ansible-doc - If none of the files in files exists, path will be undefined and a direct reference will throw an UnboundLocalError (https://github.com/ansible/ansible/pull/84464).
|
||||
- ansible-galaxy - Small adjustments to URL building for ``download_url`` and relative redirects.
|
||||
- ansible-pull change detection will now work independently of callback or result format settings.
|
||||
- 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 - Ensure CA certificates are installed on managed FreeBSD instances.
|
||||
- ansible-test - Fix support for PowerShell module_util imports with the ``-Optional`` flag.
|
||||
- ansible-test - Fix support for detecting PowerShell modules importing module utils with the newer ``#AnsibleRequires`` format.
|
||||
- ansible-test - Fix traceback that occurs after an interactive command fails.
|
||||
- ansible-test - Fix up coverage reporting to properly translate the temporary path of integration test modules to the expected static test module path.
|
||||
- ansible-test - Fixed traceback when handling certain YAML errors in the ``yamllint`` sanity test.
|
||||
- ansible-test - Managed macOS instances now use the ``sudo_chdir`` option for the ``sudo`` become plugin to avoid permission errors when dropping privileges.
|
||||
- ansible-vault will now correctly handle `--prompt`, previously it would issue an error about stdin if no 2nd argument was passed
|
||||
- ansible_uptime_second - added ansible_uptime_seconds fact support for AIX (https://github.com/ansible/ansible/pull/84321).
|
||||
- apt_key module - prevent tests from running when apt-key was removed
|
||||
- base.yml - deprecated libvirt_lxc_noseclabel config.
|
||||
- build - Pin ``wheel`` in ``pyproject.toml`` to ensure compatibility with supported ``setuptools`` versions.
|
||||
- config - various fixes to config lookup plugin (https://github.com/ansible/ansible/pull/84398).
|
||||
- copy - refactor copy module for simplicity.
|
||||
- copy action now prevents user from setting internal options.
|
||||
- debconf - set empty password values (https://github.com/ansible/ansible/issues/83214).
|
||||
- debug - hide loop vars in debug var display (https://github.com/ansible/ansible/issues/65856).
|
||||
- default callback - Error context is now shown for failing tasks that use the ``debug`` action.
|
||||
- display - The ``Display.deprecated`` method once again properly handles the ``removed=True`` argument (https://github.com/ansible/ansible/issues/82358).
|
||||
- distro - add support for Linux Mint Debian Edition (LMDE) (https://github.com/ansible/ansible/issues/84934).
|
||||
- distro - detect Debian as os_family for LMDE 6 (https://github.com/ansible/ansible/issues/84934).
|
||||
- dnf5 - Handle forwarded exceptions from dnf5-5.2.13 where a generic ``RuntimeError`` was previously raised
|
||||
- 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 - 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 - fix traceback when ``enable_plugins``/``disable_plugins`` is used on ``python3-libdnf5`` versions that do not support this functionality
|
||||
- dnf5 - libdnf5 - use ``conf.pkg_gpgcheck`` instead of deprecated ``conf.gpgcheck`` which is used only as a fallback
|
||||
- dnf5 - matching on a binary can be achieved only by specifying a full path (https://github.com/ansible/ansible/issues/84334)
|
||||
- facts - gather pagesize and calculate respective values depending upon architecture (https://github.com/ansible/ansible/issues/84773).
|
||||
- facts - skip if distribution file path is directory, instead of raising error (https://github.com/ansible/ansible/issues/84006).
|
||||
- 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).
|
||||
- first_found lookup - Corrected return value documentation to reflect None (not empty string) for no files found.
|
||||
- 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.
|
||||
- gather_facts action, will now add setup when 'smart' appears with other modules in the FACTS_MODULES setting (#84750).
|
||||
- get_url - add support for BSD-style checksum digest file (https://github.com/ansible/ansible/issues/84476).
|
||||
- get_url - fix honoring ``filename`` from the ``content-disposition`` header even when the type is ``inline`` (https://github.com/ansible/ansible/issues/83690)
|
||||
- host_group_vars - fixed defining the 'key' variable if the get_vars method is called with cache=False (https://github.com/ansible/ansible/issues/84384)
|
||||
- include_vars - fix including previously undefined hash variables with hash_behaviour merge (https://github.com/ansible/ansible/issues/84295).
|
||||
- iptables - Allows the wait paramater to be used with iptables chain creation (https://github.com/ansible/ansible/issues/84490)
|
||||
- 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).
|
||||
- local connection plugin - Become timeout errors now include all received data. Previously, the most recently-received data was discarded.
|
||||
- local connection plugin - Ensure ``become`` success validation always occurs, even when an active plugin does not set ``prompt``.
|
||||
- local connection plugin - Fixed cases where the internal ``BECOME-SUCCESS`` message appeared in task output.
|
||||
- local connection plugin - Fixed hang or spurious failure when data arrived concurrently on stdout and stderr during a successful ``become`` operation validation.
|
||||
- local connection plugin - Fixed hang when a become plugin expects a prompt but a password was not provided.
|
||||
- local connection plugin - Fixed hang when an active become plugin incorrectly signals lack of prompt.
|
||||
- local connection plugin - Fixed hang when an internal become read timeout expired before the password prompt was written.
|
||||
- local connection plugin - Fixed hang when only one of stdout or stderr was closed by the ``become_exe`` subprocess.
|
||||
- local connection plugin - Fixed long timeout/hang for ``become`` plugins that repeat their prompt on failure (e.g., ``sudo``, some ``su`` implementations).
|
||||
- local connection plugin - Fixed silent ignore of ``become`` failures and loss of task output when data arrived concurrently on stdout and stderr during ``become`` operation validation.
|
||||
- local connection plugin - Fixed task output header truncation when post-become data arrived before ``become`` operation validation had completed.
|
||||
- lookup plugins - The ``terms`` arg to the ``run`` method is now always a list. Previously, there were cases where a non-list could be received.
|
||||
- module arg templating - When using a templated raw task arg and a templated ``args`` keyword, args are now merged. Previously use of templated raw task args silently ignored all values from the templated ``args`` keyword.
|
||||
- module defaults - Module defaults are no longer templated unless they are used by a task that does not override them. Previously, all module defaults for all modules were templated for every task.
|
||||
- module respawn - limit to supported Python versions
|
||||
- omitting task args - Use of omit for task args now properly falls back to args of lower precedence, such as module defaults. Previously an omitted value would obliterate values of lower precedence.
|
||||
- package_facts module when using 'auto' will return the first package manager found that provides an output, instead of just the first one, as this can be foreign and not have any packages.
|
||||
- psrp - Improve stderr parsing when running raw commands that emit error records or stderr lines.
|
||||
- regex_search filter - Corrected return value documentation to reflect None (not empty string) for no match.
|
||||
- respawn - use copy of env variables to update existing PYTHONPATH value (https://github.com/ansible/ansible/issues/84954).
|
||||
- runas become - Fix up become logic to still get the SYSTEM token with the most privileges when running as SYSTEM.
|
||||
- sequence lookup - sequence query/lookups without positional arguments now return a valid list if their kwargs comprise a valid sequence expression (https://github.com/ansible/ansible/issues/82921).
|
||||
- service_facts - skip lines which does not contain service names in openrc output (https://github.com/ansible/ansible/issues/84512).
|
||||
- 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 - Raise exception when sshpass returns error code (https://github.com/ansible/ansible/issues/58133).
|
||||
- ssh - connection options were incorrectly templated during ``reset_connection`` tasks (https://github.com/ansible/ansible/pull/84238).
|
||||
- stability - Fixed silent process failure on unhandled IOError/OSError under ``linear`` strategy.
|
||||
- su become plugin - Ensure generated regex from ``prompt_l10n`` config values is properly escaped.
|
||||
- su become plugin - Ensure that password prompts are correctly detected in the presence of leading output. Previously, this case resulted in a timeout or hang.
|
||||
- su become plugin - Ensure that trailing colon is expected on all ``prompt_l10n`` config values.
|
||||
- sudo become plugin - The `sudo_chdir` config option allows the current directory to be set to the specified value before executing sudo to avoid permission errors when dropping privileges.
|
||||
- sunos - remove hard coding of virtinfo command in facts gathering code (https://github.com/ansible/ansible/pull/84357).
|
||||
- to_yaml/to_nice_yaml filters - Eliminated possibility of keyword arg collisions with internally-set defaults.
|
||||
- unarchive - Clamp timestamps from beyond y2038 to representible values when unpacking zip files on platforms that use 32-bit time_t (e.g. Debian i386).
|
||||
- uri - Form location correctly when the server returns a relative redirect (https://github.com/ansible/ansible/issues/84540)
|
||||
- uri - Handle HTTP exceptions raised while reading the content (https://github.com/ansible/ansible/issues/83794).
|
||||
- uri - mark ``url`` as required (https://github.com/ansible/ansible/pull/83642).
|
||||
- user - Create Buildroot subclass as alias to Busybox (https://github.com/ansible/ansible/issues/83665).
|
||||
- user - Set timeout for passphrase interaction.
|
||||
- user - Update prompt for SSH key passphrase (https://github.com/ansible/ansible/issues/84484).
|
||||
- user - Use higher precedence HOME_MODE as UMASK for path provided (https://github.com/ansible/ansible/pull/84482).
|
||||
- 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
|
||||
- vars lookup - The ``default`` substitution only applies when trying to look up a variable which is not defined. If the variable is defined, but templates to an undefined value, the ``default`` substitution will not apply. Use the ``default`` filter to coerce those values instead.
|
||||
- wait_for_connection - a warning was displayed if any hosts used a local connection (https://github.com/ansible/ansible/issues/84419)
|
||||
|
||||
Known Issues
|
||||
------------
|
||||
|
||||
- templating - Any string value starting with ``#jinja2:`` which is templated will always be interpreted as Jinja2 configuration overrides. To include this literal value at the start of a string, a space or other character must precede it.
|
||||
- variables - Tagged values cannot be used for dictionary keys in many circumstances.
|
||||
- variables - The values ``None``, ``True`` and ``False`` cannot be tagged because they are singletons. Attempts to apply tags to these values will be silently ignored.
|
||||
@ -1,855 +1,2 @@
|
||||
ancestor: 2.18.0
|
||||
releases:
|
||||
2.19.0b1:
|
||||
changes:
|
||||
breaking_changes:
|
||||
- Support for the ``toml`` library has been removed from TOML inventory parsing
|
||||
and dumping. Use ``tomli`` for parsing on Python 3.10. Python 3.11 and later
|
||||
have built-in support for parsing. Use ``tomli-w`` to support outputting inventory
|
||||
in TOML format.
|
||||
- assert - The ``quiet`` argument must be a commonly-accepted boolean value.
|
||||
Previously, unrecognized values were silently treated as False.
|
||||
- callback plugins - The structure of the ``exception``, ``warnings`` and ``deprecations``
|
||||
values visible to callbacks has changed. Callbacks that inspect or serialize
|
||||
these values may require special handling.
|
||||
- conditionals - Conditional expressions that result in non-boolean values are
|
||||
now an error by default. Such results often indicate unintentional use of
|
||||
templates where they are not supported, resulting in a conditional that is
|
||||
always true. When this option is enabled, conditional expressions which are
|
||||
a literal ``None`` or empty string will evaluate as true, for backwards compatibility.
|
||||
The error can be temporarily changed to a deprecation warning by enabling
|
||||
the ``ALLOW_BROKEN_CONDITIONALS`` config option.
|
||||
- first_found lookup - When specifying ``files`` or ``paths`` as a templated
|
||||
list containing undefined values, the undefined list elements will be discarded
|
||||
with a warning. Previously, the entire list would be discarded without any
|
||||
warning.
|
||||
- internals - The ``AnsibleLoader`` and ``AnsibleDumper`` classes for working
|
||||
with YAML are now factory functions and cannot be extended.
|
||||
- internals - The ``ansible.utils.native_jinja`` Python module has been removed.
|
||||
- inventory - Invalid variable names provided by inventories result in an inventory
|
||||
parse failure. This behavior is now consistent with other variable name usages
|
||||
throughout Ansible.
|
||||
- lookup plugins - Lookup plugins called as `with_(lookup)` will no longer have
|
||||
the `_subdir` attribute set.
|
||||
- lookup plugins - ``terms`` will always be passed to ``run`` as the first positional
|
||||
arg, where previously it was sometimes passed as a keyword arg when using
|
||||
``with_`` syntax.
|
||||
- loops - Omit placeholders no longer leak between loop item templating and
|
||||
task templating. Previously, ``omit`` placeholders could remain embedded in
|
||||
loop items after templating and be used as an ``omit`` for task templating.
|
||||
Now, values resolving to ``omit`` are dropped immediately when loop items
|
||||
are templated. To turn missing values into an ``omit`` for task templating,
|
||||
use ``| default(omit)``. This solution is backwards compatible with previous
|
||||
versions of ansible-core.
|
||||
- modules - Ansible modules using ``sys.excepthook`` must use a standard ``try/except``
|
||||
instead.
|
||||
- plugins - Any plugin that sources or creates templates must properly tag them
|
||||
as trusted.
|
||||
- plugins - Custom Jinja plugins that accept undefined top-level arguments must
|
||||
opt in to receiving them.
|
||||
- plugins - Custom Jinja plugins that use ``environment.getitem`` to retrieve
|
||||
undefined values will now trigger a ``MarkerError`` exception. This exception
|
||||
must be handled to allow the plugin to return a ``Marker``, or the plugin
|
||||
must opt-in to accepting ``Marker`` values.
|
||||
- public API - The ``ansible.vars.fact_cache.FactCache`` wrapper has been removed.
|
||||
- serialization of ``omit`` sentinel - Serialization of variables containing
|
||||
``omit`` sentinels (e.g., by the ``to_json`` and ``to_yaml`` filters or ``ansible-inventory``)
|
||||
will fail if the variable has not completed templating. Previously, serialization
|
||||
succeeded with placeholder strings emitted in the serialized output.
|
||||
- set_fact - The string values "yes", "no", "true" and "false" were previously
|
||||
converted (ignoring case) to boolean values when not using Jinja2 native mode.
|
||||
Since Jinja2 native mode is always used, this conversion no longer occurs.
|
||||
When boolean values are required, native boolean syntax should be used where
|
||||
variables are defined, such as in YAML. When native boolean syntax is not
|
||||
an option, the ``bool`` filter can be used to parse string values into booleans.
|
||||
- template lookup - The ``convert_data`` option is deprecated and no longer
|
||||
has any effect. Use the ``from_json`` filter on the lookup result instead.
|
||||
- templating - Access to ``_`` prefixed attributes and methods, and methods
|
||||
with known side effects, is no longer permitted. In cases where a matching
|
||||
mapping key is present, the associated value will be returned instead of an
|
||||
error. This increases template environment isolation and ensures more consistent
|
||||
behavior between the ``.`` and ``[]`` operators.
|
||||
- templating - Conditionals and lookups which use embedded inline templates
|
||||
in Jinja string constants now display a warning. These templates should be
|
||||
converted to their expression equivalent.
|
||||
- templating - Many Jinja plugins (filters, lookups, tests) and methods previously
|
||||
silently ignored undefined inputs, which often masked subtle errors. Passing
|
||||
an undefined argument to a Jinja plugin or method that does not declare undefined
|
||||
support now results in an undefined value.
|
||||
- templating - Templates are always rendered in Jinja2 native mode. As a result,
|
||||
non-string values are no longer automatically converted to strings.
|
||||
- templating - Templates resulting in ``None`` are no longer automatically converted
|
||||
to an empty string.
|
||||
- templating - Templates with embedded inline templates that were not contained
|
||||
within a Jinja string constant now result in an error, as support for multi-pass
|
||||
templating was removed for security reasons. In most cases, such templates
|
||||
can be easily rewritten to avoid the use of embedded inline templates.
|
||||
- templating - The ``allow_unsafe_lookups`` option no longer has any effect.
|
||||
Lookup plugins are responsible for tagging strings containing templates to
|
||||
allow evaluation as a template.
|
||||
- templating - The result of the ``range()`` global function cannot be returned
|
||||
from a template- it should always be passed to a filter (e.g., ``random``).
|
||||
Previously, range objects returned from an intermediate template were always
|
||||
converted to a list, which is inconsistent with inline consumption of range
|
||||
objects.
|
||||
- templating - ``#jinja2:`` overrides in templates with invalid override names
|
||||
or types are now templating errors.
|
||||
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.
|
||||
- Correctly return ``False`` when using the ``filter`` and ``test`` Jinja tests
|
||||
on plugin names which are not filters or tests, respectively. (resolves issue
|
||||
https://github.com/ansible/ansible/issues/82084)
|
||||
- Do not run implicit ``flush_handlers`` meta tasks when the whole play is excluded
|
||||
from the run due to tags specified.
|
||||
- Errors now preserve stacked error messages even when YAML is involved.
|
||||
- Fix a display.debug statement with the wrong param in _get_diff_data() method
|
||||
- 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 ipv6 pattern bug in lib/ansible/parsing/utils/addresses.py (https://github.com/ansible/ansible/issues/84237)
|
||||
- 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).
|
||||
- 'Implicit ``meta: flush_handlers`` tasks now have a parent block to prevent
|
||||
potential tracebacks when calling methods like ``get_play()`` on them internally.'
|
||||
- Improve performance on large inventories by reducing the number of implicit
|
||||
meta tasks.
|
||||
- Jinja plugins - Errors raised will always be derived from ``AnsibleTemplatePluginError``.
|
||||
- Optimize the way tasks from within ``include_tasks``/``include_role`` are
|
||||
inserted into the play.
|
||||
- Time out waiting on become is an unreachable error (https://github.com/ansible/ansible/issues/84468)
|
||||
- Use consistent multiprocessing context for action write locks
|
||||
- Use the requested error message in the ansible.module_utils.facts.timeout
|
||||
timeout function instead of hardcoding one.
|
||||
- Windows - add support for running on system where WDAC is in audit mode with
|
||||
``Dynamic Code Security`` enabled.
|
||||
- YAML parsing - The `!unsafe` tag no longer coerces non-string scalars to strings.
|
||||
- "``ansible-galaxy`` \u2014 the collection dependency resolver now treats version
|
||||
specifiers starting with ``!=`` as unpinned."
|
||||
- '``package``/``dnf`` action plugins - provide the reason behind the failure
|
||||
to gather the ``ansible_pkg_mgr`` fact to identify the package backend'
|
||||
- action plugins - Action plugins that raise unhandled exceptions no longer
|
||||
terminate playbook loops. Previously, exceptions raised by an action plugin
|
||||
caused abnormal loop termination and loss of loop iteration results.
|
||||
- ansible-config - format galaxy server configs while dumping in JSON format
|
||||
(https://github.com/ansible/ansible/issues/84840).
|
||||
- ansible-doc - If none of the files in files exists, path will be undefined
|
||||
and a direct reference will throw an UnboundLocalError (https://github.com/ansible/ansible/pull/84464).
|
||||
- ansible-galaxy - Small adjustments to URL building for ``download_url`` and
|
||||
relative redirects.
|
||||
- ansible-pull change detection will now work independently of callback or result
|
||||
format settings.
|
||||
- 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 - Ensure CA certificates are installed on managed FreeBSD instances.
|
||||
- ansible-test - Fix support for PowerShell module_util imports with the ``-Optional``
|
||||
flag.
|
||||
- ansible-test - Fix support for detecting PowerShell modules importing module
|
||||
utils with the newer ``#AnsibleRequires`` format.
|
||||
- ansible-test - Fix traceback that occurs after an interactive command fails.
|
||||
- ansible-test - Fix up coverage reporting to properly translate the temporary
|
||||
path of integration test modules to the expected static test module path.
|
||||
- ansible-test - Fixed traceback when handling certain YAML errors in the ``yamllint``
|
||||
sanity test.
|
||||
- ansible-test - Managed macOS instances now use the ``sudo_chdir`` option for
|
||||
the ``sudo`` become plugin to avoid permission errors when dropping privileges.
|
||||
- ansible-vault will now correctly handle `--prompt`, previously it would issue
|
||||
an error about stdin if no 2nd argument was passed
|
||||
- ansible_uptime_second - added ansible_uptime_seconds fact support for AIX
|
||||
(https://github.com/ansible/ansible/pull/84321).
|
||||
- apt_key module - prevent tests from running when apt-key was removed
|
||||
- base.yml - deprecated libvirt_lxc_noseclabel config.
|
||||
- build - Pin ``wheel`` in ``pyproject.toml`` to ensure compatibility with supported
|
||||
``setuptools`` versions.
|
||||
- config - various fixes to config lookup plugin (https://github.com/ansible/ansible/pull/84398).
|
||||
- copy - refactor copy module for simplicity.
|
||||
- copy action now prevents user from setting internal options.
|
||||
- debconf - set empty password values (https://github.com/ansible/ansible/issues/83214).
|
||||
- debug - hide loop vars in debug var display (https://github.com/ansible/ansible/issues/65856).
|
||||
- default callback - Error context is now shown for failing tasks that use the
|
||||
``debug`` action.
|
||||
- display - The ``Display.deprecated`` method once again properly handles the
|
||||
``removed=True`` argument (https://github.com/ansible/ansible/issues/82358).
|
||||
- distro - add support for Linux Mint Debian Edition (LMDE) (https://github.com/ansible/ansible/issues/84934).
|
||||
- distro - detect Debian as os_family for LMDE 6 (https://github.com/ansible/ansible/issues/84934).
|
||||
- dnf5 - Handle forwarded exceptions from dnf5-5.2.13 where a generic ``RuntimeError``
|
||||
was previously raised
|
||||
- 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 - 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 - fix traceback when ``enable_plugins``/``disable_plugins`` is used on
|
||||
``python3-libdnf5`` versions that do not support this functionality
|
||||
- dnf5 - libdnf5 - use ``conf.pkg_gpgcheck`` instead of deprecated ``conf.gpgcheck``
|
||||
which is used only as a fallback
|
||||
- dnf5 - matching on a binary can be achieved only by specifying a full path
|
||||
(https://github.com/ansible/ansible/issues/84334)
|
||||
- facts - gather pagesize and calculate respective values depending upon architecture
|
||||
(https://github.com/ansible/ansible/issues/84773).
|
||||
- facts - skip if distribution file path is directory, instead of raising error
|
||||
(https://github.com/ansible/ansible/issues/84006).
|
||||
- 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).
|
||||
- first_found lookup - Corrected return value documentation to reflect None
|
||||
(not empty string) for no files found.
|
||||
- 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.
|
||||
- gather_facts action, will now add setup when 'smart' appears with other modules
|
||||
in the FACTS_MODULES setting (#84750).
|
||||
- get_url - add support for BSD-style checksum digest file (https://github.com/ansible/ansible/issues/84476).
|
||||
- get_url - fix honoring ``filename`` from the ``content-disposition`` header
|
||||
even when the type is ``inline`` (https://github.com/ansible/ansible/issues/83690)
|
||||
- host_group_vars - fixed defining the 'key' variable if the get_vars method
|
||||
is called with cache=False (https://github.com/ansible/ansible/issues/84384)
|
||||
- include_vars - fix including previously undefined hash variables with hash_behaviour
|
||||
merge (https://github.com/ansible/ansible/issues/84295).
|
||||
- iptables - Allows the wait paramater to be used with iptables chain creation
|
||||
(https://github.com/ansible/ansible/issues/84490)
|
||||
- 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).
|
||||
- local connection plugin - Become timeout errors now include all received data.
|
||||
Previously, the most recently-received data was discarded.
|
||||
- local connection plugin - Ensure ``become`` success validation always occurs,
|
||||
even when an active plugin does not set ``prompt``.
|
||||
- local connection plugin - Fixed cases where the internal ``BECOME-SUCCESS``
|
||||
message appeared in task output.
|
||||
- local connection plugin - Fixed hang or spurious failure when data arrived
|
||||
concurrently on stdout and stderr during a successful ``become`` operation
|
||||
validation.
|
||||
- local connection plugin - Fixed hang when a become plugin expects a prompt
|
||||
but a password was not provided.
|
||||
- local connection plugin - Fixed hang when an active become plugin incorrectly
|
||||
signals lack of prompt.
|
||||
- local connection plugin - Fixed hang when an internal become read timeout
|
||||
expired before the password prompt was written.
|
||||
- local connection plugin - Fixed hang when only one of stdout or stderr was
|
||||
closed by the ``become_exe`` subprocess.
|
||||
- local connection plugin - Fixed long timeout/hang for ``become`` plugins that
|
||||
repeat their prompt on failure (e.g., ``sudo``, some ``su`` implementations).
|
||||
- local connection plugin - Fixed silent ignore of ``become`` failures and loss
|
||||
of task output when data arrived concurrently on stdout and stderr during
|
||||
``become`` operation validation.
|
||||
- local connection plugin - Fixed task output header truncation when post-become
|
||||
data arrived before ``become`` operation validation had completed.
|
||||
- lookup plugins - The ``terms`` arg to the ``run`` method is now always a list.
|
||||
Previously, there were cases where a non-list could be received.
|
||||
- module arg templating - When using a templated raw task arg and a templated
|
||||
``args`` keyword, args are now merged. Previously use of templated raw task
|
||||
args silently ignored all values from the templated ``args`` keyword.
|
||||
- module defaults - Module defaults are no longer templated unless they are
|
||||
used by a task that does not override them. Previously, all module defaults
|
||||
for all modules were templated for every task.
|
||||
- module respawn - limit to supported Python versions
|
||||
- omitting task args - Use of omit for task args now properly falls back to
|
||||
args of lower precedence, such as module defaults. Previously an omitted value
|
||||
would obliterate values of lower precedence.
|
||||
- package_facts module when using 'auto' will return the first package manager
|
||||
found that provides an output, instead of just the first one, as this can
|
||||
be foreign and not have any packages.
|
||||
- psrp - Improve stderr parsing when running raw commands that emit error records
|
||||
or stderr lines.
|
||||
- regex_search filter - Corrected return value documentation to reflect None
|
||||
(not empty string) for no match.
|
||||
- respawn - use copy of env variables to update existing PYTHONPATH value (https://github.com/ansible/ansible/issues/84954).
|
||||
- runas become - Fix up become logic to still get the SYSTEM token with the
|
||||
most privileges when running as SYSTEM.
|
||||
- sequence lookup - sequence query/lookups without positional arguments now
|
||||
return a valid list if their kwargs comprise a valid sequence expression (https://github.com/ansible/ansible/issues/82921).
|
||||
- service_facts - skip lines which does not contain service names in openrc
|
||||
output (https://github.com/ansible/ansible/issues/84512).
|
||||
- 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 - Raise exception when sshpass returns error code (https://github.com/ansible/ansible/issues/58133).
|
||||
- ssh - connection options were incorrectly templated during ``reset_connection``
|
||||
tasks (https://github.com/ansible/ansible/pull/84238).
|
||||
- stability - Fixed silent process failure on unhandled IOError/OSError under
|
||||
``linear`` strategy.
|
||||
- su become plugin - Ensure generated regex from ``prompt_l10n`` config values
|
||||
is properly escaped.
|
||||
- su become plugin - Ensure that password prompts are correctly detected in
|
||||
the presence of leading output. Previously, this case resulted in a timeout
|
||||
or hang.
|
||||
- su become plugin - Ensure that trailing colon is expected on all ``prompt_l10n``
|
||||
config values.
|
||||
- sudo become plugin - The `sudo_chdir` config option allows the current directory
|
||||
to be set to the specified value before executing sudo to avoid permission
|
||||
errors when dropping privileges.
|
||||
- sunos - remove hard coding of virtinfo command in facts gathering code (https://github.com/ansible/ansible/pull/84357).
|
||||
- to_yaml/to_nice_yaml filters - Eliminated possibility of keyword arg collisions
|
||||
with internally-set defaults.
|
||||
- unarchive - Clamp timestamps from beyond y2038 to representible values when
|
||||
unpacking zip files on platforms that use 32-bit time_t (e.g. Debian i386).
|
||||
- uri - Form location correctly when the server returns a relative redirect
|
||||
(https://github.com/ansible/ansible/issues/84540)
|
||||
- uri - Handle HTTP exceptions raised while reading the content (https://github.com/ansible/ansible/issues/83794).
|
||||
- uri - mark ``url`` as required (https://github.com/ansible/ansible/pull/83642).
|
||||
- user - Create Buildroot subclass as alias to Busybox (https://github.com/ansible/ansible/issues/83665).
|
||||
- user - Set timeout for passphrase interaction.
|
||||
- user - Update prompt for SSH key passphrase (https://github.com/ansible/ansible/issues/84484).
|
||||
- user - Use higher precedence HOME_MODE as UMASK for path provided (https://github.com/ansible/ansible/pull/84482).
|
||||
- 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
|
||||
- vars lookup - The ``default`` substitution only applies when trying to look
|
||||
up a variable which is not defined. If the variable is defined, but templates
|
||||
to an undefined value, the ``default`` substitution will not apply. Use the
|
||||
``default`` filter to coerce those values instead.
|
||||
- wait_for_connection - a warning was displayed if any hosts used a local connection
|
||||
(https://github.com/ansible/ansible/issues/84419)
|
||||
deprecated_features:
|
||||
- CLI - The ``--inventory-file`` option alias is deprecated. Use the ``-i``
|
||||
or ``--inventory`` option instead.
|
||||
- Stategy Plugins - Use of strategy plugins not provided in ``ansible.builtin``
|
||||
are deprecated and do not carry any backwards compatibility guarantees going
|
||||
forward. A future release will remove the ability to use external strategy
|
||||
plugins. No alternative for third party strategy plugins is currently planned.
|
||||
- '``ansible.module_utils.compat.datetime`` - The datetime compatibility shims
|
||||
are now deprecated. They are scheduled to be removed in ``ansible-core`` v2.21.
|
||||
This includes ``UTC``, ``utcfromtimestamp()`` and ``utcnow`` importable from
|
||||
said module (https://github.com/ansible/ansible/pull/81874).'
|
||||
- bool filter - Support for coercing unrecognized input values (including None)
|
||||
has been deprecated. Consult the filter documentation for acceptable values,
|
||||
or consider use of the ``truthy`` and ``falsy`` tests.
|
||||
- cache plugins - The `ansible.plugins.cache.base` Python module is deprecated.
|
||||
Use `ansible.plugins.cache` instead.
|
||||
- callback plugins - The `v2_on_any` callback method is deprecated. Use specific
|
||||
callback methods instead.
|
||||
- callback plugins - The v1 callback API (callback methods not prefixed with
|
||||
`v2_`) is deprecated. Use `v2_` prefixed methods instead.
|
||||
- conditionals - Conditionals using Jinja templating delimiters (e.g., ``{{``,
|
||||
``{%``) should be rewritten as expressions without delimiters, unless the
|
||||
entire conditional value is a single template that resolves to a trusted string
|
||||
expression. This is useful for dynamic indirection of conditional expressions,
|
||||
but is limited to trusted literal string expressions.
|
||||
- config - The ``ACTION_WARNINGS`` config has no effect. It previously disabled
|
||||
command warnings, which have since been removed.
|
||||
- config - The ``DEFAULT_JINJA2_NATIVE`` option has no effect. Jinja2 native
|
||||
mode is now the default and only option.
|
||||
- config - The ``DEFAULT_NULL_REPRESENTATION`` option has no effect. Null values
|
||||
are no longer automatically converted to another value during templating of
|
||||
single variable references.
|
||||
- display - The ``Display.get_deprecation_message`` method has been deprecated.
|
||||
Call ``Display.deprecated`` to display a deprecation message, or call it with
|
||||
``removed=True`` to raise an ``AnsibleError``.
|
||||
- file loading - Loading text files with ``DataLoader`` containing data that
|
||||
cannot be decoded under the expected encoding is deprecated. In most cases
|
||||
the encoding must be UTF-8, although some plugins allow choosing a different
|
||||
encoding. Previously, invalid data was silently wrapped in Unicode surrogate
|
||||
escape sequences, often resulting in later errors or other data corruption.
|
||||
- first_found lookup - Splitting of file paths on ``,;:`` is deprecated. Pass
|
||||
a list of paths instead. The ``split`` method on strings can be used to split
|
||||
variables into a list as needed.
|
||||
- interpreter discovery - The ``auto_legacy`` and ``auto_legacy_silent`` options
|
||||
for ``INTERPRETER_PYTHON`` are deprecated. Use ``auto`` or ``auto_silent``
|
||||
options instead, as they have the same effect.
|
||||
- oneline callback - The ``oneline`` callback and its associated ad-hoc CLI
|
||||
args (``-o``, ``--one-line``) are deprecated.
|
||||
- paramiko - The paramiko connection plugin has been deprecated with planned
|
||||
removal in 2.21.
|
||||
- playbook variables - The ``play_hosts`` variable has been deprecated, use
|
||||
``ansible_play_batch`` instead.
|
||||
- plugin error handling - The ``AnsibleError`` constructor arg ``suppress_extended_error``
|
||||
is deprecated. Using ``suppress_extended_error=True`` has the same effect
|
||||
as ``show_content=False``.
|
||||
- plugins - The ``listify_lookup_plugin_terms`` function is obsolete and in
|
||||
most cases no longer needed.
|
||||
- template lookup - The jinja2_native option is no longer used in the Ansible
|
||||
Core code base. Jinja2 native mode is now the default and only option.
|
||||
- templating - Support for enabling Jinja2 extensions (not plugins) has been
|
||||
deprecated.
|
||||
- templating - The ``ansible_managed`` variable available for certain templating
|
||||
scenarios, such as the ``template`` action and ``template`` lookup has been
|
||||
deprecated. Define and use a custom variable instead of relying on ``ansible_managed``.
|
||||
- templating - The ``disable_lookups`` option has no effect, since plugins must
|
||||
be updated to apply trust before any templating can be performed.
|
||||
- to_yaml/to_nice_yaml filters - Implicit YAML dumping of vaulted value ciphertext
|
||||
is deprecated. Set `dump_vault_tags` to explicitly specify the desired behavior.
|
||||
- tree callback - The ``tree`` callback and its associated ad-hoc CLI args (``-t``,
|
||||
``--tree``) are deprecated.
|
||||
known_issues:
|
||||
- templating - Any string value starting with ``#jinja2:`` which is templated
|
||||
will always be interpreted as Jinja2 configuration overrides. To include this
|
||||
literal value at the start of a string, a space or other character must precede
|
||||
it.
|
||||
- variables - Tagged values cannot be used for dictionary keys in many circumstances.
|
||||
- variables - The values ``None``, ``True`` and ``False`` cannot be tagged because
|
||||
they are singletons. Attempts to apply tags to these values will be silently
|
||||
ignored.
|
||||
major_changes:
|
||||
- Jinja plugins - Jinja builtin filter and test plugins are now accessible via
|
||||
their fully-qualified names ``ansible.builtin.{name}``.
|
||||
- Task Execution / Forks - Forks no longer inherit stdio from the parent ``ansible-playbook``
|
||||
process. ``stdout``, ``stderr``, and ``stdin`` within a worker are detached
|
||||
from the terminal, and non-functional. All needs to access stdio from a fork
|
||||
for controller side plugins requires use of ``Display``.
|
||||
- ansible-test - Packages beneath ``module_utils`` can now contain ``__init__.py``
|
||||
files.
|
||||
- variables - The type system underlying Ansible's variable storage has been
|
||||
significantly overhauled and formalized. Attempts to store unsupported Python
|
||||
object types in variables will now result in an error.
|
||||
- variables - To support new Ansible features, many variable objects are now
|
||||
represented by subclasses of their respective native Python types. In most
|
||||
cases, they behave indistinguishably from their original types, but some Python
|
||||
libraries do not handle builtin object subclasses properly. Custom plugins
|
||||
that interact with such libraries may require changes to convert and pass
|
||||
the native types.
|
||||
minor_changes:
|
||||
- Added a -vvvvv log message indicating when a host fails to produce output
|
||||
within the timeout period.
|
||||
- AnsibleModule.uri - Add option ``multipart_encoding`` for ``form-multipart``
|
||||
files in body to change default base64 encoding for files
|
||||
- INVENTORY_IGNORE_EXTS config, removed ``ini`` from the default list, inventory
|
||||
scripts using a corresponding .ini configuration are rare now and inventory.ini
|
||||
files are more common. Those that need to ignore the ini files for inventory
|
||||
scripts can still add it to configuration.
|
||||
- Jinja plugins - Plugins can declare support for undefined values.
|
||||
- Jinja2 version 3.1.0 or later is now required on the controller.
|
||||
- Move ``follow_redirects`` parameter to module_utils so external modules can
|
||||
reuse it.
|
||||
- PlayIterator - do not return tasks from already executed roles so specific
|
||||
strategy plugins do not have to do the filtering of such tasks themselves
|
||||
- SSH Escalation-related -vvv log messages now include the associated host information.
|
||||
- Windows - Add support for Windows Server 2025 to Ansible and as an ``ansible-test``
|
||||
remote target - https://github.com/ansible/ansible/issues/84229
|
||||
- Windows - refactor the async implementation to better handle errors during
|
||||
bootstrapping and avoid WMI when possible.
|
||||
- "``ansible-galaxy collection install`` \u2014 the collection dependency resolver
|
||||
now prints out conflicts it hits during dependency resolution when it's taking
|
||||
too long and it ends up backtracking a lot. It also displays suggestions on
|
||||
how to help it compute the result more quickly."
|
||||
- 'ansible, ansible-console, ansible-pull - add --flush-cache option (https://github.com/ansible/ansible/issues/83749).
|
||||
|
||||
'
|
||||
- ansible-galaxy - Add support for Keycloak service accounts
|
||||
- ansible-galaxy - support ``resolvelib >= 0.5.3, < 2.0.0`` (https://github.com/ansible/ansible/issues/84217).
|
||||
- ansible-test - Added a macOS 15.3 remote VM, replacing 14.3.
|
||||
- ansible-test - Automatically retry HTTP GET/PUT/DELETE requests on exceptions.
|
||||
- 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 - Disable the ``pep8`` sanity test rules ``E701`` and ``E704``
|
||||
to improve compatibility with ``black``.
|
||||
- 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 - Replace container Alpine 3.20 with 3.21.
|
||||
- ansible-test - Replace container Fedora 40 with 41.
|
||||
- ansible-test - Replace remote Alpine 3.20 with 3.21.
|
||||
- ansible-test - Replace remote Fedora 40 with 41.
|
||||
- ansible-test - Replace remote FreeBSD 13.3 with 13.5.
|
||||
- ansible-test - Replace remote FreeBSD 14.1 with 14.2.
|
||||
- ansible-test - Replace remote RHEL 9.4 with 9.5.
|
||||
- ansible-test - Show a more user-friendly error message when a ``runme.sh``
|
||||
script is not executable.
|
||||
- ansible-test - The ``yamllint`` sanity test now enforces string values for
|
||||
the ``!vault`` tag.
|
||||
- ansible-test - Update ``nios-test-container`` to version 7.0.0.
|
||||
- ansible-test - Update ``pylint`` sanity test to use version 3.3.1.
|
||||
- ansible-test - Update distro containers to remove unnecessary pakages (apache2,
|
||||
subversion, ruby).
|
||||
- ansible-test - Update sanity test requirements to latest available versions.
|
||||
- ansible-test - Update the HTTP test container.
|
||||
- ansible-test - Update the PyPI test container.
|
||||
- ansible-test - Update the ``base`` and ``default`` containers.
|
||||
- ansible-test - Update the utility container.
|
||||
- ansible-test - Use Python's ``urllib`` instead of ``curl`` for HTTP requests.
|
||||
- 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.
|
||||
- ansible-test acme test container - bump `version to 2.3.0 <https://github.com/ansible/acme-test-container/releases/tag/2.3.0>`__
|
||||
to include newer versions of Pebble, dependencies, and runtimes. This adds
|
||||
support for ACME profiles, ``dns-account-01`` support, and some smaller improvements
|
||||
(https://github.com/ansible/ansible/pull/84547).
|
||||
- apt_key module - add notes to docs and errors to point at the CLI tool deprecation
|
||||
by Debian and alternatives
|
||||
- apt_repository module - add notes to errors to point at the CLI tool deprecation
|
||||
by Debian and alternatives
|
||||
- become plugins get new property 'pipelining' to show support or lack there
|
||||
of for the feature.
|
||||
- callback plugins - add has_option() to CallbackBase to match other functions
|
||||
overloaded from AnsiblePlugin
|
||||
- callback plugins - fix get_options() for CallbackBase
|
||||
- copy - fix sanity test failures (https://github.com/ansible/ansible/pull/83643).
|
||||
- copy - parameter ``local_follow`` was incorrectly documented as having default
|
||||
value ``True`` (https://github.com/ansible/ansible/pull/83643).
|
||||
- cron - Provide additional error information while writing cron file (https://github.com/ansible/ansible/issues/83223).
|
||||
- csvfile - let the config system do the typecasting (https://github.com/ansible/ansible/pull/82263).
|
||||
- display - Deduplication of warning and error messages considers the full content
|
||||
of the message (including source and traceback contexts, if enabled). This
|
||||
may result in fewer messages being omitted.
|
||||
- distribution - Added openSUSE MicroOS to Suse OS family (#84685).
|
||||
- dnf5, apt - add ``auto_install_module_deps`` option (https://github.com/ansible/ansible/issues/84206)
|
||||
- docs - add collection name in message from which the module is being deprecated
|
||||
(https://github.com/ansible/ansible/issues/84116).
|
||||
- env lookup - The error message generated for a missing environment variable
|
||||
when ``default`` is an undefined value (e.g. ``undef('something')``) will
|
||||
contain the hint from that undefined value, except when the undefined value
|
||||
is the default of ``undef()`` with no arguments. Previously, any existing
|
||||
undefined hint would be ignored.
|
||||
- file - enable file module to disable diff_mode (https://github.com/ansible/ansible/issues/80817).
|
||||
- file - make code more readable and simple.
|
||||
- filter - add support for URL-safe encoding and decoding in b64encode and b64decode
|
||||
(https://github.com/ansible/ansible/issues/84147).
|
||||
- find - add a checksum_algorithm parameter to specify which type of checksum
|
||||
the module will return
|
||||
- from_json filter - The filter accepts a ``profile`` argument, which defaults
|
||||
to ``tagless``.
|
||||
- handlers - Templated handler names with syntax errors, or that resolve to
|
||||
``omit`` are now skipped like handlers with undefined variables in their name.
|
||||
- improved error message for yaml parsing errors in plugin documentation
|
||||
- local connection plugin - A new ``become_strip_preamble`` config option (default
|
||||
True) was added; disable to preserve diagnostic ``become`` output in task
|
||||
results.
|
||||
- local connection plugin - A new ``become_success_timeout`` operation-wide
|
||||
timeout config (default 10s) was added for ``become``.
|
||||
- local connection plugin - When a ``become`` plugin's ``prompt`` value is a
|
||||
non-string after the ``check_password_prompt`` callback has completed, no
|
||||
prompt stripping will occur on stderr.
|
||||
- lookup_template - add an option to trim blocks while templating (https://github.com/ansible/ansible/issues/75962).
|
||||
- module - set ipv4 and ipv6 rules simultaneously in iptables module (https://github.com/ansible/ansible/issues/84404).
|
||||
- module_utils - Add ``NoReturn`` type annotations to functions which never
|
||||
return.
|
||||
- modules - PowerShell modules can now receive ``datetime.date``, ``datetime.time``
|
||||
and ``datetime.datetime`` values as ISO 8601 strings.
|
||||
- modules - PowerShell modules can now receive strings sourced from inline vault-encrypted
|
||||
strings.
|
||||
- modules - Unhandled exceptions during Python module execution are now returned
|
||||
as structured data from the target. This allows the new traceback handling
|
||||
to be applied to exceptions raised on targets.
|
||||
- pipelining logic has mostly moved to connection plugins so they can decide/override
|
||||
settings.
|
||||
- plugin error handling - When raising exceptions in an exception handler, be
|
||||
sure to use ``raise ... from`` as appropriate. This supersedes the use of
|
||||
the ``AnsibleError`` arg ``orig_exc`` to represent the cause. Specifying ``orig_exc``
|
||||
as the cause is still permitted. Failure to use ``raise ... from`` when ``orig_exc``
|
||||
is set will result in a warning. Additionally, if the two cause exceptions
|
||||
do not match, a warning will be issued.
|
||||
- removed harcoding of su plugin as it now works with pipelining.
|
||||
- runtime-metadata sanity test - improve validation of ``action_groups`` (https://github.com/ansible/ansible/pull/83965).
|
||||
- service_facts module got freebsd support added.
|
||||
- ssh connection plugin - Support ``SSH_ASKPASS`` mechanism to provide passwords,
|
||||
making it the default, but still offering an explicit choice to use ``sshpass``
|
||||
(https://github.com/ansible/ansible/pull/83936)
|
||||
- ssh connection plugin now overrides pipelining when a tty is requested.
|
||||
- ssh-agent - ``ansible``, ``ansible-playbook`` and ``ansible-console`` are
|
||||
capable of spawning or reusing an ssh-agent, allowing plugins to interact
|
||||
with the ssh-agent. Additionally a pure python ssh-agent client has been added,
|
||||
enabling easy interaction with the agent. The ssh connection plugin contains
|
||||
new functionality via ``ansible_ssh_private_key`` and ``ansible_ssh_private_key_passphrase``,
|
||||
for loading an SSH private key into the agent from a variable.
|
||||
- templating - Access to an undefined variable from inside a lookup, filter,
|
||||
or test (which raises MarkerError) no longer ends processing of the current
|
||||
template. The triggering undefined value is returned as the result of the
|
||||
offending plugin invocation, and the template continues to execute.
|
||||
- templating - Embedding ``range()`` values in containers such as lists will
|
||||
result in an error on use. Previously the value would be converted to a string
|
||||
representing the range parameters, such as ``range(0, 3)``.
|
||||
- templating - Handling of omitted values is now a first-class feature of the
|
||||
template engine, and is usable in all Ansible Jinja template contexts. Any
|
||||
template that resolves to ``omit`` is automatically removed from its parent
|
||||
container during templating.
|
||||
- templating - Template evaluation is lazier than in previous versions. Template
|
||||
expressions which resolve only portions of a data structure no longer result
|
||||
in the entire structure being templated.
|
||||
- templating - Templating errors now provide more information about both the
|
||||
location and context of the error, especially for deeply-nested and/or indirected
|
||||
templating scenarios.
|
||||
- templating - Unified ``omit`` behavior now requires that plugins calling ``Templar.template()``
|
||||
handle cases where the entire template result is omitted, by catching the
|
||||
``AnsibleValueOmittedError`` that is raised. Previously, this condition caused
|
||||
a randomly-generated string marker to appear in the template result.
|
||||
- templating - Variables of type ``set`` and ``tuple`` are now converted to
|
||||
``list`` when exiting the final pass of templating.
|
||||
- to_json / to_nice_json filters - The filters accept a ``profile`` argument,
|
||||
which defaults to ``tagless``.
|
||||
- troubleshooting - Tracebacks can be collected and displayed for most errors,
|
||||
warnings, and deprecation warnings (including those generated by modules).
|
||||
Tracebacks are no longer enabled with ``-vvv``; the behavior is directly configurable
|
||||
via the ``DISPLAY_TRACEBACK`` config option. Module tracebacks passed to ``fail_json``
|
||||
via the ``exception`` kwarg will not be included in the task result unless
|
||||
error tracebacks are configured.
|
||||
- undef jinja function - The ``undef`` jinja function now raises an error if
|
||||
a non-string hint is given. Attempting to use an undefined hint also results
|
||||
in an error, ensuring incorrect use of the function can be distinguished from
|
||||
the function's normal behavior.
|
||||
- validate-modules sanity test - make sure that ``module`` and ``plugin`` ``seealso``
|
||||
entries use FQCNs (https://github.com/ansible/ansible/pull/84325).
|
||||
- vault - improved vault filter documentation by adding missing example content
|
||||
for dump_template_data.j2, refining examples for clarity, and ensuring variable
|
||||
consistency (https://github.com/ansible/ansible/issues/83583).
|
||||
- warnings - All warnings (including deprecation warnings) issued during a task's
|
||||
execution are now accessible via the ``warnings`` and ``deprecations`` keys
|
||||
on the task result.
|
||||
- when the ``dict`` lookup is given a non-dict argument, show the value of the
|
||||
argument and its type in the error message.
|
||||
- windows - add hard minimum limit for PowerShell to 5.1. Ansible dropped support
|
||||
for older versions of PowerShell in the 2.16 release but this reqirement is
|
||||
now enforced at runtime.
|
||||
- windows - refactor windows exec runner to improve efficiency and add better
|
||||
error reporting on failures.
|
||||
- winrm - Remove need for pexpect on macOS hosts when using ``kinit`` to retrieve
|
||||
the Kerberos TGT. By default the code will now only use the builtin ``subprocess``
|
||||
library which should handle issues with select and a high fd count and also
|
||||
simplify the code.
|
||||
release_summary: '| Release Date: 2025-04-14
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.19/porting_guides/porting_guide_core_2.19.html>`__
|
||||
|
||||
'
|
||||
removed_features:
|
||||
- Remove deprecated plural form of collection path (https://github.com/ansible/ansible/pull/84156).
|
||||
- Removed deprecated STRING_CONVERSION_ACTION (https://github.com/ansible/ansible/issues/84220).
|
||||
- encrypt - passing unsupported passlib hashtype now raises AnsibleFilterError.
|
||||
- manager - remove deprecated include_delegate_to parameter from get_vars API.
|
||||
- modules - Modules returning non-UTF8 strings now result in an error. The ``MODULE_STRICT_UTF8_RESPONSE``
|
||||
setting can be used to disable this check.
|
||||
- removed deprecated pycompat24 and compat.importlib.
|
||||
- selector - remove deprecated compat.selector related files (https://github.com/ansible/ansible/pull/84155).
|
||||
- windows - removed common module functions ``ConvertFrom-AnsibleJson``, ``Format-AnsibleException``
|
||||
from Windows modules as they are not used and add uneeded complexity to the
|
||||
code.
|
||||
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)
|
||||
- templating - Ansible's template engine no longer processes Jinja templates
|
||||
in strings unless they are marked as coming from a trusted source. Untrusted
|
||||
strings containing Jinja template markers are ignored with a warning. Examples
|
||||
of trusted sources include playbooks, vars files, and many inventory sources.
|
||||
Examples of untrusted sources include module results and facts. Plugins which
|
||||
have not been updated to preserve trust while manipulating strings may inadvertently
|
||||
cause them to lose their trusted status.
|
||||
- templating - Changes to conditional expression handling removed numerous instances
|
||||
of insecure multi-pass templating (which could result in execution of untrusted
|
||||
template expressions).
|
||||
- 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: What Is and What Should Never Be
|
||||
fragments:
|
||||
- 2.19.0b1_summary.yaml
|
||||
- 81709-ansible-galaxy-slow-resolution-hints.yml
|
||||
- 81812-ansible-galaxy-negative-spec-is-pinned.yml
|
||||
- 81874-deprecate-datetime-compat.yml
|
||||
- 83642-fix-sanity-ignore-for-uri.yml
|
||||
- 83643-fix-sanity-ignore-for-copy.yml
|
||||
- 83690-get_url-content-disposition-filename.yml
|
||||
- 83700-enable-file-disable-diff.yml
|
||||
- 83757-deprecate-paramiko.yml
|
||||
- 83936-ssh-askpass.yml
|
||||
- 83965-action-groups-schema.yml
|
||||
- 84008-additional-logging.yml
|
||||
- 84019-ignore_unreachable-loop.yml
|
||||
- 84149-add-flush-cache-for-adhoc-commands.yml
|
||||
- 84206-dnf5-apt-auto-install-module-deps.yml
|
||||
- 84213-ansible-galaxy-url-building.yml
|
||||
- 84229-windows-server-2025.yml
|
||||
- 84238-fix-reset_connection-ssh_executable-templated.yml
|
||||
- 84259-dnf5-latest-fix.yml
|
||||
- 84321-added-ansible_uptime_seconds_aix.yml
|
||||
- 84325-validate-modules-seealso-fqcn.yml
|
||||
- 84334-dnf5-consolidate-settings.yml
|
||||
- 84384-fix-undefined-key-host-group-vars.yml
|
||||
- 84419-fix-wait_for_connection-warning.yml
|
||||
- 84468-timeout_become_unreachable.yml
|
||||
- 84473-dict-lookup-type-error-message.yml
|
||||
- 84490-allow-iptables-chain-creation-with-wait.yml
|
||||
- 84496-CallbackBase-get_options.yml
|
||||
- 84540-uri-relative-redirect.yml
|
||||
- 84547-acme-test-container.yml
|
||||
- 84578-dnf5-is_installed-provides.yml
|
||||
- 84660-fix-meta-end_role-linear-strategy.yml
|
||||
- 84685-add-opensuse-microos.yml
|
||||
- 84705-error-message-malformed-plugin-documentation.yml
|
||||
- 84725-deprecate-strategy-plugins.yml
|
||||
- Ansible.Basic-required_if-null.yml
|
||||
- ansible-galaxy-keycloak-service-accounts.yml
|
||||
- ansible-test-added-macos-15.3.yml
|
||||
- ansible-test-containers.yml
|
||||
- ansible-test-coverage-test-files.yml
|
||||
- ansible-test-curl.yml
|
||||
- ansible-test-fix-command-traceback.yml
|
||||
- ansible-test-freebsd-nss.yml
|
||||
- ansible-test-network-detection.yml
|
||||
- ansible-test-nios-container.yml
|
||||
- ansible-test-no-exec-script.yml
|
||||
- ansible-test-probe-error-handling.yml
|
||||
- ansible-test-pylint-fix.yml
|
||||
- ansible-test-remotes.yml
|
||||
- ansible-test-update.yml
|
||||
- apt_key_bye.yml
|
||||
- become-runas-system-deux.yml
|
||||
- buildroot.yml
|
||||
- compat_removal.yml
|
||||
- config.yml
|
||||
- config_dump.yml
|
||||
- copy_validate_input.yml
|
||||
- cron_err.yml
|
||||
- csvfile-col.yml
|
||||
- cve-2024-8775.yml
|
||||
- darwin_pagesize.yml
|
||||
- debconf_empty_password.yml
|
||||
- deprecated.yml
|
||||
- distro_LMDE_6.yml
|
||||
- dnf5-exception-forwarding.yml
|
||||
- dnf5-plugins-compat.yml
|
||||
- dnf5-remove-usage-deprecated-option.yml
|
||||
- feature-uri-add-option-multipart-encoding.yml
|
||||
- file_simplify.yml
|
||||
- find-checksum.yml
|
||||
- find_enoent.yml
|
||||
- fix-ansible-galaxy-ignore-certs.yml
|
||||
- fix-cli-doc-path_undefined.yaml
|
||||
- fix-display-bug-in-action-plugin.yml
|
||||
- fix-include_vars-merge-hash.yml
|
||||
- fix-ipv6-pattern.yml
|
||||
- fix-is-filter-is-test.yml
|
||||
- fix-lookup-sequence-keyword-args-only.yml
|
||||
- fix-module-utils-facts-timeout.yml
|
||||
- fix_errors.yml
|
||||
- follow_redirects_url.yml
|
||||
- gather_facts_netos_fixes.yml
|
||||
- gather_facts_smart_fix.yml
|
||||
- get_url_bsd_style_digest.yml
|
||||
- hide-loop-vars-debug-vars.yml
|
||||
- implicit_flush_handlers_parents.yml
|
||||
- include_delegate_to.yml
|
||||
- interpreter-discovery-auto-legacy.yml
|
||||
- jinja-version.yml
|
||||
- libvirt_lxc.yml
|
||||
- local-become-fixes.yml
|
||||
- lookup_config.yml
|
||||
- macos-correct-lock.yml
|
||||
- no-inherit-stdio.yml
|
||||
- no-return.yml
|
||||
- openrc-status.yml
|
||||
- os_family.yml
|
||||
- package-dnf-action-plugins-facts-fail-msg.yml
|
||||
- package_facts_fix.yml
|
||||
- passlib.yml
|
||||
- pin-wheel.yml
|
||||
- pipelining_refactor.yml
|
||||
- playiterator-add_tasks-optimize.yml
|
||||
- ps-import-sanity.yml
|
||||
- pull_changed_fix.yml
|
||||
- remove_ini_ignored_dir.yml
|
||||
- reserved_module_chekc.yml
|
||||
- respawn-min-python.yml
|
||||
- respawn_os_env.yml
|
||||
- selector_removal.yml
|
||||
- service_facts_fbsd.yml
|
||||
- set_ipv4_and_ipv6_simultaneously.yml
|
||||
- simplify-copy-module.yml
|
||||
- skip-handlers-tagged-play.yml
|
||||
- skip-implicit-flush_handlers-no-notify.yml
|
||||
- skip-role-task-iterator.yml
|
||||
- ssh-agent.yml
|
||||
- ssh-clixml.yml
|
||||
- ssh_raise_exception.yml
|
||||
- string_conversion.yml
|
||||
- sunos_virtinfo.yml
|
||||
- templates_types_datatagging.yml
|
||||
- toml-library-support-dropped.yml
|
||||
- trim_blocks.yml
|
||||
- unarchive_timestamp_t32.yaml
|
||||
- update-resolvelib-lt-2_0_0.yml
|
||||
- uri_httpexception.yml
|
||||
- url_safe_b64_encode_decode.yml
|
||||
- user_action_fix.yml
|
||||
- user_module.yml
|
||||
- user_passphrase.yml
|
||||
- user_ssh_fix.yml
|
||||
- v2.19.0-initial-commit.yaml
|
||||
- vault_cli_fix.yml
|
||||
- vault_docs_fix.yaml
|
||||
- win-async-refactor.yml
|
||||
- win-wdac-audit.yml
|
||||
- windows-exec.yml
|
||||
- winrm-kinit-pexpect.yml
|
||||
release_date: '2025-04-14'
|
||||
2.19.0b2:
|
||||
changes:
|
||||
bugfixes:
|
||||
- Remove use of `required` parameter in `get_bin_path` which has been deprecated.
|
||||
- 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).
|
||||
minor_changes:
|
||||
- comment filter - Improve the error message shown when an invalid ``style``
|
||||
argument is provided.
|
||||
release_summary: '| Release Date: 2025-04-24
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.19/porting_guides/porting_guide_core_2.19.html>`__
|
||||
|
||||
'
|
||||
codename: What Is and What Should Never Be
|
||||
fragments:
|
||||
- 2.19.0b2_summary.yaml
|
||||
- 84690-ansible-doc-indent-wrapping.yml
|
||||
- comment_fail.yml
|
||||
- get_bin_path-remove-use-of-deprecated-param.yml
|
||||
release_date: '2025-04-23'
|
||||
2.19.0b3:
|
||||
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.
|
||||
- dnf5 - avoid generating excessive transaction entries in the dnf5 history
|
||||
(https://github.com/ansible/ansible/issues/85046)
|
||||
deprecated_features:
|
||||
- Passing a ``warnings` or ``deprecations`` key to ``exit_json`` or ``fail_json``
|
||||
is deprecated. Use ``AnsibleModule.warn`` or ``AnsibleModule.deprecate`` instead.
|
||||
- plugins - Accessing plugins with ``_``-prefixed filenames without the ``_``
|
||||
prefix is deprecated.
|
||||
minor_changes:
|
||||
- ansible-config will now show internal, but not test configuration entries.
|
||||
This allows for debugging but still denoting the configurations as internal
|
||||
use only (_ prefix).
|
||||
- ansible-test - Improved ``pylint`` checks for Ansible-specific deprecation
|
||||
functions.
|
||||
- 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.
|
||||
- collection metadata - The collection loader now parses scalar values from
|
||||
``meta/runtime.yml`` as strings. This avoids issues caused by unquoted values
|
||||
such as versions or dates being parsed as types other than strings.
|
||||
- deprecation warnings - Deprecation warning APIs automatically capture the
|
||||
identity of the deprecating plugin. The ``collection_name`` argument is only
|
||||
required to correctly attribute deprecations that occur in module_utils or
|
||||
other non-plugin code.
|
||||
- deprecation warnings - Improved deprecation messages to more clearly indicate
|
||||
the affected content, including plugin name when available.
|
||||
- deprecations - Collection name strings not of the form ``ns.coll`` passed
|
||||
to deprecation API functions will result in an error.
|
||||
- deprecations - Removed support for specifying deprecation dates as a ``datetime.date``,
|
||||
which was included in an earlier 2.19 pre-release.
|
||||
- deprecations - Some argument names to ``deprecate_value`` for consistency
|
||||
with existing APIs. An earlier 2.19 pre-release included a ``removal_`` prefix
|
||||
on the ``date`` and ``version`` arguments.
|
||||
- modules - The ``AnsibleModule.deprecate`` function no longer sends deprecation
|
||||
messages to the target host's logging system.
|
||||
release_summary: '| Release Date: 2025-05-06
|
||||
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.19/porting_guides/porting_guide_core_2.19.html>`__
|
||||
|
||||
'
|
||||
codename: What Is and What Should Never Be
|
||||
fragments:
|
||||
- 2.19.0b3_summary.yaml
|
||||
- 85046-dnf5-history-entries.yml
|
||||
- ansible-test-container-stop.yml
|
||||
- config_priv.yml
|
||||
- deprecator.yml
|
||||
- ensure_remote_perms.yml
|
||||
release_date: '2025-05-06'
|
||||
ancestor: 2.20.0
|
||||
releases: {}
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2025-04-14
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.19/porting_guides/porting_guide_core_2.19.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2025-04-24
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.19/porting_guides/porting_guide_core_2.19.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2025-05-06
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.19/porting_guides/porting_guide_core_2.19.html>`__
|
||||
@ -1,10 +0,0 @@
|
||||
---
|
||||
|
||||
minor_changes:
|
||||
- >-
|
||||
``ansible-galaxy collection install`` — the collection dependency resolver
|
||||
now prints out conflicts it hits during dependency resolution when it's
|
||||
taking too long and it ends up backtracking a lot. It also displays
|
||||
suggestions on how to help it compute the result more quickly.
|
||||
|
||||
...
|
||||
@ -1,8 +0,0 @@
|
||||
---
|
||||
|
||||
bugfixes:
|
||||
- >-
|
||||
``ansible-galaxy`` — the collection dependency resolver now treats
|
||||
version specifiers starting with ``!=`` as unpinned.
|
||||
|
||||
...
|
||||
@ -1,11 +0,0 @@
|
||||
---
|
||||
|
||||
deprecated_features:
|
||||
- >-
|
||||
``ansible.module_utils.compat.datetime`` - The datetime compatibility
|
||||
shims are now deprecated. They are scheduled to be removed in
|
||||
``ansible-core`` v2.21. This includes ``UTC``, ``utcfromtimestamp()``
|
||||
and ``utcnow`` importable from said module
|
||||
(https://github.com/ansible/ansible/pull/81874).
|
||||
|
||||
...
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- uri - mark ``url`` as required (https://github.com/ansible/ansible/pull/83642).
|
||||
@ -1,3 +0,0 @@
|
||||
minor_changes:
|
||||
- copy - parameter ``local_follow`` was incorrectly documented as having default value ``True`` (https://github.com/ansible/ansible/pull/83643).
|
||||
- copy - fix sanity test failures (https://github.com/ansible/ansible/pull/83643).
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- get_url - fix honoring ``filename`` from the ``content-disposition`` header even when the type is ``inline`` (https://github.com/ansible/ansible/issues/83690)
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- file - enable file module to disable diff_mode (https://github.com/ansible/ansible/issues/80817).
|
||||
@ -1,2 +0,0 @@
|
||||
deprecated_features:
|
||||
- paramiko - The paramiko connection plugin has been deprecated with planned removal in 2.21.
|
||||
@ -1,3 +0,0 @@
|
||||
minor_changes:
|
||||
- ssh connection plugin - Support ``SSH_ASKPASS`` mechanism to provide passwords, making it the default, but still offering an explicit choice to use ``sshpass``
|
||||
(https://github.com/ansible/ansible/pull/83936)
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- "runtime-metadata sanity test - improve validation of ``action_groups`` (https://github.com/ansible/ansible/pull/83965)."
|
||||
@ -1,3 +0,0 @@
|
||||
minor_changes:
|
||||
- Added a -vvvvv log message indicating when a host fails to produce output within the timeout period.
|
||||
- SSH Escalation-related -vvv log messages now include the associated host information.
|
||||
@ -1,2 +0,0 @@
|
||||
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).
|
||||
@ -1,3 +0,0 @@
|
||||
minor_changes:
|
||||
- >
|
||||
ansible, ansible-console, ansible-pull - add --flush-cache option (https://github.com/ansible/ansible/issues/83749).
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- dnf5, apt - add ``auto_install_module_deps`` option (https://github.com/ansible/ansible/issues/84206)
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- ansible-galaxy - Small adjustments to URL building for ``download_url`` and relative redirects.
|
||||
@ -1,4 +0,0 @@
|
||||
minor_changes:
|
||||
- >-
|
||||
Windows - Add support for Windows Server 2025 to Ansible and as an ``ansible-test``
|
||||
remote target - https://github.com/ansible/ansible/issues/84229
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- ssh - connection options were incorrectly templated during ``reset_connection`` tasks (https://github.com/ansible/ansible/pull/84238).
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "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)"
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- ansible_uptime_second - added ansible_uptime_seconds fact support for AIX (https://github.com/ansible/ansible/pull/84321).
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- "validate-modules sanity test - make sure that ``module`` and ``plugin`` ``seealso`` entries use FQCNs (https://github.com/ansible/ansible/pull/84325)."
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- dnf5 - matching on a binary can be achieved only by specifying a full path (https://github.com/ansible/ansible/issues/84334)
|
||||
@ -1,4 +0,0 @@
|
||||
# Filename: changelogs/fragments/84384-fix-undefined-key-host-group-vars.yml
|
||||
|
||||
bugfixes:
|
||||
- host_group_vars - fixed defining the 'key' variable if the get_vars method is called with cache=False (https://github.com/ansible/ansible/issues/84384)
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- wait_for_connection - a warning was displayed if any hosts used a local connection (https://github.com/ansible/ansible/issues/84419)
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- Time out waiting on become is an unreachable error (https://github.com/ansible/ansible/issues/84468)
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- when the ``dict`` lookup is given a non-dict argument, show the value of the argument and its type in the error message.
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- iptables - Allows the wait paramater to be used with iptables chain creation (https://github.com/ansible/ansible/issues/84490)
|
||||
@ -1,4 +0,0 @@
|
||||
---
|
||||
minor_changes:
|
||||
- callback plugins - add has_option() to CallbackBase to match other functions overloaded from AnsiblePlugin
|
||||
- callback plugins - fix get_options() for CallbackBase
|
||||
@ -1,3 +0,0 @@
|
||||
---
|
||||
bugfixes:
|
||||
- uri - Form location correctly when the server returns a relative redirect (https://github.com/ansible/ansible/issues/84540)
|
||||
@ -1,4 +0,0 @@
|
||||
minor_changes:
|
||||
- "ansible-test acme test container - bump `version to 2.3.0 <https://github.com/ansible/acme-test-container/releases/tag/2.3.0>`__
|
||||
to include newer versions of Pebble, dependencies, and runtimes. This adds support for ACME profiles, ``dns-account-01`` support,
|
||||
and some smaller improvements (https://github.com/ansible/ansible/pull/84547)."
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "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)"
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- 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).
|
||||
@ -1,3 +0,0 @@
|
||||
---
|
||||
minor_changes:
|
||||
- distribution - Added openSUSE MicroOS to Suse OS family (#84685).
|
||||
@ -1,3 +0,0 @@
|
||||
bugfixes:
|
||||
- "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)."
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- improved error message for yaml parsing errors in plugin documentation
|
||||
@ -1,2 +0,0 @@
|
||||
deprecated_features:
|
||||
- Stategy Plugins - Use of strategy plugins not provided in ``ansible.builtin`` are deprecated and do not carry any backwards compatibility guarantees going forward. A future release will remove the ability to use external strategy plugins. No alternative for third party strategy plugins is currently planned.
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- dnf5 - avoid generating excessive transaction entries in the dnf5 history (https://github.com/ansible/ansible/issues/85046)
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- ansible-test - The runtime-metadata sanity test now ignores pre-release and build identifiers in collection versions. This prevents errors if a tombstone version is ``X.0.0``, while the collection's version is ``X.0.0-prerelease`` (https://github.com/ansible/ansible/issues/85193)."
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- apt - Stop the >= operator from being ignored for packages that are not already installed (https://github.com/ansible/ansible/pull/85254)
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- "Fix ``AnsibleModule.human_to_bytes()``, which was never adjusted after the standalone ``human_to_bytes()`` got a new parameter ``default_unit`` (https://github.com/ansible/ansible/pull/85259)."
|
||||
@ -0,0 +1,5 @@
|
||||
bugfixes:
|
||||
- >-
|
||||
``ansible.builtin.pip`` - Running the built-in pip module with ``check_mode`` and packages coming from VCS URLs, archives, or local filepaths now correctly outputs the ``changed`` status of the task.
|
||||
Previously, it was always reported as changed due to improper package name resolution.
|
||||
(https://github.com/ansible/ansible/pull/85623)
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- ansible_virtualization_role and ansible_virtualization_type facts - fix the detection of vms running inside FreeBSD Bhyve hypervisor and detection of jails (https://github.com/ansible/ansible/pull/85767)
|
||||
@ -0,0 +1,6 @@
|
||||
---
|
||||
bugfixes:
|
||||
- galaxy - previously, some corrupted cache files could cause Ansible Galaxy to fail
|
||||
with a traceback. This has been corrected to display a clear error message explaining
|
||||
how to resolve the problem.
|
||||
(https://github.com/ansible/ansible/issues/85918)
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- psrp - ReadTimeout exceptions now mark host as unreachable instead of fatal (https://github.com/ansible/ansible/issues/85966)
|
||||
@ -0,0 +1,2 @@
|
||||
removed_features:
|
||||
- Removed deprecated ability to import ``datetime``, ``signal``, ``types``, ``chain``, ``repeat``, ``map`` and ``shlex_quote`` from ``ansible.module_utils.basic``.
|
||||
@ -0,0 +1,2 @@
|
||||
removed_features:
|
||||
- Removed deprecated ``handle_stats_and_callbacks`` parameter of the ``StrategyBase._load_included_file`` method. (https://github.com/ansible/ansible/issues/86003)
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- "ansible-test validate-modules sanity test - now reports bad return value keys that cannot be used with the dot notation in Jinja expressions (https://github.com/ansible/ansible/issues/86079)."
|
||||
@ -0,0 +1,3 @@
|
||||
---
|
||||
minor_changes:
|
||||
- script - remove the currently unsupported ``decrypt`` argument from the module documentation (https://github.com/ansible/ansible/issues/86067).
|
||||
@ -0,0 +1,6 @@
|
||||
---
|
||||
bugfixes:
|
||||
- >-
|
||||
iptables - The module can now detect when a extensions added with the module ``match`` argument have
|
||||
been automatically imported by other module arguments such as ``uid_owner`` and prevents duplicate
|
||||
extension imports which previously caused an error (https://github.com/ansible/ansible/issues/84387).
|
||||
@ -1,3 +0,0 @@
|
||||
bugfixes:
|
||||
- >-
|
||||
Ansible.Basic - Fix ``required_if`` check when the option value to check is unset or set to null.
|
||||
@ -0,0 +1,5 @@
|
||||
bugfixes:
|
||||
- >-
|
||||
Windows - ignore temporary file cleanup warning when using AnsibleModule to
|
||||
compile C# utils. This should reduce the number of warnings that can safely
|
||||
be ignored when running PowerShell modules - https://github.com/ansible/ansible/issues/85976
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- modules - fix AnsiballZ wrapper code escaping of sitecustomize
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- ansible-galaxy - Add support for Keycloak service accounts
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- The minimum required ``setuptools`` version is now ``77.0.3``, as it is needed for the new PEP 639 license format
|
||||
@ -1,6 +0,0 @@
|
||||
---
|
||||
|
||||
minor_changes:
|
||||
- ansible-test - Added a macOS 15.3 remote VM, replacing 14.3.
|
||||
|
||||
...
|
||||
@ -1,3 +0,0 @@
|
||||
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.
|
||||
@ -1,7 +1,2 @@
|
||||
minor_changes:
|
||||
- ansible-test - Replace container Fedora 40 with 41.
|
||||
- ansible-test - Replace container Alpine 3.20 with 3.21.
|
||||
- ansible-test - Update distro containers to remove unnecessary pakages (apache2, subversion, ruby).
|
||||
- ansible-test - Update the HTTP test container.
|
||||
- ansible-test - Update the PyPI test container.
|
||||
- ansible-test - Update the utility container.
|
||||
- ansible-test - Update base and default containers.
|
||||
|
||||
@ -1,4 +0,0 @@
|
||||
bugfixes:
|
||||
- >-
|
||||
ansible-test - Fix up coverage reporting to properly translate the temporary path of integration test modules to
|
||||
the expected static test module path.
|
||||
@ -1,3 +0,0 @@
|
||||
minor_changes:
|
||||
- ansible-test - Use Python's ``urllib`` instead of ``curl`` for HTTP requests.
|
||||
- ansible-test - Automatically retry HTTP GET/PUT/DELETE requests on exceptions.
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- ansible-test - Fix docker hostname parsing
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- ansible-test - Fix traceback that occurs after an interactive command fails.
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- ansible-test - Ensure CA certificates are installed on managed FreeBSD instances.
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- ansible-test - Restore code coverage reporting for Python code residing in integration tests.
|
||||
@ -0,0 +1,4 @@
|
||||
minor_changes:
|
||||
- >-
|
||||
ansible-test - add ``.winrm`` and ``.networking`` as valid JSON/YAML inventory file extensions. This should not
|
||||
affect any public facing code as it is used internally for inventories generated by ``ansible-test``.
|
||||
@ -1,3 +0,0 @@
|
||||
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.
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- ansible-test - Update ``nios-test-container`` to version 7.0.0.
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- ansible-test - Show a more user-friendly error message when a ``runme.sh`` script is not executable.
|
||||
@ -1,3 +0,0 @@
|
||||
minor_changes:
|
||||
- ansible-test - Improve container runtime probe error handling.
|
||||
When unexpected probe output is encountered, an error with more useful debugging information is provided.
|
||||
@ -1,4 +0,0 @@
|
||||
bugfixes:
|
||||
- ansible-test - Enable the ``sys.unraisablehook`` work-around for the ``pylint`` sanity test on Python 3.11.
|
||||
Previously the work-around was only enabled for Python 3.12 and later.
|
||||
However, the same issue has been discovered on Python 3.11.
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- ansible-test - Update the pylint sanity test to pylint 4.0.2.
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- ansible-test - Remove pylint check for ``urllib2`` usage.
|
||||
@ -1,6 +0,0 @@
|
||||
minor_changes:
|
||||
- ansible-test - Replace remote FreeBSD 13.3 with 13.5.
|
||||
- ansible-test - Replace remote FreeBSD 14.1 with 14.2.
|
||||
- ansible-test - Replace remote Fedora 40 with 41.
|
||||
- ansible-test - Replace remote Alpine 3.20 with 3.21.
|
||||
- ansible-test - Replace remote RHEL 9.4 with 9.5.
|
||||
@ -1,7 +0,0 @@
|
||||
minor_changes:
|
||||
- ansible-test - Update ``pylint`` sanity test to use version 3.3.1.
|
||||
- ansible-test - Default to Python 3.13 in the ``base`` and ``default`` containers.
|
||||
- ansible-test - Disable the ``deprecated-`` prefixed ``pylint`` rules as their results vary by Python version.
|
||||
- ansible-test - Update the ``base`` and ``default`` containers.
|
||||
- ansible-test - Update sanity test requirements to latest available versions.
|
||||
- ansible-test - Disable the ``pep8`` sanity test rules ``E701`` and ``E704`` to improve compatibility with ``black``.
|
||||
@ -1,5 +0,0 @@
|
||||
minor_changes:
|
||||
- apt_key module - add notes to docs and errors to point at the CLI tool deprecation by Debian and alternatives
|
||||
- apt_repository module - add notes to errors to point at the CLI tool deprecation by Debian and alternatives
|
||||
bugfixes:
|
||||
- apt_key module - prevent tests from running when apt-key was removed
|
||||
@ -0,0 +1,3 @@
|
||||
---
|
||||
removed_features:
|
||||
- interpreter_discovery - removed auto_legacy and auto_legacy_slient options (https://github.com/ansible/ansible/issues/85995).
|
||||
@ -0,0 +1,4 @@
|
||||
deprecated_features:
|
||||
- The ``get_platfrom()`` function from ``ansible.module_utils.basic`` is deprecated and will be removed in ansible-core 2.24. Use ``platform.system()`` from the Python standard library instead.
|
||||
- The ``load_platform_subclass()`` function from ``ansible.module_utils.basic`` is deprecated and will be removed in ansible-core 2.24. Use ``get_platform_subclass()`` from ``ansible.module_utils.common.sys_info`` instead.
|
||||
- The ``get_all_subclasses()`` function from ``ansible.module_utils.basic`` is deprecated and will be removed in ansible-core 2.24. Use ``get_all_subclasses()`` from ``ansible.module_utils.common._utils`` instead.
|
||||
@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- basic - fail in controlled manner when ``run_command()`` attempts to parse a command with broken syntax passed in as a string (https://github.com/ansible/ansible/issues/85719).
|
||||
@ -1,3 +0,0 @@
|
||||
bugfixes:
|
||||
- >-
|
||||
runas become - Fix up become logic to still get the SYSTEM token with the most privileges when running as SYSTEM.
|
||||
@ -1,3 +0,0 @@
|
||||
---
|
||||
bugfixes:
|
||||
- user - Create Buildroot subclass as alias to Busybox (https://github.com/ansible/ansible/issues/83665).
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue