Compare commits
427 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4226af2718 | |||
| 0d4146cb64 | |||
| 1741ba2d67 | |||
| 2cca1c509a | |||
| 1eaa02c880 | |||
| 573d767dcb | |||
| df5d595984 | |||
| d78867e493 | |||
| 9a86f8c10e | |||
| a1a57c699e | |||
| 65037d4781 | |||
| ebe0ed9331 | |||
| 3e95e3c0a0 | |||
| ece31e1b51 | |||
| b1d278a595 | |||
| ab8bbe269d | |||
| e85732f7e6 | |||
| 2f51105936 | |||
| 5647f8aa55 | |||
| 77b76a3270 | |||
| d720a5e42c | |||
| 0a6004d9ca | |||
| c86a498a67 | |||
| b998f7050b | |||
| a5f0bc0165 | |||
| 894df504b7 | |||
| 9ea56ff292 | |||
| 510ef832ae | |||
| 244fdf324c | |||
| aedc7301f6 | |||
| 5411090f51 | |||
| f9572a377d | |||
| bca57ec65a | |||
| e75570ba83 | |||
| 3ef061bdc4 | |||
| 63ead90ab9 | |||
| 70fb5ae36a | |||
| 9478b59da5 | |||
| 2c8c02c816 | |||
| e41d1f0a3f | |||
| 67a018b815 | |||
| 015ec3eda8 | |||
| 6df8a9ec53 | |||
| 148240099a | |||
| e9c6b382ea | |||
| 3eafe0f255 | |||
| 457dcf1313 | |||
| 985a395cd9 | |||
| 6cde1cdf35 | |||
| dcec0ec806 | |||
| d7b562b393 | |||
| d5acbfd6e3 | |||
| 4488b91699 | |||
| 25962888ac | |||
| a3175e9979 | |||
| e4f8d528b9 | |||
| 356aae0e23 | |||
| c47ec375fa | |||
| 1f90c11782 | |||
| e5b6d2aaae | |||
| 890601dcef | |||
| a8ebe99c98 | |||
| 0803063424 | |||
| ee46fe2910 | |||
| 2a91ba71b2 | |||
| 0b77ffb980 | |||
| 422b9c09ee | |||
| 08ba838a8e | |||
| abc6658ac2 | |||
| b4b1bf9932 | |||
| 6ba066fc9e | |||
| b22d97b2c1 | |||
| 1cd09b1ebc | |||
| cf21e699d4 | |||
| 31ef9dffa1 | |||
| c5248f756c | |||
| 511ffdeff7 | |||
| 82b75282fc | |||
| a5df30e2bf | |||
| 7006b62ff4 | |||
| 7c44c24456 | |||
| c4adf62220 | |||
| 9601d3ef20 | |||
| 2f3e9a38b6 | |||
| 4452d98662 | |||
| 17566d7a17 | |||
| 3df8811ace | |||
| ee97763a3a | |||
| 4d231a86b7 | |||
| 2246e1a0fb | |||
| dc8d0c4d62 | |||
| 6b935947c1 | |||
| 26e207d344 | |||
| db41f2e384 | |||
| 8f71aead87 | |||
| 02e3e679a2 | |||
| 436d8a13b4 | |||
| 12b33c79ee | |||
| 7461f873ef | |||
| c72d53218a | |||
| dc7faeaf6e | |||
| 1f55a3d15a | |||
| 847a2c87e5 | |||
| d852fa4135 | |||
| ab417f373a | |||
| c67d7225e9 | |||
| 71ef981191 | |||
| 7f1ee07634 | |||
| 2a6b411a80 | |||
| 4e34aa0c19 | |||
| c422bc64dc | |||
| 19bffccd36 | |||
| 2ff5bf0f21 | |||
| 42da480721 | |||
| 27f547b4d3 | |||
| 07cdb709ae | |||
| ba25a1cdf1 | |||
| 6dc2e9c2f4 | |||
| a15550c0c8 | |||
| 138a5bd2d6 | |||
| 856a932ca0 | |||
| 7e2faa25d7 | |||
| dbdacbd48c | |||
| 7813b1248b | |||
| eb4f30cd03 | |||
| 2d5f549a98 | |||
| a1288def89 | |||
| 99d5afaad0 | |||
| 0d7ab375eb | |||
| 7802ca2b06 | |||
| 6322630360 | |||
| 3297c221f1 | |||
| 633396c71b | |||
| 8bdda8792d | |||
| 581337a6d5 | |||
| ed78b479ec | |||
| 913aebb140 | |||
| fc4411adcd | |||
| cfa8075537 | |||
| 8f767f7180 | |||
| 5bd0df7621 | |||
| 81ce0f8fc4 | |||
| 1f5afcd072 | |||
| 65470f48bd | |||
| e555358c32 | |||
| 5b5870886b | |||
| 73991233fb | |||
| dca64d3c74 | |||
| ce47796db9 | |||
| 8c5910efe7 | |||
| 31ab3d8a64 | |||
| 10871f3246 | |||
| 3e9afdae2e | |||
| 7cd080b10d | |||
| 1f485dccaa | |||
| 522f167d27 | |||
| dcae6d20d2 | |||
| 10922d58f0 | |||
| 69d5ce9b41 | |||
| 4159c73db2 | |||
| 69744aa0a7 | |||
| 8471814f86 | |||
| d4b7b8bae7 | |||
| 4293718b2a | |||
| 843ebcc436 | |||
| 132346cb6a | |||
| ae1ee31b99 | |||
| dbbc44b1f4 | |||
| 775d6e6752 | |||
| 83c34eb7de | |||
| b9c8b79d60 | |||
| 3bd6daa4a4 | |||
| 98cc9cb834 | |||
| 7499848cb1 | |||
| 6c8d6a3182 | |||
| 961ead55c6 | |||
| 5a3a2d1a39 | |||
| 505df0d564 | |||
| d53d247c84 | |||
| cd89aadec1 | |||
| e6a4585807 | |||
| b8e718cccd | |||
| 2c5e4b5a88 | |||
| 2e0eb330a1 | |||
| f9ecb4fe74 | |||
| c24bdfa7df | |||
| 49504da1ed | |||
| f57b149ec8 | |||
| 70172dde27 | |||
| d60a4c064c | |||
| 656c228abe | |||
| d88fb87fd0 | |||
| 68f0fcfbd5 | |||
| 8e00447aef | |||
| 4df129c6ae | |||
| c4e3552c8d | |||
| 988d410e17 | |||
| 198cffcb52 | |||
| 2327ef9da8 | |||
| 07a9de1247 | |||
| 68278f36fd | |||
| ab100f8ee5 | |||
| 12874bbdea | |||
| 5282ab853d | |||
| 5fc0dc1956 | |||
| d7f6d8c8f0 | |||
| 806acf9cd9 | |||
| 77408dccab | |||
| a10e76a64c | |||
| 51517a6232 | |||
| 86de15ea53 | |||
| df150a2780 | |||
| b739bbe0a5 | |||
| 47cabb1d32 | |||
| aacff5e35f | |||
| ea9a223ab6 | |||
| b6637c0afc | |||
| 2b9e5b931a | |||
| 355a69f416 | |||
| 6cf4a33f35 | |||
| 72a8b55920 | |||
| 45c8c9909d | |||
| 57b5069990 | |||
| eb165c0a9b | |||
| 387a7199fc | |||
| 2797322fd3 | |||
| 43e0aa5b57 | |||
| 1af7c6c003 | |||
| 7caa7e1162 | |||
| 3fadb5eb28 | |||
| a2d8d45c61 | |||
| fd27c4db71 | |||
| ec8878ced4 | |||
| 333f7bc088 | |||
| 8d88d4550b | |||
| 4273443686 | |||
| 356ea0b8d0 | |||
| 7d8b6dc779 | |||
| 6aaef596d6 | |||
| d699d38dd5 | |||
| 0e68601002 | |||
| 9a48ffd61b | |||
| 314834c6d3 | |||
| 1678577681 | |||
| dc97027453 | |||
| d3e0cb4320 | |||
| 393412dc64 | |||
| 7131c75d93 | |||
| 5688fef486 | |||
| b936539ae1 | |||
| ce7b95499f | |||
| d38a7ff577 | |||
| c39753d7ad | |||
| 0c32a4f793 | |||
| 0c6edb34f9 | |||
| a253c93fd1 | |||
| 714cd2ad2e | |||
| f41ff33ca6 | |||
| 00caeff928 | |||
| 6b639f147d | |||
| 4b1df6cc05 | |||
| e33fff922a | |||
| 092ec680e6 | |||
| e95b45c5ec | |||
| 7b3d2a00a0 | |||
| 7662568bd8 | |||
| 67b2b8caf1 | |||
| ca118613aa | |||
| 02f4fc1a14 | |||
| 90a8d07f31 | |||
| c04a751f0e | |||
| 3f41c76564 | |||
| 6d1cc0dede | |||
| ac248cf34a | |||
| 4cfe2cf8dc | |||
| 4dece71417 | |||
| 724b3648ea | |||
| 3be597419d | |||
| 1252323e34 | |||
| 5f40a4efa6 | |||
| 72e9974f10 | |||
| 26bb114ccb | |||
| 9a26fbe58e | |||
| 8775001671 | |||
| a007176d7e | |||
| 4442661611 | |||
| 13dff99f50 | |||
| e0a550efea | |||
| 1984a34c2b | |||
| aa51c6000a | |||
| a06730cdb0 | |||
| c96e955c76 | |||
| 1895b7ab5e | |||
| fa18566c3e | |||
| 3b9ee86381 | |||
| 8c4af4bc3b | |||
| a6ed955132 | |||
| ae9c1167e4 | |||
| 6e3271aa61 | |||
| 006a21eae2 | |||
| c968020d52 | |||
| b9a406f890 | |||
| 4b03d898f3 | |||
| a187613da8 | |||
| 72aa55d514 | |||
| be5aab177c | |||
| 3e7e3ee352 | |||
| 58517e52e2 | |||
| 224a0b4809 | |||
| b8eb35ef76 | |||
| 3900f82d00 | |||
| 9f4748cb2d | |||
| 719c40bfdf | |||
| b764d381f0 | |||
| abfedb06c3 | |||
| 5cb96087e6 | |||
| a8217f1bd4 | |||
| 8389f4df0b | |||
| a75b3601d9 | |||
| 4c459f341b | |||
| c39e536d84 | |||
| 6f70d40d51 | |||
| 293d6c59bb | |||
| bf479eb7f3 | |||
| 155041d8ee | |||
| be28e98cf2 | |||
| 4280efccc4 | |||
| 8d2b25d490 | |||
| 12784beb87 | |||
| f28fa88448 | |||
| 9b992c0b78 | |||
| cea2544943 | |||
| c528e648a6 | |||
| c53a68bf16 | |||
| e9c9c02e0a | |||
| 6dd05dfe67 | |||
| 3ee5b46ba7 | |||
| cc8d180801 | |||
| 7969b60552 | |||
| 180eea8089 | |||
| 7e4cffc5d2 | |||
| 8c2754e6d3 | |||
| 7cdba7c923 | |||
| 529dad9a39 | |||
| 4cbfb08da5 | |||
| 18dd73c147 | |||
| 61f8f8ce7f | |||
| 7eb5f53294 | |||
| 1eb2afac63 | |||
| 4170786cd9 | |||
| 32c818a1c8 | |||
| 75be854360 | |||
| 9cd47492be | |||
| 448f17e9a5 | |||
| ffd3757fc3 | |||
| 0d230b4f56 | |||
| 9b8a649f2e | |||
| a7f4c6a37f | |||
| d329985d4c | |||
| ed07821a59 | |||
| 524d4b08dc | |||
| 895fc1d659 | |||
| 652ac88931 | |||
| 46b1a999c6 | |||
| 3eba8b8792 | |||
| a5b46b6372 | |||
| 6b6ecaf742 | |||
| 9b7ed6b81b | |||
| 255dfca7f6 | |||
| 86b24498b7 | |||
| 33e5f1d661 | |||
| 963bdd9983 | |||
| 6cd015d7e2 | |||
| 15355ed059 | |||
| 827c47d9bc | |||
| 5ea6de4e7d | |||
| 94a81f7b44 | |||
| a5c0b11913 | |||
| 422e976649 | |||
| df3246b7d1 | |||
| 865ba1953b | |||
| 212d2024f4 | |||
| d0e37aeec1 | |||
| 7dfda4026e | |||
| e1c0688e43 | |||
| c936b8b638 | |||
| f9a737b9b2 | |||
| 1e03b54d23 | |||
| 367c9b7eda | |||
| 3afa0424b3 | |||
| 273159da4c | |||
| 95ec1618ef | |||
| b6f6067dfd | |||
| c2b69fd30e | |||
| ddc78622a4 | |||
| 957f0c27fc | |||
| a707466c0b | |||
| 8cd66ce95a | |||
| 3204d260dd | |||
| f28fabe6ef | |||
| ba645400bf | |||
| 73d9054b32 | |||
| 143827b0ad | |||
| e57afc774c | |||
| 7872d60413 | |||
| 374d4ecd98 | |||
| d07a84e233 | |||
| 0890d9fbb2 | |||
| 14997f0309 | |||
| 43ef13d206 | |||
| a1224760c4 | |||
| 4f8e1c0cee | |||
| ad61774acf | |||
| 0abb5e597e | |||
| e35e4b4ab0 | |||
| 70da336de9 | |||
| 73ee85145b | |||
| bcd7c860e2 | |||
| 222d35ebbd | |||
| 2a4f4dd526 | |||
| 82a3366701 | |||
| 0b7e3694c7 | |||
| a45d4fe80d | |||
| aa8f73f7e7 | |||
| 8002b4d4fc | |||
| cbfe2e642f | |||
| ed2de20bca |
@ -26,12 +26,17 @@ variables:
|
||||
value: ansible
|
||||
- name: coverageBranches
|
||||
value: devel
|
||||
- name: pipelinesCoverage
|
||||
value: coverage
|
||||
- name: entryPoint
|
||||
value: .azure-pipelines/commands/entry-point.sh
|
||||
value: test/utils/shippable/shippable.sh
|
||||
- name: fetchDepth
|
||||
value: 500
|
||||
- name: defaultContainer
|
||||
value: quay.io/ansible/azure-pipelines-test-container:6.0.0
|
||||
|
||||
resources:
|
||||
containers:
|
||||
- container: default
|
||||
image: quay.io/ansible/azure-pipelines-test-container:1.8.0
|
||||
|
||||
pool: Standard
|
||||
|
||||
@ -46,6 +51,9 @@ stages:
|
||||
targets:
|
||||
- test: 1
|
||||
- test: 2
|
||||
- test: 3
|
||||
- test: 4
|
||||
- test: 5
|
||||
- stage: Units
|
||||
dependsOn: []
|
||||
jobs:
|
||||
@ -54,12 +62,13 @@ stages:
|
||||
nameFormat: Python {0}
|
||||
testFormat: units/{0}
|
||||
targets:
|
||||
- test: 2.6
|
||||
- test: 2.7
|
||||
- test: 3.5
|
||||
- test: 3.6
|
||||
- test: 3.7
|
||||
- test: 3.8
|
||||
- test: 3.9
|
||||
- test: '3.10'
|
||||
- test: 3.11
|
||||
- test: 3.12
|
||||
- test: 3.13
|
||||
- stage: Windows
|
||||
dependsOn: []
|
||||
jobs:
|
||||
@ -68,110 +77,75 @@ stages:
|
||||
nameFormat: Server {0}
|
||||
testFormat: windows/{0}/1
|
||||
targets:
|
||||
- name: 2016 WinRM HTTP
|
||||
test: 2016/winrm/http
|
||||
- name: 2019 WinRM HTTPS
|
||||
test: 2019/winrm/https
|
||||
- name: 2022 WinRM HTTPS
|
||||
test: 2022/winrm/https
|
||||
- name: 2022 PSRP HTTP
|
||||
test: 2022/psrp/http
|
||||
- name: 2022 SSH Key
|
||||
test: 2022/ssh/key
|
||||
- name: 2025 PSRP HTTP
|
||||
test: 2025/psrp/http
|
||||
- name: 2025 SSH Key
|
||||
test: 2025/ssh/key
|
||||
- test: 2012
|
||||
- test: 2012-R2
|
||||
- test: 2016
|
||||
- test: 2019
|
||||
- stage: Remote
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml # context/target
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
targets:
|
||||
- name: macOS 15.3
|
||||
test: macos/15.3
|
||||
- name: RHEL 9.5 py39
|
||||
test: rhel/9.5@3.9
|
||||
- name: RHEL 9.5 py312
|
||||
test: rhel/9.5@3.12
|
||||
- name: FreeBSD 13.5
|
||||
test: freebsd/13.5
|
||||
- name: FreeBSD 14.2
|
||||
test: freebsd/14.2
|
||||
- name: macOS 11.1
|
||||
test: macos/11.1
|
||||
- name: RHEL 7.9
|
||||
test: rhel/7.9
|
||||
- name: RHEL 8.2
|
||||
test: rhel/8.2
|
||||
- name: FreeBSD 11.1
|
||||
test: freebsd/11.1
|
||||
- name: FreeBSD 12.1
|
||||
test: freebsd/12.1
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- template: templates/matrix.yml # context/controller
|
||||
parameters:
|
||||
targets:
|
||||
- name: macOS 15.3
|
||||
test: macos/15.3
|
||||
- name: RHEL 9.5
|
||||
test: rhel/9.5
|
||||
- name: FreeBSD 13.5
|
||||
test: freebsd/13.5
|
||||
- name: FreeBSD 14.2
|
||||
test: freebsd/14.2
|
||||
groups:
|
||||
- 3
|
||||
- 4
|
||||
- 5
|
||||
- template: templates/matrix.yml # context/controller (ansible-test container management)
|
||||
parameters:
|
||||
targets:
|
||||
- name: Alpine 3.21
|
||||
test: alpine/3.21
|
||||
- name: Fedora 41
|
||||
test: fedora/41
|
||||
- name: RHEL 9.5
|
||||
test: rhel/9.5
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu/24.04
|
||||
groups:
|
||||
- 6
|
||||
- stage: Docker
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml # context/target
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: linux/{0}
|
||||
targets:
|
||||
- name: Alpine 3.21
|
||||
test: alpine321
|
||||
- name: Fedora 41
|
||||
test: fedora41
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu2204
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu2404
|
||||
- name: CentOS 6
|
||||
test: centos6
|
||||
- name: CentOS 7
|
||||
test: centos7
|
||||
- name: CentOS 8
|
||||
test: centos8
|
||||
- name: Fedora 31
|
||||
test: fedora31
|
||||
- name: Fedora 32
|
||||
test: fedora32
|
||||
- name: openSUSE 15 py2
|
||||
test: opensuse15py2
|
||||
- name: openSUSE 15 py3
|
||||
test: opensuse15
|
||||
- name: Ubuntu 16.04
|
||||
test: ubuntu1604
|
||||
- name: Ubuntu 18.04
|
||||
test: ubuntu1804
|
||||
- name: Ubuntu 20.04
|
||||
test: ubuntu2004
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- template: templates/matrix.yml # context/controller
|
||||
parameters:
|
||||
testFormat: linux/{0}
|
||||
targets:
|
||||
- name: Alpine 3.21
|
||||
test: alpine321
|
||||
- name: Fedora 41
|
||||
test: fedora41
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu2404
|
||||
groups:
|
||||
- 3
|
||||
- 4
|
||||
- 5
|
||||
- stage: Galaxy
|
||||
- stage: Fallaxy
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Python {0}
|
||||
testFormat: galaxy/{0}/1
|
||||
testFormat: fallaxy/{0}/1
|
||||
targets:
|
||||
- test: 3.11
|
||||
- test: 3.12
|
||||
- test: 3.13
|
||||
- test: 2.7
|
||||
- test: 3.6
|
||||
- stage: Generic
|
||||
dependsOn: []
|
||||
jobs:
|
||||
@ -180,9 +154,54 @@ stages:
|
||||
nameFormat: Python {0}
|
||||
testFormat: generic/{0}/1
|
||||
targets:
|
||||
- test: 3.11
|
||||
- test: 3.12
|
||||
- test: 3.13
|
||||
- test: 2.7
|
||||
- test: 3.6
|
||||
- stage: Incidental_Remote
|
||||
displayName: Incidental Remote
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: i/{0}
|
||||
targets:
|
||||
- name: OS X 10.11
|
||||
test: osx/10.11
|
||||
- name: RHEL 7.9
|
||||
test: rhel/7.9
|
||||
- name: RHEL 8.2
|
||||
test: rhel/8.2
|
||||
- name: FreeBSD 11.1
|
||||
test: freebsd/11.1
|
||||
- name: FreeBSD 12.1
|
||||
test: freebsd/12.1
|
||||
- stage: Incidental_Docker
|
||||
displayName: Incidental Docker
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: i/linux/{0}
|
||||
targets:
|
||||
- name: CentOS 6
|
||||
test: centos6
|
||||
- name: CentOS 7
|
||||
test: centos7
|
||||
- name: CentOS 8
|
||||
test: centos8
|
||||
- name: Fedora 31
|
||||
test: fedora31
|
||||
- name: Fedora 32
|
||||
test: fedora32
|
||||
- name: openSUSE 15 py2
|
||||
test: opensuse15py2
|
||||
- name: openSUSE 15 py3
|
||||
test: opensuse15
|
||||
- name: Ubuntu 16.04
|
||||
test: ubuntu1604
|
||||
- name: Ubuntu 18.04
|
||||
test: ubuntu1804
|
||||
- name: Ubuntu 20.04
|
||||
test: ubuntu2004
|
||||
- stage: Incidental_Windows
|
||||
displayName: Incidental Windows
|
||||
dependsOn: []
|
||||
@ -192,20 +211,10 @@ stages:
|
||||
nameFormat: Server {0}
|
||||
testFormat: i/windows/{0}
|
||||
targets:
|
||||
- name: 2016 WinRM HTTP
|
||||
test: 2016/winrm/http
|
||||
- name: 2019 WinRM HTTPS
|
||||
test: 2019/winrm/https
|
||||
- name: 2022 WinRM HTTPS
|
||||
test: 2022/winrm/https
|
||||
- name: 2022 PSRP HTTP
|
||||
test: 2022/psrp/http
|
||||
- name: 2022 SSH Key
|
||||
test: 2022/ssh/key
|
||||
- name: 2025 PSRP HTTP
|
||||
test: 2025/psrp/http
|
||||
- name: 2025 SSH Key
|
||||
test: 2025/ssh/key
|
||||
- test: 2012
|
||||
- test: 2012-R2
|
||||
- test: 2016
|
||||
- test: 2019
|
||||
- stage: Incidental
|
||||
dependsOn: []
|
||||
jobs:
|
||||
@ -215,6 +224,20 @@ stages:
|
||||
targets:
|
||||
- name: IOS Python
|
||||
test: ios/csr1000v/
|
||||
- name: VyOS Python 2.7
|
||||
test: vyos/1.1.8/2.7
|
||||
- name: VyOS Python 3.6
|
||||
test: vyos/1.1.8/3.6
|
||||
- name: AWS Python 2.7
|
||||
test: aws/2.7
|
||||
- name: AWS Python 3.6
|
||||
test: aws/3.6
|
||||
- name: Azure Python 2.7
|
||||
test: azure/2.7
|
||||
- name: Azure Python 3.6
|
||||
test: azure/3.6
|
||||
- name: Cloud Python
|
||||
test: cloud/
|
||||
- stage: Summary
|
||||
condition: succeededOrFailed()
|
||||
dependsOn:
|
||||
@ -223,8 +246,10 @@ stages:
|
||||
- Windows
|
||||
- Remote
|
||||
- Docker
|
||||
- Galaxy
|
||||
- Fallaxy
|
||||
- Generic
|
||||
- Incidental_Remote
|
||||
- Incidental_Docker
|
||||
- Incidental_Windows
|
||||
- Incidental
|
||||
jobs:
|
||||
|
||||
@ -1,62 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
script="${args[0]}"
|
||||
|
||||
test="$1"
|
||||
|
||||
docker images
|
||||
docker ps
|
||||
|
||||
for container in $(docker ps --format '{{.Image}} {{.ID}}' | grep -v -e '^quay.io/ansible/azure-pipelines-test-container:' | sed 's/^.* //'); do
|
||||
docker rm -f "${container}" || true # ignore errors
|
||||
done
|
||||
|
||||
docker ps
|
||||
|
||||
export PATH="${PWD}/bin:${PATH}"
|
||||
export PYTHONIOENCODING='utf-8'
|
||||
|
||||
if [ -n "${COVERAGE:-}" ]; then
|
||||
# on-demand coverage reporting triggered by setting the COVERAGE environment variable to a non-empty value
|
||||
export COVERAGE="--coverage"
|
||||
elif [[ "${COMMIT_MESSAGE}" =~ ci_coverage ]]; then
|
||||
# on-demand coverage reporting triggered by having 'ci_coverage' in the latest commit message
|
||||
export COVERAGE="--coverage"
|
||||
else
|
||||
# on-demand coverage reporting disabled (default behavior, always-on coverage reporting remains enabled)
|
||||
export COVERAGE="--coverage-check"
|
||||
fi
|
||||
|
||||
if [ -n "${COMPLETE:-}" ]; then
|
||||
# disable change detection triggered by setting the COMPLETE environment variable to a non-empty value
|
||||
export CHANGED=""
|
||||
elif [[ "${COMMIT_MESSAGE}" =~ ci_complete ]]; then
|
||||
# disable change detection triggered by having 'ci_complete' in the latest commit message
|
||||
export CHANGED=""
|
||||
else
|
||||
# enable change detection (default behavior)
|
||||
export CHANGED="--changed"
|
||||
fi
|
||||
|
||||
if [ "${IS_PULL_REQUEST:-}" == "true" ]; then
|
||||
# run unstable tests which are targeted by focused changes on PRs
|
||||
export UNSTABLE="--allow-unstable-changed"
|
||||
else
|
||||
# do not run unstable tests outside PRs
|
||||
export UNSTABLE=""
|
||||
fi
|
||||
|
||||
if [[ "${COVERAGE:-}" == "--coverage" ]]; then
|
||||
timeout=60
|
||||
else
|
||||
timeout=50
|
||||
fi
|
||||
|
||||
ansible-test env --dump --show --timeout "${timeout}" --color -v
|
||||
|
||||
".azure-pipelines/commands/${script}.sh" "${test}"
|
||||
@ -1,46 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
version="${args[1]}"
|
||||
connection="${args[2]}"
|
||||
connection_setting="${args[3]}"
|
||||
|
||||
target="shippable/windows/incidental/"
|
||||
|
||||
stage="${S:-prod}"
|
||||
provider="${P:-default}"
|
||||
|
||||
# python version to run full tests on while other versions run minimal tests
|
||||
python_default="$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(constants.CONTROLLER_MIN_PYTHON_VERSION)')"
|
||||
|
||||
# version to test when only testing a single version
|
||||
single_version=2022
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test windows-integration --list-targets -v ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} > /tmp/explain.txt 2>&1 || { cat /tmp/explain.txt && false; }
|
||||
{ grep ' windows-integration: .* (targeted)$' /tmp/explain.txt || true; } > /tmp/windows.txt
|
||||
|
||||
if [ -s /tmp/windows.txt ] || [ "${CHANGED:+$CHANGED}" == "" ]; then
|
||||
echo "Detected changes requiring integration tests specific to Windows:"
|
||||
cat /tmp/windows.txt
|
||||
|
||||
echo "Running Windows integration tests for the version ${version}."
|
||||
else
|
||||
echo "No changes requiring integration tests specific to Windows were detected."
|
||||
echo "Running Windows integration tests for a single version only: ${single_version}"
|
||||
|
||||
if [ "${version}" != "${single_version}" ]; then
|
||||
echo "Skipping this job since it is for: ${version}"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test windows-integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--controller "docker:default,python=${python_default}" \
|
||||
--target "remote:windows/${version},connection=${connection}+${connection_setting},provider=${provider}" \
|
||||
--remote-terminate always --remote-stage "${stage}"
|
||||
@ -1,32 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
platform="${args[0]}"
|
||||
version="${args[1]}"
|
||||
pyver=default
|
||||
|
||||
# check for explicit python version like 8.3@3.8
|
||||
declare -a splitversion
|
||||
IFS='@' read -ra splitversion <<< "$version"
|
||||
|
||||
if [ "${#splitversion[@]}" -gt 1 ]; then
|
||||
version="${splitversion[0]}"
|
||||
pyver="${splitversion[1]}"
|
||||
fi
|
||||
|
||||
if [ "${#args[@]}" -gt 2 ]; then
|
||||
target="shippable/posix/group${args[2]}/"
|
||||
else
|
||||
target="shippable/posix/"
|
||||
fi
|
||||
|
||||
stage="${S:-prod}"
|
||||
provider="${P:-default}"
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--python "${pyver}" --remote "${platform}/${version}" --remote-terminate always --remote-stage "${stage}" --remote-provider "${provider}" \
|
||||
@ -1,41 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
group="${args[1]}"
|
||||
|
||||
group2_include=(
|
||||
ansible-doc
|
||||
changelog
|
||||
package-data
|
||||
pep8
|
||||
pylint
|
||||
validate-modules
|
||||
)
|
||||
|
||||
group1_exclude=(
|
||||
"${group2_include[@]}"
|
||||
)
|
||||
|
||||
options=()
|
||||
|
||||
case "${group}" in
|
||||
1)
|
||||
for name in "${group1_exclude[@]}"; do
|
||||
options+=(--skip-test "${name}")
|
||||
done
|
||||
;;
|
||||
2)
|
||||
for name in "${group2_include[@]}"; do
|
||||
options+=(--test "${name}")
|
||||
done
|
||||
;;
|
||||
esac
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test sanity --color -v --junit ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} \
|
||||
--docker \
|
||||
"${options[@]}" --allow-disabled
|
||||
@ -1,89 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
version="${args[1]}"
|
||||
connection="${args[2]}"
|
||||
connection_setting="${args[3]}"
|
||||
group="${args[4]}"
|
||||
|
||||
target="shippable/windows/group${group}/"
|
||||
|
||||
stage="${S:-prod}"
|
||||
provider="${P:-default}"
|
||||
|
||||
# python versions to test in order
|
||||
IFS=' ' read -r -a python_versions <<< \
|
||||
"$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(" ".join(constants.CONTROLLER_PYTHON_VERSIONS))')"
|
||||
|
||||
# python version to run full tests on while other versions run minimal tests
|
||||
python_default="$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(constants.CONTROLLER_MIN_PYTHON_VERSION)')"
|
||||
|
||||
# version to test when only testing a single version
|
||||
single_version=2022
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test windows-integration --list-targets -v ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} > /tmp/explain.txt 2>&1 || { cat /tmp/explain.txt && false; }
|
||||
{ grep ' windows-integration: .* (targeted)$' /tmp/explain.txt || true; } > /tmp/windows.txt
|
||||
|
||||
if [ -s /tmp/windows.txt ] || [ "${CHANGED:+$CHANGED}" == "" ]; then
|
||||
echo "Detected changes requiring integration tests specific to Windows:"
|
||||
cat /tmp/windows.txt
|
||||
|
||||
echo "Running Windows integration tests for the version ${version}."
|
||||
else
|
||||
echo "No changes requiring integration tests specific to Windows were detected."
|
||||
echo "Running Windows integration tests for a single version only: ${single_version}"
|
||||
|
||||
if [ "${version}" != "${single_version}" ]; then
|
||||
echo "Skipping this job since it is for: ${version}"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
for py_version in "${python_versions[@]}"; do
|
||||
changed_all_target="all"
|
||||
changed_all_mode="default"
|
||||
|
||||
if [ "${py_version}" == "${python_default}" ]; then
|
||||
# smoketest tests
|
||||
if [ "${CHANGED}" ]; then
|
||||
# with change detection enabled run tests for anything changed
|
||||
# use the smoketest tests for any change that triggers all tests
|
||||
ci="${target}"
|
||||
changed_all_target="shippable/windows/smoketest/"
|
||||
if [ "${target}" == "shippable/windows/group1/" ]; then
|
||||
# only run smoketest tests for group1
|
||||
changed_all_mode="include"
|
||||
else
|
||||
# smoketest tests already covered by group1
|
||||
changed_all_mode="exclude"
|
||||
fi
|
||||
else
|
||||
# without change detection enabled run entire test group
|
||||
ci="${target}"
|
||||
fi
|
||||
else
|
||||
# only run minimal tests for group1
|
||||
if [ "${target}" != "shippable/windows/group1/" ]; then continue; fi
|
||||
# minimal tests for other python versions
|
||||
ci="shippable/windows/minimal/"
|
||||
fi
|
||||
|
||||
# terminate remote instances on the final python version tested
|
||||
if [ "${py_version}" = "${python_versions[-1]}" ]; then
|
||||
terminate="always"
|
||||
else
|
||||
terminate="never"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test windows-integration --color -v --retry-on-error "${ci}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--changed-all-target "${changed_all_target}" --changed-all-mode "${changed_all_mode}" \
|
||||
--controller "docker:default,python=${py_version}" \
|
||||
--target "remote:windows/${version},connection=${connection}+${connection_setting},provider=${provider}" \
|
||||
--remote-terminate "${terminate}" --remote-stage "${stage}"
|
||||
done
|
||||
@ -9,9 +9,9 @@ PATH="${PWD}/bin:${PATH}"
|
||||
|
||||
mkdir "${agent_temp_directory}/coverage/"
|
||||
|
||||
options=(--venv --color -v)
|
||||
options=(--venv --venv-system-site-packages --color -v)
|
||||
|
||||
ansible-test coverage combine --group-by command --export "${agent_temp_directory}/coverage/" "${options[@]}"
|
||||
ansible-test coverage combine --export "${agent_temp_directory}/coverage/" "${options[@]}"
|
||||
|
||||
if ansible-test coverage analyze targets generate --help >/dev/null 2>&1; then
|
||||
# Only analyze coverage if the installed version of ansible-test supports it.
|
||||
|
||||
@ -7,7 +7,8 @@ Keep in mind that Azure Pipelines does not enforce unique job display names (onl
|
||||
It is up to pipeline authors to avoid name collisions when deviating from the recommended format.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
@ -1,102 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
Upload code coverage reports to codecov.io.
|
||||
Multiple coverage files from multiple languages are accepted and aggregated after upload.
|
||||
Python coverage, as well as PowerShell and Python stubs can all be uploaded.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import dataclasses
|
||||
import pathlib
|
||||
import shutil
|
||||
import subprocess
|
||||
import tempfile
|
||||
import typing as t
|
||||
import urllib.request
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
class CoverageFile:
|
||||
name: str
|
||||
path: pathlib.Path
|
||||
flags: t.List[str]
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
class Args:
|
||||
dry_run: bool
|
||||
path: pathlib.Path
|
||||
|
||||
|
||||
def parse_args() -> Args:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-n', '--dry-run', action='store_true')
|
||||
parser.add_argument('path', type=pathlib.Path)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
# Store arguments in a typed dataclass
|
||||
fields = dataclasses.fields(Args)
|
||||
kwargs = {field.name: getattr(args, field.name) for field in fields}
|
||||
|
||||
return Args(**kwargs)
|
||||
|
||||
|
||||
def process_files(directory: pathlib.Path) -> t.Tuple[CoverageFile, ...]:
|
||||
processed = []
|
||||
for file in directory.joinpath('reports').glob('coverage*.xml'):
|
||||
name = file.stem.replace('coverage=', '')
|
||||
|
||||
# Get flags from name
|
||||
flags = name.replace('-powershell', '').split('=') # Drop '-powershell' suffix
|
||||
flags = [flag if not flag.startswith('stub') else flag.split('-')[0] for flag in flags] # Remove "-01" from stub files
|
||||
|
||||
processed.append(CoverageFile(name, file, flags))
|
||||
|
||||
return tuple(processed)
|
||||
|
||||
|
||||
def upload_files(codecov_bin: pathlib.Path, files: t.Tuple[CoverageFile, ...], dry_run: bool = False) -> None:
|
||||
for file in files:
|
||||
cmd = [
|
||||
str(codecov_bin),
|
||||
'--name', file.name,
|
||||
'--file', str(file.path),
|
||||
]
|
||||
for flag in file.flags:
|
||||
cmd.extend(['--flags', flag])
|
||||
|
||||
if dry_run:
|
||||
print(f'DRY-RUN: Would run command: {cmd}')
|
||||
continue
|
||||
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
|
||||
def download_file(url: str, dest: pathlib.Path, flags: int, dry_run: bool = False) -> None:
|
||||
if dry_run:
|
||||
print(f'DRY-RUN: Would download {url} to {dest} and set mode to {flags:o}')
|
||||
return
|
||||
|
||||
with urllib.request.urlopen(url) as resp:
|
||||
with dest.open('w+b') as f:
|
||||
# Read data in chunks rather than all at once
|
||||
shutil.copyfileobj(resp, f, 64 * 1024)
|
||||
|
||||
dest.chmod(flags)
|
||||
|
||||
|
||||
def main():
|
||||
args = parse_args()
|
||||
url = 'https://ci-files.testing.ansible.com/codecov/linux/codecov'
|
||||
with tempfile.TemporaryDirectory(prefix='codecov-') as tmpdir:
|
||||
codecov_bin = pathlib.Path(tmpdir) / 'codecov'
|
||||
download_file(url, codecov_bin, 0o755, args.dry_run)
|
||||
|
||||
files = process_files(args.path)
|
||||
upload_files(codecov_bin, files, args.dry_run)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
27
.azure-pipelines/scripts/publish-codecov.sh
Executable file
27
.azure-pipelines/scripts/publish-codecov.sh
Executable file
@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
# Upload code coverage reports to codecov.io.
|
||||
# Multiple coverage files from multiple languages are accepted and aggregated after upload.
|
||||
# Python coverage, as well as PowerShell and Python stubs can all be uploaded.
|
||||
|
||||
set -o pipefail -eu
|
||||
|
||||
output_path="$1"
|
||||
|
||||
curl --silent --show-error https://codecov.io/bash > codecov.sh
|
||||
|
||||
for file in "${output_path}"/reports/coverage*.xml; do
|
||||
name="${file}"
|
||||
name="${name##*/}" # remove path
|
||||
name="${name##coverage=}" # remove 'coverage=' prefix if present
|
||||
name="${name%.xml}" # remove '.xml' suffix
|
||||
|
||||
bash codecov.sh \
|
||||
-f "${file}" \
|
||||
-n "${name}" \
|
||||
-X coveragepy \
|
||||
-X gcov \
|
||||
-X fix \
|
||||
-X search \
|
||||
-X xcode \
|
||||
|| echo "Failed to upload code coverage report to codecov.io: ${file}"
|
||||
done
|
||||
@ -12,6 +12,4 @@ if ! ansible-test --help >/dev/null 2>&1; then
|
||||
pip install https://github.com/ansible/ansible/archive/devel.tar.gz --disable-pip-version-check
|
||||
fi
|
||||
|
||||
# Generate stubs using docker.
|
||||
# The use of docker is mandatory when Powershell code is present.
|
||||
ansible-test coverage xml --group-by command --stub --docker --color -v
|
||||
ansible-test coverage xml --stub --venv --venv-system-site-packages --color -v
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
#!/usr/bin/env python
|
||||
"""Prepends a relative timestamp to each input line from stdin and writes it to stdout."""
|
||||
|
||||
from __future__ import annotations
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
import sys
|
||||
import time
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
jobs:
|
||||
- job: Coverage
|
||||
displayName: Code Coverage
|
||||
container: $[ variables.defaultContainer ]
|
||||
container: default
|
||||
workspace:
|
||||
clean: all
|
||||
steps:
|
||||
@ -23,7 +23,17 @@ jobs:
|
||||
- bash: .azure-pipelines/scripts/report-coverage.sh
|
||||
displayName: Generate Coverage Report
|
||||
condition: gt(variables.coverageFileCount, 0)
|
||||
- bash: .azure-pipelines/scripts/publish-codecov.py "$(outputPath)"
|
||||
- task: PublishCodeCoverageResults@1
|
||||
inputs:
|
||||
codeCoverageTool: Cobertura
|
||||
# Azure Pipelines only accepts a single coverage data file.
|
||||
# That means only Python or PowerShell coverage can be uploaded, but not both.
|
||||
# Set the "pipelinesCoverage" variable to determine which type is uploaded.
|
||||
# Use "coverage" for Python and "coverage-powershell" for PowerShell.
|
||||
summaryFileLocation: "$(outputPath)/reports/$(pipelinesCoverage).xml"
|
||||
displayName: Publish to Azure Pipelines
|
||||
condition: gt(variables.coverageFileCount, 0)
|
||||
- bash: .azure-pipelines/scripts/publish-codecov.sh "$(outputPath)"
|
||||
displayName: Publish to codecov.io
|
||||
condition: gt(variables.coverageFileCount, 0)
|
||||
continueOnError: true
|
||||
|
||||
@ -9,9 +9,9 @@ parameters:
|
||||
|
||||
jobs:
|
||||
- ${{ each job in parameters.jobs }}:
|
||||
- job: test_${{ replace(replace(replace(replace(job.test, '/', '_'), '.', '_'), '-', '_'), '@', '_') }}
|
||||
- job: test_${{ replace(replace(replace(job.test, '/', '_'), '.', '_'), '-', '_') }}
|
||||
displayName: ${{ job.name }}
|
||||
container: $[ variables.defaultContainer ]
|
||||
container: default
|
||||
workspace:
|
||||
clean: all
|
||||
steps:
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
# .git-blame-ignore-revs
|
||||
# Bulk PowerShell sanity fixes
|
||||
6def4a3180fe03981ba64c6d8db28fed3bb39c0c
|
||||
716631189cb5a3f66b3add98f39e64e98bc17bf7
|
||||
# Bulk update of strings from triple single quotes to triple double quotes
|
||||
a0495fc31497798a7a833ba7406a9729e1528dd8
|
||||
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -1 +1,2 @@
|
||||
.github/ export-ignore
|
||||
hacking/ export-ignore
|
||||
|
||||
30229
.github/BOTMETA.yml
vendored
Normal file
30229
.github/BOTMETA.yml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
67
.github/CONTRIBUTING.md
vendored
67
.github/CONTRIBUTING.md
vendored
@ -4,75 +4,22 @@ Hi! Nice to see you here!
|
||||
|
||||
## QUESTIONS ?
|
||||
|
||||
If you have questions about anything related to Ansible, get in touch with us!
|
||||
See [Communicating with the Ansible community](https://docs.ansible.com/ansible/devel/community/communication.html) to find out how.
|
||||
Please see the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for information on how to ask questions on the [mailing lists](https://docs.ansible.com/ansible/latest/community/communication.html#mailing-list-information) and IRC.
|
||||
|
||||
The [Community Guide](https://docs.ansible.com/ansible/devel/community/index.html) also explains how to contribute
|
||||
and interact with the project, including how to submit bug reports and code to Ansible.
|
||||
|
||||
Please note that the GitHub issue tracker is not the best place to ask questions for several reasons.
|
||||
You'll get more helpful, and quicker, responses in the forum.
|
||||
The GitHub issue tracker is not the best place for questions for various reasons, but both IRC and the mailing list are very helpful places for those things, as the community page explains best.
|
||||
|
||||
## CONTRIBUTING ?
|
||||
|
||||
By contributing to this project you agree to the [Developer Certificate of Origin (DCO)](#developer-certificate-of-origin-dco).
|
||||
By contributing you agree that these contributions are your own (or approved by your employer) and you grant a full, complete, irrevocable copyright license to all users and developers of the project, present and future, pursuant to the license of the project. You can also read the same [CLA](https://docs.ansible.com/ansible/latest/community/contributor_license_agreement.html) on the Ansible docsite.
|
||||
|
||||
The Ansible project is licensed under the [GPL-3.0](COPYING) or later. Some portions of the code fall under other licenses as noted in individual files.
|
||||
|
||||
The Ansible project accepts contributions through GitHub pull requests.
|
||||
Please review the [Community Guide](https://docs.ansible.com/ansible/devel/community/index.html) for more information on contributing to Ansible.
|
||||
Please review the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for more information on contributing to Ansible.
|
||||
|
||||
## BUG TO REPORT ?
|
||||
|
||||
First and foremost, also check the [Community Guide](https://docs.ansible.com/ansible/devel/community/index.html).
|
||||
First and foremost, also check the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html).
|
||||
|
||||
You can report bugs or make enhancement requests at
|
||||
the [Ansible GitHub issue page](http://github.com/ansible/ansible/issues/new/choose) by filling out the issue template that will be presented.
|
||||
You can report bugs or make enhancement requests at the [Ansible GitHub issue page](http://github.com/ansible/ansible/issues/new/choose) by filling out the issue template that will be presented.
|
||||
|
||||
Also please make sure you are testing on the latest released version of Ansible or the development branch.
|
||||
See the [Installation Guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) for details.
|
||||
Also please make sure you are testing on the latest released version of Ansible or the development branch; see the [Installation Guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) for details.
|
||||
|
||||
Thanks!
|
||||
|
||||
## DEVELOPER CERTIFICATE OF ORIGIN (DCO)
|
||||
|
||||
This document was created by the Linux Kernel community and is a simple statement that you, as a contributor, have the legal right to make the contribution.
|
||||
|
||||
```text
|
||||
Developer Certificate of Origin
|
||||
Version 1.1
|
||||
|
||||
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
|
||||
1 Letterman Drive
|
||||
Suite D4700
|
||||
San Francisco, CA, 94129
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this
|
||||
license document, but changing it is not allowed.
|
||||
|
||||
Developer's Certificate of Origin 1.1
|
||||
|
||||
By making a contribution to this project, I certify that:
|
||||
|
||||
(a) The contribution was created in whole or in part by me and I
|
||||
have the right to submit it under the open source license
|
||||
indicated in the file; or
|
||||
|
||||
(b) The contribution is based upon previous work that, to the best
|
||||
of my knowledge, is covered under an appropriate open source
|
||||
license and I have the right under that license to submit that
|
||||
work with modifications, whether created in whole or in part
|
||||
by me, under the same open source license (unless I am
|
||||
permitted to submit under a different license), as indicated
|
||||
in the file; or
|
||||
|
||||
(c) The contribution was provided directly to me by some other
|
||||
person who certified (a), (b) or (c) and I have not modified
|
||||
it.
|
||||
|
||||
(d) I understand and agree that this project and the contribution
|
||||
are public and that a record of the contribution (including all
|
||||
personal information I submit with it, including my sign-off) is
|
||||
maintained indefinitely and may be redistributed consistent with
|
||||
this project or the open source license(s) involved.
|
||||
```
|
||||
|
||||
54
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
54
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
---
|
||||
name: 🐛 Bug report
|
||||
about: Create a report to help us improve
|
||||
---
|
||||
<!--- Verify first that your issue is not already reported on GitHub -->
|
||||
<!--- Also test if the latest release and devel branch are affected too -->
|
||||
<!--- Complete *all* sections as described, this form is processed automatically -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly below -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
- Bug Report
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste verbatim output from "ansible --version" between quotes -->
|
||||
```paste below
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
|
||||
```paste below
|
||||
|
||||
```
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
|
||||
|
||||
|
||||
##### STEPS TO REPRODUCE
|
||||
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- HINT: You can paste gist.github.com links for larger files -->
|
||||
|
||||
##### EXPECTED RESULTS
|
||||
<!--- Describe what you expected to happen when running the steps above -->
|
||||
|
||||
|
||||
##### ACTUAL RESULTS
|
||||
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
|
||||
|
||||
<!--- Paste verbatim command output between quotes -->
|
||||
```paste below
|
||||
|
||||
```
|
||||
250
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
250
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -1,250 +0,0 @@
|
||||
---
|
||||
name: 🐛 Bug report
|
||||
description: Create a report to help us improve
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
**Thank you for wanting to report a bug in ansible-core!**
|
||||
|
||||
|
||||
⚠
|
||||
Verify first that your issue is not [already reported on
|
||||
GitHub][issue search] and keep in mind that we may have to keep
|
||||
the current behavior because [every change breaks someone's
|
||||
workflow][XKCD 1172].
|
||||
We try to be mindful about this.
|
||||
|
||||
Also test if the latest release and devel branch are affected too.
|
||||
|
||||
|
||||
**Tip:** If you are seeking community support, please see
|
||||
[Communicating with the Ansible community][communication] to
|
||||
get in touch and ask questions.
|
||||
|
||||
|
||||
|
||||
[communication]:
|
||||
https://docs.ansible.com/ansible/devel/community/communication.html
|
||||
|
||||
[issue search]: ../search?q=is%3Aissue&type=issues
|
||||
|
||||
[XKCD 1172]: https://xkcd.com/1172/
|
||||
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Summary
|
||||
description: Explain the problem briefly below.
|
||||
placeholder: >-
|
||||
When I try to do X with ansible-core from the devel branch on GitHub, Y
|
||||
breaks in a way Z under the env E. Here are all the details I know
|
||||
about this problem...
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Issue Type
|
||||
description: This is a marker for our automatic bot. Do not change it.
|
||||
options:
|
||||
- Bug Report
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Component Name
|
||||
description: >
|
||||
Write the short name of the rst file, module, plugin, task or
|
||||
feature below, *use your best guess if unsure*.
|
||||
|
||||
|
||||
**Tip:** Cannot find it in this repository? Please be advised that
|
||||
the source for some parts of the documentation are hosted outside
|
||||
of this repository. If the page you are reporting describes
|
||||
modules/plugins/etc that are not officially supported by the
|
||||
Ansible Core Engineering team, there is a good chance that it is
|
||||
coming from one of the [Ansible Collections maintained by the
|
||||
community][collections org]. If this is the case, please make sure
|
||||
to file an issue under the appropriate project there instead.
|
||||
|
||||
|
||||
[collections org]: /ansible-collections
|
||||
placeholder: dnf, apt, pip, user etc.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Ansible Version
|
||||
description: >-
|
||||
Paste verbatim output from `ansible --version` below, under
|
||||
the prompt line. Please don't wrap it with triple backticks — your
|
||||
whole input will be turned into a code snippet automatically.
|
||||
render: console
|
||||
value: |
|
||||
$ ansible --version
|
||||
placeholder: |
|
||||
$ ansible --version
|
||||
ansible [core 2.11.0b4.post0] (detached HEAD ref: refs/) last updated 2021/04/02 00:33:35 (GMT +200)
|
||||
config file = None
|
||||
configured module search path = ['~/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
|
||||
ansible python module location = ~/src/github/ansible/ansible/lib/ansible
|
||||
ansible collection location = ~/.ansible/collections:/usr/share/ansible/collections
|
||||
executable location = bin/ansible
|
||||
python version = 3.9.0 (default, Oct 26 2020, 13:08:59) [GCC 10.2.0]
|
||||
jinja version = 2.11.3
|
||||
libyaml = True
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Configuration
|
||||
description: >-
|
||||
Paste verbatim output from `ansible-config dump --only-changed -t all` below, under the prompt line.
|
||||
(if using a version older than ansible-core 2.12 you should omit the '-t all')
|
||||
Please don't wrap it with triple backticks — your
|
||||
whole input will be turned into a code snippet automatically.
|
||||
render: console
|
||||
value: |
|
||||
# if using a version older than ansible-core 2.12 you should omit the '-t all'
|
||||
$ ansible-config dump --only-changed -t all
|
||||
placeholder: |
|
||||
# if using a version older than ansible-core 2.12 you should omit the '-t all'
|
||||
$ ansible-config dump --only-changed -t all
|
||||
DEFAULT_GATHERING(~/src/github/ansible/ansible/ansible.cfg) = smart
|
||||
DEFAULT_HOST_LIST(~/src/github/ansible/ansible/ansible.cfg) = ['~/src/github/ansible/ansible/hosts']
|
||||
DEFAULT_VAULT_PASSWORD_FILE(~/src/github/ansible/ansible/ansible.cfg) = ~/src/github/ansible/ansible/vault/print-password.sh
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: OS / Environment
|
||||
description: >-
|
||||
Provide all relevant information below, e.g. target OS versions,
|
||||
network device firmware, etc.
|
||||
placeholder: RHEL 8, CentOS Stream etc.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: |
|
||||
Describe exactly how to reproduce the problem, using a minimal test-case. It would *really* help us understand your problem if you could also pased any playbooks, configs and commands you used.
|
||||
|
||||
**HINT:** You can paste https://gist.github.com links for larger files.
|
||||
value: |
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml (paste below)
|
||||
|
||||
```
|
||||
placeholder: |
|
||||
1. Implement the following playbook:
|
||||
|
||||
```yaml
|
||||
---
|
||||
# ping.yml
|
||||
- hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- ping:
|
||||
...
|
||||
```
|
||||
2. Then run `ANSIBLE_DEBUG=1 ansible-playbook ping.yml -vvvvv`
|
||||
3. An error occurs.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Expected Results
|
||||
description: >-
|
||||
Describe what you expected to happen when running the steps above.
|
||||
placeholder: >-
|
||||
I expected X to happen because I assumed Y and was shocked
|
||||
that it did not.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Actual Results
|
||||
description: |
|
||||
Describe what actually happened. If possible run with extra verbosity (`-vvvv`).
|
||||
|
||||
Paste verbatim command output and don't wrap it with triple backticks — your
|
||||
whole input will be turned into a code snippet automatically.
|
||||
render: console
|
||||
placeholder: >-
|
||||
Certificate did not match expected hostname: files.pythonhosted.org. Certificate: {'notAfter': 'Apr 28 19:20:25 2021 GMT', 'subjectAltName': ((u'DNS', 'r.ssl.fastly.net'), (u'DNS', '*.catchpoint.com'), (u'DNS', '*.cnn.io'), (u'DNS', '*.dollarshaveclub.com'), (u'DNS', '*.eater.com'), (u'DNS', '*.fastly.picmonkey.com'), (u'DNS', '*.files.saymedia-content.com'), (u'DNS', '*.ft.com'), (u'DNS', '*.meetupstatic.com'), (u'DNS', '*.nfl.com'), (u'DNS', '*.pagar.me'), (u'DNS', '*.picmonkey.com'), (u'DNS', '*.realself.com'), (u'DNS', '*.sbnation.com'), (u'DNS', '*.shakr.com'), (u'DNS', '*.streamable.com'), (u'DNS', '*.surfly.com'), (u'DNS', '*.theverge.com'), (u'DNS', '*.thrillist.com'), (u'DNS', '*.vox-cdn.com'), (u'DNS', '*.vox.com'), (u'DNS', '*.voxmedia.com'), (u'DNS', 'eater.com'), (u'DNS', 'ft.com'), (u'DNS', 'i.gse.io'), (u'DNS', 'picmonkey.com'), (u'DNS', 'realself.com'), (u'DNS', 'static.wixstatic.com'), (u'DNS', 'streamable.com'), (u'DNS', 'surfly.com'), (u'DNS', 'theverge.com'), (u'DNS', 'vox-cdn.com'), (u'DNS', 'vox.com'), (u'DNS', 'www.joyent.com')), 'subject': ((('countryName', u'US'),), (('stateOrProvinceName', u'California'),), (('localityName', u'San Francisco'),), (('organizationName', u'Fastly, Inc'),), (('commonName', u'r.ssl.fastly.net'),))}
|
||||
Exception:
|
||||
Traceback (most recent call last):
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/basecommand.py", line 215, in main
|
||||
status = self.run(options, args)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/commands/install.py", line 335, in run
|
||||
wb.build(autobuilding=True)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/wheel.py", line 749, in build
|
||||
self.requirement_set.prepare_files(self.finder)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/req/req_set.py", line 380, in prepare_files
|
||||
ignore_dependencies=self.ignore_dependencies))
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/req/req_set.py", line 620, in _prepare_file
|
||||
session=self.session, hashes=hashes)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/download.py", line 821, in unpack_url
|
||||
hashes=hashes
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/download.py", line 659, in unpack_http_url
|
||||
hashes)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/download.py", line 853, in _download_http_url
|
||||
stream=True,
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/_vendor/requests/sessions.py", line 521, in get
|
||||
return self.request('GET', url, **kwargs)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/download.py", line 386, in request
|
||||
return super(PipSession, self).request(method, url, *args, **kwargs)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/_vendor/requests/sessions.py", line 508, in request
|
||||
resp = self.send(prep, **send_kwargs)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/_vendor/requests/sessions.py", line 618, in send
|
||||
r = adapter.send(request, **kwargs)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/_vendor/cachecontrol/adapter.py", line 47, in send
|
||||
resp = super(CacheControlAdapter, self).send(request, **kw)
|
||||
File "/usr/local/lib/python2.6/dist-packages/pip/_vendor/requests/adapters.py", line 506, in send
|
||||
raise SSLError(e, request=request)
|
||||
SSLError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/ef/ab/aa12712415809bf698e719b307419f953e25344e8f42d557533d7a02b276/netapp_lib-2020.7.16-py2-none-any.whl (Caused by SSLError(CertificateError("hostname 'files.pythonhosted.org' doesn't match either of 'r.ssl.fastly.net', '*.catchpoint.com', '*.cnn.io', '*.dollarshaveclub.com', '*.eater.com', '*.fastly.picmonkey.com', '*.files.saymedia-content.com', '*.ft.com', '*.meetupstatic.com', '*.nfl.com', '*.pagar.me', '*.picmonkey.com', '*.realself.com', '*.sbnation.com', '*.shakr.com', '*.streamable.com', '*.surfly.com', '*.theverge.com', '*.thrillist.com', '*.vox-cdn.com', '*.vox.com', '*.voxmedia.com', 'eater.com', 'ft.com', 'i.gse.io', 'picmonkey.com', 'realself.com', 'static.wixstatic.com', 'streamable.com', 'surfly.com', 'theverge.com', 'vox-cdn.com', 'vox.com', 'www.joyent.com'",),))
|
||||
ERROR: Command "/usr/bin/python2.6 /root/ansible/test/lib/ansible_test/_data/quiet_pip.py install --disable-pip-version-check -r /root/ansible/test/lib/ansible_test/_data/requirements/units.txt -r tests/unit/requirements.txt -c /root/ansible/test/lib/ansible_test/_data/requirements/constraints.txt" returned exit status 2.
|
||||
ERROR: Command "docker exec d47eb360db4ce779c1f690db964655b76e68895c4360ff252c46fe7fe6f5c75a /usr/bin/env ANSIBLE_TEST_CONTENT_ROOT=/root/ansible_collections/netapp/ontap LC_ALL=en_US.UTF-8 /usr/bin/python3.6 /root/ansible/bin/ansible-test units --metadata tests/output/.tmp/metadata-9i2qfrcl.json --truncate 200 --redact --color yes --requirements --python default --requirements-mode only" returned exit status 1.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
*One last thing...*
|
||||
|
||||
|
||||
*Please, complete **all** sections as described, this form
|
||||
is [processed automatically by a robot][ansibot help].*
|
||||
|
||||
|
||||
Thank you for your collaboration!
|
||||
|
||||
|
||||
[ansibot help]:
|
||||
/ansible/ansibotmini#ansibotmini
|
||||
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: |
|
||||
Read the [Ansible Code of Conduct][CoC] first.
|
||||
|
||||
[CoC]: https://docs.ansible.com/ansible/devel/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--bug_report.yml
|
||||
options:
|
||||
- label: I agree to follow the Ansible Code of Conduct
|
||||
required: true
|
||||
...
|
||||
14
.github/ISSUE_TEMPLATE/config.yml
vendored
14
.github/ISSUE_TEMPLATE/config.yml
vendored
@ -1,8 +1,8 @@
|
||||
# Ref: https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser
|
||||
blank_issues_enabled: false # default: true
|
||||
blank_issues_enabled: true # default
|
||||
contact_links:
|
||||
- name: 🔐 Security bug report 🔥
|
||||
url: https://docs.ansible.com/ansible/devel/community/reporting_bugs_and_features.html?utm_medium=github&utm_source=issue_template_chooser
|
||||
url: https://docs.ansible.com/ansible/latest/community/reporting_bugs_and_features.html?utm_medium=github&utm_source=issue_template_chooser
|
||||
about: |
|
||||
Please learn how to report security vulnerabilities here.
|
||||
|
||||
@ -11,15 +11,15 @@ contact_links:
|
||||
a prompt response.
|
||||
|
||||
For more information, see
|
||||
https://docs.ansible.com/ansible/devel/community/reporting_bugs_and_features.html
|
||||
https://docs.ansible.com/ansible/latest/community/reporting_bugs_and_features.html
|
||||
- name: 📝 Ansible Code of Conduct
|
||||
url: https://docs.ansible.com/ansible/devel/community/code_of_conduct.html?utm_medium=github&utm_source=issue_template_chooser
|
||||
url: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_template_chooser
|
||||
about: ❤ Be nice to other members of the community. ☮ Behave.
|
||||
- name: 💬 Talk to the community
|
||||
url: https://docs.ansible.com/ansible/devel/community/communication.html?utm_medium=github&utm_source=issue_template_chooser#forum
|
||||
- name: 💬 Talks to the community
|
||||
url: https://docs.ansible.com/ansible/latest/community/communication.html?utm_medium=github&utm_source=issue_template_chooser#mailing-list-information
|
||||
about: Please ask and answer usage questions here
|
||||
- name: ⚡ Working groups
|
||||
url: https://forum.ansible.com/g?utm_medium=github&utm_source=issue_template_chooser
|
||||
url: https://github.com/ansible/community/wiki
|
||||
about: Interested in improving a specific area? Become a part of a working group!
|
||||
- name: 💼 For Enterprise
|
||||
url: https://www.ansible.com/products/engine?utm_medium=github&utm_source=issue_template_chooser
|
||||
|
||||
38
.github/ISSUE_TEMPLATE/documentation_report.md
vendored
Normal file
38
.github/ISSUE_TEMPLATE/documentation_report.md
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
---
|
||||
name: 📝 Documentation Report
|
||||
about: Ask us about docs
|
||||
---
|
||||
<!--- Verify first that your improvement is not already reported on GitHub -->
|
||||
<!--- Also test if the latest release and devel branch are affected too -->
|
||||
<!--- Complete *all* sections as described, this form is processed automatically -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly below, add suggestions to wording or structure -->
|
||||
|
||||
<!--- HINT: Did you know the documentation has an "Edit on GitHub" link on every page ? -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
- Documentation Report
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Write the short name of the rst file, module, plugin, task or feature below, use your best guess if unsure -->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste verbatim output from "ansible --version" between quotes -->
|
||||
```paste below
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
|
||||
```paste below
|
||||
|
||||
```
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!--- Provide all relevant information below, e.g. OS version, browser, etc. -->
|
||||
|
||||
##### ADDITIONAL INFORMATION
|
||||
<!--- Describe how this improves the documentation, e.g. before/after situation or screenshots -->
|
||||
|
||||
<!--- HINT: You can paste gist.github.com links for larger files -->
|
||||
201
.github/ISSUE_TEMPLATE/documentation_report.yml
vendored
201
.github/ISSUE_TEMPLATE/documentation_report.yml
vendored
@ -1,201 +0,0 @@
|
||||
---
|
||||
name: 📝 Documentation Report
|
||||
description: Ask us about docs
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
**Thank you for wanting to report a problem with ansible-core
|
||||
documentation!**
|
||||
|
||||
|
||||
Please fill out your suggestions below. If the problem seems
|
||||
straightforward, feel free to go ahead and
|
||||
[submit a pull request] instead!
|
||||
|
||||
|
||||
⚠
|
||||
Verify first that your issue is not [already reported on
|
||||
GitHub][issue search].
|
||||
|
||||
Also test if the latest release and devel branch are affected too.
|
||||
|
||||
|
||||
**Tip:** If you are seeking community support, please see
|
||||
[Communicating with the Ansible community][communication] to
|
||||
get in touch and ask questions.
|
||||
|
||||
|
||||
|
||||
[communication]:
|
||||
https://docs.ansible.com/ansible/devel/community/communication.html
|
||||
|
||||
[issue search]: ../search?q=is%3Aissue&type=issues
|
||||
|
||||
[submit a pull request]:
|
||||
https://docs.ansible.com/ansible-core/devel/community/documentation_contributions.html
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
**Check the repository for your issue.**
|
||||
|
||||
Source files for Ansible community documentation are
|
||||
hosted in different repositories. Please make sure to file an
|
||||
issue in the correct project.
|
||||
|
||||
Documentation for modules/plugins/etc that are officially
|
||||
supported by the Ansible Core Engineering team is available
|
||||
in this (`ansible/ansible`) repository.
|
||||
|
||||
The Installation Guide, Playbook Guide, Developer Guide,
|
||||
and other documentation is available in the
|
||||
[ansible/ansible-documentation] repository.
|
||||
Documentation for other modules/plugins/etc is likely to be
|
||||
available in one of the [Ansible Collections][collections index].
|
||||
If available in the collection documentation, select the
|
||||
**Issue Tracker** button to go directly to the GitHub issues.
|
||||
|
||||
|
||||
[ansible/ansible-documentation]: /ansible/ansible-documentation
|
||||
|
||||
[collections index]:
|
||||
https://docs.ansible.com/ansible/latest/collections/index.html
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Summary
|
||||
description: >
|
||||
Explain the problem briefly below, add suggestions to wording
|
||||
or structure.
|
||||
|
||||
|
||||
**HINT:** Did you know the documentation has a `View on GitHub`
|
||||
link on some pages? Feel free to use it to start a pull request
|
||||
right from the GitHub UI!
|
||||
placeholder: >-
|
||||
I was reading the ansible-core documentation of version X and I'm having
|
||||
problems understanding Y. It would be very helpful if that got
|
||||
rephrased as Z.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Issue Type
|
||||
description: This is a marker for our automatic bot. Do not change it.
|
||||
options:
|
||||
- Documentation Report
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Component Name
|
||||
description: >
|
||||
Write the short name of the rst file, module, plugin, task or
|
||||
feature below, *use your best guess if unsure*.
|
||||
|
||||
placeholder: lib/ansible/modules/copy.py
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Ansible Version
|
||||
description: >-
|
||||
Paste verbatim output from `ansible --version` below, under
|
||||
the prompt line. Please don't wrap it with triple backticks — your
|
||||
whole input will be turned into a code snippet automatically.
|
||||
render: console
|
||||
value: |
|
||||
$ ansible --version
|
||||
placeholder: |
|
||||
$ ansible --version
|
||||
ansible [core 2.11.0b4.post0] (detached HEAD ref: refs/) last updated 2021/04/02 00:33:35 (GMT +200)
|
||||
config file = None
|
||||
configured module search path = ['~/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
|
||||
ansible python module location = ~/src/github/ansible/ansible/lib/ansible
|
||||
ansible collection location = ~/.ansible/collections:/usr/share/ansible/collections
|
||||
executable location = bin/ansible
|
||||
python version = 3.9.0 (default, Oct 26 2020, 13:08:59) [GCC 10.2.0]
|
||||
jinja version = 2.11.3
|
||||
libyaml = True
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Configuration
|
||||
description: >-
|
||||
Paste verbatim output from `ansible-config dump --only-changed -t all` below, under the prompt line.
|
||||
(if using a version older than ansible-core 2.12 you should omit the '-t all')
|
||||
Please don't wrap it with triple backticks — your
|
||||
whole input will be turned into a code snippet automatically.
|
||||
render: console
|
||||
value: |
|
||||
# if using a version older than ansible-core 2.12 you should omit the '-t all'
|
||||
$ ansible-config dump --only-changed -t all
|
||||
placeholder: |
|
||||
# if using a version older than ansible-core 2.12 you should omit the '-t all'
|
||||
$ ansible-config dump --only-changed -t all
|
||||
DEFAULT_GATHERING(~/src/github/ansible/ansible/ansible.cfg) = smart
|
||||
DEFAULT_HOST_LIST(~/src/github/ansible/ansible/ansible.cfg) = ['~/src/github/ansible/ansible/hosts']
|
||||
DEFAULT_VAULT_PASSWORD_FILE(~/src/github/ansible/ansible/ansible.cfg) = ~/src/github/ansible/ansible/vault/print-password.sh
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: OS / Environment
|
||||
description: >-
|
||||
Provide all relevant information below, e.g. OS version,
|
||||
browser, etc.
|
||||
placeholder: Fedora 33, Firefox etc.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Information
|
||||
description: |
|
||||
Describe how this improves the documentation, e.g. before/after situation or screenshots.
|
||||
|
||||
**HINT:** You can paste https://gist.github.com links for larger files.
|
||||
placeholder: >-
|
||||
When the improvement is applied, it makes it more straightforward
|
||||
to understand X.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
*One last thing...*
|
||||
|
||||
|
||||
*Please, complete **all** sections as described, this form
|
||||
is [processed automatically by a robot][ansibot help].*
|
||||
|
||||
|
||||
Thank you for your collaboration!
|
||||
|
||||
|
||||
[ansibot help]:
|
||||
/ansible/ansibotmini#ansibotmini
|
||||
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: |
|
||||
Read the [Ansible Code of Conduct][CoC] first.
|
||||
|
||||
[CoC]: https://docs.ansible.com/ansible/devel/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--documentation_report.yml
|
||||
options:
|
||||
- label: I agree to follow the Ansible Code of Conduct
|
||||
required: true
|
||||
...
|
||||
25
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
25
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
name: ✨ Feature request
|
||||
about: Suggest an idea for this project
|
||||
---
|
||||
<!--- Verify first that your feature was not already discussed on GitHub -->
|
||||
<!--- Complete *all* sections as described, this form is processed automatically -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Describe the new feature/improvement briefly below -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
- Feature Idea
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
|
||||
|
||||
##### ADDITIONAL INFORMATION
|
||||
<!--- Describe how the feature would be used, why it is needed and what it would solve -->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- HINT: You can also paste gist.github.com links for larger files -->
|
||||
176
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
176
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@ -1,176 +0,0 @@
|
||||
---
|
||||
name: ✨ Feature request
|
||||
description: Suggest an idea for this project
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
**Thank you for wanting to suggest a feature for ansible-core!**
|
||||
|
||||
|
||||
|
||||
💡
|
||||
Before you go ahead with your request, please first consider if it
|
||||
would be useful for majority of the ansible-core users. As a
|
||||
general rule of thumb, any feature that is only of interest to a
|
||||
small sub group should be [implemented in a third-party Ansible
|
||||
Collection][contribute to collections] or maybe even just your
|
||||
project alone. Be mindful of the fact that the essential
|
||||
ansible-core features have a broad impact.
|
||||
|
||||
If unsure, consider filing a [new proposal] instead outlining your
|
||||
use-cases, the research and implementation considerations. Then,
|
||||
start a discussion in the [Ansible forum][forum].
|
||||
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
❗ Every change breaks someone's workflow.
|
||||
</summary>
|
||||
|
||||
|
||||
[
|
||||
](https://xkcd.com/1172/)
|
||||
</details>
|
||||
|
||||
|
||||
⚠
|
||||
Verify first that your idea is not [already requested on
|
||||
GitHub][issue search].
|
||||
|
||||
Also test if the devel branch does not already implement this.
|
||||
|
||||
|
||||
**Tip:** If you are seeking community support, please see
|
||||
[Communicating with the Ansible community][communication] to
|
||||
get in touch and ask questions.
|
||||
|
||||
|
||||
|
||||
[contribute to collections]:
|
||||
https://docs.ansible.com/ansible-core/devel/community/contributing_maintained_collections.html?utm_medium=github&utm_source=issue_form--feature_request.yml
|
||||
|
||||
[communication]:
|
||||
https://docs.ansible.com/ansible/devel/community/communication.html
|
||||
|
||||
[issue search]: ../search?q=is%3Aissue&type=issues
|
||||
|
||||
[forum help]:
|
||||
https://forum.ansible.com/c/help/6
|
||||
|
||||
[new proposal]: ../../proposals/issues/new
|
||||
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Summary
|
||||
description: >
|
||||
Describe the new feature/improvement you would like briefly below.
|
||||
|
||||
|
||||
What's the problem this feature will solve?
|
||||
|
||||
What are you trying to do, that you are unable to achieve
|
||||
with ansible-core as it currently stands?
|
||||
|
||||
|
||||
* Provide examples of real-world use cases that this would enable
|
||||
and how it solves the problem you described.
|
||||
|
||||
* How do you solve this now?
|
||||
|
||||
* Have you tried to work around the problem using other tools?
|
||||
|
||||
* Could there be a different approach to solving this issue?
|
||||
|
||||
|
||||
*Know **exactly** what you want?* Consider filing a [new proposal]
|
||||
instead outlining your research and implementation considerations.
|
||||
|
||||
|
||||
[new proposal]: ../../proposals/issues/new
|
||||
placeholder: >-
|
||||
I am trying to do X with ansible-core from the devel branch on GitHub and
|
||||
I think that implementing a feature Y would be very helpful for me and
|
||||
every other user of ansible-core because of Z.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Issue Type
|
||||
description: This is a marker for our automatic bot. Do not change it.
|
||||
options:
|
||||
- Feature Idea
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Component Name
|
||||
description: >
|
||||
Write the short name of the module, plugin, task or feature below,
|
||||
*use your best guess if unsure*.
|
||||
|
||||
|
||||
Be aware that a lot of content that used to reside in this repository
|
||||
previously, is now hosted under [individual collection
|
||||
projects][collections org].
|
||||
If this is the case, please make sure to file an issue under the
|
||||
appropriate project there instead.
|
||||
|
||||
|
||||
[collections org]: /ansible-collections
|
||||
placeholder: dnf, apt, pip, user etc.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Information
|
||||
description: |
|
||||
Describe how the feature would be used, why it is needed and what it would solve.
|
||||
|
||||
**HINT:** You can paste https://gist.github.com links for larger files.
|
||||
value: |
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml (paste below)
|
||||
|
||||
```
|
||||
placeholder: >-
|
||||
I asked on https://stackoverflow.com/.... and the community
|
||||
advised me to do X, Y and Z.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
*One last thing...*
|
||||
|
||||
|
||||
*Please, complete **all** sections as described, this form
|
||||
is [processed automatically by a robot][ansibot help].*
|
||||
|
||||
|
||||
Thank you for your collaboration!
|
||||
|
||||
|
||||
[ansibot help]:
|
||||
/ansible/ansibotmini#ansibotmini
|
||||
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: |
|
||||
Read the [Ansible Code of Conduct][CoC] first.
|
||||
|
||||
[CoC]: https://docs.ansible.com/ansible/devel/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--feature_request.yml
|
||||
options:
|
||||
- label: I agree to follow the Ansible Code of Conduct
|
||||
required: true
|
||||
...
|
||||
10
.github/ISSUE_TEMPLATE/internal_issue.md
vendored
10
.github/ISSUE_TEMPLATE/internal_issue.md
vendored
@ -1,10 +0,0 @@
|
||||
---
|
||||
name: Internal Issue
|
||||
about: Free-form issue creation for core maintainer use only.
|
||||
title: ''
|
||||
labels: [core-internal]
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
|
||||
@ansibot bot_skip
|
||||
42
.github/ISSUE_TEMPLATE/pre_release.yml
vendored
42
.github/ISSUE_TEMPLATE/pre_release.yml
vendored
@ -1,42 +0,0 @@
|
||||
name: Pre-Release Bug Report
|
||||
description: File a bug report against a pre-release version
|
||||
labels:
|
||||
- bug
|
||||
- pre_release
|
||||
assignees:
|
||||
- nitzmahone
|
||||
- mattclay
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## Bug Report
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Ansible Version
|
||||
description: Paste the full output from `ansible --version` below.
|
||||
render: console
|
||||
placeholder: $ ansible --version
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Summary
|
||||
description: Describe the issue with any relevant steps to reproduce.
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: <!-- Bot instructions (ignore this) -->
|
||||
options:
|
||||
- |
|
||||
<!--
|
||||
### Component Name
|
||||
bin/ansible
|
||||
### Issue Type
|
||||
Bug Report
|
||||
### Configuration
|
||||
### OS / Environment
|
||||
-->
|
||||
validations:
|
||||
required: true
|
||||
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1 +0,0 @@
|
||||
PULL_REQUEST_TEMPLATE/Unclear purpose or motivation.md
|
||||
23
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
23
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
##### SUMMARY
|
||||
<!--- Describe the change below, including rationale and design decisions -->
|
||||
|
||||
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
<!--- Pick one below and delete the rest -->
|
||||
- Bugfix Pull Request
|
||||
- Docs Pull Request
|
||||
- Feature Pull Request
|
||||
- New Module Pull Request
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Write the short name of the module, plugin, task or feature below -->
|
||||
|
||||
##### ADDITIONAL INFORMATION
|
||||
<!--- Include additional information to help people understand the change here -->
|
||||
<!--- A step-by-step reproduction of the problem is helpful if there is no related issue -->
|
||||
|
||||
<!--- Paste verbatim command output below, e.g. before and after your change -->
|
||||
```paste below
|
||||
|
||||
```
|
||||
9
.github/PULL_REQUEST_TEMPLATE/Bug fix.md
vendored
9
.github/PULL_REQUEST_TEMPLATE/Bug fix.md
vendored
@ -1,9 +0,0 @@
|
||||
##### SUMMARY
|
||||
|
||||
<!--- Describe the change below, including rationale and design decisions -->
|
||||
|
||||
<!--- Add "Fixes #1234" or steps to reproduce the problem if there is no corresponding issue -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
|
||||
- Bugfix Pull Request
|
||||
@ -1,9 +0,0 @@
|
||||
##### SUMMARY
|
||||
|
||||
<!--- Describe the change below, including rationale -->
|
||||
|
||||
<!--- Add "Fixes #1234" if there is a corresponding issue -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
|
||||
- Docs Pull Request
|
||||
9
.github/PULL_REQUEST_TEMPLATE/New feature.md
vendored
9
.github/PULL_REQUEST_TEMPLATE/New feature.md
vendored
@ -1,9 +0,0 @@
|
||||
##### SUMMARY
|
||||
|
||||
<!--- Describe the change below, including rationale and design decisions -->
|
||||
|
||||
<!--- Add "Fixes #1234" if there is a corresponding issue -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
|
||||
- Feature Pull Request
|
||||
@ -1 +0,0 @@
|
||||
Unclear purpose or motivation.md
|
||||
9
.github/PULL_REQUEST_TEMPLATE/Tests.md
vendored
9
.github/PULL_REQUEST_TEMPLATE/Tests.md
vendored
@ -1,9 +0,0 @@
|
||||
##### SUMMARY
|
||||
|
||||
<!--- Describe the change below, including rationale and design decisions -->
|
||||
|
||||
<!--- Add "Fixes #1234" if there is a corresponding issue -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
|
||||
- Test Pull Request
|
||||
@ -1,14 +0,0 @@
|
||||
##### SUMMARY
|
||||
|
||||
<!--- Describe the change below, including rationale and design decisions -->
|
||||
|
||||
<!--- Add "Fixes #1234" or steps to reproduce the problem if there is no corresponding issue -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
|
||||
<!--- Pick one below and delete the rest -->
|
||||
|
||||
- Bugfix Pull Request
|
||||
- Docs Pull Request
|
||||
- Feature Pull Request
|
||||
- Test Pull Request
|
||||
20
.github/RELEASE_NAMES.txt
vendored
20
.github/RELEASE_NAMES.txt
vendored
@ -1,20 +0,0 @@
|
||||
2.19.0 What Is and What Should Never Be
|
||||
2.18.0 Fool in the Rain
|
||||
2.17.0 Gallows Pole
|
||||
2.16.0 All My Love
|
||||
2.15.0 Ten Years Gone
|
||||
2.14.0 C'mon Everybody
|
||||
2.13.0 Nobody's Fault but Mine
|
||||
2.12.0 Dazed and Confused
|
||||
2.11.0 Hey Hey, What Can I Do
|
||||
2.10.0 When the Levee Breaks
|
||||
2.9.0 Immigrant Song
|
||||
2.8.0 How Many More Times
|
||||
2.7.0 In the Light
|
||||
2.6.0 Heartbreaker
|
||||
2.5.0 Kashmir
|
||||
2.4.0 Dancing Days
|
||||
2.3.0 Ramble On
|
||||
2.2.0 The Battle of Evermore
|
||||
2.1.0 The Song Remains the Same
|
||||
2.0.0 Over the Hills and Far Away
|
||||
12
.github/RELEASE_NAMES.yml
vendored
Normal file
12
.github/RELEASE_NAMES.yml
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
---
|
||||
- 2.10.0 When the Levee Breaks
|
||||
- 2.9.0 Immigrant Song
|
||||
- 2.8.0 How Many More Times
|
||||
- 2.7.0 In the Light
|
||||
- 2.6.0 Heartbreaker
|
||||
- 2.5.0 Kashmir
|
||||
- 2.4.0 Dancing Days
|
||||
- 2.3.0 Ramble On
|
||||
- 2.2.0 The Battle of Evermore
|
||||
- 2.1.0 The Song Remains the Same
|
||||
- 2.0.0 Over the Hills and Far Away
|
||||
25
.gitignore
vendored
25
.gitignore
vendored
@ -38,7 +38,6 @@ docs/docsite/rst/cli/ansible-*.rst
|
||||
docs/docsite/rst/cli/ansible.rst
|
||||
docs/docsite/rst/dev_guide/collections_galaxy_meta.rst
|
||||
docs/docsite/rst/dev_guide/testing/sanity/index.rst.new
|
||||
docs/docsite/rst/dev_guide/index.rst
|
||||
docs/docsite/rst/modules/*.rst
|
||||
docs/docsite/rst/collections/*.rst
|
||||
!docs/docsite/rst/collections/all_plugins.rst
|
||||
@ -53,10 +52,12 @@ docs/docsite/searchindex.js
|
||||
docs/docsite/_static/*.gif
|
||||
docs/docsite/_static/*.png
|
||||
docs/docsite/_static/websupport.js
|
||||
# deb building stuff...
|
||||
/debian/
|
||||
deb-build
|
||||
# Vim swap files
|
||||
*.swp
|
||||
*.swo
|
||||
[._]*.un~
|
||||
credentials.yml
|
||||
# test output
|
||||
*.retry
|
||||
@ -73,16 +74,7 @@ coverage.xml
|
||||
/test/cache/*
|
||||
# Development
|
||||
/test/develop
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
venv
|
||||
env
|
||||
Vagrantfile
|
||||
.vagrant
|
||||
# Backwards compatibility with `stable-2.9` and earlier branches.
|
||||
@ -90,17 +82,12 @@ Vagrantfile
|
||||
/lib/ansible.egg-info/
|
||||
# First used in the `devel` branch during Ansible 2.10 development.
|
||||
/lib/ansible_base.egg-info/
|
||||
# First used in the `devel` branch during Ansible 2.11 development.
|
||||
/lib/ansible_core.egg-info/
|
||||
# First used in the `devel` branch during Ansible 2.18 development.
|
||||
/ansible_core.egg-info/
|
||||
# vendored lib dir
|
||||
lib/ansible/_vendor/*
|
||||
!lib/ansible/_vendor/__init__.py
|
||||
# test stuff
|
||||
/shippable/
|
||||
/test/integration/cloud-config-*.*
|
||||
!/test/integration/cloud-config-*.*.template
|
||||
.python-version
|
||||
/hacking/tests/selinux/*.mod
|
||||
/hacking/tests/selinux/*.pp
|
||||
# Release directory
|
||||
packaging/release/ansible_release
|
||||
/.cache/
|
||||
|
||||
9
COPYING
9
COPYING
@ -1,7 +1,7 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
@ -664,11 +664,12 @@ might be different; for a GUI interface, you would use an "about box".
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
|
||||
43
MANIFEST.in
43
MANIFEST.in
@ -1,10 +1,39 @@
|
||||
include README.rst
|
||||
include COPYING
|
||||
include SYMLINK_CACHE.json
|
||||
include requirements.txt
|
||||
recursive-include docs *
|
||||
include docs/docsite/rst/collections/all_plugins.rst
|
||||
exclude docs/docsite/rst_warnings
|
||||
exclude docs/docsite/rst/conf.py
|
||||
exclude docs/docsite/rst/index.rst
|
||||
recursive-exclude docs/docsite/_build *
|
||||
recursive-exclude docs/docsite/_extensions *.pyc *.pyo
|
||||
include examples/hosts
|
||||
include examples/ansible.cfg
|
||||
include examples/scripts/ConfigureRemotingForAnsible.ps1
|
||||
include examples/scripts/upgrade_to_ps3.ps1
|
||||
recursive-include lib/ansible/executor/powershell *.ps1
|
||||
recursive-include lib/ansible/module_utils/csharp *.cs
|
||||
recursive-include lib/ansible/module_utils/powershell *.psm1
|
||||
recursive-include lib/ansible/modules/windows *.ps1
|
||||
recursive-include lib/ansible/galaxy/data *.yml *.j2 README.md ansible.cfg inventory .git_keep
|
||||
recursive-include lib/ansible/config *.yml
|
||||
recursive-include licenses *.txt
|
||||
recursive-include packaging *
|
||||
recursive-include test/ansible_test *.py Makefile
|
||||
recursive-include test/integration *
|
||||
recursive-include test/lib/ansible_test/config *.template
|
||||
recursive-include test/lib/ansible_test/_data *.cfg *.ini *.json *.ps1 *.psd1 *.py *.sh *.txt *.yml coveragerc inventory
|
||||
recursive-include test/lib/ansible_test/_data/injector ansible ansible-config ansible-connection ansible-console ansible-doc ansible-galaxy ansible-playbook ansible-pull ansible-test ansible-vault pytest
|
||||
recursive-include test/lib/ansible_test/_data/sanity/validate-modules validate-modules
|
||||
recursive-include test/sanity *.json *.py *.txt
|
||||
recursive-include test/support *.py *.ps1 *.psm1 *.cs
|
||||
exclude test/sanity/code-smell/botmeta.*
|
||||
recursive-include test/units *
|
||||
include Makefile
|
||||
include MANIFEST.in
|
||||
include changelogs/CHANGELOG*.rst
|
||||
include changelogs/changelog.yaml
|
||||
include licenses/*.txt
|
||||
include requirements.txt
|
||||
recursive-include packaging *.py *.j2
|
||||
recursive-include test/integration *
|
||||
recursive-include test/sanity *.in *.json *.py *.txt *.ini
|
||||
recursive-include test/support *.py *.ps1 *.psm1 *.cs *.md
|
||||
recursive-include test/units *
|
||||
recursive-include hacking/build_library *.py
|
||||
include hacking/build-ansible.py
|
||||
|
||||
293
Makefile
Normal file
293
Makefile
Normal file
@ -0,0 +1,293 @@
|
||||
# WARN: gmake syntax
|
||||
########################################################
|
||||
# Makefile for Ansible
|
||||
#
|
||||
# useful targets:
|
||||
# make clean ---------------- clean up
|
||||
# make webdocs -------------- produce ansible doc at docs/docsite/_build/html
|
||||
# make coredocs ------------- produce core doc at docs/docsite/_build/html
|
||||
# make sdist ---------------- produce a tarball
|
||||
# make deb-src -------------- produce a DEB source
|
||||
# make deb ------------------ produce a DEB
|
||||
# make docs ----------------- rebuild the manpages (results are checked in)
|
||||
# make tests ---------------- run the tests (see https://docs.ansible.com/ansible/devel/dev_guide/testing_units.html for requirements)
|
||||
|
||||
########################################################
|
||||
# variable section
|
||||
|
||||
NAME = ansible-base
|
||||
OS = $(shell uname -s)
|
||||
PREFIX ?= '/usr/local'
|
||||
SDIST_DIR ?= 'dist'
|
||||
|
||||
# This doesn't evaluate until it's called. The -D argument is the
|
||||
# directory of the target file ($@), kinda like `dirname`.
|
||||
MANPAGES ?= $(patsubst %.rst.in,%,$(wildcard ./docs/man/man1/ansible*.1.rst.in))
|
||||
ifneq ($(shell which rst2man 2>/dev/null),)
|
||||
ASCII2MAN = rst2man $< $@
|
||||
else ifneq ($(shell which rst2man.py 2>/dev/null),)
|
||||
ASCII2MAN = rst2man.py $< $@
|
||||
else
|
||||
ASCII2MAN = @echo "ERROR: rst2man from docutils command is not installed but is required to build $(MANPAGES)" && exit 1
|
||||
endif
|
||||
|
||||
PYTHON=python
|
||||
GENERATE_CLI = hacking/build-ansible.py generate-man
|
||||
|
||||
# fetch version from project release.py as single source-of-truth
|
||||
VERSION := $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --raw || echo error)
|
||||
ifeq ($(findstring error,$(VERSION)), error)
|
||||
$(error "version_helper failed")
|
||||
endif
|
||||
|
||||
# Get the branch information from git
|
||||
ifneq ($(shell which git),)
|
||||
GIT_DATE := $(shell git log -n 1 --format="%ci")
|
||||
GIT_HASH := $(shell git log -n 1 --format="%h")
|
||||
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD | sed 's/[-_.\/]//g')
|
||||
GITINFO = .$(GIT_HASH).$(GIT_BRANCH)
|
||||
else
|
||||
GITINFO = ""
|
||||
endif
|
||||
|
||||
ifeq ($(shell echo $(OS) | egrep -c 'Darwin|FreeBSD|OpenBSD|DragonFly'),1)
|
||||
DATE := $(shell date -j -r $(shell git log -n 1 --format="%ct") +%Y%m%d%H%M)
|
||||
CPUS ?= $(shell sysctl hw.ncpu|awk '{print $$2}')
|
||||
else
|
||||
DATE := $(shell date --utc --date="$(GIT_DATE)" +%Y%m%d%H%M)
|
||||
CPUS ?= $(shell nproc)
|
||||
endif
|
||||
|
||||
# DEB build parameters
|
||||
DEBUILD_BIN ?= debuild
|
||||
DEBUILD_OPTS = --source-option="-I"
|
||||
DPUT_BIN ?= dput
|
||||
DPUT_OPTS ?=
|
||||
DEB_DATE := $(shell LC_TIME=C date +"%a, %d %b %Y %T %z")
|
||||
DEB_VERSION ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --debversion)
|
||||
ifeq ($(OFFICIAL),yes)
|
||||
DEB_RELEASE ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --debrelease)ppa
|
||||
# Sign OFFICIAL builds using 'DEBSIGN_KEYID'
|
||||
# DEBSIGN_KEYID is required when signing
|
||||
ifneq ($(DEBSIGN_KEYID),)
|
||||
DEBUILD_OPTS += -k$(DEBSIGN_KEYID)
|
||||
endif
|
||||
else
|
||||
DEB_RELEASE ?= 100.git$(DATE)$(GITINFO)
|
||||
# Do not sign unofficial builds
|
||||
DEBUILD_OPTS += -uc -us
|
||||
DPUT_OPTS += -u
|
||||
endif
|
||||
DEBUILD = $(DEBUILD_BIN) $(DEBUILD_OPTS)
|
||||
DEB_PPA ?= ppa
|
||||
# Choose the desired Ubuntu release: lucid precise saucy trusty
|
||||
DEB_DIST ?= unstable
|
||||
|
||||
# pbuilder parameters
|
||||
PBUILDER_ARCH ?= amd64
|
||||
PBUILDER_CACHE_DIR = /var/cache/pbuilder
|
||||
PBUILDER_BIN ?= pbuilder
|
||||
PBUILDER_OPTS ?= --debootstrapopts --variant=buildd --architecture $(PBUILDER_ARCH) --debbuildopts -b
|
||||
|
||||
# ansible-test parameters
|
||||
ANSIBLE_TEST ?= bin/ansible-test
|
||||
TEST_FLAGS ?=
|
||||
|
||||
# ansible-test units parameters (make test / make test-py3)
|
||||
PYTHON_VERSION ?= $(shell python2 -c 'import sys; print("%s.%s" % sys.version_info[:2])')
|
||||
PYTHON3_VERSION ?= $(shell python3 -c 'import sys; print("%s.%s" % sys.version_info[:2])')
|
||||
|
||||
# ansible-test integration parameters (make integration)
|
||||
IMAGE ?= centos7
|
||||
TARGET ?=
|
||||
|
||||
########################################################
|
||||
|
||||
.PHONY: all
|
||||
all: clean python
|
||||
|
||||
.PHONY: tests
|
||||
tests:
|
||||
$(ANSIBLE_TEST) units -v --python $(PYTHON_VERSION) $(TEST_FLAGS)
|
||||
|
||||
.PHONY: tests-py3
|
||||
tests-py3:
|
||||
$(ANSIBLE_TEST) units -v --python $(PYTHON3_VERSION) $(TEST_FLAGS)
|
||||
|
||||
.PHONY: integration
|
||||
integration:
|
||||
$(ANSIBLE_TEST) integration -v --docker $(IMAGE) $(TARGET) $(TEST_FLAGS)
|
||||
|
||||
# Regenerate %.1.rst if %.1.rst.in has been modified more
|
||||
# recently than %.1.rst.
|
||||
%.1.rst: %.1.rst.in
|
||||
sed "s/%VERSION%/$(VERSION)/" $< > $@
|
||||
rm $<
|
||||
|
||||
# Regenerate %.1 if %.1.rst or release.py has been modified more
|
||||
# recently than %.1. (Implicitly runs the %.1.rst recipe)
|
||||
%.1: %.1.rst lib/ansible/release.py
|
||||
$(ASCII2MAN)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
@echo "Cleaning up distutils stuff"
|
||||
rm -rf build
|
||||
rm -rf dist
|
||||
rm -rf lib/ansible*.egg-info/
|
||||
@echo "Cleaning up byte compiled python stuff"
|
||||
find . -type f -regex ".*\.py[co]$$" -delete
|
||||
find . -type d -name "__pycache__" -delete
|
||||
@echo "Cleaning up editor backup files"
|
||||
find . -type f -not -path ./test/units/inventory_test_data/group_vars/noparse/all.yml~ \( -name "*~" -or -name "#*" \) -delete
|
||||
find . -type f \( -name "*.swp" \) -delete
|
||||
@echo "Cleaning up manpage stuff"
|
||||
find ./docs/man -type f -name "*.xml" -delete
|
||||
find ./docs/man -type f -name "*.rst" -delete
|
||||
find ./docs/man/man3 -type f -name "*.3" -delete
|
||||
rm -f ./docs/man/man1/*
|
||||
@echo "Cleaning up output from test runs"
|
||||
rm -rf test/test_data
|
||||
rm -rf shippable/
|
||||
rm -rf logs/
|
||||
rm -rf .cache/
|
||||
rm -f test/units/.coverage*
|
||||
rm -rf test/results/*/*
|
||||
find test/ -type f -name '*.retry' -delete
|
||||
@echo "Cleaning up Debian building stuff"
|
||||
rm -rf debian
|
||||
rm -rf deb-build
|
||||
rm -rf docs/json
|
||||
rm -rf docs/js
|
||||
@echo "Cleaning up docsite"
|
||||
$(MAKE) -C docs/docsite clean
|
||||
|
||||
.PHONY: python
|
||||
python:
|
||||
$(PYTHON) setup.py build
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
$(PYTHON) setup.py install
|
||||
|
||||
install_manpages:
|
||||
gzip -9 $(wildcard ./docs/man/man1/ansible*.1)
|
||||
cp $(wildcard ./docs/man/man1/ansible*.1.gz) $(PREFIX)/man/man1/
|
||||
|
||||
.PHONY: sdist_check
|
||||
sdist_check:
|
||||
$(PYTHON) -c 'import setuptools, sys; sys.exit(int(not (tuple(map(int, setuptools.__version__.split("."))) > (39, 2, 0))))'
|
||||
$(PYTHON) packaging/sdist/check-link-behavior.py
|
||||
|
||||
.PHONY: sdist
|
||||
sdist: sdist_check clean docs
|
||||
_ANSIBLE_SDIST_FROM_MAKEFILE=1 $(PYTHON) setup.py sdist --dist-dir=$(SDIST_DIR)
|
||||
|
||||
# Official releases generate the changelog as the last commit before the release.
|
||||
# Snapshots shouldn't result in new checkins so the changelog is generated as
|
||||
# part of creating the tarball.
|
||||
.PHONY: snapshot
|
||||
snapshot: sdist_check clean docs changelog
|
||||
_ANSIBLE_SDIST_FROM_MAKEFILE=1 $(PYTHON) setup.py sdist --dist-dir=$(SDIST_DIR)
|
||||
|
||||
.PHONY: sdist_upload
|
||||
sdist_upload: clean docs
|
||||
$(PYTHON) setup.py sdist upload 2>&1 |tee upload.log
|
||||
|
||||
.PHONY: changelog
|
||||
changelog:
|
||||
PYTHONPATH=./lib antsibull-changelog release -vv --use-ansible-doc && PYTHONPATH=./lib antsibull-changelog generate -vv --use-ansible-doc
|
||||
|
||||
.PHONY: debian
|
||||
debian: sdist
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
mkdir -p deb-build/$${DIST} ; \
|
||||
tar -C deb-build/$${DIST} -xvf dist/$(NAME)-$(VERSION).tar.gz ; \
|
||||
cp -a packaging/debian deb-build/$${DIST}/$(NAME)-$(VERSION)/ ; \
|
||||
sed -ie "s|%VERSION%|$(DEB_VERSION)|g;s|%RELEASE%|$(DEB_RELEASE)|;s|%DIST%|$${DIST}|g;s|%DATE%|$(DEB_DATE)|g" deb-build/$${DIST}/$(NAME)-$(VERSION)/debian/changelog ; \
|
||||
done
|
||||
|
||||
.PHONY: deb
|
||||
deb: deb-src
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
PBUILDER_OPTS="$(PBUILDER_OPTS) --distribution $${DIST} --basetgz $(PBUILDER_CACHE_DIR)/$${DIST}-$(PBUILDER_ARCH)-base.tgz --buildresult $(CURDIR)/deb-build/$${DIST}" ; \
|
||||
$(PBUILDER_BIN) create $${PBUILDER_OPTS} --othermirror "deb http://archive.ubuntu.com/ubuntu $${DIST} universe" ; \
|
||||
$(PBUILDER_BIN) update $${PBUILDER_OPTS} ; \
|
||||
$(PBUILDER_BIN) build $${PBUILDER_OPTS} deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}.dsc ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_amd64.changes ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
|
||||
# Build package outside of pbuilder, with locally installed dependencies.
|
||||
# Install BuildRequires as noted in packaging/debian/control.
|
||||
.PHONY: local_deb
|
||||
local_deb: debian
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
(cd deb-build/$${DIST}/$(NAME)-$(VERSION)/ && $(DEBUILD) -b) ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_amd64.changes ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: deb-src
|
||||
deb-src: debian
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
(cd deb-build/$${DIST}/$(NAME)-$(VERSION)/ && $(DEBUILD) -S) ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_source.changes ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: deb-upload
|
||||
deb-upload: deb
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
$(DPUT_BIN) $(DPUT_OPTS) $(DEB_PPA) deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_amd64.changes ; \
|
||||
done
|
||||
|
||||
.PHONY: deb-src-upload
|
||||
deb-src-upload: deb-src
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
$(DPUT_BIN) $(DPUT_OPTS) $(DEB_PPA) deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_source.changes ; \
|
||||
done
|
||||
|
||||
.PHONY: epub
|
||||
epub:
|
||||
(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) epub)
|
||||
|
||||
# for arch or gentoo, read instructions in the appropriate 'packaging' subdirectory directory
|
||||
.PHONY: webdocs
|
||||
webdocs:
|
||||
(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) docs)
|
||||
|
||||
.PHONY: coredocs
|
||||
coredocs:
|
||||
(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) coredocs)
|
||||
|
||||
.PHONY: linkcheckdocs
|
||||
linkcheckdocs:
|
||||
(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) linkcheckdocs)
|
||||
|
||||
.PHONY: generate_rst
|
||||
generate_rst: lib/ansible/cli/*.py
|
||||
mkdir -p ./docs/man/man1/ ; \
|
||||
$(GENERATE_CLI) --template-file=docs/templates/man.j2 --output-dir=docs/man/man1/ --output-format man lib/ansible/cli/*.py
|
||||
|
||||
|
||||
docs: generate_rst
|
||||
$(MAKE) $(MANPAGES)
|
||||
|
||||
.PHONY: alldocs
|
||||
alldocs: docs webdocs
|
||||
|
||||
version:
|
||||
@echo $(VERSION)
|
||||
101
README.md
101
README.md
@ -1,101 +0,0 @@
|
||||
[](https://pypi.org/project/ansible-core)
|
||||
[](https://docs.ansible.com/ansible/latest/)
|
||||
[](https://docs.ansible.com/ansible/devel/community/communication.html)
|
||||
[](https://dev.azure.com/ansible/ansible/_build/latest?definitionId=20&branchName=devel)
|
||||
[](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html)
|
||||
[](https://docs.ansible.com/ansible/devel/community/communication.html#mailing-list-information)
|
||||
[](COPYING)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/2372)
|
||||
|
||||
# Ansible
|
||||
|
||||
Ansible is a radically simple IT automation system. It handles
|
||||
configuration management, application deployment, cloud provisioning,
|
||||
ad-hoc task execution, network automation, and multi-node orchestration. Ansible makes complex
|
||||
changes like zero-downtime rolling updates with load balancers easy. More information on the Ansible [website](https://ansible.com/).
|
||||
|
||||
## Design Principles
|
||||
|
||||
* Have an extremely simple setup process with a minimal learning curve.
|
||||
* Manage machines quickly and in parallel.
|
||||
* Avoid custom-agents and additional open ports, be agentless by
|
||||
leveraging the existing SSH daemon.
|
||||
* Describe infrastructure in a language that is both machine and human
|
||||
friendly.
|
||||
* Focus on security and easy auditability/review/rewriting of content.
|
||||
* Manage new remote machines instantly, without bootstrapping any
|
||||
software.
|
||||
* Allow module development in any dynamic language, not just Python.
|
||||
* Be usable as non-root.
|
||||
* Be the easiest IT automation system to use, ever.
|
||||
|
||||
## Use Ansible
|
||||
|
||||
You can install a released version of Ansible with `pip` or a package manager. See our
|
||||
[installation guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) for details on installing Ansible
|
||||
on a variety of platforms.
|
||||
|
||||
Power users and developers can run the `devel` branch, which has the latest
|
||||
features and fixes, directly. Although it is reasonably stable, you are more likely to encounter
|
||||
breaking changes when running the `devel` branch. We recommend getting involved
|
||||
in the Ansible community if you want to run the `devel` branch.
|
||||
|
||||
## Communication
|
||||
|
||||
Join the Ansible forum to ask questions, get help, and interact with the
|
||||
community.
|
||||
|
||||
* [Get Help](https://forum.ansible.com/c/help/6): Find help or share your Ansible knowledge to help others.
|
||||
Use tags to filter and subscribe to posts, such as the following:
|
||||
* Posts tagged with [ansible](https://forum.ansible.com/tag/ansible)
|
||||
* Posts tagged with [ansible-core](https://forum.ansible.com/tag/ansible-core)
|
||||
* Posts tagged with [playbook](https://forum.ansible.com/tag/playbook)
|
||||
* [Social Spaces](https://forum.ansible.com/c/chat/4): Meet and interact with fellow enthusiasts.
|
||||
* [News & Announcements](https://forum.ansible.com/c/news/5): Track project-wide announcements including social events.
|
||||
* [Bullhorn newsletter](https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn): Get release announcements and important changes.
|
||||
|
||||
For more ways to get in touch, see [Communicating with the Ansible community](https://docs.ansible.com/ansible/devel/community/communication.html).
|
||||
|
||||
## Contribute to Ansible
|
||||
|
||||
* Check out the [Contributor's Guide](./.github/CONTRIBUTING.md).
|
||||
* Read [Community Information](https://docs.ansible.com/ansible/devel/community) for all
|
||||
kinds of ways to contribute to and interact with the project,
|
||||
including how to submit bug reports and code to Ansible.
|
||||
* Submit a proposed code update through a pull request to the `devel` branch.
|
||||
* Talk to us before making larger changes
|
||||
to avoid duplicate efforts. This not only helps everyone
|
||||
know what is going on, but it also helps save time and effort if we decide
|
||||
some changes are needed.
|
||||
|
||||
## Coding Guidelines
|
||||
|
||||
We document our Coding Guidelines in the [Developer Guide](https://docs.ansible.com/ansible/devel/dev_guide/). We particularly suggest you review:
|
||||
|
||||
* [Contributing your module to Ansible](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_checklist.html)
|
||||
* [Conventions, tips, and pitfalls](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_best_practices.html)
|
||||
|
||||
## Branch Info
|
||||
|
||||
* The `devel` branch corresponds to the release actively under development.
|
||||
* The `stable-2.X` branches correspond to stable releases.
|
||||
* Create a branch based on `devel` and set up a [dev environment](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_general.html#common-environment-setup) if you want to open a PR.
|
||||
* See the [Ansible release and maintenance](https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html) page for information about active branches.
|
||||
|
||||
## Roadmap
|
||||
|
||||
Based on team and community feedback, an initial roadmap will be published for a major or minor version (ex: 2.7, 2.8).
|
||||
The [Ansible Roadmap page](https://docs.ansible.com/ansible/devel/roadmap/) details what is planned and how to influence the roadmap.
|
||||
|
||||
## Authors
|
||||
|
||||
Ansible was created by [Michael DeHaan](https://github.com/mpdehaan)
|
||||
and has contributions from over 5000 users (and growing). Thanks everyone!
|
||||
|
||||
[Ansible](https://www.ansible.com) is sponsored by [Red Hat, Inc.](https://www.redhat.com)
|
||||
|
||||
## License
|
||||
|
||||
GNU General Public License v3.0 or later
|
||||
|
||||
See [COPYING](COPYING) to see the full text.
|
||||
115
README.rst
Normal file
115
README.rst
Normal file
@ -0,0 +1,115 @@
|
||||
|PyPI version| |Docs badge| |Chat badge| |Build Status| |Code Of Conduct| |Mailing Lists| |License|
|
||||
|
||||
*******
|
||||
Ansible
|
||||
*******
|
||||
|
||||
Ansible is a radically simple IT automation system. It handles
|
||||
configuration management, application deployment, cloud provisioning,
|
||||
ad-hoc task execution, network automation, and multi-node orchestration. Ansible makes complex
|
||||
changes like zero-downtime rolling updates with load balancers easy. More information on `the Ansible website <https://ansible.com/>`_.
|
||||
|
||||
Design Principles
|
||||
=================
|
||||
|
||||
* Have a dead simple setup process and a minimal learning curve.
|
||||
* Manage machines very quickly and in parallel.
|
||||
* Avoid custom-agents and additional open ports, be agentless by
|
||||
leveraging the existing SSH daemon.
|
||||
* Describe infrastructure in a language that is both machine and human
|
||||
friendly.
|
||||
* Focus on security and easy auditability/review/rewriting of content.
|
||||
* Manage new remote machines instantly, without bootstrapping any
|
||||
software.
|
||||
* Allow module development in any dynamic language, not just Python.
|
||||
* Be usable as non-root.
|
||||
* Be the easiest IT automation system to use, ever.
|
||||
|
||||
Use Ansible
|
||||
===========
|
||||
|
||||
You can install a released version of Ansible via ``pip``, a package manager, or
|
||||
our `release repository <https://releases.ansible.com/ansible/>`_. See our
|
||||
`installation guide <https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html>`_ for details on installing Ansible
|
||||
on a variety of platforms.
|
||||
|
||||
Red Hat offers supported builds of `Ansible Engine <https://www.ansible.com/ansible-engine>`_.
|
||||
|
||||
Power users and developers can run the ``devel`` branch, which has the latest
|
||||
features and fixes, directly. Although it is reasonably stable, you are more likely to encounter
|
||||
breaking changes when running the ``devel`` branch. We recommend getting involved
|
||||
in the Ansible community if you want to run the ``devel`` branch.
|
||||
|
||||
Get Involved
|
||||
============
|
||||
|
||||
* Read `Community
|
||||
Information <https://docs.ansible.com/ansible/latest/community>`_ for all
|
||||
kinds of ways to contribute to and interact with the project,
|
||||
including mailing list information and how to submit bug reports and
|
||||
code to Ansible.
|
||||
* Join a `Working Group
|
||||
<https://github.com/ansible/community/wiki>`_, an organized community devoted to a specific technology domain or platform.
|
||||
* Submit a proposed code update through a pull request to the ``devel`` branch.
|
||||
* Talk to us before making larger changes
|
||||
to avoid duplicate efforts. This not only helps everyone
|
||||
know what is going on, it also helps save time and effort if we decide
|
||||
some changes are needed.
|
||||
* For a list of email lists, IRC channels and Working Groups, see the
|
||||
`Communication page <https://docs.ansible.com/ansible/latest/community/communication.html>`_
|
||||
|
||||
Coding Guidelines
|
||||
=================
|
||||
|
||||
We document our Coding Guidelines in the `Developer Guide <https://docs.ansible.com/ansible/devel/dev_guide/>`_. We particularly suggest you review:
|
||||
|
||||
* `Contributing your module to Ansible <https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_checklist.html>`_
|
||||
* `Conventions, tips and pitfalls <https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_best_practices.html>`_
|
||||
|
||||
Branch Info
|
||||
===========
|
||||
|
||||
* The ``devel`` branch corresponds to the release actively under development.
|
||||
* The ``stable-2.X`` branches correspond to stable releases.
|
||||
* Create a branch based on ``devel`` and set up a `dev environment <https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html#common-environment-setup>`_ if you want to open a PR.
|
||||
* See the `Ansible release and maintenance <https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html>`_ page for information about active branches.
|
||||
|
||||
Roadmap
|
||||
=======
|
||||
|
||||
Based on team and community feedback, an initial roadmap will be published for a major or minor version (ex: 2.7, 2.8).
|
||||
The `Ansible Roadmap page <https://docs.ansible.com/ansible/devel/roadmap/>`_ details what is planned and how to influence the roadmap.
|
||||
|
||||
Authors
|
||||
=======
|
||||
|
||||
Ansible was created by `Michael DeHaan <https://github.com/mpdehaan>`_
|
||||
and has contributions from over 4700 users (and growing). Thanks everyone!
|
||||
|
||||
`Ansible <https://www.ansible.com>`_ is sponsored by `Red Hat, Inc.
|
||||
<https://www.redhat.com>`_
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
GNU General Public License v3.0 or later
|
||||
|
||||
See `COPYING <COPYING>`_ to see the full text.
|
||||
|
||||
.. |PyPI version| image:: https://img.shields.io/pypi/v/ansible-base.svg
|
||||
:target: https://pypi.org/project/ansible-base
|
||||
.. |Docs badge| image:: https://img.shields.io/badge/docs-latest-brightgreen.svg
|
||||
:target: https://docs.ansible.com/ansible/latest/
|
||||
.. |Build Status| image:: https://dev.azure.com/ansible/ansible/_apis/build/status/CI?branchName=stable-2.10
|
||||
:target: https://dev.azure.com/ansible/ansible/_build/latest?definitionId=20&branchName=stable-2.10
|
||||
.. |Chat badge| image:: https://img.shields.io/badge/chat-IRC-brightgreen.svg
|
||||
:target: https://docs.ansible.com/ansible/latest/community/communication.html
|
||||
.. |Code Of Conduct| image:: https://img.shields.io/badge/code%20of%20conduct-Ansible-silver.svg
|
||||
:target: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html
|
||||
:alt: Ansible Code of Conduct
|
||||
.. |Mailing Lists| image:: https://img.shields.io/badge/mailing%20lists-Ansible-orange.svg
|
||||
:target: https://docs.ansible.com/ansible/latest/community/communication.html#mailing-list-information
|
||||
:alt: Ansible mailing lists
|
||||
.. |License| image:: https://img.shields.io/badge/license-GPL%20v3.0-brightgreen.svg
|
||||
:target: COPYING
|
||||
:alt: Repository License
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/adhoc.py
|
||||
../lib/ansible/cli/scripts/ansible_cli_stub.py
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/config.py
|
||||
ansible
|
||||
1
bin/ansible-connection
Symbolic link
1
bin/ansible-connection
Symbolic link
@ -0,0 +1 @@
|
||||
../lib/ansible/cli/scripts/ansible_connection_cli_stub.py
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/console.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/doc.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/galaxy.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/inventory.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/playbook.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/pull.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py
|
||||
../test/lib/ansible_test/_data/cli/ansible_test_cli_stub.py
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/vault.py
|
||||
ansible
|
||||
985
changelogs/CHANGELOG-v2.10.rst
Normal file
985
changelogs/CHANGELOG-v2.10.rst
Normal file
@ -0,0 +1,985 @@
|
||||
=======================================================
|
||||
Ansible Base 2.10 "When the Levee Breaks" Release Notes
|
||||
=======================================================
|
||||
|
||||
.. contents:: Topics
|
||||
|
||||
|
||||
v2.10.7
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2021-03-15
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Generation of an ``egg-info`` directory, if needed, is now done after installing test dependencies and before running tests. When running from an installed version of ``ansible-test`` a temporary directory is used to avoid permissions issues. Previously it was done before installing test dependencies and adjacent to the installed directory.
|
||||
- ansible-test - now makes a better attempt to support podman when calling ``docker images`` and asking for JSON format.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- ConfigManager - Normalize ConfigParser between Python2 and Python3 to for handling comments (https://github.com/ansible/ansible/issues/73709)
|
||||
- InventoryManager - Fix unhandled exception when given limit file was actually a directory.
|
||||
- InventoryManager - Fix unhandled exception when inventory directory was empty or contained empty subdirectories (https://github.com/ansible/ansible/issues/73658).
|
||||
- add AlmaLinux to fact gathering (https://github.com/ansible/ansible/pull/73458)
|
||||
- ansible-galaxy - fixed galaxy role init command (https://github.com/ansible/ansible/issues/71977).
|
||||
- ansible-inventory CLI - Deal with failures when sorting JSON and you have incompatible key types (https://github.com/ansible/ansible/issues/68950).
|
||||
- ansible-test - Running tests using an installed version of ``ansible-test`` against one Python version from another no longer fails due to a missing ``egg-info`` directory. This could occur when testing plugins which import ``pkg_resources``.
|
||||
- ansible-test - Running tests using an installed version of ``ansible-test`` no longer generates an error attempting to create an ``egg-info`` directory when an existing one is not found in the expected location. This could occur if the existing ``egg-info`` directory included a Python version specifier in the name.
|
||||
- default callback - Ensure that the ``host_pinned`` strategy is not treated as lockstep (https://github.com/ansible/ansible/issues/73364)
|
||||
- ensure find_mount_point consistently returns text.
|
||||
- ensure we don't clobber role vars data when getting an empty file
|
||||
- find module - Stop traversing directories past the requested depth. (https://github.com/ansible/ansible/issues/73627)
|
||||
- hostname - add Almalinux support (https://github.com/ansible/ansible/pull/73619)
|
||||
- runtime routing - redirect ``firewalld`` to ``ansible.posix.firewalld`` FQCN (https://github.com/ansible/ansible/issues/73689).
|
||||
- the unvault lookup plugin returned a byte string. Now returns a real string.
|
||||
- yamllint - do not raise an ``AttributeError`` if a value is assigned to a module attribute at the top of the module.
|
||||
|
||||
v2.10.6
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2021-02-17
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Added Ubuntu 20.04 LTS image to the default completion list
|
||||
- inventory cache - do not show a warning when the cache file does not (yet) exist.
|
||||
|
||||
Security Fixes
|
||||
--------------
|
||||
|
||||
- **security issue** - Mask default and fallback values for ``no_log`` module options (CVE-2021-20228)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Added unsafe_writes test.
|
||||
- Always mention the name of the deprecated or tombstoned plugin in routing deprecation/tombstone messages (https://github.com/ansible/ansible/pull/73059).
|
||||
- Correct the inventory source error parse handling, specifically make the config INVENTORY_ANY_UNPARSED_IS_FAILED work as expected.
|
||||
- Enabled unsafe_writes for get_url which was ignoring the paramter.
|
||||
- Fix incorrect variable scoping when using ``import with context`` in Jinja2 templates. (https://github.com/ansible/ansible/issues/72615)
|
||||
- Restored unsafe_writes functionality which was being skipped.
|
||||
- allow become method 'su' to work on 'local' connection by allocating a fake tty.
|
||||
- ansble-test - only require a collection name in deprecation warnings when necessary (https://github.com/ansible/ansible/pull/72987)
|
||||
- ansible-test - Temporarily limit ``cryptography`` to versions before 3.4 to enable tests to function.
|
||||
- ansible-test - The ``--remote`` option has been updated for Python 2.7 to work around breaking changes in the newly released ``get-pip.py`` bootstrapper.
|
||||
- ansible-test - The ``--remote`` option has been updated to use a versioned ``get-pip.py`` bootstrapper to avoid issues with future releases.
|
||||
- ansible-test sanity changelog test - bump dependency on antsibull-changelog to 0.9.0 so that `fragments that add new plugins or objects <https://github.com/ansible-community/antsibull-changelog/blob/main/docs/changelogs.rst#adding-new-roles-playbooks-test-and-filter-plugins>`_ will not fail validation (https://github.com/ansible/ansible/pull/73428).
|
||||
- display correct error information when an error exists in the last line of the file (https://github.com/ansible/ansible/issues/16456)
|
||||
- facts - properly report virtualization facts for Linux guests running on bhyve (https://github.com/ansible/ansible/issues/73167)
|
||||
- git - Only pass ``--raw`` flag to git verify commands (verify-tag, verify-commit) when ``gpg_whitelist`` is in use. Otherwise don't pass it so that non-whitelist GPG validation still works on older Git versions. (https://github.com/ansible/ansible/issues/64469)
|
||||
- import_playbook - change warning about extra parameters to deprecation (https://github.com/ansible/ansible/issues/72745)
|
||||
- pause - do not warn when running in the background if a timeout is provided (https://github.com/ansible/ansible/issues/73042)
|
||||
- psrp connection plugin - ``to_text(stdout)`` before ``json.loads`` in psrp.Connection.put_file in case ``stdout`` is bytes.
|
||||
- validate-modules - do not raise an ``AttributeError`` if a value is assigned to a module attribute in a try/except block.
|
||||
|
||||
v2.10.5
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2021-01-18
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Changed the internal name of the custom plugin used to identify use of unwanted imports and functions.
|
||||
- ansible-test - The ``pylint`` sanity test is now skipped with a warning on Python 3.9 due to unresolved upstream regressions.
|
||||
- ansible-test - The ``pylint`` sanity test is now supported on Python 3.8.
|
||||
- ansible-test - add macOS 11.1 as a remote target (https://github.com/ansible/ansible/pull/72622)
|
||||
- ansible-test - remote macOS instances no longer install ``virtualenv`` during provisioning
|
||||
- ansible-test - virtualenv helper scripts now prefer ``venv`` on Python 3 over ``virtualenv`` if the ``ANSIBLE_TEST_PREFER_VENV`` environment variable is set
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Apply ``_wrap_native_text`` only for builtin filters specified in STRING_TYPE_FILTERS.
|
||||
- Documentation change to the apt module to reference lock files (https://github.com/ansible/ansible/issues/73079).
|
||||
- Fix --list-tasks format `role_name : task_name` when task name contains the role name. (https://github.com/ansible/ansible/issues/72505)
|
||||
- Fix ansible-galaxy collection list to show collections in site-packages (https://github.com/ansible/ansible/issues/70147)
|
||||
- Fix bytestring vs string comparison in module_utils.basic.is_special_selinux_path() so that special-cased filesystems which don't support SELinux context attributes still allow files to be manipulated on them. (https://github.com/ansible/ansible/issues/70244)
|
||||
- Fix notifying handlers via `role_name : handler_name` when handler name contains the role name. (https://github.com/ansible/ansible/issues/70582)
|
||||
- async - Fix Python 3 interpreter parsing from module by comparing with bytes (https://github.com/ansible/ansible/issues/70690)
|
||||
- inventory - pass the vars dictionary to combine_vars instead of an individual key's value (https://github.com/ansible/ansible/issues/72975).
|
||||
- paramiko connection plugin - Ensure we only reset the connection when one has been previously established (https://github.com/ansible/ansible/issues/65812)
|
||||
- systemd - preserve the full unit name when using a templated service and ``systemd`` failed to parse dbus due to a known bug in ``systemd`` (https://github.com/ansible/ansible/pull/72985)
|
||||
- user - do the right thing when ``password_lock=True`` and ``password`` are used together (https://github.com/ansible/ansible/issues/72992)
|
||||
|
||||
v2.10.4
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2020-12-14
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-doc - provide ``has_action`` field in JSON output for modules. That information is currently only available in the text view (https://github.com/ansible/ansible/pull/72359).
|
||||
- ansible-galaxy - find any collection dependencies in the globally configured Galaxy servers and not just the server the parent collection is from.
|
||||
- ansible-test - Added a ``--export`` option to the ``ansible-test coverage combine`` command to facilitate multi-stage aggregation of coverage in CI pipelines.
|
||||
- ansible-test - Added the ``-remote rhel/7.9`` option to run tests on RHEL 7.9
|
||||
- ansible-test - CentOS 8 container is now 8.2.2004 (https://github.com/ansible/distro-test-containers/pull/45).
|
||||
- ansible-test - Fix container hostname/IP discovery for the ``acme`` test plugin.
|
||||
- ansible-test - OpenSuse container now uses Leap 15.2 (https://github.com/ansible/distro-test-containers/pull/48).
|
||||
- ansible-test - Ubuntu containers as well as ``default-test-container`` and ``ansible-base-test-container`` are now slightly smaller due to apt cleanup (https://github.com/ansible/distro-test-containers/pull/46).
|
||||
- ansible-test - ``default-test-container`` and ``ansible-base-test-container`` now use Python 3.9.0 instead of 3.9.0rc1.
|
||||
- ansible-test - centos6 end of life - container image updated to point to vault base repository (https://github.com/ansible/distro-test-containers/pull/54)
|
||||
- ansible-test validate-modules - no longer assume that ``default`` for ``type=bool`` options is ``false``, as the default is ``none`` and for some modules, ``none`` and ``false`` mean different things (https://github.com/ansible/ansible/issues/69561).
|
||||
- iptables - reorder comment postition to be at the end (https://github.com/ansible/ansible/issues/71444).
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Adjust various hard-coded action names to also include their ``ansible.builtin.`` and ``ansible.legacy.`` prefixed version (https://github.com/ansible/ansible/issues/71817, https://github.com/ansible/ansible/issues/71818, https://github.com/ansible/ansible/pull/71824).
|
||||
- AnsibleModule - added arg ``ignore_invalid_cwd`` to ``AnsibleModule.run_command()``, to control its behaviour when ``cwd`` is invalid. (https://github.com/ansible/ansible/pull/72390)
|
||||
- Fixed issue when `netstat` is either missing or doesn't have execution permissions leading to incorrect command being executed.
|
||||
- Improve Ansible config deprecations to show the source of the deprecation (ansible-base). Also remove space before a comma in config deprecations (https://github.com/ansible/ansible/pull/72697).
|
||||
- Skip invalid collection names when listing in ansible-doc instead of throwing exception. Issue#72257
|
||||
- The ``docker`` and ``k8s`` action groups / module default groups now also support the moved modules in `community.docker <https://galaxy.ansible.com/community/docker>`_, `community.kubevirt <https://github.com/ansible-collections/community.kubevirt>`_, `community.okd <https://galaxy.ansible.com/community/okd>`_, and `kubernetes.core <https://galaxy.ansible.com/kubernetes/core>`_ (https://github.com/ansible/ansible/pull/72428).
|
||||
- account for bug in Python 2.6 that occurs during interpreter shutdown to avoid stack trace
|
||||
- ansible-test - Correctly detect changes in a GitHub pull request when running on Azure Pipelines.
|
||||
- ansible-test - Skip installing requirements if they are already installed.
|
||||
- ansible-test - ``cryptography`` is now limited to versions prior to 3.2 only when an incompatible OpenSSL version (earlier than 1.1.0) is detected
|
||||
- ansible-test - add constraint for ``cffi`` to prevent failure on systems with older versions of ``gcc`` (https://foss.heptapod.net/pypy/cffi/-/issues/480)
|
||||
- ansible-test - convert target paths to unicode on Python 2 to avoid ``UnicodeDecodeError`` (https://github.com/ansible/ansible/issues/68398, https://github.com/ansible/ansible/pull/72623).
|
||||
- ansible-test - improve classification of changes to ``.gitignore``, ``COPYING``, ``LICENSE``, ``Makefile``, and all files ending with one of ``.in`, ``.md`, ``.rst``, ``.toml``, ``.txt`` in the collection root directory (https://github.com/ansible/ansible/pull/72353).
|
||||
- ansible-test validate-modules - when a module uses ``add_file_common_args=True`` and does not use a keyword argument for ``argument_spec`` in ``AnsibleModule()``, the common file arguments were not considered added during validation (https://github.com/ansible/ansible/pull/72334).
|
||||
- basic.AnsibleModule - AnsibleModule.run_command silently ignores a non-existent directory in the ``cwd`` argument (https://github.com/ansible/ansible/pull/72390).
|
||||
- blockinfile - properly insert a block at the end of a file that does not have a trailing newline character (https://github.com/ansible/ansible/issues/72055)
|
||||
- dnf - fix filtering to avoid dependncy conflicts (https://github.com/ansible/ansible/issues/72316)
|
||||
- ensure 'local' connection always has the correct default user for actions to consume.
|
||||
- pause - Fix indefinite hang when using a pause task on a background process (https://github.com/ansible/ansible/issues/32142)
|
||||
- remove redundant remote_user setting in play_context for local as plugin already does it, also removes fork/thread issue from use of pwd library.
|
||||
- set_mode_if_different - handle symlink if it is inside a directory with sticky bit set (https://github.com/ansible/ansible/pull/45198)
|
||||
- systemd - account for templated unit files using ``@`` when searching for the unit file (https://github.com/ansible/ansible/pull/72347#issuecomment-730626228)
|
||||
- systemd - follow up fix to https://github.com/ansible/ansible/issues/72338 to use ``list-unit-files`` rather than ``list-units`` in order to show all units files on the system.
|
||||
- systemd - work around bug with ``systemd`` 245 and 5.8 kernel that does not correctly report service state (https://github.com/ansible/ansible/issues/71528)
|
||||
- wait_for - catch and ignore errors when getting active connections with psutil (https://github.com/ansible/ansible/issues/72322)
|
||||
|
||||
v2.10.3
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2020-11-02
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Add a ``--docker-network`` option to choose the network for running containers when using the ``--docker`` option.
|
||||
- ansible-test - Collections can now specify pip constraints for unit and integration test requirements using ``tests/unit/constraints.txt`` and ``tests/integration/constraints.txt`` respectively.
|
||||
- ansible-test - python-cryptography is now bounded at <3.2, as 3.2 drops support for OpenSSL 1.0.2 upon which some of our CI infrastructure still depends.
|
||||
- dnf - now shows specific package changes (installations/removals) under ``results`` in check_mode. (https://github.com/ansible/ansible/issues/66132)
|
||||
|
||||
Breaking Changes / Porting Guide
|
||||
--------------------------------
|
||||
|
||||
- ansible-galaxy login command has been removed (see https://github.com/ansible/ansible/issues/71560)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Collection callbacks were ignoring options and rules for stdout and adhoc cases.
|
||||
- Collections - Ensure ``action_loader.get`` is called with ``collection_list`` to properly find collections when ``collections:`` search is specified (https://github.com/ansible/ansible/issues/72170)
|
||||
- Fix ``RecursionError`` when templating large vars structures (https://github.com/ansible/ansible/issues/71920)
|
||||
- ansible-doc - plugin option deprecations now also get ``collection_name`` added (https://github.com/ansible/ansible/pull/71735).
|
||||
- ansible-test - Always connect additional Docker containers to the network used by the current container (if any).
|
||||
- ansible-test - Always map ``/var/run/docker.sock`` into test containers created by the ``--docker`` option if the docker host is not ``localhost``.
|
||||
- ansible-test - Attempt to detect the Docker hostname instead of assuming ``localhost``.
|
||||
- ansible-test - Correctly detect running in a Docker container on Azure Pipelines.
|
||||
- ansible-test - Prefer container IP at ``.NetworkSettings.Networks.{NetworkName}.IPAddress`` over ``.NetworkSettings.IPAddress``.
|
||||
- ansible-test - The ``cs`` and ``openshift`` test plugins now search for containers on the current network instead of assuming the ``bridge`` network.
|
||||
- ansible-test - Using the ``--remote`` option on Azure Pipelines now works from a job running in a container.
|
||||
- async_wrapper - Fix race condition when ``~/.ansible_async`` folder tries to be created by multiple async tasks at the same time - https://github.com/ansible/ansible/issues/59306
|
||||
- dnf - it is now possible to specify both ``security: true`` and ``bugfix: true`` to install updates of both types. Previously, only security would get installed if both were true. (https://github.com/ansible/ansible/issues/70854)
|
||||
- facts - fix distribution fact for SLES4SAP (https://github.com/ansible/ansible/pull/71559).
|
||||
- is_string/vault - Ensure the is_string helper properly identifies AnsibleVaultEncryptedUnicode as a string (https://github.com/ansible/ansible/pull/71609)
|
||||
- powershell - remove getting the PowerShell version from the env var ``POWERSHELL_VERSION``. This feature never worked properly and can cause conflicts with other libraries that use this var
|
||||
- url lookup - make sure that options supplied in ansible.cfg are actually used (https://github.com/ansible/ansible/pull/71736).
|
||||
- user - AnsibleModule.run_command returns a tuple of return code, stdout and stderr. The module main function of the user module expects user.create_user to return a tuple of return code, stdout and stderr. Fix the locations where stdout and stderr got reversed.
|
||||
- user - Local users with an expiry date cannot be created as the ``luseradd`` / ``lusermod`` commands do not support the ``-e`` option. Set the expiry time in this case via ``lchage`` after the user was created / modified. (https://github.com/ansible/ansible/issues/71942)
|
||||
|
||||
v2.10.2
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2020-10-05
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Raise the number of bytes scanned by ansible-test to determine if a file is binary to 4096.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Pass the connection's timeout to connection plugins instead of the task's timeout.
|
||||
- Provide more information in AnsibleUndefinedVariable (https://github.com/ansible/ansible/issues/55152)
|
||||
- ansible-doc - properly show plugin name when ``name:`` is used instead of ``<plugin_type>:`` (https://github.com/ansible/ansible/pull/71966).
|
||||
- ansible-test - Change classification using ``--changed`` now consistently handles common configuration files for supported CI providers.
|
||||
- ansible-test - The ``resource_prefix`` variable provided to tests running on Azure Pipelines is now converted to lowercase to match other CI providers.
|
||||
- collection loader - fix bogus code coverage entries for synthetic packages
|
||||
- psrp - Fix hang when copying an empty file to the remote target
|
||||
- runas - create a new token when running as ``SYSTEM`` to ensure it has the full privileges assigned to that account
|
||||
|
||||
v2.10.1
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2020-09-14
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- Fixed ansible-doc to not substitute for words followed by parenthesis. For instance, ``IBM(International Business Machines)`` will no longer be substituted with a link to a non-existent module. https://github.com/ansible/ansible/pull/71070
|
||||
- Updated network integration auth timeout to 90 secs.
|
||||
- ansible-doc will now format, ``L()``, ``R()``, and ``HORIZONTALLINE`` in plugin docs just as the website docs do. https://github.com/ansible/ansible/pull/71070
|
||||
- ansible-test - Add ``macos/10.15`` as a supported value for the ``--remote`` option.
|
||||
- ansible-test - Allow custom ``--remote-stage`` options for development and testing.
|
||||
- ansible-test - Fix ``ansible-test coverage`` reporting sub-commands (``report``, ``html``, ``xml``) on Python 2.6.
|
||||
- ansible-test - Remove ``pytest < 6.0.0`` constraint for managed installations on Python 3.x now that pytest 6 is supported.
|
||||
- ansible-test - Remove the discontinued ``us-east-2`` choice from the ``--remote-aws-region`` option.
|
||||
- ansible-test - Request remote resources by provider name for all provider types.
|
||||
- ansible-test - Show a warning when the obsolete ``--remote-aws-region`` option is used.
|
||||
- ansible-test - Support custom remote endpoints with the ``--remote-endpoint`` option.
|
||||
- ansible-test - Update built-in service endpoints for the ``--remote`` option.
|
||||
- ansible-test - Use new endpoint for Parallels based instances with the ``--remote`` option.
|
||||
- ansible-test - default container now uses default-test-container 2.7.0 and ansible-base-test-container 1.6.0. This brings in Python 3.9.0rc1 for testing.
|
||||
- ansible-test - the ACME test container was updated, it now supports external account creation and has a basic OCSP responder (https://github.com/ansible/ansible/pull/71097, https://github.com/ansible/acme-test-container/releases/tag/2.0.0).
|
||||
- galaxy - add documentation about galaxy parameters in examples/ansible.cfg (https://github.com/ansible/ansible/issues/68402).
|
||||
- iptables - add a note about ipv6-icmp in protocol parameter (https://github.com/ansible/ansible/issues/70905).
|
||||
- setup.py - Skip doing conflict checks for ``sdist`` and ``egg_info`` commands (https://github.com/ansible/ansible/pull/71310)
|
||||
- subelements - clarify the lookup plugin documentation for parameter handling (https://github.com/ansible/ansible/issues/38182).
|
||||
|
||||
Security Fixes
|
||||
--------------
|
||||
|
||||
- **security issue** - copy - Redact the value of the no_log 'content' parameter in the result's invocation.module_args in check mode. Previously when used with check mode and with '-vvv', the module would not censor the content if a change would be made to the destination path. (CVE-2020-14332)
|
||||
- The fix for CVE-2020-1736 has been reverted. Users are encouraged to specify a ``mode`` parameter in their file-based tasks when the files being manipulated contain sensitive data.
|
||||
- dnf - Previously, regardless of the ``disable_gpg_check`` option, packages were not GPG validated. They are now. (CVE-2020-14365)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- ANSIBLE_COLLECTIONS_PATHS - remove deprecation so that users of Ansible 2.9 and 2.10+ can use the same var when specifying a collection path without a warning.
|
||||
- Confirmed commit fails with TypeError in IOS XR netconf plugin (https://github.com/ansible-collections/cisco.iosxr/issues/74)
|
||||
- Ensure password passed in by -k is used on delegated hosts that do not have ansible_password set
|
||||
- Fix an exit code for a non-failing playbook (https://github.com/ansible/ansible/issues/71306)
|
||||
- Fix execution of the meta tasks 'clear_facts', 'clear_host_errors', 'end_play', 'end_host', and 'reset_connection' when the CLI flag '--flush-cache' is provided.
|
||||
- Fix statistics reporting when rescue block contains another block (issue https://github.com/ansible/ansible/issues/61253).
|
||||
- Fixed Ansible reporting validate not supported by netconf server when enabled in netconf - (https://github.com/ansible-collections/ansible.netcommon/issues/119).
|
||||
- Skip literal_eval for string filters results in native jinja. (https://github.com/ansible/ansible/issues/70831)
|
||||
- Strategy - Ensure we only process expected types from the results queue and produce warnings for any object we receive from the queue that doesn't match our expectations. (https://github.com/ansible/ansible/issues/70023)
|
||||
- TOML inventory - Ensure we register dump functions for ``AnsibleUnsafe`` to support dumping unsafe values. Note that the TOML format has no functionality to mark that the data is unsafe for re-consumption. (https://github.com/ansible/ansible/issues/71307)
|
||||
- ansible-galaxy download - fix bug when downloading a collection in a SCM subdirectory
|
||||
- ansible-test units - fixed collection location code to work under pytest >= 6.0.0
|
||||
- avoid clobbering existing facts inside loop when task also returns ansible_facts.
|
||||
- cron - cron file should not be empty after adding var (https://github.com/ansible/ansible/pull/71207)
|
||||
- fortimanager httpapi plugin - fix redirect to point to the ``fortinet.fortimanager`` collection (https://github.com/ansible/ansible/pull/71073).
|
||||
- gluster modules - fix redirect to point to the ``gluster.gluster`` collection (https://github.com/ansible/ansible/pull/71240).
|
||||
- linux network facts - get the correct value for broadcast address (https://github.com/ansible/ansible/issues/64384)
|
||||
- native jinja2 types - properly handle Undefined in nested data.
|
||||
- powershell - fix escaping of strings that broken modules like fetch when dealing with special chars - https://github.com/ansible/ansible/issues/62781
|
||||
- powershell - fix the CLIXML parser when it contains nested CLIXML objects - https://github.com/ansible/ansible/issues/69550
|
||||
- psrp - Use native PSRP mechanism when copying files to support custom endpoints
|
||||
- strftime filter - Input epoch is allowed to be a float (https://github.com/ansible/ansible/issues/71257)
|
||||
- systemd - fixed chroot usage on new versions of systemd, that broke because of upstream changes in systemctl output
|
||||
- systemd - made the systemd module work correctly when the SYSTEMD_OFFLINE environment variable is set
|
||||
- templating - fix error message for ``x in y`` when y is undefined (https://github.com/ansible/ansible/issues/70984)
|
||||
- unarchive - check ``fut_gid`` against ``run_gid`` in addition to supplemental groups (https://github.com/ansible/ansible/issues/49284)
|
||||
|
||||
v2.10.0
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2020-08-13
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Major Changes
|
||||
-------------
|
||||
|
||||
- Both ansible-doc and ansible-console's help command will error for modules and plugins whose return documentation cannot be parsed as YAML. All modules and plugins passing ``ansible-test sanity --test yamllint`` will not be affected by this.
|
||||
- Collections may declare a list of supported/tested Ansible versions for the collection. A warning is issued if a collection does not support the Ansible version that loads it (can also be configured as silent or a fatal error). Collections that do not declare supported Ansible versions do not issue a warning/error.
|
||||
- Plugin routing allows collections to declare deprecation, redirection targets, and removals for all plugin types.
|
||||
- Plugins that import module_utils and other ansible namespaces that have moved to collections should continue to work unmodified.
|
||||
- Routing data built into Ansible 2.10 ensures that 2.9 content should work unmodified on 2.10. Formerly included modules and plugins that were moved to collections are still accessible by their original unqualified names, so long as their destination collections are installed.
|
||||
- When deprecations are done in code, they to specify a ``collection_name`` so that deprecation warnings can mention which collection - or ansible-base - is deprecating a feature. This affects all ``Display.deprecated()`` or ``AnsibleModule.deprecate()`` or ``Ansible.Basic.Deprecate()`` calls, and ``removed_in_version``/``removed_at_date`` or ``deprecated_aliases`` in module argument specs.
|
||||
- ansible-test now uses a different ``default`` test container for Ansible Collections
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- 'Edit on GitHub' link for plugin, cli documentation fixed to navigate to correct plugin, cli source.
|
||||
- Add 'auth_url' field to galaxy server config stanzas in ansible.cfg The url should point to the token_endpoint of a Keycloak server.
|
||||
- Add --ask-vault-password and --vault-pass-file options to ansible cli commands
|
||||
- Add ``--pre`` flag to ``ansible-galaxy collection install`` to allow pulling in the most recent pre-release version of a collection (https://github.com/ansible/ansible/issues/64905)
|
||||
- Add a global toggle to control when vars plugins are executed (per task by default for backward compatibility or after importing inventory).
|
||||
- Add a new config parameter, WIN_ASYNC_STARTUP_TIMEOUT, which allows configuration of the named pipe connection timeout under Windows when launching async tasks.
|
||||
- Add a per-plugin stage option to override the global toggle to control the execution of individual vars plugins (per task, after inventory, or both).
|
||||
- Add an additional check for importing journal from systemd-python module (https://github.com/ansible/ansible/issues/60595).
|
||||
- Add an example for using var in with_sequence (https://github.com/ansible/ansible/issues/68836).
|
||||
- Add new magic variable ``ansible_collection`` that contains the collection name
|
||||
- Add new magic variable ``ansible_role_name`` that contains the FQCN of the role
|
||||
- Add standard Python 2/3 compatibility boilerplate to setup script, module_utils and docs_fragments which were missing them.
|
||||
- Added PopOS as a part of Debian OS distribution family (https://github.com/ansible/ansible/issues/69286).
|
||||
- Added hostname support for PopOS in hostname module.
|
||||
- Added openEuler OS in RedHat OS Family.
|
||||
- Added the ability to set ``DEFAULT_NO_TARGET_SYSLOG`` through the ``ansible_no_target_syslog`` variable on a task
|
||||
- Ansible CLI fails with warning if extra_vars parameter is used with filename without @ sign (https://github.com/ansible/ansible/issues/51857).
|
||||
- Ansible modules created with ``add_file_common_args=True`` added a number of undocumented arguments which were mostly there to ease implementing certain action plugins. The undocumented arguments ``src``, ``follow``, ``force``, ``content``, ``backup``, ``remote_src``, ``regexp``, ``delimiter``, and ``directory_mode`` are now no longer added. Modules relying on these options to be added need to specify them by themselves. Also, action plugins relying on these extra elements in ``FILE_COMMON_ARGUMENTS`` need to be adjusted.
|
||||
- Ansible now allows deprecation by date instead of deprecation by version. This is possible for plugins and modules (``meta/runtime.yml`` and ``deprecated.removed_at_date`` in ``DOCUMENTATION``, instead of ``deprecated.removed_in``), for plugin options (``deprecated.date`` instead of ``deprecated.version`` in ``DOCUMENTATION``), for module options (``removed_at_date`` instead of ``removed_in_version`` in argument spec), and for module option aliases (``deprecated_aliases.date`` instead of ``deprecated_aliases.version`` in argument spec).
|
||||
- Ansible should fail with error when non-existing limit file is provided in command line.
|
||||
- Ansible.Basic - Added the ability to specify multiple fragments to load in a generic way for modules that use a module_util with fragment options
|
||||
- Ansible.Basic.cs - Added support for ``deprecated_aliases`` to deprecated aliases in a standard way
|
||||
- Ansible.ModuleUtils.WebRequest - Move username and password aliases out of util to avoid option name collision
|
||||
- Change order of arguments in ansible cli to use --ask-vault-password and --vault-password-file by default
|
||||
- CollectionRequirement - Add a metadata property to update and retrieve the _metadata attribute.
|
||||
- Command module: Removed suggestions to use modules which have moved to collections and out of ansible-base
|
||||
- Enable Ansible Collections loader to discover and import collections from ``site-packages`` dir and ``PYTHONPATH``-added locations.
|
||||
- Enable testing the AIX platform as a remote OS in ansible-test
|
||||
- Flatten the directory hierarchy of modules
|
||||
- Ignore plesk-release file while parsing distribution release (https://github.com/ansible/ansible/issues/64101).
|
||||
- Openstack inventory script is migrated to ansible-openstack-collection, adjusted the link in documentation accordingly.
|
||||
- Openstack inventory script is moved to openstack.cloud from community.general.
|
||||
- PowerShell Add-Type - Add an easier way to reference extra types when compiling C# code on PowerShell Core
|
||||
- PowerShell Add-Type - Added the ``X86`` and ``AMD64`` preprocessor symbols for conditional compiling
|
||||
- Prevent losing useful error information by including both the loop and the conditional error messages (https://github.com/ansible/ansible/issues/66529)
|
||||
- Provides additional information about collection namespace name restrictions (https://github.com/ansible/ansible/issues/65151).
|
||||
- Raise error when no task file is provided to import_tasks (https://github.com/ansible/ansible/issues/54095).
|
||||
- Refactor test_distribution_version testcases.
|
||||
- Remove the deprecation message for the ``TRANSFORM_INVALID_GROUP_CHARS`` setting. (https://github.com/ansible/ansible/issues/61889)
|
||||
- Removed extras_require support from setup.py (and [azure] extra). Requirements will float with the collections, so it's not appropriate for ansible-base to host requirements for them any longer.
|
||||
- Simplify dict2items filter example in loop documentation (https://github.com/ansible/ansible/issues/65505).
|
||||
- Templating - Add globals to the jinja2 environment at ``Templar`` instantiation, instead of customizing the template object. Only customize the template object, to disable lookups. (https://github.com/ansible/ansible/pull/69278)
|
||||
- Templating - Add support to auto unroll generators produced by jinja2 filters, to prevent the need of explicit use of ``|list`` (https://github.com/ansible/ansible/pull/68014)
|
||||
- The plugin loader now keeps track of the collection where a plugin was resolved to, in particular whether the plugin was loaded from ansible-base's internal paths (``ansible.builtin``) or from user-supplied paths (no collection name).
|
||||
- The results queue and counter for results are now split for standard / handler results. This allows the governing strategy to be truly independent from the handler strategy, which basically follows the linear methodology.
|
||||
- Update required library message with correct grammer in basic.py.
|
||||
- Updated inventory script location for EC2, Openstack, and Cobbler after collection (https://github.com/ansible/ansible/issues/68897).
|
||||
- Updated inventory script location for infoblox, ec2 and other after collection migration (https://github.com/ansible/ansible/issues/69139).
|
||||
- Updates ``ansible_role_names``, ``ansible_play_role_names``, and ``ansible_dependent_role_names`` to include the FQCN
|
||||
- Use OrderedDict by default when importing mappings from YAML.
|
||||
- Windows - Add a check for the minimum PowerShell version so we can create a friendly error message on older hosts
|
||||
- Windows - add deprecation notice in the Windows setup module when running on Server 2008, 2008 R2, and Windows 7
|
||||
- `AnsibleModule.fail_json()` has always required that a message be passed in which informs the end user why the module failed. In the past this message had to be passed as the `msg` keyword argument but it can now be passed as the first positional argument instead.
|
||||
- ``AnsibleModule.load_file_common_arguments`` now allows to simply override ``path``.
|
||||
- add mechanism for storing warnings and deprecations globally and not attached to an ``AnsibleModule`` object (https://github.com/ansible/ansible/pull/58993)
|
||||
- added more ways to configure new uri options in 2.10.
|
||||
- ansible-doc - improve suboptions formatting (https://github.com/ansible/ansible/pull/69795).
|
||||
- ansible-doc - now indicates if an option is added by a doc fragment from another collection by prepending the collection name, or ``ansible.builtin`` for ansible-base, to the version number.
|
||||
- ansible-doc - return values will be properly formatted (https://github.com/ansible/ansible/pull/69796).
|
||||
- ansible-galaxy - Add ``download`` option for ``ansible-galaxy collection`` to download collections and their dependencies for an offline install
|
||||
- ansible-galaxy - Add a `verify` subcommand to `ansible-galaxy collection`. The collection found on the galaxy server is downloaded to a tempfile to compare the checksums of the files listed in the MANIFEST.json and the FILES.json with the contents of the installed collection.
|
||||
- ansible-galaxy - Add installation successful message
|
||||
- ansible-galaxy - Added the ability to display the progress wheel through the C.GALAXY_DISPLAY_PROGRESS config option. Also this now defaults to displaying the progress wheel if stdout has a tty.
|
||||
- ansible-galaxy - Added the ability to ignore further files and folders using a pattern with the ``build_ignore`` key in a collection's ``galaxy.yml`` (https://github.com/ansible/ansible/issues/59228).
|
||||
- ansible-galaxy - Allow installing collections from git repositories.
|
||||
- ansible-galaxy - Always ignore the ``tests/output`` directory when building a collection as it is used by ``ansible-test`` for test output (https://github.com/ansible/ansible/issues/59228).
|
||||
- ansible-galaxy - Change the output verbosity level of the download message from 3 to 0 (https://github.com/ansible/ansible/issues/70010)
|
||||
- ansible-galaxy - Display message if both collections and roles are specified in a requirements file but can't be installed together.
|
||||
- ansible-galaxy - Install both collections and roles with ``ansible-galaxy install -r requirements.yml`` in certain scenarios.
|
||||
- ansible-galaxy - Requirement entries for collections now support a 'type' key to indicate whether the collection is a galaxy artifact, file, url, or git repo.
|
||||
- ansible-galaxy - add ``--token`` argument which is the same as ``--api-key`` (https://github.com/ansible/ansible/issues/65955)
|
||||
- ansible-galaxy - add ``collection list`` command for listing installed collections (https://github.com/ansible/ansible/pull/65022)
|
||||
- ansible-galaxy - add ``validate_collection_path()`` utility function ()
|
||||
- ansible-galaxy - add collections path argument
|
||||
- ansible-galaxy - allow role to define dependency requirements that will be only installed by defining them in ``meta/requirements.yml`` (https://github.com/ansible/proposals/issues/57)
|
||||
- ansible-test - --docker flag now has an associated --docker-terminate flag which controls if and when the docker container is removed following tests
|
||||
- ansible-test - Add a test to prevent ``state=get``
|
||||
- ansible-test - Add a test to prevent ``state=list`` and ``state=info``
|
||||
- ansible-test - Add a verbosity option for displaying warnings.
|
||||
- ansible-test - Add support for Python 3.9.
|
||||
- ansible-test - Added CI provider support for Azure Pipelines.
|
||||
- ansible-test - Added a ``ansible-test coverage analyze targets filter`` command to filter aggregated coverage reports by path and/or target name.
|
||||
- ansible-test - Added a ``ansible-test coverage analyze targets`` command to analyze integration test code coverage by test target.
|
||||
- ansible-test - Added support for Ansible Core CI request signing for Shippable.
|
||||
- ansible-test - Added support for testing on Fedora 32.
|
||||
- ansible-test - General code cleanup.
|
||||
- ansible-test - Now includes testing support for RHEL 8.2
|
||||
- ansible-test - Provisioning of RHEL instances now includes installation of pinned versions of ``packaging`` and ``pyparsing`` to match the downstream vendored versions.
|
||||
- ansible-test - Refactor code to consolidate filesystem access and improve handling of encoding.
|
||||
- ansible-test - Refactored CI related logic into a basic provider abstraction.
|
||||
- ansible-test - Remove obsolete support for provisioning remote vCenter instances. The supporting services are no longer available.
|
||||
- ansible-test - Report the correct line number in the ``yamllint`` sanity test when reporting ``libyaml`` parse errors in module documentation.
|
||||
- ansible-test - Support writing compact JSON files instead of formatting and indenting the output.
|
||||
- ansible-test - Update Ubuntu 18.04 test container to version 1.13 which includes ``venv``
|
||||
- ansible-test - Update ``default-test-container`` to version 1.11, which includes Python 3.9.0a4.
|
||||
- ansible-test - Updated the default test containers to include Python 3.9.0b3.
|
||||
- ansible-test - Upgrade OpenSUSE containers to use Leap 15.1.
|
||||
- ansible-test - Upgrade distro test containers from 1.16.0 to 1.17.0
|
||||
- ansible-test - Upgrade from ansible-base-test-container 1.1 to 2.2
|
||||
- ansible-test - Upgrade from default-test-container 2.1 to 2.2
|
||||
- ansible-test - ``mutually_exclusive``, ``required_if``, ``required_by``, ``required_together`` and ``required_one_of`` in modules are now validated.
|
||||
- ansible-test - ``validate-modules`` now also accepts an ISO 8601 formatted date as ``deprecated.removed_at_date``, instead of requiring a version number in ``deprecated.removed_in``.
|
||||
- ansible-test - ``validate-modules`` now makes sure that module documentation deprecation removal version and/or date matches with removal version and/or date in meta/runtime.yml.
|
||||
- ansible-test - ``validate-modules`` now validates all version numbers in documentation and argument spec. Version numbers for collections are checked for being valid semantic versioning version number strings.
|
||||
- ansible-test - add ``validate-modules`` tests for ``removed_in_version`` and ``deprecated_aliases`` (https://github.com/ansible/ansible/pull/66920/).
|
||||
- ansible-test - add check for ``print()`` calls in modules and module_utils.
|
||||
- ansible-test - added a ``--no-pip-check`` option
|
||||
- ansible-test - added a ``--venv-system-site-packages`` option for use with the ``--venv`` option
|
||||
- ansible-test - added new ``changelog`` test, which runs if a `antsibull-changelog <https://pypi.org/project/antsibull-changelog/>`_ configuration or files in ``changelogs/fragments/`` are found (https://github.com/ansible/ansible/pull/69313).
|
||||
- ansible-test - allow delegation config to specify equivalents to the ``--no-pip-check``, ``--disable-httptester`` and `--no-temp-unicode`` options
|
||||
- ansible-test - allow sanity tests to check for optional errors by specifying ``--enable-optional-errors`` (https://github.com/ansible/ansible/pull/66920/).
|
||||
- ansible-test - also run the ``ansible-doc`` sanity test with ``--json`` to ensure that the documentation does not contain something that cannot be exported as JSON (https://github.com/ansible/ansible/issues/69238).
|
||||
- ansible-test - enable deprecated version testing for modules and ``module.deprecate()`` calls (https://github.com/ansible/ansible/pull/66920/).
|
||||
- ansible-test - extend alias validation.
|
||||
- ansible-test - fixed ``units`` command with ``--docker`` to (mostly) work under podman
|
||||
- ansible-test - improve module validation so that ``default``, ``sample`` and ``example`` contain JSON values and not arbitrary YAML values, like ``datetime`` objects or dictionaries with non-string keys.
|
||||
- ansible-test - module validation will now consider arguments added by ``add_file_common_arguments=True`` correctly.
|
||||
- ansible-test - switch from testing RHEL 8.0 and RHEL 8.1 Beta to RHEL 8.1
|
||||
- ansible-test - the argument spec of modules is now validated by a YAML schema.
|
||||
- ansible-test - the module validation code now checks whether ``elements`` documentation for options matches the argument_spec.
|
||||
- ansible-test - the module validation code now checks whether ``elements`` is defined when ``type=list``
|
||||
- ansible-test - the module validation code now checks whether ``requirement`` for options is documented correctly.
|
||||
- ansible-test add pyparsing constraint for Python 2.x to avoid compatibility issues with the upcoming pyparsing 3 release
|
||||
- ansible-test defaults to redacting sensitive values (disable with the ``--no-redact`` option)
|
||||
- ansible-test has been updated to use ``default-test-container:1.13`` which includes fewer Python requirements now that most modules and tests have been migrated to collections.
|
||||
- ansible-test no longer detects ``git`` submodule directories as files.
|
||||
- ansible-test no longer provides a ``--tox`` option. Use the ``--venv`` option instead. This only affects testing the Ansible source. The feature was never available for Ansible Collections or when running from an Ansible install.
|
||||
- ansible-test no longer tries to install sanity test dependencies on unsupported Python versions
|
||||
- ansible-test now checks for the minimum and maximum supported versions when importing ``coverage``
|
||||
- ansible-test now filters out unnecessary warnings and messages from pip when installing its own requirements
|
||||
- ansible-test now has a ``--list-files`` option to list files using the ``env`` command.
|
||||
- ansible-test now includes the ``pylint`` plugin ``mccabe`` in optional sanity tests enabled with ``--enable-optional-errors``
|
||||
- ansible-test now places the ansible source and collections content in separate directories when using the ``--docker`` or ``--remote`` options.
|
||||
- ansible-test now provides a more helpful error when loading coverage files created by ``coverage`` version 5 or later
|
||||
- ansible-test now supports provisioning of network resources when testing network collections
|
||||
- ansible-test now supports skip aliases in the format ``skip/{arch}/{platform}`` and ``skip/{arch}/{platform}/{version}`` where ``arch`` can be ``power``. These aliases are only effective for the ``--remote`` option.
|
||||
- ansible-test now supports skip aliases in the format ``skip/{platform}/{version}`` for the ``--remote`` option. This is preferred over the older ``skip/{platform}{version}`` format which included no ``/`` between the platform and version.
|
||||
- ansible-test now supports testing against RHEL 7.8 when using the ``--remote`` option.
|
||||
- ansible-test now supports the ``--remote power/centos/7`` platform option.
|
||||
- ansible-test now validates the schema of ansible_builtin_runtime.yml and a collections meta/runtime.yml file.
|
||||
- ansible-test provides clearer error messages when failing to detect the provider to use with the ``--remote`` option.
|
||||
- ansible-test provisioning of network devices for ``network-integration`` has been updated to use collections.
|
||||
- ansible_native_concat() - use ``to_text`` function rather than Jinja2's ``text_type`` which has been removed in Jinja2 master branch.
|
||||
- apt - Implemented an exponential backoff behaviour when retrying to update the cache with new params ``update_cache_retry_max_delay`` and ``update_cache_retries`` to control the behavior.
|
||||
- apt_repository - Implemented an exponential backoff behaviour when retrying to update the apt cache with new params ``update_cache_retry_max_delay`` and ``update_cache_retries`` to control the behavior.
|
||||
- blockinfile - Update module documentation to clarify insertbefore/insertafter usage.
|
||||
- callbacks - Allow modules to return `None` as before/after entries for diff. This should make it easier for modules to report the "not existing" state of the entity they touched.
|
||||
- combine filter - now accept a ``list_merge`` argument which modifies its behaviour when the hashes to merge contain arrays/lists.
|
||||
- conditionals - change the default of CONDITIONAL_BARE_VARS to False (https://github.com/ansible/ansible/issues/70682).
|
||||
- config - accept singular version of ``collections_path`` ini setting and ``ANSIBLE_COLLECTIONS_PATH`` environment variable setting
|
||||
- core filters - Adding ``path_join`` filter to the core filters list
|
||||
- debconf - add a note about no_log=True since module might expose sensitive information to logs (https://github.com/ansible/ansible/issues/32386).
|
||||
- default_callback - moving 'check_mode_markers' documentation in default_callback doc_fragment (https://github.com/ansible-collections/community.general/issues/565).
|
||||
- distro - Update bundled version of distro from 1.4.0 to 1.5.0
|
||||
- dnf - Properly handle idempotent transactions with package name wildcard globs (https://github.com/ansible/ansible/issues/62809)
|
||||
- dnf - Properly handle module AppStreams that don't define stream (https://github.com/ansible/ansible/issues/63683)
|
||||
- dnf param to pass allowerasing
|
||||
- downstream packagers may install packages under ansible._vendor, which will be added to head of sys.path at ansible package load
|
||||
- file - specifying ``src`` without ``state`` is now an error
|
||||
- get_bin_path() - change the interface to always raise ``ValueError`` if the command is not found (https://github.com/ansible/ansible/pull/56813)
|
||||
- get_url - Remove deprecated string format support for the headers option (https://github.com/ansible/ansible/issues/61891)
|
||||
- git - added an ``archive_prefix`` option to set a prefix to add to each file path in archive
|
||||
- host_group_vars plugin - Require whitelisting and whitelist by default.
|
||||
- new magic variable - ``ansible_config_file`` - full path of used Ansible config file
|
||||
- package_facts.py - Add support for Pacman package manager.
|
||||
- pipe lookup - update docs for Popen with shell=True usages (https://github.com/ansible/ansible/issues/70159).
|
||||
- plugin loader - Add MODULE_IGNORE_EXTS config option to skip over certain extensions when looking for script and binary modules.
|
||||
- powershell (shell plugin) - Fix `join_path` to support UNC paths (https://github.com/ansible/ansible/issues/66341)
|
||||
- regexp_replace filter - add multiline support for regex_replace filter (https://github.com/ansible/ansible/issues/61985)
|
||||
- rename ``_find_existing_collections()`` to ``find_existing_collections()`` to reflect its use across multiple files
|
||||
- reorganized code for the ``ansible-test coverage`` command for easier maintenance and feature additions
|
||||
- service_facts - Added undocumented 'indirect' and 'static' as service status (https://github.com/ansible/ansible/issues/69752).
|
||||
- ssh - connection plugin now supports a new variable ``sshpass_prompt`` which gets passed to ``sshpass`` allowing the user to set a custom substring to search for a password prompt (requires sshpass 1.06+)
|
||||
- systemd - default scope is now explicitly "system"
|
||||
- tests - Add new ``truthy`` and ``falsy`` jinja2 tests to evaluate the truthiness or falsiness of a value
|
||||
- to_nice_json filter - Removed now-useless exception handler
|
||||
- to_uuid - add a named parameter to let the user optionally set a custom namespace
|
||||
- update ansible-test default-test-container from version 1.13 to 1.14, which includes an update from Python 3.9.0a6 to Python 3.9.0b1
|
||||
- update ansible-test default-test-container from version 1.9.1 to 1.9.2
|
||||
- update ansible-test default-test-container from version 1.9.2 to 1.9.3
|
||||
- update ansible-test default-test-container from version 1.9.3 to 1.10.1
|
||||
- update ansible-test images to 1.16.0, which includes system updates and pins CentOS versions
|
||||
- uri/galaxy - Add new ``prepare_multipart`` helper function for creating a ``multipart/form-data`` body (https://github.com/ansible/ansible/pull/69376)
|
||||
- url_lookup_plugin - add parameters to match what is available in ``module_utils/urls.py``
|
||||
- user - allow groups, append parameters with local
|
||||
- user - usage of ``append: True`` without setting a list of groups. This is currently a no-op with a warning, and will change to an error in 2.14. (https://github.com/ansible/ansible/pull/65795)
|
||||
- validate-modules checks for deprecated in collections against meta/runtime.yml
|
||||
- validation - Sort missing parameters in exception message thrown by check_required_arguments
|
||||
- vars plugins - Support vars plugins in collections by adding the ability to whitelist plugins.
|
||||
- vars_prompt - throw error when encountering unsupported key
|
||||
- win_package - Added proxy support for retrieving packages from a URL - https://github.com/ansible/ansible/issues/43818
|
||||
- win_package - Added support for ``.appx``, ``.msix``, ``.appxbundle``, and ``.msixbundle`` package - https://github.com/ansible/ansible/issues/50765
|
||||
- win_package - Added support for ``.msp`` packages - https://github.com/ansible/ansible/issues/22789
|
||||
- win_package - Added support for specifying the HTTP method when getting files from a URL - https://github.com/ansible/ansible/issues/35377
|
||||
- win_package - Read uninstall strings from the ``QuietUninstallString`` if present to better support argumentless uninstalls of registry based packages.
|
||||
- win_package - Scan packages in the current user's registry hive - https://github.com/ansible/ansible/issues/45950
|
||||
- windows collections - Support relative module util imports in PowerShell modules and module_utils
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- Using the DefaultCallback without the correspodning doc_fragment or copying the documentation.
|
||||
- hash_behaviour - Deprecate ``hash_behaviour`` for future removal.
|
||||
- script inventory plugin - The 'cache' option is deprecated and will be removed in 2.12. Its use has been removed from the plugin since it has never had any effect.
|
||||
|
||||
Removed Features (previously deprecated)
|
||||
----------------------------------------
|
||||
|
||||
- core - remove support for ``check_invalid_arguments`` in ``AnsibleModule``, ``AzureModule`` and ``UTMModule``.
|
||||
|
||||
Security Fixes
|
||||
--------------
|
||||
|
||||
- **security issue** - Convert CLI provided passwords to text initially, to prevent unsafe context being lost when converting from bytes->text during post processing of PlayContext. This prevents CLI provided passwords from being incorrectly templated (CVE-2019-14856)
|
||||
- **security issue** - Redact cloud plugin secrets in ansible-test when running integration tests using cloud plugins. Only present in 2.9.0b1.
|
||||
- **security issue** - TaskExecutor - Ensure we don't erase unsafe context in TaskExecutor.run on bytes. Only present in 2.9.0beta1 (https://github.com/ansible/ansible/issues/62237)
|
||||
- **security issue** - The ``subversion`` module provided the password via the svn command line option ``--password`` and can be retrieved from the host's /proc/<pid>/cmdline file. Update the module to use the secure ``--password-from-stdin`` option instead, and add a warning in the module and in the documentation if svn version is too old to support it. (CVE-2020-1739)
|
||||
- **security issue** - Update ``AnsibleUnsafeText`` and ``AnsibleUnsafeBytes`` to maintain unsafe context by overriding ``.encode`` and ``.decode``. This prevents future issues with ``to_text``, ``to_bytes``, or ``to_native`` removing the unsafe wrapper when converting between string types (CVE-2019-14856)
|
||||
- **security issue** - properly hide parameters marked with ``no_log`` in suboptions when invalid parameters are passed to the module (CVE-2019-14858)
|
||||
- **security issue** atomic_move - change default permissions when creating temporary files so they are not world readable (https://github.com/ansible/ansible/issues/67794) (CVE-2020-1736)
|
||||
- **security issue** win_unzip - normalize paths in archive to ensure extracted files do not escape from the target directory (CVE-2020-1737)
|
||||
- **security_issue** - create temporary vault file with strict permissions when editing and prevent race condition (CVE-2020-1740)
|
||||
- Ensure we get an error when creating a remote tmp if it already exists. CVE-2020-1733
|
||||
- In fetch action, avoid using slurp return to set up dest, also ensure no dir traversal CVE-2020-1735.
|
||||
- Sanitize no_log values from any response keys that might be returned from the uri module (CVE-2020-14330).
|
||||
- ansible-galaxy - Error when install finds a tar with a file that will be extracted outside the collection install directory - CVE-2020-10691
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- ActionBase - Add new ``cleanup`` method that is explicitly run by the ``TaskExecutor`` to ensure that the shell plugins ``tmpdir`` is always removed. This change means that individual action plugins need not be responsible for removing the temporary directory, which ensures that we don't have code paths that accidentally leave behind the temporary directory.
|
||||
- Add example setting for ``collections_paths`` parameter to ``examples/ansible.cfg``
|
||||
- Add missing gcp modules to gcp module defaults group
|
||||
- Added support for Flatcar Container Linux in distribution and hostname modules. (https://github.com/ansible/ansible/pull/69627)
|
||||
- Added support for OSMC distro in hostname module (https://github.com/ansible/ansible/issues/66189).
|
||||
- Address compat with rpmfluff-0.6 for integration tests
|
||||
- Address the deprecation of the use of stdlib distutils in packaging. It's a short-term hotfix for the problem (https://github.com/ansible/ansible/issues/70456, https://github.com/pypa/setuptools/issues/2230, https://github.com/pypa/setuptools/commit/bd110264)
|
||||
- Allow TypeErrors on Undefined variables in filters to be handled or deferred when processing for loops.
|
||||
- Allow tasks to notify a fqcn handler name (https://github.com/ansible/ansible/issues/68181)
|
||||
- An invalid value is hard to track down if you don't know where it came from, return field name instead.
|
||||
- Ansible output now uses stdout to determine column width instead of stdin
|
||||
- Ansible.Basic - Fix issue when setting a ``no_log`` parameter to an empty string - https://github.com/ansible/ansible/issues/62613
|
||||
- Ansible.ModuleUtils.WebRequest - actually set no proxy when ``use_proxy: no`` is set on a Windows module - https://github.com/ansible/ansible/issues/68528
|
||||
- AnsibleDumper - Add a representer for AnsibleUnsafeBytes (https://github.com/ansible/ansible/issues/62562).
|
||||
- AnsibleModule.run_command() - set ``close_fds`` to ``False`` on Python 2 if ``pass_fds`` are passed to ``run_command()``. Since ``subprocess.Popen()`` on Python 2 does not have the ``pass_fds`` option, there is no way to exclude a specific list of file descriptors from being closed.
|
||||
- Avoid bare select() for running commands to avoid too large file descriptor numbers failing tasks
|
||||
- Avoid running subfunctions that are passed to show_vars function when it will be a noop.
|
||||
- By passing the module_tmpdir as a parameter in the write_ssh_wrapper function instead of initalizing module_tmpdir via get_module_path()
|
||||
- CLI - the `ANSIBLE_PLAYBOOK_DIR` envvar or `playbook_dir` config can now substitute for the --playbook-dir arg on CLIs that support it (https://github.com/ansible/ansible/issues/59464)
|
||||
- Check NoneType for raw_params before proceeding in include_vars (https://github.com/ansible/ansible/issues/64939).
|
||||
- Collections - Allow a collection role to call a stand alone role, without needing to explicitly add ``ansible.legacy`` to the collection search order within the collection role. (https://github.com/ansible/ansible/issues/69101)
|
||||
- Correctly process raw_params in add_hosts.
|
||||
- Create an ``import_module`` compat util, for use across the codebase, to allow collection loading to work properly on Python26
|
||||
- DUPLICATE_YAML_DICT_KEY - Fix error output when configuration option DUPLICATE_YAML_DICT_KEY is set to error (https://github.com/ansible/ansible/issues/65366)
|
||||
- Do not keep empty blocks in PlayIterator after skipping tasks with tags.
|
||||
- Ensure DataLoader temp files are removed at appropriate times and that we observe the LOCAL_TMP setting.
|
||||
- Ensure that ``--version`` works with non-ascii ansible project paths (https://github.com/ansible/ansible/issues/66617)
|
||||
- Ensure that keywords defined as booleans are correctly interpreting their input, before patch any random string would be interpreted as False
|
||||
- Ensure we don't allow ansible_facts subkey of ansible_facts to override top level, also fix 'deprefixing' to prevent key transforms.
|
||||
- Fact Delegation - Add ability to indicate which facts must always be delegated. Primarily for ``discovered_interpreter_python`` right now, but extensible later. (https://github.com/ansible/ansible/issues/61002)
|
||||
- Fix ``delegate_facts: true`` when ``ansible_python_interpreter`` is not set. (https://github.com/ansible/ansible/issues/70168)
|
||||
- Fix a bug when a host was not removed from a play after ``meta: end_host`` and as a result the host was still present in ``ansible_play_hosts`` and ``ansible_play_batch`` variables.
|
||||
- Fix an issue with the ``fileglob`` plugin where passing a subdirectory of non-existent directory would cause it to fail - https://github.com/ansible/ansible/issues/69450
|
||||
- Fix case sensitivity for ``lookup()`` (https://github.com/ansible/ansible/issues/66464)
|
||||
- Fix collection install error that happened if a dependency specified dependencies to be null (https://github.com/ansible/ansible/issues/67574).
|
||||
- Fix https://github.com/ansible/galaxy-dev/issues/96 Add support for automation-hub authentication to ansible-galaxy
|
||||
- Fix incorrect "Could not match supplied host pattern" warning (https://github.com/ansible/ansible/issues/66764)
|
||||
- Fix issue git module cannot use custom `key_file` or `ssh_opts` as non-root user on system with noexec `/tmp` (https://github.com/ansible/ansible/issues/30064).
|
||||
- Fix issue git module ignores remote_tmp (https://github.com/ansible/ansible/issues/33947).
|
||||
- Fix issue where the collection loader tracebacks if ``collections_paths = ./`` is set in the config
|
||||
- Fix issue with callbacks ``set_options`` method that was not called with collections
|
||||
- Fix label lookup in the default callback for includes (https://github.com/ansible/ansible/issues/65904)
|
||||
- Fix regression when ``ansible_failed_task`` and ``ansible_failed_result`` are not defined in the rescue block (https://github.com/ansible/ansible/issues/64789)
|
||||
- Fix string parsing of inline vault strings for plugin config variable sources
|
||||
- Fix traceback when printing ``HostVars`` on native Jinja2 (https://github.com/ansible/ansible/issues/65365)
|
||||
- Fix warning for default permission change when no mode is specified. Follow up to https://github.com/ansible/ansible/issues/67794. (CVE-2020-1736)
|
||||
- Fixed a bug with the copy action plugin where mode=preserve was being passed on symlink files and causing a traceback (https://github.com/ansible/ansible/issues/68471).
|
||||
- Fixed the equality check for IncludedFiles to ensure they are not accidently merged when process_include_results runs.
|
||||
- Fixes ansible-test traceback when plugin author is not a string or a list of strings (https://github.com/ansible/ansible/pull/70507)
|
||||
- Fixes in network action plugins load from collections using module prefix (https://github.com/ansible/ansible/issues/65071)
|
||||
- Force collection names to be static so that a warning is generated because templating currently does not work (see https://github.com/ansible/ansible/issues/68704).
|
||||
- Handle empty extra vars in ansible cli (https://github.com/ansible/ansible/issues/61497).
|
||||
- Handle empty roles and empty collections in requirements.yml in ansible-galaxy install command (https://github.com/ansible/ansible/issues/68186).
|
||||
- Handle exception encountered while parsing the argument description in module when invoked via ansible-doc command (https://github.com/ansible/ansible/issues/60587).
|
||||
- Handle exception when /etc/shadow file is missing or not found, while operating user operation in user module (https://github.com/ansible/ansible/issues/63490).
|
||||
- HostVarsVars - Template the __repr__ value (https://github.com/ansible/ansible/issues/64128).
|
||||
- JSON Encoder - Ensure we treat single vault encrypted values as strings (https://github.com/ansible/ansible/issues/70784)
|
||||
- Make netconf plugin configurable to set ncclient device handler name in netconf plugin (https://github.com/ansible/ansible/pull/65718)
|
||||
- Make sure if a collection is supplied as a string that we transform it into a list.
|
||||
- Misc typo fixes in various documentation pages.
|
||||
- Module arguments in suboptions which were marked as deprecated with ``removed_in_version`` did not result in a warning.
|
||||
- On HTTP status code 304, return status_code
|
||||
- Plugin Metadata is supposed to have default values. When the metadata was missing entirely, we were properly setting the defaults. Fixed the metadata parsing so that the defaults are also set when we were missing just a few fields.
|
||||
- Prevent a race condition when running handlers using a combination of the free strategy and include_role.
|
||||
- Prevent rewriting nested Block's data in filter_tagged_tasks
|
||||
- Prevent templating unused variables for {% include %} (https://github.com/ansible/ansible/issues/68699)
|
||||
- Properly handle unicode in ``safe_eval``. (https://github.com/ansible/ansible/issues/66943)
|
||||
- Python module_utils finder - refactor logic to eliminate many corner cases, remove recursion, fix base module_utils redirections
|
||||
- Remove a temp directory created by wait_for_connection action plugin (https://github.com/ansible/ansible/issues/62407).
|
||||
- Remove the unnecessary warning about aptitude not being installed (https://github.com/ansible/ansible/issues/56832).
|
||||
- Remove unused Python imports in ``ansible-inventory``.
|
||||
- Restore the ability for changed_when/failed_when to function with group_by (#70844).
|
||||
- Role Installation - Ensure that a role containing files with non-ascii characters can be installed (https://github.com/ansible/ansible/issues/69133)
|
||||
- RoleRequirement - include stderr in the error message if a scm command fails (https://github.com/ansible/ansible/issues/41336)
|
||||
- SSH plugin - Improve error message when ssh client is not found on the host
|
||||
- Skipping of become for ``network_cli`` connections now works when ``network_cli`` is sourced from a collection.
|
||||
- Stop adding the connection variables to the output results
|
||||
- Strictly check string datatype for 'tasks_from', 'vars_from', 'defaults_from', and 'handlers_from' in include_role (https://github.com/ansible/ansible/issues/68515).
|
||||
- Strip no log values from module response keys (https://github.com/ansible/ansible/issues/68400)
|
||||
- TaskExecutor - Handle unexpected errors as failed while post validating loops (https://github.com/ansible/ansible/issues/70050).
|
||||
- TaskQueueManager - Explicitly set the mutliprocessing start method to ``fork`` to avoid issues with the default on macOS now being ``spawn``.
|
||||
- Template connection variables before using them (https://github.com/ansible/ansible/issues/70598).
|
||||
- Templating - Ansible was caching results of Jinja2 expressions in some cases where these expressions could have dynamic results, like password generation (https://github.com/ansible/ansible/issues/34144).
|
||||
- Terminal plugins - add "\e[m" to the list of ANSI sequences stripped from device output
|
||||
- The `ansible_become` value was not being treated as a boolean value when set in an INI format inventory file (fixes bug https://github.com/ansible/ansible/issues/70476).
|
||||
- The ansible-galaxy publish command was using an incorrect URL for v3 servers. The configuration for v3 servers includes part of the path fragment that was added in the new test.
|
||||
- The machine-readable changelog ``changelogs/changelog.yaml`` is now contained in the release.
|
||||
- Update ActionBase._low_level_execute_command to honor executable (https://github.com/ansible/ansible/issues/68054)
|
||||
- Update the warning message for ``CONDITIONAL_BARE_VARS`` to list the original conditional not the value of the original conditional (https://github.com/ansible/ansible/issues/67735)
|
||||
- Use ``sys.exit`` instead of ``exit`` in ``ansible-inventory``.
|
||||
- Use fqcr from command module invocation using shell module. Fixes https://github.com/ansible/ansible/issues/69788
|
||||
- Use hostnamectl command to get current hostname for host while using systemd strategy (https://github.com/ansible/ansible/issues/59438).
|
||||
- Using --start-at-task would fail when it attempted to skip over tasks with no name.
|
||||
- Validate include args in handlers.
|
||||
- Vault - Allow single vault encrypted values to be used directly as module parameters. (https://github.com/ansible/ansible/issues/68275)
|
||||
- Vault - Make the single vaulted value ``AnsibleVaultEncryptedUnicode`` class work more like a string by replicating the behavior of ``collections.UserString`` from Python. These changes don't allow it to be considered a string, but most common python string actions will now work as expected. (https://github.com/ansible/ansible/pull/67823)
|
||||
- ``AnsibleUnsafe``/``AnsibleContext``/``Templar`` - Do not treat ``AnsibleUndefined`` as being "unsafe" (https://github.com/ansible/ansible/issues/65198)
|
||||
- account for empty strings in when splitting the host pattern (https://github.com/ansible/ansible/issues/61964)
|
||||
- action plugins - change all action/module delegations to use FQ names while allowing overrides (https://github.com/ansible/ansible/issues/69788)
|
||||
- add constraints file for ``anisble_runner`` test since an update to ``psutil`` is now causing test failures
|
||||
- add magic/connection vars updates from delegated host info.
|
||||
- add parameter name to warning message when values are converted to strings (https://github.com/ansible/ansible/pull/57145)
|
||||
- add_host action now correctly shows idempotency/changed status
|
||||
- added 'unimplemented' prefix to file based caching
|
||||
- added new option for default callback to compat variable to avoid old 3rd party plugins from erroring out.
|
||||
- adhoc CLI - when playbook-dir is specified and inside a collection, use default collection logic to resolve modules/actions
|
||||
- allow external collections to be created in the 'ansible' collection namespace (https://github.com/ansible/ansible/issues/59988)
|
||||
- also strip spaces around config values in pathlist as we do in list types
|
||||
- ansiballz - remove '' and '.' from sys.path to fix a permissions issue on OpenBSD with pipelining (#69320)
|
||||
- ansible command now correctly sends v2_playbook_on_start to callbacks
|
||||
- ansible-connection persists even after playbook run is completed (https://github.com/ansible/ansible/pull/61591)
|
||||
- ansible-doc - Allow and give precedence to `removed_at_date` for deprecated modules.
|
||||
- ansible-doc - collection name for plugin top-level deprecation was not inserted when deprecating by version (https://github.com/ansible/ansible/pull/70344).
|
||||
- ansible-doc - improve error message in text formatter when ``description`` is missing for a (sub-)option or a return value or its ``contains`` (https://github.com/ansible/ansible/pull/70046).
|
||||
- ansible-doc - improve man page formatting to avoid problems when YAML anchors are used (https://github.com/ansible/ansible/pull/70045).
|
||||
- ansible-doc - include the collection name in the text output (https://github.com/ansible/ansible/pull/70401).
|
||||
- ansible-doc now properly handles removed modules/plugins
|
||||
- ansible-galaxy - Default collection install path to first path in COLLECTIONS_PATHS (https://github.com/ansible/ansible/pull/62870)
|
||||
- ansible-galaxy - Display proper error when invalid token is used for Galaxy servers
|
||||
- ansible-galaxy - Ensure we preserve the new URL when appending ``/api`` for the case where the GET succeeds on galaxy.ansible.com
|
||||
- ansible-galaxy - Expand the ``User-Agent`` to include more information and add it to more calls to Galaxy endpoints.
|
||||
- ansible-galaxy - Fix ``collection install`` when installing from a URL or a file - https://github.com/ansible/ansible/issues/65109
|
||||
- ansible-galaxy - Fix ``multipart/form-data`` body to include extra CRLF (https://github.com/ansible/ansible/pull/67942)
|
||||
- ansible-galaxy - Fix issue when compared installed dependencies with a collection having no ``MANIFEST.json`` or an empty version string in the json
|
||||
- ansible-galaxy - Fix pagination issue when retrieving role versions for install - https://github.com/ansible/ansible/issues/64355
|
||||
- ansible-galaxy - Fix up pagination searcher for collection versions on Automation Hub
|
||||
- ansible-galaxy - Fix url building to not truncate the URL (https://github.com/ansible/ansible/issues/61624)
|
||||
- ansible-galaxy - Handle the different task resource urls in API responses from publishing collection artifacts to galaxy servers using v2 and v3 APIs.
|
||||
- ansible-galaxy - Preserve symlinks when building and installing a collection
|
||||
- ansible-galaxy - Remove uneeded verbose messages when accessing local token file
|
||||
- ansible-galaxy - Return the HTTP code reason if no error msg was returned by the server - https://github.com/ansible/ansible/issues/64850
|
||||
- ansible-galaxy - Send SHA256 hashes when publishing a collection
|
||||
- ansible-galaxy - Set ``User-Agent`` to Ansible version when interacting with Galaxy or Automation Hub
|
||||
- ansible-galaxy - Treat the ``GALAXY_SERVER_LIST`` config entry that is defined but with no values as an empty list
|
||||
- ansible-galaxy - Utilize ``Templar`` for templating skeleton files, so that they have access to Ansible filters/tests/lookups (https://github.com/ansible/ansible/issues/69104)
|
||||
- ansible-galaxy - fix a bug where listing a specific role if it was not in the first path failed to find the role
|
||||
- ansible-galaxy - fix regression that prenented roles from being listed
|
||||
- ansible-galaxy - hide warning during collection installation if other installed collections do not contain a ``MANIFEST.json`` (https://github.com/ansible/ansible/issues/67490)
|
||||
- ansible-galaxy - properly list roles when the role name also happens to be in the role path (https://github.com/ansible/ansible/issues/67365)
|
||||
- ansible-galaxy - properly show the role description when running offline (https://github.com/ansible/ansible/issues/60167)
|
||||
- ansible-galaxy cli - fixed ``--version`` argument
|
||||
- ansible-galaxy collection - Preserve executable bit on build and preserve mode on install from what tar member is set to - https://github.com/ansible/ansible/issues/68415
|
||||
- ansible-galaxy collection download - fix downloading tar.gz files and collections in git repositories (https://github.com/ansible/ansible/issues/70429)
|
||||
- ansible-galaxy collection install - fix fallback mechanism if the AH server did not have the collection requested - https://github.com/ansible/ansible/issues/70940
|
||||
- ansible-galaxy role - Fix issue where ``--server`` was not being used for certain ``ansible-galaxy role`` actions - https://github.com/ansible/ansible/issues/61609
|
||||
- ansible-galaxy- On giving an invalid subcommand to ansible-galaxy, the help would be shown only for role subcommand (collection subcommand help is not shown). With this change, the entire help for ansible-galaxy (same as ansible-galaxy --help) is displayed along with the help for role subcommand. (https://github.com/ansible/ansible/issues/69009)
|
||||
- ansible-inventory - Fix long standing bug not loading vars plugins for group vars relative to the playbook dir when the '--playbook-dir' and '--export' flags are used together.
|
||||
- ansible-inventory - Fix regression loading vars plugins. (https://github.com/ansible/ansible/issues/65064)
|
||||
- ansible-inventory - Properly hide arguments that should not be shown (https://github.com/ansible/ansible/issues/61604)
|
||||
- ansible-inventory - Restore functionality to allow ``--graph`` to be limited by a host pattern
|
||||
- ansible-test - Add ``pytest < 6.0.0`` constraint for managed installations on Python 3.x to avoid issues with relative imports.
|
||||
- ansible-test - Change detection now properly resolves relative imports instead of treating them as absolute imports.
|
||||
- ansible-test - Code cleanup.
|
||||
- ansible-test - Disabled the ``duplicate-code`` and ``cyclic-import`` checks for the ``pylint`` sanity test due to inconsistent results.
|
||||
- ansible-test - Do not try to validate PowerShell modules ``setup.ps1``, ``slurp.ps1``, and ``async_status.ps1``
|
||||
- ansible-test - Do not warn on missing PowerShell or C# util that are in other collections
|
||||
- ansible-test - Fix PowerShell module util analysis to properly detect the names of a util when running in a collection
|
||||
- ansible-test - Fix regression introduced in https://github.com/ansible/ansible/pull/67063 which caused module_utils analysis to fail on Python 2.x.
|
||||
- ansible-test - Fix traceback in validate-modules test when argument_spec is None.
|
||||
- ansible-test - Make sure import sanity test virtual environments also remove ``pkg-resources`` if it is not removed by uninstalling ``setuptools``.
|
||||
- ansible-test - Remove out-of-date constraint on installing paramiko versions 2.5.0 or later in tests.
|
||||
- ansible-test - The ``ansible-doc`` sanity test now works for ``netconf`` plugins.
|
||||
- ansible-test - The ``import`` sanity test now correctly blocks access to python modules, not just packages, in the ``ansible`` package.
|
||||
- ansible-test - The ``import`` sanity test now correctly provides an empty ``ansible`` package.
|
||||
- ansible-test - The shebang sanity test now correctly identifies modules in subdirectories in collections.
|
||||
- ansible-test - Updated Python constraints for installing ``coverage`` to resolve issues on multiple Python versions when using the ``--coverage`` option.
|
||||
- ansible-test - Updated requirements to limit ``boto3`` and ``botocore`` versions on Python 2.6 to supported versions.
|
||||
- ansible-test - Use ``sys.exit`` instead of ``exit``.
|
||||
- ansible-test - Use ``virtualenv`` versions before 20 on provisioned macOS instances to remain compatible with an older pip install.
|
||||
- ansible-test - avoid use of deprecated junit_xml method
|
||||
- ansible-test - bump version of ACME test container. The new version includes updated dependencies.
|
||||
- ansible-test - during module validation, handle add_file_common_args only for top-level arguments.
|
||||
- ansible-test - during module validation, improve alias handling.
|
||||
- ansible-test - for local change detection, allow to specify branch to compare to with ``--base-branch`` for all types of tests (https://github.com/ansible/ansible/pull/69508).
|
||||
- ansible-test - improve ``deprecate()`` call checker.
|
||||
- ansible-test - integration and unit test change detection now works for filter, lookup and test plugins
|
||||
- ansible-test can now install argparse with ``--requirements`` or delegation when the pip version in use is older than version 7.1
|
||||
- ansible-test change detection - Run only sanity tests on ``docs/`` and ``changelogs/`` in collections, to avoid triggering full CI runs of integration and unit tests when files in these directories change.
|
||||
- ansible-test coverage - Fix the ``--all`` argument when generating coverage reports - https://github.com/ansible/ansible/issues/62096
|
||||
- ansible-test import sanity test now consistently reports errors against the file being tested.
|
||||
- ansible-test import sanity test now consistently reports warnings as errors.
|
||||
- ansible-test import sanity test now properly handles relative imports.
|
||||
- ansible-test import sanity test now properly invokes Ansible modules as scripts.
|
||||
- ansible-test is now able to find its ``egg-info`` directory when it contains the Ansible version number
|
||||
- ansible-test no longer errors reporting coverage when no Python coverage exists. This fixes issues reporting on PowerShell only coverage from collections.
|
||||
- ansible-test no longer fails when downloading test results for a collection without a ``tests`` directory when using the ``--docker`` option.
|
||||
- ansible-test no longer optimizes setting ``PATH`` by prepending the directory containing the selected Python interpreter when it is named ``python``. This avoids unintentionally making other programs available on ``PATH``, including an already installed version of Ansible.
|
||||
- ansible-test no longer tracebacks during change analysis due to processing an empty python file
|
||||
- ansible-test no longer tries to install ``coverage`` 5.0+ since those versions are unsupported
|
||||
- ansible-test no longer tries to install ``setuptools`` 45+ on Python 2.x since those versions are unsupported
|
||||
- ansible-test now always uses the ``--python`` option for ``virtualenv`` to select the correct interpreter when creating environments with the ``--venv`` option
|
||||
- ansible-test now correctly collects code coverage on the last task in a play. This should resolve issues with missing code coverage, empty coverage files and corrupted coverage files resulting from early worker termination.
|
||||
- ansible-test now correctly enumerates submodules when a collection resides below the repository root
|
||||
- ansible-test now correctly excludes the test results temporary directory when copying files from the remote test system to the local system
|
||||
- ansible-test now correctly includes inventory files ignored by git when running tests with the ``--docker`` option
|
||||
- ansible-test now correctly installs the requirements specified by the collection's unit and integration tests instead of the requirements specified for Ansible's own unit and integration tests
|
||||
- ansible-test now correctly recognizes imports in collections when using the ``--changed`` option.
|
||||
- ansible-test now correctly rewrites coverage paths for PowerShell files when testing collections
|
||||
- ansible-test now creates its integration test temporary directory within the collection so ansible-playbook can properly detect the default collection
|
||||
- ansible-test now enables color ``ls`` on a remote host only if the host supports the feature
|
||||
- ansible-test now ignores empty ``*.py`` files when analyzing module_utils imports for change detection
|
||||
- ansible-test now ignores version control within subdirectories of collections. Previously this condition was an error.
|
||||
- ansible-test now ignores warnings when comparing pip versions before and after integration tests run
|
||||
- ansible-test now installs sanity test requirements specific to each test instead of installing requirements for all sanity tests
|
||||
- ansible-test now installs the correct version of ``cryptography`` with ``--requirements`` or delegation when setuptools is older than version 18.5
|
||||
- ansible-test now limits Jinja2 installs to version 2.10 and earlier on Python 2.6
|
||||
- ansible-test now limits ``pathspec`` to versions prior to 0.6.0 on Python 2.6 to avoid installation errors
|
||||
- ansible-test now limits installation of ``hcloud`` to Python 2.7 and 3.5 - 3.8 since other versions are unsupported
|
||||
- ansible-test now limits the version of ``setuptools`` on Python 2.6 to versions older than 37
|
||||
- ansible-test now loads the collection loader plugin early enough for ansible_collections imports to work in unit test conftest.py modules
|
||||
- ansible-test now preserves existing SSH authorized keys when provisioning a remote host
|
||||
- ansible-test now properly activates the vcenter plugin for vcenter tests when docker is available
|
||||
- ansible-test now properly activates virtual environments created using the --venv option
|
||||
- ansible-test now properly creates a virtual environment using ``venv`` when running in a ``virtualenv`` created virtual environment
|
||||
- ansible-test now properly excludes the ``tests/output/`` directory from code coverage
|
||||
- ansible-test now properly handles creation of Python execv wrappers when the selected interpreter is a script
|
||||
- ansible-test now properly handles enumeration of git submodules. Enumeration is now done with ``git submodule status --recursive`` without specifying ``.`` for the path, since that could cause the command to fail. Instead, relative paths outside the current directory are filtered out of the results. Errors from ``git`` commands will now once again be reported as errors instead of warnings.
|
||||
- ansible-test now properly handles warnings for removed modules/plugins
|
||||
- ansible-test now properly ignores the ``tests/output//`` directory when not using git
|
||||
- ansible-test now properly installs requirements for multiple Python versions when running sanity tests
|
||||
- ansible-test now properly recognizes modules and module_utils in collections when using the ``blacklist`` plugin for the ``pylint`` sanity test
|
||||
- ansible-test now properly registers its own code in a virtual environment when running from an install
|
||||
- ansible-test now properly reports import errors for collections when running the import sanity test
|
||||
- ansible-test now properly searches for ``pythonX.Y`` instead of ``python`` when looking for the real python that created a ``virtualenv``
|
||||
- ansible-test now properly sets PYTHONPATH for tests when running from an Ansible installation
|
||||
- ansible-test now properly sets ``ANSIBLE_PLAYBOOK_DIR`` for integration tests so unqualified collection references work for adhoc ``ansible`` usage
|
||||
- ansible-test now properly uses a fresh copy of environment variables for each command invocation to avoid mixing vars between commands
|
||||
- ansible-test now shows sanity test doc links when installed (previously the links were only visible when running from source)
|
||||
- ansible-test now shows the correct source path instead of ``%s`` for collection role based test targets when the ``-v`` option is used
|
||||
- ansible-test now supports submodules using older ``git`` versions which require querying status from the top level directory of the repo.
|
||||
- ansible-test now updates SSH keys it generates with newer versions of ssh-keygen to function with Paramiko
|
||||
- ansible-test now upgrades ``pip`` with `--requirements`` or delegation as needed when the pip version in use is older than version 7.1
|
||||
- ansible-test now uses GNU tar format instead of the Python default when creating payloads for remote systems
|
||||
- ansible-test now uses ``pycodestyle`` frozen at version 2.6.0 for consistent test results.
|
||||
- ansible-test now uses modules from the ``ansible.windows`` collection for setup and teardown of ``windows-integration`` tests and code coverage
|
||||
- ansible-test once again properly collects code coverage for ``ansible-connection``
|
||||
- ansible-test validate-modules - Fix arg spec collector for PowerShell to find utils in both a collection and base.
|
||||
- ansible-test validate-modules - ``version_added`` on module level was not validated for modules in collections (https://github.com/ansible/ansible/pull/70869).
|
||||
- ansible-test validate-modules - return correct error codes ``option-invalid-version-added`` resp. ``return-invalid-version-added`` instead of the wrong error ``deprecation-either-date-or-version`` when an invalid value of ``version_added`` is specified for an option or a return value (https://github.com/ansible/ansible/pull/70869).
|
||||
- ansible-test validate-modules sanity test code ``missing-module-utils-import-c#-requirements`` is now ``missing-module-utils-import-csharp-requirements`` (fixes ignore bug).
|
||||
- ansible-test validate-modules sanity test code ``multiple-c#-utils-per-requires`` is now ``multiple-csharp-utils-per-requires`` (fixes ignore bug).
|
||||
- ansible-test validate-modules sanity test now checks for AnsibleModule initialization instead of module_utils imports, which did not work in many cases.
|
||||
- ansible-test validate-modules sanity test now properly handles collections imports using the Ansible collection loader.
|
||||
- ansible-test validate-modules sanity test now properly handles relative imports.
|
||||
- ansible-test validate-modules sanity test now properly handles sys.exit in modules.
|
||||
- ansible-test validate-modules sanity test now properly invokes Ansible modules as scripts.
|
||||
- ansible-test windows coverage - Ensure coverage reports are UTF-8 encoded without a BOM
|
||||
- ansible-test windows coverage - Output temp files as UTF-8 with BOM to standardise against non coverage runs
|
||||
- ansible-vault - Fix ``encrypt_string`` output in a tty when using ``--sdtin-name`` option (https://github.com/ansible/ansible/issues/65121)
|
||||
- ansible-vault create - Fix exception on no arguments given
|
||||
- api - time.clock is removed in Python 3.8, add backward compatible code (https://github.com/ansible/ansible/issues/70649).
|
||||
- apt - Fixed the issue the cache being updated while auto-installing its dependencies even when ``update_cache`` is set to false.
|
||||
- apt - include exception message from apt python library in error output
|
||||
- assemble - fix decrypt argument in the module (https://github.com/ansible/ansible/issues/65450).
|
||||
- assemble module - fix documentation - the remote_src property specified a default value of no but it's actually yes.
|
||||
- avoid fatal traceback when a bad FQCN for a callback is supplied in the whitelist (#69401).
|
||||
- basic - use PollSelector implementation when DefaultSelector fails (https://github.com/ansible/ansible/issues/70238).
|
||||
- become - Fix various plugins that still used play_context to get the become password instead of through the plugin - https://github.com/ansible/ansible/issues/62367
|
||||
- blockinfile - fix regression that results in incorrect block in file when the block to be inserted does not end in a line separator (https://github.com/ansible/ansible/pull/69734)
|
||||
- blockinfile - preserve line endings on update (https://github.com/ansible/ansible/issues/64966)
|
||||
- clean_facts - use correct variable to avoid unnecessary handling of ``AttributeError``
|
||||
- code - removes some Python compatibility code for dealing with socket timeouts in ``wait_for``
|
||||
- collection loader - ensure Jinja function cache is fully-populated before lookup
|
||||
- collection loader - fixed relative imports on Python 2.7, ensure pluginloader caches use full name to prevent names from being clobbered (https://github.com/ansible/ansible/pull/60317)
|
||||
- collection metadata - ensure collection loader uses libyaml/CSafeLoader to parse collection metadata if available
|
||||
- collection_loader - sort Windows modules below other plugin types so the correct builtin plugin inside a role is selected (https://github.com/ansible/ansible/issues/65298)
|
||||
- collections - Handle errors better for filters and tests in collections, where a non-existent collection is specified, or importing the plugin results in an exception (https://github.com/ansible/ansible/issues/66721)
|
||||
- combine filter - ``[dict1, [dict2]] | combine`` now raise an error; previously ``combine`` had an undocumented behaviour where it was flattening the list before combining it (https://github.com/ansible/ansible/pull/57894#discussion_r339517518).
|
||||
- config - encoding failures on config values should be non-fatal (https://github.com/ansible/ansible/issues/63310)
|
||||
- copy - Fix copy modes when using remote_src=yes and src is a directory with trailing slash.
|
||||
- copy - Fixed copy module not working in case that remote_src is enabled and dest ends in a / (https://github.com/ansible/ansible/pull/47238)
|
||||
- copy - recursive copy with ``remote_src=yes`` now recurses beyond first level. (Fixes https://github.com/ansible/ansible/issues/58284)
|
||||
- core - remove unneeded Python version checks.
|
||||
- core - replace a compatibility import of pycompat24.literal_eval with ast.literal_eval.
|
||||
- core filters - fix ``extract()`` filter when key does not exist in container (https://github.com/ansible/ansible/issues/64957)
|
||||
- cron - encode and decode crontab files in UTF-8 explicitly to allow non-ascii chars in cron filepath and job (https://github.com/ansible/ansible/issues/69492)
|
||||
- cron and cronvar - use get_bin_path utility to locate the default crontab executable instead of the hardcoded /usr/bin/crontab. (https://github.com/ansible/ansible/pull/59765)
|
||||
- cron cronvar - only run ``get_bin_path()`` once
|
||||
- cronvar - use correct binary name (https://github.com/ansible/ansible/issues/63274)
|
||||
- deal with cases in which just a file is pased and not a path with directories, now fileglob correctly searches in 'files/' subdirs.
|
||||
- debug - fixed an issue introduced in Ansible 2.4 where a loop of debug tasks would lose the "changed" status on each item.
|
||||
- discovery will NOT update incorrect host anymore when in delegate_to task.
|
||||
- display - Improve method of removing extra new line after warnings so it does not break Tower/Runner (https://github.com/ansible/ansible/pull/68517)
|
||||
- display - remove extra new line after warnings (https://github.com/ansible/ansible/pull/65199)
|
||||
- display - remove leading space when displaying WARNING messages
|
||||
- display logging - Fix issue where 3rd party modules will print tracebacks when attempting to log information when ``ANSIBLE_LOG_PATH`` is set - https://github.com/ansible/ansible/issues/65249
|
||||
- display logging - Fixed up the logging formatter to use the proper prefixes for ``u=user`` and ``p=process``
|
||||
- display logging - Re-added the ``name`` attribute to the log formatter so that the source of the log can be seen
|
||||
- dnf - Fix idempotence of `state: installed` (https://github.com/ansible/ansible/issues/64963)
|
||||
- dnf - Unified error messages when trying to install a nonexistent package with newer dnf (4.2.18) vs older dnf (4.2.9)
|
||||
- dnf - Unified error messages when trying to remove a wildcard name that is not currently installed, with newer dnf (4.2.18) vs older dnf (4.2.9)
|
||||
- dnf - enable logging using setup_loggers() API in dnf-4.2.17-6 or later
|
||||
- dnf - remove custom ``fetch_rpm_from_url`` method in favor of more general ``ansible.module_utils.urls.fetch_file``.
|
||||
- dnf module - Ensure the modules exit_json['msg'] response is always string, not sometimes a tuple.
|
||||
- ensure delegated vars can resolve hostvars object and access vars from hostvars[inventory_hostname].
|
||||
- ensure we pass on interpreter discovery values to delegated host.
|
||||
- env lookup plugin - Fix handling of environment variables values containing utf-8 characters. (https://github.com/ansible/ansible/issues/65298)
|
||||
- fact gathering - Display warnings and deprecation messages that are created during the fact gathering phase
|
||||
- facts - account for Slackware OS with ``+`` in the name (https://github.com/ansible/ansible/issues/38760)
|
||||
- facts - fix detection of virtualization type when dmi product name is KVM Server
|
||||
- facts - fix incorrect UTC timestamp in ``iso8601_micro`` and ``iso8601``
|
||||
- facts - introduce fact "ansible_processor_nproc" which reflects the number of vcpus available to processes (falls back to the number of vcpus available to the scheduler)
|
||||
- file - Removed unreachable code in module
|
||||
- file - change ``_diff_peek`` in argument spec to be the correct type, which is ``bool`` (https://github.com/ansible/ansible/issues/59433)
|
||||
- file - return ``'state': 'absent'`` when a file does not exist (https://github.com/ansible/ansible/issues/66171)
|
||||
- find - clarify description of ``contains`` (https://github.com/ansible/ansible/issues/61983)
|
||||
- fix issue in which symlinked collection cannot be listed, though the docs/plugins can be loaded if referenced directly.
|
||||
- fix issue with inventory_hostname and delegated host vars mixing on connection settings.
|
||||
- fix wrong command line length calculation in ``ansible-console`` when long command inputted
|
||||
- for those running uids for invalid users (containers), fallback to uid=<uid> when logging fixes #68007
|
||||
- free strategy - Include failed hosts when filtering notified hosts for handlers. The strategy base should determine whether or not to run handlers on those hosts depending on whether forcing handlers is enabled (https://github.com/ansible/ansible/issues/65254).
|
||||
- galaxy - Fix an AttributeError on ansible-galaxy install with an empty requirements.yml (https://github.com/ansible/ansible/issues/66725).
|
||||
- get_url - Don't treat no checksum as a checksum match (https://github.com/ansible/ansible/issues/61978)
|
||||
- get_url pass incorrect If-Modified-Since header (https://github.com/ansible/ansible/issues/67417)
|
||||
- git - when force=True, apply --force flag to git fetches as well
|
||||
- group - The group module was not correctly detecting whether a local group is existing or not with local set to yes if the same group exists in a non local group repository e.g. LDAP. (https://github.com/ansible/ansible/issues/58619)
|
||||
- group_by now should correctly refect changed status.
|
||||
- hostname - Fixed an issue where the hostname on the cloudlinux 6 server could not be set.
|
||||
- hostname - make module work on Manjaro Linux (https://github.com/ansible/ansible/issues/61382)
|
||||
- hurd - Address FIXMEs. Extract functionality and exit early.
|
||||
- if the ``type`` for a module parameter in the argument spec is callable, do not pass ``kwargs`` to avoid errors (https://github.com/ansible/ansible/issues/70017)
|
||||
- include_vars - fix stack trace when passing ``dirs`` in an ad-hoc command (https://github.com/ansible/ansible/issues/62633)
|
||||
- interpreter discovery will now use correct vars (from delegated host) when in delegate_to task.
|
||||
- junit callback - avoid use of deprecated junit_xml method
|
||||
- lineinfile - add example of using alternative backrefs syntax (https://github.com/ansible/ansible/issues/42794)
|
||||
- lineinfile - don't attempt mkdirs when path doesn't contain directory path
|
||||
- lineinfile - fix bug that caused multiple line insertions (https://github.com/ansible/ansible/issues/58923).
|
||||
- lineinfile - fix not subscriptable error in exception handling around file creation
|
||||
- lineinfile - properly handle inserting a line when backrefs are enabled and the line already exists in the file (https://github.com/ansible/ansible/issues/63756)
|
||||
- lineinfile - use ``module.tmpdir`` to allow configuration of the remote temp directory (https://github.com/ansible/ansible/issues/68218)
|
||||
- lineinfile - use correct index value when inserting a line at the end of a file (https://github.com/ansible/ansible/issues/63684)
|
||||
- loops - Do not indiscriminately mark loop items as unsafe, only apply unsafe to ``with_`` style loops. The items from ``loop`` should not be explicitly wrapped in unsafe. The underlying templating mechanism should dictate this. (https://github.com/ansible/ansible/issues/64379)
|
||||
- make ``no_log=False`` on a module option silence the ``no_log`` warning (https://github.com/ansible/ansible/issues/49465 https://github.com/ansible/ansible/issues/64656)
|
||||
- match docs for ssh and ensure pipelining is configurable per connection plugin.
|
||||
- module executor - Address issue where changes to Ansiballz module code, change the behavior of module execution as it pertains to ``__file__`` and ``sys.modules`` (https://github.com/ansible/ansible/issues/64664)
|
||||
- module_defaults - support candidate action names for relocated content
|
||||
- module_defaults - support short group names for content relocated to collections
|
||||
- now correclty merge and not just overwrite facts when gathering using multiple modules.
|
||||
- objects - Remove FIXME comment because no fix is needed.
|
||||
- optimize 'smart' detection from being run over and over and preferably do it at config time.
|
||||
- package_facts - fix value of ``vital`` attribute which is returned when ``pkg`` manager is used
|
||||
- package_facts - use module warnings rather than a custom implementation for reporting warnings
|
||||
- packaging_yum - replace legacy file handling with a file manager.
|
||||
- paramiko - catch and handle exception to prevent stack trace when running in FIPS mode
|
||||
- paramiko_ssh - Removed redundant conditional statement in ``_parse_proxy_command`` that always evaluated to True.
|
||||
- paramiko_ssh - improve authentication error message so it is less confusing
|
||||
- paramiko_ssh - optimized file handling by using a context manager.
|
||||
- pause - handle exception when there is no stdout (https://github.com/ansible/ansible/pull/47851)
|
||||
- pip - The virtualenv_command option can now include arguments without requiring the full path to the binary. (https://github.com/ansible/ansible/issues/52275)
|
||||
- pip - check_mode with ``state: present`` now returns the correct state for pre-release versioned packages
|
||||
- playbooks - detect and propagate failures in ``always`` blocks after ``rescue`` (https://github.com/ansible/ansible/issues/70000)
|
||||
- plugins - Allow ensure_type to decrypt the value for string types (and implicit string types) when value is an inline vault.
|
||||
- psexec - Fix issue where the Kerberos package was not detected as being available.
|
||||
- psexec - Fix issue where the ``interactive`` option was not being passed down to the library.
|
||||
- reboot - Add support for the runit init system, used on Void Linux, that does not support the normal Linux syntax.
|
||||
- reboot, win_reboot - add ``boot_time_command`` parameter to override the default command used to determine whether or not a system was rebooted (https://github.com/ansible/ansible/issues/58868)
|
||||
- remove update/restore of vars from play_context as it is now redundant.
|
||||
- replace use of deprecated functions from ``ansible.module_utils.basic``.
|
||||
- reset logging level to INFO due to CVE-2019-14846.
|
||||
- roles - Ensure that ``allow_duplicates: true`` enables to run single role multiple times (https://github.com/ansible/ansible/issues/64902)
|
||||
- runas - Fix the ``runas`` ``become_pass`` variable fallback from ``ansible_runas_runas`` to ``ansible_runas_pass``
|
||||
- service_facts - Now correctly parses systemd list-unit-files for systemd >=245
|
||||
- setup - properly detect yum package manager for IBM i.
|
||||
- setup - service_mgr - detect systemd even if it isn't running, such as during a container build
|
||||
- shell - fix quoting of mkdir command in creation of remote_tmp in order to allow spaces and other special characters (https://github.com/ansible/ansible/issues/69577).
|
||||
- shell cmd - Properly escape double quotes in the command argument
|
||||
- splunk httpapi plugin - switch from splunk.enterprise_security to splunk.es in runtime.yml to reflect upstream change of Collection Name
|
||||
- ssh connection plugin - use ``get_option()`` rather than ``_play_context`` to ensure ``ANSBILE_SSH_ARGS`` are applied properly (https://github.com/ansible/ansible/issues/70437)
|
||||
- synchronize - allow data to be passed between two managed nodes when using the docker connection plugin (https://github.com/ansible/ansible/pull/65698)
|
||||
- synchronize - fix password authentication on Python 2 (https://github.com/ansible/ansible/issues/56629)
|
||||
- sysctl - Remove FIXME comments to avoid confusion
|
||||
- systemd - don't require systemd to be running to enable/disable or mask/unmask units
|
||||
- systemd - the module should fail in check_mode when service not found on host (https://github.com/ansible/ansible/pull/68136).
|
||||
- sysvinit - Add missing parameter ``module`` in call to ``daemonize()``.
|
||||
- template lookup - ensure changes to the templar in the lookup, do not affect the templar context outside of the lookup (https://github.com/ansible/ansible/issues/60106)
|
||||
- template lookup - fix regression when templating hostvars (https://github.com/ansible/ansible/issues/63940)
|
||||
- the default parsing will now show existing JSON errors and not just YAML (last attempted), also we avoid YAML parsing when we know we only want JSON issue
|
||||
- throttle: the linear strategy didn't always stuck with the throttle limit
|
||||
- unarchive - Remove incorrect and unused function arguments.
|
||||
- unsafe_proxy - Ensure that data within a tuple is marked as unsafe (https://github.com/ansible/ansible/issues/65722)
|
||||
- update ``user`` module to support silencing ``no_log`` warnings in the future (see: https://github.com/ansible/ansible/pull/64733)
|
||||
- uri - Don't return the body even if it failed (https://github.com/ansible/ansible/issues/21003)
|
||||
- user - allow 13 asterisk characters in password field without warning
|
||||
- user - don't create home directory and missing parents when create_home == false (https://github.com/ansible/ansible/pull/70600).
|
||||
- user - fix comprasion on macOS so module does not improperly report a change (https://github.com/ansible/ansible/issues/62969)
|
||||
- user - fix stack trace on AIX when attempting to parse shadow file that does not exist (https://github.com/ansible/ansible/issues/62510)
|
||||
- user - on systems using busybox, honor the ``on_changed`` parameter to prevent unnecessary password changing (https://github.com/ansible/ansible/issues/65711)
|
||||
- user - update docs to reflect proper way to remove account from all groups
|
||||
- validate-modules - Fix hang when inspecting module with a delegate args spec type
|
||||
- virtual facts - detect generic container environment based on non-empty "container" env var
|
||||
- wait_for_connection - with pipelining enabled, interpreter discovery would fail if the first connection attempt was not successful
|
||||
- win setup - Fix redirection path for the windows setup module
|
||||
- win_exec_wrapper - Be more defensive when it comes to getting unhandled exceptions
|
||||
- win_package - Handle quoted and unquoted strings in the registry ``UninstallString`` value - https://github.com/ansible/ansible/issues/40973
|
||||
- win_uri win_get_url - Fix the behaviour of ``follow_redirects: safe`` to actual redirect on ``GET`` and ``HEAD`` requests - https://github.com/ansible/ansible/issues/65556
|
||||
- windows async - use full path when calling PowerShell to reduce reliance on environment vars being correct - https://github.com/ansible/ansible/issues/70655
|
||||
- windows environment - Support env vars that contain the unicode variant of single quotes - https://github.com/ansible-collections/ansible.windows/issues/45
|
||||
- winrm - preserve winrm forensic data on put_file failures
|
||||
- yum - fix bug that caused ``enablerepo`` to not be honored when used with disablerepo all wildcard/glob (https://github.com/ansible/ansible/issues/66549)
|
||||
- yum - fixed the handling of releasever parameter
|
||||
- yum - performance bugfix, the YumBase object was being instantiated multiple times unnecessarily, which lead to considerable overhead when operating against large sets of packages.
|
||||
- yum - yum tasks can no longer end up running non-yum modules
|
||||
- yum/dnf - check type of elements in a name
|
||||
|
||||
New Plugins
|
||||
-----------
|
||||
|
||||
Lookup
|
||||
~~~~~~
|
||||
|
||||
- unvault - read vaulted file(s) contents
|
||||
@ -1,416 +0,0 @@
|
||||
==================================================================
|
||||
ansible-core 2.19 "What Is and What Should Never Be" Release Notes
|
||||
==================================================================
|
||||
|
||||
.. contents:: Topics
|
||||
|
||||
v2.19.0b4
|
||||
=========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2025-05-12
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.19/porting_guides/porting_guide_core_2.19.html>`__
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- facts - add "CloudStack KVM Hypervisor" for Linux VM in virtual facts (https://github.com/ansible/ansible/issues/85089).
|
||||
- modules - use ``AnsibleModule.warn`` instead of passing ``warnings`` to ``exit_json`` or ``fail_json`` which is deprecated.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- ansible-test - Updated the ``pylint`` sanity test to skip some deprecation validation checks when all arguments are dynamic.
|
||||
- config - Preserve or apply Origin tag to values returned by config.
|
||||
- config - Prevented fatal errors when ``MODULE_IGNORE_EXTS`` configuration was set.
|
||||
- config - Templating failures on config defaults now issue a warning. Previously, failures silently returned an unrendered and untrusted template to the caller.
|
||||
- config - ``ensure_type`` correctly propagates trust and other tags on returned values.
|
||||
- config - ``ensure_type`` now converts mappings to ``dict`` when requested, instead of returning the mapping.
|
||||
- config - ``ensure_type`` now converts sequences to ``list`` when requested, instead of returning the sequence.
|
||||
- config - ``ensure_type`` now correctly errors when ``pathlist`` or ``pathspec`` types encounter non-string list items.
|
||||
- config - ``ensure_type`` now reports an error when ``bytes`` are provided for any known ``value_type``. Previously, the behavior was undefined, but often resulted in an unhandled exception or incorrect return type.
|
||||
- config - ``ensure_type`` with expected type ``int`` now properly converts ``True`` and ``False`` values to ``int``. Previously, these values were silently returned unmodified.
|
||||
- convert_bool.boolean API conversion function - Unhashable values passed to ``boolean`` behave like other non-boolean convertible values, returning False or raising ``TypeError`` depending on the value of ``strict``. Previously, unhashable values always raised ``ValueError`` due to an invalid set membership check.
|
||||
- dnf5 - when ``bugfix`` and/or ``security`` is specified, skip packages that do not have any such updates, even for new versions of libdnf5 where this functionality changed and it is considered failure
|
||||
- plugin loader - Apply template trust to strings loaded from plugin configuration definitions and doc fragments.
|
||||
- template action - Template files where the entire file's output renders as ``None`` are no longer emitted as the string "None", but instead render to an empty file as in previous releases.
|
||||
|
||||
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 parameter 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.
|
||||
6
changelogs/CHANGELOG.rst
Normal file
6
changelogs/CHANGELOG.rst
Normal file
@ -0,0 +1,6 @@
|
||||
Placeholder changelog
|
||||
=====================
|
||||
|
||||
This file is a placeholder; a version-specific ``CHANGELOG-vX.Y.rst`` will be generated during releases from fragments
|
||||
under changelogs/fragments. On release branches once a release has been created, consult the branch's version-specific
|
||||
file for changes that have occurred in that branch.
|
||||
@ -1,8 +0,0 @@
|
||||
Changelogs
|
||||
==========
|
||||
|
||||
As part of the release process a version-specific `CHANGELOG-vX.Y.rst` will be generated from fragments in
|
||||
the `fragments` directory.
|
||||
|
||||
On release branches once a release has been created, consult the branch's version-specific file for changes that have
|
||||
occurred in that branch. The `devel` branch does not have a generated changelog, only changelog fragments.
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: ansible-core
|
||||
title: Ansible Base
|
||||
release_tag_re: '(v(?:[\d.ab\-]|rc)+)'
|
||||
pre_release_tag_re: '(?P<pre_release>(?:[ab]|rc)+\d*)$'
|
||||
changes_file: changelog.yaml
|
||||
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- display correct error information when an error exists in the last line of the file (https://github.com/ansible/ansible/issues/16456)
|
||||
@ -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,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2025-05-12
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.19/porting_guides/porting_guide_core_2.19.html>`__
|
||||
3
changelogs/fragments/21003-uri-return-content.yml
Normal file
3
changelogs/fragments/21003-uri-return-content.yml
Normal file
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- uri - Don't return the body even if it failed
|
||||
(https://github.com/ansible/ansible/issues/21003)
|
||||
4
changelogs/fragments/32143-pause-background-hangs.yml
Normal file
4
changelogs/fragments/32143-pause-background-hangs.yml
Normal file
@ -0,0 +1,4 @@
|
||||
bugfixes:
|
||||
- >
|
||||
pause - Fix indefinite hang when using a pause task on a background
|
||||
process (https://github.com/ansible/ansible/issues/32142)
|
||||
2
changelogs/fragments/32386_debconf_password.yml
Normal file
2
changelogs/fragments/32386_debconf_password.yml
Normal file
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- debconf - add a note about no_log=True since module might expose sensitive information to logs (https://github.com/ansible/ansible/issues/32386).
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- ssh - connection plugin now supports a new variable ``sshpass_prompt`` which gets passed to ``sshpass`` allowing the user to set a custom substring to search for a password prompt (requires sshpass 1.06+)
|
||||
2
changelogs/fragments/38182_subelements.yml
Normal file
2
changelogs/fragments/38182_subelements.yml
Normal file
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- subelements - clarify the lookup plugin documentation for parameter handling (https://github.com/ansible/ansible/issues/38182).
|
||||
2
changelogs/fragments/38760-slackware-os-dist.yml
Normal file
2
changelogs/fragments/38760-slackware-os-dist.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- facts - account for Slackware OS with ``+`` in the name (https://github.com/ansible/ansible/issues/38760)
|
||||
@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- copy - Fixed copy module not working in case that remote_src is enabled and dest ends in a / (https://github.com/ansible/ansible/pull/47238)
|
||||
@ -0,0 +1,4 @@
|
||||
---
|
||||
bugfixes:
|
||||
- apt - Fixed the issue the cache being updated while auto-installing its
|
||||
dependencies even when ``update_cache`` is set to false.
|
||||
2
changelogs/fragments/54095-import_tasks-fix_no_task.yml
Normal file
2
changelogs/fragments/54095-import_tasks-fix_no_task.yml
Normal file
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- Raise error when no task file is provided to import_tasks (https://github.com/ansible/ansible/issues/54095).
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Provide more information in AnsibleUndefinedVariable (https://github.com/ansible/ansible/issues/55152)
|
||||
2
changelogs/fragments/565_default_callback.yml
Normal file
2
changelogs/fragments/565_default_callback.yml
Normal file
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- default_callback - moving 'check_mode_markers' documentation in default_callback doc_fragment (https://github.com/ansible-collections/community.general/issues/565).
|
||||
@ -0,0 +1,6 @@
|
||||
bugfixes:
|
||||
- synchronize - fix password authentication on Python 2 (https://github.com/ansible/ansible/issues/56629)
|
||||
- >
|
||||
AnsibleModule.run_command() - set ``close_fds`` to ``False`` on Python 2 if ``pass_fds`` are passed to
|
||||
``run_command()``. Since ``subprocess.Popen()`` on Python 2 does not have the ``pass_fds`` option,
|
||||
there is no way to exclude a specific list of file descriptors from being closed.
|
||||
2
changelogs/fragments/56832-remove-aptitude-warning.yml
Normal file
2
changelogs/fragments/56832-remove-aptitude-warning.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Remove the unnecessary warning about aptitude not being installed (https://github.com/ansible/ansible/issues/56832).
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- apt_repository - Implemented an exponential backoff behaviour when retrying to update the apt cache with new params ``update_cache_retry_max_delay`` and ``update_cache_retries`` to control the behavior.
|
||||
@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- Add missing gcp modules to gcp module defaults group
|
||||
4
changelogs/fragments/57894-combine-filter-rework.yml
Normal file
4
changelogs/fragments/57894-combine-filter-rework.yml
Normal file
@ -0,0 +1,4 @@
|
||||
bugfixes:
|
||||
- combine filter - ``[dict1, [dict2]] | combine`` now raise an error; previously ``combine`` had an undocumented behaviour where it was flattening the list before combining it (https://github.com/ansible/ansible/pull/57894#discussion_r339517518).
|
||||
minor_changes:
|
||||
- combine filter - now accept a ``list_merge`` argument which modifies its behaviour when the hashes to merge contain arrays/lists.
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- copy - recursive copy with ``remote_src=yes`` now recurses beyond first level. (Fixes https://github.com/ansible/ansible/issues/58284)
|
||||
5
changelogs/fragments/59060-validate-modules-aliases.yml
Normal file
5
changelogs/fragments/59060-validate-modules-aliases.yml
Normal file
@ -0,0 +1,5 @@
|
||||
bugfixes:
|
||||
- "ansible-test - during module validation, improve alias handling."
|
||||
- "ansible-test - during module validation, handle add_file_common_args only for top-level arguments."
|
||||
minor_changes:
|
||||
- "ansible-test - extend alias validation."
|
||||
2
changelogs/fragments/59438-hostname-use-hostnamectl.yml
Normal file
2
changelogs/fragments/59438-hostname-use-hostnamectl.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Use hostnamectl command to get current hostname for host while using systemd strategy (https://github.com/ansible/ansible/issues/59438).
|
||||
2
changelogs/fragments/59464-playbook-dir-envvar.yml
Normal file
2
changelogs/fragments/59464-playbook-dir-envvar.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- CLI - the `ANSIBLE_PLAYBOOK_DIR` envvar or `playbook_dir` config can now substitute for the --playbook-dir arg on CLIs that support it (https://github.com/ansible/ansible/issues/59464)
|
||||
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- cron and cronvar - use get_bin_path utility to locate the default crontab executable instead of the hardcoded /usr/bin/crontab. (https://github.com/ansible/ansible/pull/59765)
|
||||
5
changelogs/fragments/59772-fix_ansible_issue_58619.yaml
Normal file
5
changelogs/fragments/59772-fix_ansible_issue_58619.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
bugfixes:
|
||||
- >
|
||||
group - The group module was not correctly detecting whether a local
|
||||
group is existing or not with local set to yes if the same group
|
||||
exists in a non local group repository e.g. LDAP. (https://github.com/ansible/ansible/issues/58619)
|
||||
4
changelogs/fragments/60106-templar-contextmanager.yml
Normal file
4
changelogs/fragments/60106-templar-contextmanager.yml
Normal file
@ -0,0 +1,4 @@
|
||||
bugfixes:
|
||||
- template lookup - ensure changes to the templar in the lookup, do not
|
||||
affect the templar context outside of the lookup
|
||||
(https://github.com/ansible/ansible/issues/60106)
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- apt - Implemented an exponential backoff behaviour when retrying to update the cache with new params ``update_cache_retry_max_delay`` and ``update_cache_retries`` to control the behavior.
|
||||
2
changelogs/fragments/60587-doc_parsing.yml
Normal file
2
changelogs/fragments/60587-doc_parsing.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Handle exception encountered while parsing the argument description in module when invoked via ansible-doc command (https://github.com/ansible/ansible/issues/60587).
|
||||
2
changelogs/fragments/60595-systemd_import.yml
Normal file
2
changelogs/fragments/60595-systemd_import.yml
Normal file
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- Add an additional check for importing journal from systemd-python module (https://github.com/ansible/ansible/issues/60595).
|
||||
@ -0,0 +1,6 @@
|
||||
---
|
||||
minor_changes:
|
||||
- vars plugins - Support vars plugins in collections by adding the ability to whitelist plugins.
|
||||
- host_group_vars plugin - Require whitelisting and whitelist by default.
|
||||
- Add a global toggle to control when vars plugins are executed (per task by default for backward compatibility or after importing inventory).
|
||||
- Add a per-plugin stage option to override the global toggle to control the execution of individual vars plugins (per task, after inventory, or both).
|
||||
@ -0,0 +1,4 @@
|
||||
bugfixes:
|
||||
- ansible-inventory - Properly hide arguments that should not be shown
|
||||
(https://github.com/ansible/ansible/issues/61604)
|
||||
- ansible-inventory - Restore functionality to allow ``--graph`` to be limited by a host pattern
|
||||
2
changelogs/fragments/61624-fix-galaxy-url-building.yml
Normal file
2
changelogs/fragments/61624-fix-galaxy-url-building.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- ansible-galaxy - Fix url building to not truncate the URL (https://github.com/ansible/ansible/issues/61624)
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- "``AnsibleModule.load_file_common_arguments`` now allows to simply override ``path``."
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- Remove the deprecation message for the ``TRANSFORM_INVALID_GROUP_CHARS`` setting. (https://github.com/ansible/ansible/issues/61889)
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- get_url - Remove deprecated string format support for the headers option (https://github.com/ansible/ansible/issues/61891)
|
||||
3
changelogs/fragments/61978-get-url-no-checksum.yml
Normal file
3
changelogs/fragments/61978-get-url-no-checksum.yml
Normal file
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- get_url - Don't treat no checksum as a checksum match
|
||||
(https://github.com/ansible/ansible/issues/61978)
|
||||
2
changelogs/fragments/62096-test-coverage-all.yml
Normal file
2
changelogs/fragments/62096-test-coverage-all.yml
Normal file
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- ansible-test coverage - Fix the ``--all`` argument when generating coverage reports - https://github.com/ansible/ansible/issues/62096
|
||||
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- user - allow groups, append parameters with local
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user