Compare commits
49 Commits
stable-2.1
...
v2.7.0rc1
| Author | SHA1 | Date | |
|---|---|---|---|
| 0202339461 | |||
| 283859ec88 | |||
| c96a440063 | |||
| d8c687f638 | |||
| 26a96c72b2 | |||
| 08542720e5 | |||
| 0e2642e392 | |||
| c60baf0ca7 | |||
| 55eebfc6b7 | |||
| d3225b0494 | |||
| 22f50e416d | |||
| 6391f4f4c3 | |||
| 0c6c29900d | |||
| f0eebf9187 | |||
| 66759810a0 | |||
| 6d49cd643c | |||
| c89d9d5c8f | |||
| cc4854fdad | |||
| 264c7c22fb | |||
| 37d977c3b8 | |||
| 03cdcc7d58 | |||
| 3b46dd144b | |||
| c1c9d88ebc | |||
| 2a8ffbc0ed | |||
| ceb90f6632 | |||
| 25025d8246 | |||
| ddb6471d64 | |||
| c5f6aa69a1 | |||
| 055c3e8d0d | |||
| 82f8c2add9 | |||
| e857157072 | |||
| 576700a8a1 | |||
| e47f53e4ff | |||
| b73a7bbf39 | |||
| 3514a5d1b9 | |||
| cc5d880a61 | |||
| f9cf4b2d8a | |||
| 07161cf6d3 | |||
| bebda470a1 | |||
| 6586d6faff | |||
| 0a7d5ebd73 | |||
| 1d06a86481 | |||
| 4fff85d66f | |||
| 8a8da98546 | |||
| 097aaeb733 | |||
| 77ed7545fa | |||
| 8323524e9f | |||
| 9376c41c61 | |||
| f414424735 |
@ -1,212 +0,0 @@
|
||||
trigger:
|
||||
batch: true
|
||||
branches:
|
||||
include:
|
||||
- devel
|
||||
- stable-*
|
||||
|
||||
pr:
|
||||
autoCancel: true
|
||||
branches:
|
||||
include:
|
||||
- devel
|
||||
- stable-*
|
||||
|
||||
variables:
|
||||
- name: checkoutPath
|
||||
value: ansible
|
||||
- name: coverageBranches
|
||||
value: devel
|
||||
- name: entryPoint
|
||||
value: .azure-pipelines/commands/entry-point.sh
|
||||
- name: fetchDepth
|
||||
value: 500
|
||||
- name: defaultContainer
|
||||
value: quay.io/ansible/azure-pipelines-test-container:6.0.0
|
||||
|
||||
pool: Standard
|
||||
|
||||
stages:
|
||||
- stage: Sanity
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Test {0}
|
||||
testFormat: sanity/{0}
|
||||
targets:
|
||||
- test: 1
|
||||
- test: 2
|
||||
- stage: Units
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Python {0}
|
||||
testFormat: units/{0}
|
||||
targets:
|
||||
- test: 2.7
|
||||
- test: 3.5
|
||||
- test: 3.6
|
||||
- test: 3.7
|
||||
- test: 3.8
|
||||
- test: 3.9
|
||||
- test: '3.10'
|
||||
- test: 3.11
|
||||
- stage: Windows
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Server {0}
|
||||
testFormat: windows/{0}/1
|
||||
targets:
|
||||
- test: 2016
|
||||
- test: 2019
|
||||
- test: 2022
|
||||
- stage: Remote
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml # context/target
|
||||
parameters:
|
||||
targets:
|
||||
- name: macOS 13.2
|
||||
test: macos/13.2
|
||||
- name: RHEL 7.9
|
||||
test: rhel/7.9
|
||||
- name: RHEL 8.7 py36
|
||||
test: rhel/8.7@3.6
|
||||
- name: RHEL 8.7 py39
|
||||
test: rhel/8.7@3.9
|
||||
- name: RHEL 9.1
|
||||
test: rhel/9.1
|
||||
- name: FreeBSD 13.2
|
||||
test: freebsd/13.2
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- template: templates/matrix.yml # context/controller
|
||||
parameters:
|
||||
targets:
|
||||
- name: macOS 13.2
|
||||
test: macos/13.2
|
||||
- name: RHEL 8.7
|
||||
test: rhel/8.7
|
||||
- name: RHEL 9.1
|
||||
test: rhel/9.1
|
||||
- name: FreeBSD 13.2
|
||||
test: freebsd/13.2
|
||||
groups:
|
||||
- 3
|
||||
- 4
|
||||
- 5
|
||||
- template: templates/matrix.yml # context/controller (ansible-test container management)
|
||||
parameters:
|
||||
targets:
|
||||
- name: Alpine 3.17
|
||||
test: alpine/3.17
|
||||
- name: Fedora 38
|
||||
test: fedora/38
|
||||
- name: RHEL 8.7
|
||||
test: rhel/8.7
|
||||
- name: RHEL 9.1
|
||||
test: rhel/9.1
|
||||
- name: Ubuntu 20.04
|
||||
test: ubuntu/20.04
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu/22.04
|
||||
groups:
|
||||
- 6
|
||||
- stage: Docker
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: linux/{0}
|
||||
targets:
|
||||
- name: Alpine 3
|
||||
test: alpine3
|
||||
- name: CentOS 7
|
||||
test: centos7
|
||||
- name: Fedora 37
|
||||
test: fedora37
|
||||
- name: openSUSE 15
|
||||
test: opensuse15
|
||||
- name: Ubuntu 20.04
|
||||
test: ubuntu2004
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu2204
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: linux/{0}
|
||||
targets:
|
||||
- name: Alpine 3
|
||||
test: alpine3
|
||||
- name: Fedora 37
|
||||
test: fedora37
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu2204
|
||||
groups:
|
||||
- 3
|
||||
- 4
|
||||
- 5
|
||||
- stage: Galaxy
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Python {0}
|
||||
testFormat: galaxy/{0}/1
|
||||
targets:
|
||||
- test: 3.9
|
||||
- test: '3.10'
|
||||
- test: 3.11
|
||||
- stage: Generic
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Python {0}
|
||||
testFormat: generic/{0}/1
|
||||
targets:
|
||||
- test: 3.9
|
||||
- test: '3.10'
|
||||
- test: 3.11
|
||||
- stage: Incidental_Windows
|
||||
displayName: Incidental Windows
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Server {0}
|
||||
testFormat: i/windows/{0}
|
||||
targets:
|
||||
- test: 2016
|
||||
- test: 2019
|
||||
- test: 2022
|
||||
- stage: Incidental
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: i/{0}/1
|
||||
targets:
|
||||
- name: IOS Python
|
||||
test: ios/csr1000v/
|
||||
- stage: Summary
|
||||
condition: succeededOrFailed()
|
||||
dependsOn:
|
||||
- Sanity
|
||||
- Units
|
||||
- Windows
|
||||
- Remote
|
||||
- Docker
|
||||
- Galaxy
|
||||
- Generic
|
||||
- Incidental_Windows
|
||||
- Incidental
|
||||
jobs:
|
||||
- template: templates/coverage.yml
|
||||
@ -1 +0,0 @@
|
||||
remote.sh
|
||||
@ -1,34 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
cloud="${args[0]}"
|
||||
python="${args[1]}"
|
||||
group="${args[2]}"
|
||||
|
||||
target="shippable/${cloud}/group${group}/"
|
||||
|
||||
stage="${S:-prod}"
|
||||
|
||||
changed_all_target="shippable/${cloud}/smoketest/"
|
||||
|
||||
if ! ansible-test integration "${changed_all_target}" --list-targets > /dev/null 2>&1; then
|
||||
# no smoketest tests are available for this cloud
|
||||
changed_all_target="none"
|
||||
fi
|
||||
|
||||
if [ "${group}" == "1" ]; then
|
||||
# only run smoketest tests for group1
|
||||
changed_all_mode="include"
|
||||
else
|
||||
# smoketest tests already covered by group1
|
||||
changed_all_mode="exclude"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--remote-terminate always --remote-stage "${stage}" \
|
||||
--docker --python "${python}" --changed-all-target "${changed_all_target}" --changed-all-mode "${changed_all_mode}"
|
||||
@ -1,62 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
script="${args[0]}"
|
||||
|
||||
test="$1"
|
||||
|
||||
docker images
|
||||
docker ps
|
||||
|
||||
for container in $(docker ps --format '{{.Image}} {{.ID}}' | grep -v -e '^quay.io/ansible/azure-pipelines-test-container:' | sed 's/^.* //'); do
|
||||
docker rm -f "${container}" || true # ignore errors
|
||||
done
|
||||
|
||||
docker ps
|
||||
|
||||
export PATH="${PWD}/bin:${PATH}"
|
||||
export PYTHONIOENCODING='utf-8'
|
||||
|
||||
if [ -n "${COVERAGE:-}" ]; then
|
||||
# on-demand coverage reporting triggered by setting the COVERAGE environment variable to a non-empty value
|
||||
export COVERAGE="--coverage"
|
||||
elif [[ "${COMMIT_MESSAGE}" =~ ci_coverage ]]; then
|
||||
# on-demand coverage reporting triggered by having 'ci_coverage' in the latest commit message
|
||||
export COVERAGE="--coverage"
|
||||
else
|
||||
# on-demand coverage reporting disabled (default behavior, always-on coverage reporting remains enabled)
|
||||
export COVERAGE="--coverage-check"
|
||||
fi
|
||||
|
||||
if [ -n "${COMPLETE:-}" ]; then
|
||||
# disable change detection triggered by setting the COMPLETE environment variable to a non-empty value
|
||||
export CHANGED=""
|
||||
elif [[ "${COMMIT_MESSAGE}" =~ ci_complete ]]; then
|
||||
# disable change detection triggered by having 'ci_complete' in the latest commit message
|
||||
export CHANGED=""
|
||||
else
|
||||
# enable change detection (default behavior)
|
||||
export CHANGED="--changed"
|
||||
fi
|
||||
|
||||
if [ "${IS_PULL_REQUEST:-}" == "true" ]; then
|
||||
# run unstable tests which are targeted by focused changes on PRs
|
||||
export UNSTABLE="--allow-unstable-changed"
|
||||
else
|
||||
# do not run unstable tests outside PRs
|
||||
export UNSTABLE=""
|
||||
fi
|
||||
|
||||
if [[ "${COVERAGE:-}" == "--coverage" ]]; then
|
||||
timeout=60
|
||||
else
|
||||
timeout=50
|
||||
fi
|
||||
|
||||
ansible-test env --dump --show --timeout "${timeout}" --color -v
|
||||
|
||||
".azure-pipelines/commands/${script}.sh" "${test}"
|
||||
@ -1 +0,0 @@
|
||||
remote.sh
|
||||
@ -1 +0,0 @@
|
||||
remote.sh
|
||||
@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
python="${args[1]}"
|
||||
|
||||
if [ "${#args[@]}" -gt 2 ]; then
|
||||
target="shippable/generic/group${args[2]}/"
|
||||
else
|
||||
target="shippable/generic/"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--docker default --python "${python}"
|
||||
@ -1,14 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Temporary script to support side-by-side testing for incidental code coverage.
|
||||
# Once collection migration has been completed the incidental tests can be combined with the regular tests.
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
script="${args[1]}"
|
||||
|
||||
IFS='/' test="${args[*]:1}"
|
||||
|
||||
".azure-pipelines/commands/incidental/${script}.sh" "${test}"
|
||||
@ -1 +0,0 @@
|
||||
network.sh
|
||||
@ -1,40 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
platform="${args[0]}"
|
||||
version="${args[1]}"
|
||||
python_version="${args[2]}"
|
||||
|
||||
target="shippable/${platform}/incidental/"
|
||||
|
||||
stage="${S:-prod}"
|
||||
provider="${P:-default}"
|
||||
|
||||
# python versions to test in order
|
||||
# all versions run full tests
|
||||
IFS=' ' read -r -a python_versions <<< \
|
||||
"$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(" ".join(constants.CONTROLLER_PYTHON_VERSIONS))')"
|
||||
|
||||
if [ "${python_version}" ]; then
|
||||
# limit tests to a single python version
|
||||
python_versions=("${python_version}")
|
||||
fi
|
||||
|
||||
for python_version in "${python_versions[@]}"; do
|
||||
# terminate remote instances on the final python version tested
|
||||
if [ "${python_version}" = "${python_versions[-1]}" ]; then
|
||||
terminate="always"
|
||||
else
|
||||
terminate="never"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test network-integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--platform "${platform}/${version}" \
|
||||
--docker default --python "${python_version}" \
|
||||
--remote-terminate "${terminate}" --remote-stage "${stage}" --remote-provider "${provider}"
|
||||
done
|
||||
@ -1,52 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
version="${args[1]}"
|
||||
|
||||
target="shippable/windows/incidental/"
|
||||
|
||||
stage="${S:-prod}"
|
||||
provider="${P:-default}"
|
||||
|
||||
# python version to run full tests on while other versions run minimal tests
|
||||
python_default="$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(constants.CONTROLLER_MIN_PYTHON_VERSION)')"
|
||||
|
||||
# version to test when only testing a single version
|
||||
single_version=2012-R2
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test windows-integration --list-targets -v ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} > /tmp/explain.txt 2>&1 || { cat /tmp/explain.txt && false; }
|
||||
{ grep ' windows-integration: .* (targeted)$' /tmp/explain.txt || true; } > /tmp/windows.txt
|
||||
|
||||
if [ -s /tmp/windows.txt ] || [ "${CHANGED:+$CHANGED}" == "" ]; then
|
||||
echo "Detected changes requiring integration tests specific to Windows:"
|
||||
cat /tmp/windows.txt
|
||||
|
||||
echo "Running Windows integration tests for multiple versions concurrently."
|
||||
|
||||
platforms=(
|
||||
--windows "${version}"
|
||||
)
|
||||
else
|
||||
echo "No changes requiring integration tests specific to Windows were detected."
|
||||
echo "Running Windows integration tests for a single version only: ${single_version}"
|
||||
|
||||
if [ "${version}" != "${single_version}" ]; then
|
||||
echo "Skipping this job since it is for: ${version}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
platforms=(
|
||||
--windows "${version}"
|
||||
)
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test windows-integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
"${platforms[@]}" \
|
||||
--docker default --python "${python_default}" \
|
||||
--remote-terminate always --remote-stage "${stage}" --remote-provider "${provider}"
|
||||
@ -1 +0,0 @@
|
||||
remote.sh
|
||||
@ -1,32 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
platform="${args[0]}"
|
||||
version="${args[1]}"
|
||||
pyver=default
|
||||
|
||||
# check for explicit python version like 8.3@3.8
|
||||
declare -a splitversion
|
||||
IFS='@' read -ra splitversion <<< "$version"
|
||||
|
||||
if [ "${#splitversion[@]}" -gt 1 ]; then
|
||||
version="${splitversion[0]}"
|
||||
pyver="${splitversion[1]}"
|
||||
fi
|
||||
|
||||
if [ "${#args[@]}" -gt 2 ]; then
|
||||
target="shippable/posix/group${args[2]}/"
|
||||
else
|
||||
target="shippable/posix/"
|
||||
fi
|
||||
|
||||
stage="${S:-prod}"
|
||||
provider="${P:-default}"
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
--python "${pyver}" --remote "${platform}/${version}" --remote-terminate always --remote-stage "${stage}" --remote-provider "${provider}" \
|
||||
@ -1 +0,0 @@
|
||||
remote.sh
|
||||
@ -1,41 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
group="${args[1]}"
|
||||
|
||||
group2_include=(
|
||||
ansible-doc
|
||||
changelog
|
||||
package-data
|
||||
pep8
|
||||
pylint
|
||||
validate-modules
|
||||
)
|
||||
|
||||
group1_exclude=(
|
||||
"${group2_include[@]}"
|
||||
)
|
||||
|
||||
options=()
|
||||
|
||||
case "${group}" in
|
||||
1)
|
||||
for name in "${group1_exclude[@]}"; do
|
||||
options+=(--skip-test "${name}")
|
||||
done
|
||||
;;
|
||||
2)
|
||||
for name in "${group2_include[@]}"; do
|
||||
options+=(--test "${name}")
|
||||
done
|
||||
;;
|
||||
esac
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test sanity --color -v --junit ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} \
|
||||
--docker \
|
||||
"${options[@]}" --allow-disabled
|
||||
@ -1 +0,0 @@
|
||||
remote.sh
|
||||
@ -1,94 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o pipefail -eux
|
||||
|
||||
declare -a args
|
||||
IFS='/:' read -ra args <<< "$1"
|
||||
|
||||
version="${args[1]}"
|
||||
group="${args[2]}"
|
||||
|
||||
target="shippable/windows/group${group}/"
|
||||
|
||||
stage="${S:-prod}"
|
||||
provider="${P:-default}"
|
||||
|
||||
# python versions to test in order
|
||||
IFS=' ' read -r -a python_versions <<< \
|
||||
"$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(" ".join(constants.CONTROLLER_PYTHON_VERSIONS))')"
|
||||
|
||||
# python version to run full tests on while other versions run minimal tests
|
||||
python_default="$(PYTHONPATH="${PWD}/test/lib" python -c 'from ansible_test._internal import constants; print(constants.CONTROLLER_MIN_PYTHON_VERSION)')"
|
||||
|
||||
# version to test when only testing a single version
|
||||
single_version=2012-R2
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test windows-integration --list-targets -v ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} > /tmp/explain.txt 2>&1 || { cat /tmp/explain.txt && false; }
|
||||
{ grep ' windows-integration: .* (targeted)$' /tmp/explain.txt || true; } > /tmp/windows.txt
|
||||
|
||||
if [ -s /tmp/windows.txt ] || [ "${CHANGED:+$CHANGED}" == "" ]; then
|
||||
echo "Detected changes requiring integration tests specific to Windows:"
|
||||
cat /tmp/windows.txt
|
||||
|
||||
echo "Running Windows integration tests for multiple versions concurrently."
|
||||
|
||||
platforms=(
|
||||
--windows "${version}"
|
||||
)
|
||||
else
|
||||
echo "No changes requiring integration tests specific to Windows were detected."
|
||||
echo "Running Windows integration tests for a single version only: ${single_version}"
|
||||
|
||||
if [ "${version}" != "${single_version}" ]; then
|
||||
echo "Skipping this job since it is for: ${version}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
platforms=(
|
||||
--windows "${version}"
|
||||
)
|
||||
fi
|
||||
|
||||
for version in "${python_versions[@]}"; do
|
||||
changed_all_target="all"
|
||||
changed_all_mode="default"
|
||||
|
||||
if [ "${version}" == "${python_default}" ]; then
|
||||
# smoketest tests
|
||||
if [ "${CHANGED}" ]; then
|
||||
# with change detection enabled run tests for anything changed
|
||||
# use the smoketest tests for any change that triggers all tests
|
||||
ci="${target}"
|
||||
changed_all_target="shippable/windows/smoketest/"
|
||||
if [ "${target}" == "shippable/windows/group1/" ]; then
|
||||
# only run smoketest tests for group1
|
||||
changed_all_mode="include"
|
||||
else
|
||||
# smoketest tests already covered by group1
|
||||
changed_all_mode="exclude"
|
||||
fi
|
||||
else
|
||||
# without change detection enabled run entire test group
|
||||
ci="${target}"
|
||||
fi
|
||||
else
|
||||
# only run minimal tests for group1
|
||||
if [ "${target}" != "shippable/windows/group1/" ]; then continue; fi
|
||||
# minimal tests for other python versions
|
||||
ci="shippable/windows/minimal/"
|
||||
fi
|
||||
|
||||
# terminate remote instances on the final python version tested
|
||||
if [ "${version}" = "${python_versions[-1]}" ]; then
|
||||
terminate="always"
|
||||
else
|
||||
terminate="never"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
ansible-test windows-integration --color -v --retry-on-error "${ci}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
|
||||
"${platforms[@]}" --changed-all-target "${changed_all_target}" --changed-all-mode "${changed_all_mode}" \
|
||||
--docker default --python "${version}" \
|
||||
--remote-terminate "${terminate}" --remote-stage "${stage}" --remote-provider "${provider}"
|
||||
done
|
||||
@ -1,20 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Aggregate code coverage results for later processing.
|
||||
|
||||
set -o pipefail -eu
|
||||
|
||||
agent_temp_directory="$1"
|
||||
|
||||
PATH="${PWD}/bin:${PATH}"
|
||||
|
||||
mkdir "${agent_temp_directory}/coverage/"
|
||||
|
||||
options=(--venv --color -v)
|
||||
|
||||
ansible-test coverage combine --group-by command --export "${agent_temp_directory}/coverage/" "${options[@]}"
|
||||
|
||||
if ansible-test coverage analyze targets generate --help >/dev/null 2>&1; then
|
||||
# Only analyze coverage if the installed version of ansible-test supports it.
|
||||
# Doing so allows this script to work unmodified for multiple Ansible versions.
|
||||
ansible-test coverage analyze targets generate "${agent_temp_directory}/coverage/coverage-analyze-targets.json" "${options[@]}"
|
||||
fi
|
||||
@ -1,60 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job.
|
||||
Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}"
|
||||
The recommended coverage artifact name format is: Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)
|
||||
Keep in mind that Azure Pipelines does not enforce unique job display names (only names).
|
||||
It is up to pipeline authors to avoid name collisions when deviating from the recommended format.
|
||||
"""
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
"""Main program entry point."""
|
||||
source_directory = sys.argv[1]
|
||||
|
||||
if '/ansible_collections/' in os.getcwd():
|
||||
output_path = "tests/output"
|
||||
else:
|
||||
output_path = "test/results"
|
||||
|
||||
destination_directory = os.path.join(output_path, 'coverage')
|
||||
|
||||
if not os.path.exists(destination_directory):
|
||||
os.makedirs(destination_directory)
|
||||
|
||||
jobs = {}
|
||||
count = 0
|
||||
|
||||
for name in os.listdir(source_directory):
|
||||
match = re.search('^Coverage (?P<attempt>[0-9]+) (?P<label>.+)$', name)
|
||||
label = match.group('label')
|
||||
attempt = int(match.group('attempt'))
|
||||
jobs[label] = max(attempt, jobs.get(label, 0))
|
||||
|
||||
for label, attempt in jobs.items():
|
||||
name = 'Coverage {attempt} {label}'.format(label=label, attempt=attempt)
|
||||
source = os.path.join(source_directory, name)
|
||||
source_files = os.listdir(source)
|
||||
|
||||
for source_file in source_files:
|
||||
source_path = os.path.join(source, source_file)
|
||||
destination_path = os.path.join(destination_directory, source_file + '.' + label)
|
||||
print('"%s" -> "%s"' % (source_path, destination_path))
|
||||
shutil.copyfile(source_path, destination_path)
|
||||
count += 1
|
||||
|
||||
print('Coverage file count: %d' % count)
|
||||
print('##vso[task.setVariable variable=coverageFileCount]%d' % count)
|
||||
print('##vso[task.setVariable variable=outputPath]%s' % output_path)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@ -1,24 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Check the test results and set variables for use in later steps.
|
||||
|
||||
set -o pipefail -eu
|
||||
|
||||
if [[ "$PWD" =~ /ansible_collections/ ]]; then
|
||||
output_path="tests/output"
|
||||
else
|
||||
output_path="test/results"
|
||||
fi
|
||||
|
||||
echo "##vso[task.setVariable variable=outputPath]${output_path}"
|
||||
|
||||
if compgen -G "${output_path}"'/junit/*.xml' > /dev/null; then
|
||||
echo "##vso[task.setVariable variable=haveTestResults]true"
|
||||
fi
|
||||
|
||||
if compgen -G "${output_path}"'/bot/ansible-test-*' > /dev/null; then
|
||||
echo "##vso[task.setVariable variable=haveBotResults]true"
|
||||
fi
|
||||
|
||||
if compgen -G "${output_path}"'/coverage/*' > /dev/null; then
|
||||
echo "##vso[task.setVariable variable=haveCoverageData]true"
|
||||
fi
|
||||
@ -1,101 +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.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import dataclasses
|
||||
import pathlib
|
||||
import shutil
|
||||
import subprocess
|
||||
import tempfile
|
||||
import typing as t
|
||||
import urllib.request
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
class CoverageFile:
|
||||
name: str
|
||||
path: pathlib.Path
|
||||
flags: t.List[str]
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
class Args:
|
||||
dry_run: bool
|
||||
path: pathlib.Path
|
||||
|
||||
|
||||
def parse_args() -> Args:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-n', '--dry-run', action='store_true')
|
||||
parser.add_argument('path', type=pathlib.Path)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
# Store arguments in a typed dataclass
|
||||
fields = dataclasses.fields(Args)
|
||||
kwargs = {field.name: getattr(args, field.name) for field in fields}
|
||||
|
||||
return Args(**kwargs)
|
||||
|
||||
|
||||
def process_files(directory: pathlib.Path) -> t.Tuple[CoverageFile, ...]:
|
||||
processed = []
|
||||
for file in directory.joinpath('reports').glob('coverage*.xml'):
|
||||
name = file.stem.replace('coverage=', '')
|
||||
|
||||
# Get flags from name
|
||||
flags = name.replace('-powershell', '').split('=') # Drop '-powershell' suffix
|
||||
flags = [flag if not flag.startswith('stub') else flag.split('-')[0] for flag in flags] # Remove "-01" from stub files
|
||||
|
||||
processed.append(CoverageFile(name, file, flags))
|
||||
|
||||
return tuple(processed)
|
||||
|
||||
|
||||
def upload_files(codecov_bin: pathlib.Path, files: t.Tuple[CoverageFile, ...], dry_run: bool = False) -> None:
|
||||
for file in files:
|
||||
cmd = [
|
||||
str(codecov_bin),
|
||||
'--name', file.name,
|
||||
'--file', str(file.path),
|
||||
]
|
||||
for flag in file.flags:
|
||||
cmd.extend(['--flags', flag])
|
||||
|
||||
if dry_run:
|
||||
print(f'DRY-RUN: Would run command: {cmd}')
|
||||
continue
|
||||
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
|
||||
def download_file(url: str, dest: pathlib.Path, flags: int, dry_run: bool = False) -> None:
|
||||
if dry_run:
|
||||
print(f'DRY-RUN: Would download {url} to {dest} and set mode to {flags:o}')
|
||||
return
|
||||
|
||||
with urllib.request.urlopen(url) as resp:
|
||||
with dest.open('w+b') as f:
|
||||
# Read data in chunks rather than all at once
|
||||
shutil.copyfileobj(resp, f, 64 * 1024)
|
||||
|
||||
dest.chmod(flags)
|
||||
|
||||
|
||||
def main():
|
||||
args = parse_args()
|
||||
url = 'https://ci-files.testing.ansible.com/codecov/linux/codecov'
|
||||
with tempfile.TemporaryDirectory(prefix='codecov-') as tmpdir:
|
||||
codecov_bin = pathlib.Path(tmpdir) / 'codecov'
|
||||
download_file(url, codecov_bin, 0o755, args.dry_run)
|
||||
|
||||
files = process_files(args.path)
|
||||
upload_files(codecov_bin, files, args.dry_run)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@ -1,17 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Generate code coverage reports for uploading to Azure Pipelines and codecov.io.
|
||||
|
||||
set -o pipefail -eu
|
||||
|
||||
PATH="${PWD}/bin:${PATH}"
|
||||
|
||||
if ! ansible-test --help >/dev/null 2>&1; then
|
||||
# Install the devel version of ansible-test for generating code coverage reports.
|
||||
# This is only used by Ansible Collections, which are typically tested against multiple Ansible versions (in separate jobs).
|
||||
# Since a version of ansible-test is required that can work the output from multiple older releases, the devel version is used.
|
||||
pip install https://github.com/ansible/ansible/archive/devel.tar.gz --disable-pip-version-check
|
||||
fi
|
||||
|
||||
# Generate stubs using docker (if supported) otherwise fall back to using a virtual environment instead.
|
||||
# The use of docker is required when Powershell code is present, but Ansible 2.12 was the first version to support --docker with coverage.
|
||||
ansible-test coverage xml --group-by command --stub --docker --color -v || ansible-test coverage xml --group-by command --stub --venv --color -v
|
||||
@ -1,34 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Configure the test environment and run the tests.
|
||||
|
||||
set -o pipefail -eu
|
||||
|
||||
entry_point="$1"
|
||||
test="$2"
|
||||
read -r -a coverage_branches <<< "$3" # space separated list of branches to run code coverage on for scheduled builds
|
||||
|
||||
export COMMIT_MESSAGE
|
||||
export COMPLETE
|
||||
export COVERAGE
|
||||
export IS_PULL_REQUEST
|
||||
|
||||
if [ "${SYSTEM_PULLREQUEST_TARGETBRANCH:-}" ]; then
|
||||
IS_PULL_REQUEST=true
|
||||
COMMIT_MESSAGE=$(git log --format=%B -n 1 HEAD^2)
|
||||
else
|
||||
IS_PULL_REQUEST=
|
||||
COMMIT_MESSAGE=$(git log --format=%B -n 1 HEAD)
|
||||
fi
|
||||
|
||||
COMPLETE=
|
||||
COVERAGE=
|
||||
|
||||
if [ "${BUILD_REASON}" = "Schedule" ]; then
|
||||
COMPLETE=yes
|
||||
|
||||
if printf '%s\n' "${coverage_branches[@]}" | grep -q "^${BUILD_SOURCEBRANCHNAME}$"; then
|
||||
COVERAGE=yes
|
||||
fi
|
||||
fi
|
||||
|
||||
"${entry_point}" "${test}" 2>&1 | "$(dirname "$0")/time-command.py"
|
||||
@ -1,25 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
"""Prepends a relative timestamp to each input line from stdin and writes it to stdout."""
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
import sys
|
||||
import time
|
||||
|
||||
|
||||
def main():
|
||||
"""Main program entry point."""
|
||||
start = time.time()
|
||||
|
||||
sys.stdin.reconfigure(errors='surrogateescape')
|
||||
sys.stdout.reconfigure(errors='surrogateescape')
|
||||
|
||||
for line in sys.stdin:
|
||||
seconds = time.time() - start
|
||||
sys.stdout.write('%02d:%02d %s' % (seconds // 60, seconds % 60, line))
|
||||
sys.stdout.flush()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@ -1,29 +0,0 @@
|
||||
# This template adds a job for processing code coverage data.
|
||||
# It will upload results to Azure Pipelines and codecov.io.
|
||||
# Use it from a job stage that completes after all other jobs have completed.
|
||||
# This can be done by placing it in a separate summary stage that runs after the test stage(s) have completed.
|
||||
|
||||
jobs:
|
||||
- job: Coverage
|
||||
displayName: Code Coverage
|
||||
container: $[ variables.defaultContainer ]
|
||||
workspace:
|
||||
clean: all
|
||||
steps:
|
||||
- checkout: self
|
||||
fetchDepth: $(fetchDepth)
|
||||
path: $(checkoutPath)
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: Download Coverage Data
|
||||
inputs:
|
||||
path: coverage/
|
||||
patterns: "Coverage */*=coverage.combined"
|
||||
- bash: .azure-pipelines/scripts/combine-coverage.py coverage/
|
||||
displayName: Combine Coverage Data
|
||||
- bash: .azure-pipelines/scripts/report-coverage.sh
|
||||
displayName: Generate Coverage Report
|
||||
condition: gt(variables.coverageFileCount, 0)
|
||||
- bash: .azure-pipelines/scripts/publish-codecov.py "$(outputPath)"
|
||||
displayName: Publish to codecov.io
|
||||
condition: gt(variables.coverageFileCount, 0)
|
||||
continueOnError: true
|
||||
@ -1,55 +0,0 @@
|
||||
# This template uses the provided targets and optional groups to generate a matrix which is then passed to the test template.
|
||||
# If this matrix template does not provide the required functionality, consider using the test template directly instead.
|
||||
|
||||
parameters:
|
||||
# A required list of dictionaries, one per test target.
|
||||
# Each item in the list must contain a "test" or "name" key.
|
||||
# Both may be provided. If one is omitted, the other will be used.
|
||||
- name: targets
|
||||
type: object
|
||||
|
||||
# An optional list of values which will be used to multiply the targets list into a matrix.
|
||||
# Values can be strings or numbers.
|
||||
- name: groups
|
||||
type: object
|
||||
default: []
|
||||
|
||||
# An optional format string used to generate the job name.
|
||||
# - {0} is the name of an item in the targets list.
|
||||
- name: nameFormat
|
||||
type: string
|
||||
default: "{0}"
|
||||
|
||||
# An optional format string used to generate the test name.
|
||||
# - {0} is the name of an item in the targets list.
|
||||
- name: testFormat
|
||||
type: string
|
||||
default: "{0}"
|
||||
|
||||
# An optional format string used to add the group to the job name.
|
||||
# {0} is the formatted name of an item in the targets list.
|
||||
# {{1}} is the group -- be sure to include the double "{{" and "}}".
|
||||
- name: nameGroupFormat
|
||||
type: string
|
||||
default: "{0} - {{1}}"
|
||||
|
||||
# An optional format string used to add the group to the test name.
|
||||
# {0} is the formatted test of an item in the targets list.
|
||||
# {{1}} is the group -- be sure to include the double "{{" and "}}".
|
||||
- name: testGroupFormat
|
||||
type: string
|
||||
default: "{0}/{{1}}"
|
||||
|
||||
jobs:
|
||||
- template: test.yml
|
||||
parameters:
|
||||
jobs:
|
||||
- ${{ if eq(length(parameters.groups), 0) }}:
|
||||
- ${{ each target in parameters.targets }}:
|
||||
- name: ${{ format(parameters.nameFormat, coalesce(target.name, target.test)) }}
|
||||
test: ${{ format(parameters.testFormat, coalesce(target.test, target.name)) }}
|
||||
- ${{ if not(eq(length(parameters.groups), 0)) }}:
|
||||
- ${{ each group in parameters.groups }}:
|
||||
- ${{ each target in parameters.targets }}:
|
||||
- name: ${{ format(format(parameters.nameGroupFormat, parameters.nameFormat), coalesce(target.name, target.test), group) }}
|
||||
test: ${{ format(format(parameters.testGroupFormat, parameters.testFormat), coalesce(target.test, target.name), group) }}
|
||||
@ -1,45 +0,0 @@
|
||||
# This template uses the provided list of jobs to create test one or more test jobs.
|
||||
# It can be used directly if needed, or through the matrix template.
|
||||
|
||||
parameters:
|
||||
# A required list of dictionaries, one per test job.
|
||||
# Each item in the list must contain a "job" and "name" key.
|
||||
- name: jobs
|
||||
type: object
|
||||
|
||||
jobs:
|
||||
- ${{ each job in parameters.jobs }}:
|
||||
- job: test_${{ replace(replace(replace(replace(job.test, '/', '_'), '.', '_'), '-', '_'), '@', '_') }}
|
||||
displayName: ${{ job.name }}
|
||||
container: $[ variables.defaultContainer ]
|
||||
workspace:
|
||||
clean: all
|
||||
steps:
|
||||
- checkout: self
|
||||
fetchDepth: $(fetchDepth)
|
||||
path: $(checkoutPath)
|
||||
- bash: .azure-pipelines/scripts/run-tests.sh "$(entryPoint)" "${{ job.test }}" "$(coverageBranches)"
|
||||
displayName: Run Tests
|
||||
- bash: .azure-pipelines/scripts/process-results.sh
|
||||
condition: succeededOrFailed()
|
||||
displayName: Process Results
|
||||
- bash: .azure-pipelines/scripts/aggregate-coverage.sh "$(Agent.TempDirectory)"
|
||||
condition: eq(variables.haveCoverageData, 'true')
|
||||
displayName: Aggregate Coverage Data
|
||||
- task: PublishTestResults@2
|
||||
condition: eq(variables.haveTestResults, 'true')
|
||||
inputs:
|
||||
testResultsFiles: "$(outputPath)/junit/*.xml"
|
||||
displayName: Publish Test Results
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: eq(variables.haveBotResults, 'true')
|
||||
displayName: Publish Bot Results
|
||||
inputs:
|
||||
targetPath: "$(outputPath)/bot/"
|
||||
artifactName: "Bot $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: eq(variables.haveCoverageData, 'true')
|
||||
displayName: Publish Coverage Data
|
||||
inputs:
|
||||
targetPath: "$(Agent.TempDirectory)/coverage/"
|
||||
artifactName: "Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
|
||||
26
.coveragerc
Normal file
26
.coveragerc
Normal file
@ -0,0 +1,26 @@
|
||||
# This configuration file is used for manual execution of coverage
|
||||
# as well as for tests run through ansible-test.
|
||||
|
||||
[run]
|
||||
branch = True
|
||||
|
||||
# Enable concurrency. This also enables parallel mode, which results in
|
||||
# multiple coverage files being created. Concurrency allows us to collect
|
||||
# results from multiple tests simultaneously, as well as supporting multiple
|
||||
# test runs, such as from integration tests.
|
||||
concurrency = multiprocessing
|
||||
parallel = True
|
||||
|
||||
# When running tests through ansible-test, this option is overridden by
|
||||
# the COVERAGE_FILE environment variable. This option is present for
|
||||
# convenience when running coverage manually from this directory.
|
||||
data_file = test/results/coverage/coverage
|
||||
|
||||
# Don't collect or report code coverage from files matching these patterns.
|
||||
omit =
|
||||
*/python*/dist-packages/*
|
||||
*/python*/site-packages/*
|
||||
*/python*/distutils/*
|
||||
*/pyshared/*
|
||||
*/pytest
|
||||
*/AnsiballZ_*.py
|
||||
@ -1,4 +0,0 @@
|
||||
# .git-blame-ignore-revs
|
||||
# Bulk PowerShell sanity fixes
|
||||
6def4a3180fe03981ba64c6d8db28fed3bb39c0c
|
||||
716631189cb5a3f66b3add98f39e64e98bc17bf7
|
||||
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -1 +1,2 @@
|
||||
.github/ export-ignore
|
||||
hacking/ export-ignore
|
||||
|
||||
921
.github/BOTMETA.yml
vendored
Normal file
921
.github/BOTMETA.yml
vendored
Normal file
@ -0,0 +1,921 @@
|
||||
# BOTMETA V2.0
|
||||
#
|
||||
# Data used by ansibot to identify who works on each file in the repo.
|
||||
# If you have questions about this data format, please join #ansible-devel
|
||||
# on irc.freenode and ping anyone who is op'ed.
|
||||
#
|
||||
# There are 3 primary sections of the data
|
||||
#
|
||||
# automerge
|
||||
# During release freezes, the bot uses this key to know if
|
||||
# automerging should be on or off. It is a boolean value.
|
||||
#
|
||||
# macros
|
||||
# Macros are used to shorten and group some strings and lists.
|
||||
# Any macro with a prefix of "team_" is a maintainer group for
|
||||
# various files.
|
||||
#
|
||||
# files
|
||||
# Each key represents a specific file in the repository.
|
||||
# If a module is not listed, it's maintainers default to the authors
|
||||
# If the file has no maintainers key, the value of the key is
|
||||
# presumed to be the maintainers.
|
||||
#
|
||||
# Keys:
|
||||
# maintainers - these people can shipit and automerge
|
||||
# notified - these people are always subscribed to relevant issues
|
||||
# ignored - these people should never be notified
|
||||
# deprecated - this file is deprecated but probably not yet renamed
|
||||
# keywords - used to identify this file based on the issue description
|
||||
# support - used for files without internal metadata
|
||||
# labels - list of GitHub labels to apply. Path components of 'file' parent key
|
||||
# which are valid GitHub labels are automatically added.
|
||||
#
|
||||
|
||||
automerge: True
|
||||
files:
|
||||
.github/BOTMETA.yml:
|
||||
labels: botmeta
|
||||
$modules/cloud/amazon/:
|
||||
ignored: erydo seiffert simplesteph
|
||||
$modules/cloud/amazon/aws_api_gateway.py: willthames
|
||||
$modules/cloud/amazon/aws_kms.py: willthames
|
||||
$modules/cloud/amazon/cloudformation.py: ryansb tedder
|
||||
$modules/cloud/amazon/cloudfront_facts.py: willthames
|
||||
$modules/cloud/amazon/cloudtrail.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_ami.py: willthames
|
||||
$modules/cloud/amazon/ec2_asg.py: $team_ansible s-hertel ryansb
|
||||
$modules/cloud/amazon/ec2_group.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_group_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_instance_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_key.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_lc.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_lc_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_metric_alarm.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_tag.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_vol.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_vpc_endpoint.py: willthames
|
||||
$modules/cloud/amazon/ec2_vpc_endpoint_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_vpc_igw.py: willthames
|
||||
$modules/cloud/amazon/ec2_vpc_igw_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_vpc_net.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_vpc_net_facts.py: whiter
|
||||
$modules/cloud/amazon/ec2_vpc_peering_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_vpc_subnet.py: willthames
|
||||
$modules/cloud/amazon/ecs_cluster.py: willthames
|
||||
$modules/cloud/amazon/ecs_ecr.py: willthames
|
||||
$modules/cloud/amazon/ecs_service.py: willthames
|
||||
$modules/cloud/amazon/ecs_service_facts.py: willthames
|
||||
$modules/cloud/amazon/ecs_task.py: willthames
|
||||
$modules/cloud/amazon/ecs_taskdefinition.py: willthames
|
||||
$modules/cloud/amazon/ecs_taskdefinition_facts.py: willthames
|
||||
$modules/cloud/amazon/elasticache.py: alachaum
|
||||
$modules/cloud/amazon/elb_target_group_facts.py: willthames
|
||||
$modules/cloud/amazon/iam.py: $team_ansible
|
||||
$modules/cloud/amazon/iam_cert.py: $team_ansible
|
||||
$modules/cloud/amazon/iam_group.py: willthames
|
||||
$modules/cloud/amazon/iam_managed_policy.py: willthames
|
||||
$modules/cloud/amazon/iam_policy.py: $team_ansible
|
||||
$modules/cloud/amazon/rds_param_group.py: scottanderson42
|
||||
$modules/cloud/amazon/rds_subnet_group.py: scottanderson42
|
||||
$modules/cloud/amazon/route53_health_check.py: willthames
|
||||
$modules/cloud/amazon/sns.py: willthames
|
||||
$modules/cloud/amazon/sns_topic.py: willthames
|
||||
$modules/cloud/atomic/: krsacme
|
||||
$modules/cloud/azure/:
|
||||
ignored: chouseknecht jwhitbeck
|
||||
maintainers: $team_azure
|
||||
$modules/cloud/azure/azure_rm_dnsrecordset.py:
|
||||
ignored: ozboms
|
||||
$modules/cloud/centurylink/: clc-runner
|
||||
$modules/cloud/cloudstack/: $team_cloudstack
|
||||
$modules/cloud/digital_ocean/: BondAnthony
|
||||
$modules/cloud/digital_ocean/digital_ocean.py: alukovenko
|
||||
$modules/cloud/digital_ocean/digital_ocean_domain.py: alukovenko
|
||||
$modules/cloud/digital_ocean/digital_ocean_sshkey.py: alukovenko mgregson
|
||||
$modules/cloud/dimensiondata/dimensiondata_network.py: tintoy
|
||||
$modules/cloud/docker/:
|
||||
ignored: ThomasSteinbach
|
||||
$modules/cloud/docker/docker_container.py: $team_ansible felixfontein
|
||||
$modules/cloud/docker/docker_image.py: $team_ansible
|
||||
$modules/cloud/docker/docker_image_facts.py: $team_ansible
|
||||
$modules/cloud/docker/docker_network.py: olsaki
|
||||
$modules/cloud/docker/docker_service.py: $team_ansible
|
||||
$modules/cloud/google/:
|
||||
maintainers: rambleraptor erjohnso
|
||||
ignored: supertom
|
||||
$modules/cloud/google/gc_storage.py: supertom
|
||||
$modules/cloud/linode/linode.py: intheclouddan rwaweber
|
||||
$modules/cloud/lxd/: hnakamur
|
||||
$modules/cloud/memset/: analbeard
|
||||
$modules/cloud/misc/ovirt.py:
|
||||
ignored: vincentvdk
|
||||
maintainers: joshainglis karmab machacekondra mwperina
|
||||
$modules/cloud/misc/virt.py: $team_ansible
|
||||
$modules/cloud/misc/xenserver_facts.py:
|
||||
ignored: andyhky
|
||||
$modules/cloud/opennebula/: ilicmilan kustodian
|
||||
$modules/cloud/openstack/: $team_openstack
|
||||
$modules/cloud/ovirt/: machacekondra mwperina
|
||||
$modules/cloud/profitbricks/: baldwinSPC
|
||||
$modules/cloud/rackspace/:
|
||||
ignored: sivel angstwad
|
||||
$modules/cloud/univention/: 2-B
|
||||
$modules/cloud/vmware/:
|
||||
maintainers: $team_vmware
|
||||
ignored: jcpowermac mtnbikenc
|
||||
$modules/cloud/vmware/vmware_host.py: dagwieers
|
||||
$modules/cloud/vmware/vmware_vm_shell.py: chrrrles
|
||||
$modules/cloud/vmware/_vsphere_guest.py: dagwieers
|
||||
$modules/cloud/vultr/: $team_vultr
|
||||
$modules/cloud/webfaction/: quentinsf
|
||||
$modules/clustering/k8s/: chouseknecht maxamillion fabianvf flaper87 willthames
|
||||
$modules/clustering/k8s/_kubernetes.py: supertom
|
||||
$modules/clustering/openshift/: chouseknecht maxamillion fabianvf flaper87
|
||||
$modules/commands/command.py: $team_ansible
|
||||
$modules/commands/raw.py: $team_ansible
|
||||
$modules/commands/script.py: $team_ansible
|
||||
$modules/commands/shell.py: $team_ansible
|
||||
$modules/crypto/: Spredzy
|
||||
$modules/crypto/acme/: resmo felixfontein
|
||||
$modules/database/influxdb/: kamsz
|
||||
$modules/database/mssql/mssql_db.py: Jmainguy kenichi-ogawa-1988
|
||||
$modules/database/postgresql/: matburt
|
||||
$modules/database/postgresql/postgresql_db.py: $team_ansible
|
||||
$modules/database/postgresql/postgresql_user.py: $team_ansible nerzhul
|
||||
$modules/database/proxysql/: bmildren
|
||||
$modules/database/vertica/: dareko
|
||||
$modules/files/acl.py:
|
||||
ignored: astorije
|
||||
maintainers: $team_ansible
|
||||
$modules/files/assemble.py: $team_ansible
|
||||
$modules/files/copy.py: $team_ansible
|
||||
$modules/files/fetch.py: $team_ansible
|
||||
$modules/files/file.py: $team_ansible
|
||||
$modules/files/find.py: $team_ansible
|
||||
$modules/files/lineinfile.py: $team_ansible samdoran
|
||||
$modules/files/synchronize.py: $team_ansible
|
||||
$modules/files/template.py: $team_ansible
|
||||
$modules/files/unarchive.py:
|
||||
ignored: dagwieers
|
||||
labels: m:unarchive
|
||||
maintainers: pileofrogs
|
||||
$modules/files/xattr.py: $team_ansible
|
||||
$modules/files/xml.py:
|
||||
ignored: magnus919
|
||||
labels: m:xml
|
||||
maintainers: sm4rk0 cmprescott
|
||||
$modules/identity/cyberark/:
|
||||
notified: cyberark-bizdev
|
||||
$modules/identity/ipa/: $team_ipa
|
||||
$modules/identity/keycloak/: eikef
|
||||
$modules/inventory/add_host.py: $team_ansible
|
||||
$modules/inventory/group_by.py: $team_ansible
|
||||
$modules/messaging/rabbitmq_binding.py: $team_rabbitmq
|
||||
$modules/messaging/rabbitmq_exchange.py: $team_rabbitmq
|
||||
$modules/messaging/rabbitmq_parameter.py: $team_rabbitmq
|
||||
$modules/messaging/rabbitmq_plugin.py: $team_rabbitmq
|
||||
$modules/messaging/rabbitmq_policy.py: retr0h
|
||||
$modules/messaging/rabbitmq_queue.py: $team_rabbitmq
|
||||
$modules/messaging/rabbitmq_user.py: $team_rabbitmq
|
||||
$modules/messaging/rabbitmq_vhost.py:
|
||||
ignored: choffman
|
||||
maintainers: $team_rabbitmq
|
||||
$modules/monitoring/datadog_event.py:
|
||||
ignored: arturaz
|
||||
$modules/monitoring/logentries.py:
|
||||
ignored: ivanvanderbyl
|
||||
$modules/monitoring/monit.py: brian-brazil
|
||||
$modules/monitoring/zabbix/: eikef D3DeFi
|
||||
$modules/net_tools/basics/get_url.py: ptux
|
||||
$modules/net_tools/basics/slurp.py: $team_ansible
|
||||
$modules/net_tools/basics/uri.py: $team_ansible
|
||||
$modules/net_tools/cloudflare_dns.py: andreaso
|
||||
$modules/net_tools/exoscale/: resmo
|
||||
$modules/net_tools/ldap/: jtyr
|
||||
$modules/net_tools/lldp.py:
|
||||
ignored: andyhky
|
||||
$modules/net_tools/nios/:
|
||||
maintainers: $team_networking sganesh-infoblox
|
||||
labels:
|
||||
- networking
|
||||
- infoblox
|
||||
$modules/network/a10/: ericchou1 mischapeters
|
||||
$modules/network/aci/: $team_aci
|
||||
$modules/network/aireos/: jmighion
|
||||
$modules/network/aos/: dgarros jeremyschulman
|
||||
$modules/network/aruba/: jmighion
|
||||
$modules/network/asa/: ogenstad gdpak
|
||||
$modules/network/avi/: $team_avi
|
||||
$modules/network/bigswitch/: jayakody tedelhourani vuile
|
||||
$modules/network/citrix/netscaler.py: $team_ansible
|
||||
$modules/network/cloudengine/: QijunPan
|
||||
$modules/network/cnos/: dkasberg amuraleedhar
|
||||
$modules/network/cumulus/: $team_cumulus
|
||||
$modules/network/dellos10/: skg-net
|
||||
$modules/network/dellos6/: abirami-n skg-net
|
||||
$modules/network/dellos9/: dhivyap skg-net
|
||||
$modules/network/edgeos/: samdoran
|
||||
$modules/network/enos/: amuraleedhar
|
||||
$modules/network/eos/: trishnaguha
|
||||
$modules/network/exos/: rdvencioneck
|
||||
$modules/network/f5/:
|
||||
ignored: Etienne-Carriere mhite mryanlam perzizzle srvg wojtek0806 JoeReifel $team_networking
|
||||
maintainers: caphrim007
|
||||
$modules/network/files/: $team_networking
|
||||
$modules/network/fortios/: bjolivot
|
||||
$modules/network/illumos/: xen0l
|
||||
$modules/network/interface/: $team_networking
|
||||
$modules/network/ios/: rcarrillocruz
|
||||
$modules/network/iosxr/: rcarrillocruz gdpak
|
||||
$modules/network/ironware/: paulquack
|
||||
$modules/network/junos/: Qalthos ganeshrn
|
||||
$modules/network/layer2/: $team_networking
|
||||
$modules/network/layer3/: $team_networking
|
||||
$modules/network/meraki/: $team_meraki
|
||||
$modules/network/netconf/netconf_config.py: userlerueda $team_networking
|
||||
$modules/network/netconf/netconf_get.py: $team_networking
|
||||
$modules/network/netconf/netconf_rpc.py: $team_networking
|
||||
$modules/network/netscaler/: $team_netscaler
|
||||
$modules/network/netvisor/: $team_netvisor
|
||||
$modules/network/nos/: $team_extreme
|
||||
$modules/network/nuage/: pdellaert
|
||||
$modules/network/nxos/: $team_nxos
|
||||
$modules/network/nso/: $team_nso
|
||||
$modules/network/onyx/: $team_onyx
|
||||
$modules/network/openvswitch/:
|
||||
ignored: stygstra
|
||||
maintainers: $team_networking
|
||||
$modules/network/ordnance/: alexanderturner djh00t
|
||||
$modules/network/opx/: $team_dell
|
||||
$modules/network/ovs/:
|
||||
ignored: stygstra
|
||||
maintainers: rcarrillocruz
|
||||
$modules/network/panos/: ivanbojer jtschichold
|
||||
$modules/network/panos/panos_address.py: itdependsnetworks ivanbojer jtschichold
|
||||
$modules/network/protocol/: $team_networking
|
||||
$modules/network/routeros/: heuels
|
||||
$modules/network/routing/: $team_networking
|
||||
$modules/network/slxos/: $team_extreme
|
||||
$modules/network/sros/: privateip
|
||||
$modules/network/system/: $team_networking
|
||||
$modules/network/voss/: $team_extreme
|
||||
$modules/network/vyos/: Qalthos samdoran
|
||||
$modules/notification/osx_say.py: $team_ansible
|
||||
$modules/notification/rocketchat.py:
|
||||
ignored: ramondelafuente
|
||||
maintainers: Deepakkothandan
|
||||
$modules/packaging/language/gem.py: $team_ansible
|
||||
$modules/packaging/language/maven_artifact.py:
|
||||
ignored: chrisisbeef
|
||||
maintainers: tumbl3w33d turb
|
||||
$modules/packaging/language/npm.py:
|
||||
ignored: chrishoffman
|
||||
maintainers: shane-walker xcambar
|
||||
$modules/packaging/language/pip.py: lujeni robinro
|
||||
$modules/packaging/os/apk.py:
|
||||
ignored: kbrebanov
|
||||
maintainers: tdtrask
|
||||
$modules/packaging/os/apt.py: $team_ansible
|
||||
$modules/packaging/os/apt_repository.py: $team_ansible
|
||||
$modules/packaging/os/package.py: $team_ansible
|
||||
$modules/packaging/os/pacman.py:
|
||||
ignored: elasticdog
|
||||
$modules/packaging/os/pkgin.py: troy2914
|
||||
$modules/packaging/os/pkgng.py:
|
||||
ignored: bleader
|
||||
maintainers: JoergFiedler
|
||||
$modules/packaging/os/pkgutil.py: scathatheworm
|
||||
$modules/packaging/os/portage.py:
|
||||
ignored: sayap
|
||||
$modules/packaging/os/redhat_subscription.py: alikins kahowell
|
||||
$modules/packaging/os/rhn_channel.py: alikins
|
||||
$modules/packaging/os/rhn_register.py: $team_rhn
|
||||
$modules/packaging/os/yum.py: $team_ansible kustodian
|
||||
$modules/packaging/os/zypper.py:
|
||||
ignored: dirtyharrycallahan
|
||||
$modules/packaging/os/zypper_repository.py: robinro
|
||||
$modules/remote_management/foreman/: ehelms
|
||||
$modules/remote_management/hpilo/: dagwieers haad
|
||||
$modules/remote_management/imc/: dagwieers
|
||||
$modules/remote_management/ipmi/: cloudnull
|
||||
$modules/remote_management/manageiq/: $team_manageiq
|
||||
$modules/remote_management/stacki/stacki_host.py: bbyhuy bsanders
|
||||
$modules/remote_management/ucs/: $team_ucs
|
||||
$modules/source_control/git.py: $team_ansible
|
||||
$modules/source_control/github_key.py:
|
||||
ignored: erydo
|
||||
$modules/storage/infinidat/: GR360RY vmalloc
|
||||
$modules/storage/netapp/: $team_netapp
|
||||
$modules/storage/purestorage/: sdodsley
|
||||
$modules/system/at.py: $team_ansible
|
||||
$modules/system/authorized_key.py: $team_ansible
|
||||
$modules/system/facter.py: $team_ansible
|
||||
$modules/system/filesystem.py: pilou-
|
||||
$modules/system/gconftool2.py: Akasurde
|
||||
$modules/system/group.py: $team_ansible
|
||||
$modules/system/interfaces_file.py: obourdon
|
||||
$modules/system/modprobe.py:
|
||||
ignored: stygstra
|
||||
$modules/system/mount.py: $team_ansible jtyr
|
||||
$modules/system/ohai.py: $team_ansible
|
||||
$modules/system/osx_defaults.py:
|
||||
ignored: frenck
|
||||
maintainers: $team_ansible
|
||||
$modules/system/pam_limits.py:
|
||||
ignored: usawa
|
||||
maintainers: giovannisciortino
|
||||
$modules/system/ping.py: $team_ansible
|
||||
$modules/system/puppet.py: nibalizer
|
||||
$modules/system/seboolean.py: $team_ansible
|
||||
$modules/system/selinux.py: samdoran
|
||||
$modules/system/service.py: $team_ansible
|
||||
$modules/system/setup.py:
|
||||
ignored: david_obrien
|
||||
maintainers: $team_ansible
|
||||
$modules/system/sysctl.py: Akasurde
|
||||
$modules/system/systemd.py: $team_ansible
|
||||
$modules/system/user.py: $team_ansible samdoran
|
||||
$modules/utilities/helper/meta.py: $team_ansible
|
||||
$modules/utilities/logic/assert.py: $team_ansible
|
||||
$modules/utilities/logic/async_status.py: $team_ansible
|
||||
$modules/utilities/logic/async_wrapper.py: $team_ansible
|
||||
$modules/utilities/logic/include.py: $team_ansible
|
||||
$modules/utilities/logic/include_role.py: $team_ansible
|
||||
$modules/utilities/logic/include_vars.py: $team_ansible
|
||||
$modules/utilities/logic/pause.py: samdoran
|
||||
$modules/utilities/logic/wait_for.py: gregswift
|
||||
$modules/web_infrastructure/ansible_tower/: $team_tower
|
||||
$modules/web_infrastructure/django_manage.py: scottanderson42
|
||||
$modules/web_infrastructure/htpasswd.py: $team_ansible
|
||||
$modules/web_infrastructure/jboss/: $team_jboss
|
||||
$modules/web_infrastructure/jira.py: Slezhuk
|
||||
$modules/windows/:
|
||||
maintainers: $team_windows
|
||||
ignored: angstwad georgefrank h0nIg
|
||||
$modules/windows/win_security_policy.py: rndmh3ro defionscode
|
||||
bin/ansible-connection:
|
||||
keywords:
|
||||
- persistent connection
|
||||
labels:
|
||||
- networking
|
||||
maintainers: $team_networking
|
||||
contrib/inventory:
|
||||
keywords:
|
||||
- dynamic inventory script
|
||||
- dynamic inventory
|
||||
- inventory script
|
||||
labels: c:inventory/contrib_script
|
||||
support: community
|
||||
contrib/inventory/digital_ocean.py:
|
||||
keywords:
|
||||
- digital_ocean dynamic inventory script
|
||||
maintainers: BondAnthony
|
||||
labels:
|
||||
- cloud
|
||||
support: community
|
||||
contrib/inventory/linode.py:
|
||||
keywords:
|
||||
- linode dynamic inventory script
|
||||
maintainers: intheclouddan rwaweber zbal
|
||||
labels: cloud
|
||||
contrib/inventory/openstack.py:
|
||||
keywords:
|
||||
- openstack dynamic inventory script
|
||||
maintainers: $team_openstack
|
||||
labels:
|
||||
- cloud
|
||||
contrib/inventory/infoblox.py:
|
||||
keywords:
|
||||
- infoblox dynamic inventory script
|
||||
labels:
|
||||
- ipam
|
||||
- networking
|
||||
maintainers: $team_networking
|
||||
contrib/inventory/azure_rm.py:
|
||||
keywords:
|
||||
- azure inventory
|
||||
- azure rm inventory
|
||||
- azure azure_rm dynamic inventory script
|
||||
labels:
|
||||
- cloud
|
||||
- azure
|
||||
maintainers: $team_azure
|
||||
contrib/inventory/ec2:
|
||||
keywords:
|
||||
- aws dynamic inventory
|
||||
- aws inventory
|
||||
- ec2 inventory
|
||||
- ec2 dynamic inventory
|
||||
- ec2.py dynamic inventory script
|
||||
- ec2.py inventory script
|
||||
- ec2.py inventory
|
||||
labels:
|
||||
- cloud
|
||||
- aws
|
||||
notify: ryansb s-hertel willthames
|
||||
contrib/inventory/vmware.py:
|
||||
keywords:
|
||||
- vmware inventory
|
||||
- vmware dynamic inventory script
|
||||
labels:
|
||||
- cloud
|
||||
maintainers: $team_vmware
|
||||
contrib/inventory/vmware_inventory.py:
|
||||
keywords:
|
||||
- vmware inventory
|
||||
- vmware dynamic inventory script
|
||||
labels:
|
||||
- cloud
|
||||
- vmware
|
||||
maintainers: $team_vmware
|
||||
lib/ansible/inventory:
|
||||
keywords:
|
||||
- core inventory
|
||||
- inventory
|
||||
- inventory parsing
|
||||
$module_utils/net_tools/nios/:
|
||||
labels:
|
||||
- networking
|
||||
- infoblox
|
||||
maintainers: $team_networking sganesh-infoblox
|
||||
$module_utils/network/a10:
|
||||
maintainers: ericchou1 mischapeters
|
||||
labels: networking
|
||||
$module_utils/network/aci:
|
||||
maintainers: $team_aci
|
||||
labels: networking
|
||||
support: community
|
||||
$module_utils/acme.py:
|
||||
maintainers: resmo felixfontein
|
||||
$module_utils/ipa.py:
|
||||
maintainers: $team_ipa
|
||||
$module_utils/network/aireos:
|
||||
maintainers: jmighion
|
||||
labels: networking
|
||||
$module_utils/network/aos:
|
||||
maintainers: dgarros jeremyschulman
|
||||
labels: networking
|
||||
$module_utils/azure_rm_common.py:
|
||||
maintainers: $team_azure
|
||||
labels:
|
||||
- azure
|
||||
- cloud
|
||||
$module_utils/network/aruba:
|
||||
maintainers: jmighion
|
||||
labels: networking
|
||||
$module_utils/network/asa:
|
||||
maintainers: ogenstad gdpak
|
||||
labels: networking
|
||||
$module_utils/network/avi:
|
||||
maintainers: $team_avi
|
||||
labels: networking
|
||||
$module_utils/network/bigswitch:
|
||||
maintainers: jayakody tedelhourani vuile
|
||||
labels: networking
|
||||
$module_utils/network/cloudengine:
|
||||
maintainers: QijunPan
|
||||
labels: networking
|
||||
$module_utils/cloudstack.py:
|
||||
maintainers: $team_cloudstack
|
||||
labels: cloudstack
|
||||
$module_utils/network/cnos:
|
||||
maintainers: dkasberg amuraleedhar
|
||||
labels: networking
|
||||
$module_utils/crypto.py:
|
||||
maintainers: Spredzy
|
||||
$module_utils/network/dellos6:
|
||||
maintainers: skg-net
|
||||
labels: networking
|
||||
$module_utils/network/dellos9:
|
||||
maintainers: skg-net
|
||||
labels: networking
|
||||
$module_utils/network/dellos10:
|
||||
maintainers: skg-net
|
||||
labels: networking
|
||||
$module_utils/network/enos:
|
||||
maintainers: amuraleedhar
|
||||
labels: networking
|
||||
$module_utils/network/exos:
|
||||
maintainers: rdvencioneck
|
||||
labels: networking
|
||||
$module_utils/f5_utils.py:
|
||||
maintainers: caphrim007
|
||||
labels:
|
||||
- f5
|
||||
- networking
|
||||
$module_utils/network/fortios:
|
||||
maintainers: bjolivot
|
||||
labels: networking
|
||||
$module_utils/network/ironware:
|
||||
maintainers: paulquack
|
||||
labels: networking
|
||||
$module_utils/k8s:
|
||||
maintainers: chouseknecht maxamillion fabianvf flaper87 willthames
|
||||
labels: clustering
|
||||
$module_utils/keycloak.py:
|
||||
maintainers: eikef
|
||||
$module_utils/manageiq.py:
|
||||
maintainers: $team_manageiq
|
||||
$module_utils/network/meraki:
|
||||
maintainers: $team_meraki
|
||||
labels: networking
|
||||
support: community
|
||||
$module_utils/network/netconf:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
$module_utils/network/netscaler:
|
||||
maintainers: $team_netscaler
|
||||
labels: networking
|
||||
$module_utils/network/nos:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
$module_utils/network/nso:
|
||||
maintainers: $team_nso
|
||||
labels: networking
|
||||
$module_utils/network/onyx:
|
||||
maintainers: $team_onyx
|
||||
labels: networking
|
||||
$module_utils/network/routeros:
|
||||
maintainers: heuels
|
||||
labels: networking
|
||||
$module_utils/network/slxos:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
$module_utils/openstack.py:
|
||||
maintainers: $team_openstack
|
||||
labels:
|
||||
- cloud
|
||||
$module_utils/network/ordnance:
|
||||
maintainers: alexanderturner djh00t
|
||||
labels: networking
|
||||
$module_utils/ovirt.py:
|
||||
maintainers: joshainglis karmab machacekondra
|
||||
labels:
|
||||
- cloud
|
||||
$module_utils/powershell:
|
||||
maintainers: $team_windows_core
|
||||
labels:
|
||||
- windows
|
||||
$module_utils/remote_management/ucs:
|
||||
maintainers: $team_ucs
|
||||
labels: ucs
|
||||
$module_utils/netapp: $team_netapp
|
||||
$module_utils/vultr.py: &vultr
|
||||
maintainers: $team_vultr
|
||||
labels:
|
||||
- cloud
|
||||
$module_utils/vmware:
|
||||
maintainers: $team_vmware
|
||||
support: community
|
||||
$module_utils/network/voss:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
$module_utils/network:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
$module_utils/onepassword.py:
|
||||
maintainers: samdoran
|
||||
$module_utils/memset.py:
|
||||
maintainers: analbeard
|
||||
labels: cloud
|
||||
$module_utils/jboss/:
|
||||
maintainers: $team_jboss
|
||||
$module_utils/scaleway.py: &scaleway
|
||||
maintainers: $team_scaleway
|
||||
labels:
|
||||
- cloud
|
||||
support: community
|
||||
lib/ansible/playbook/handler.py:
|
||||
keywords:
|
||||
- handlers
|
||||
lib/ansible/playbook/role:
|
||||
keywords:
|
||||
- roles path
|
||||
- roles_path
|
||||
- role
|
||||
- role path
|
||||
lib/ansible/playbook/role/include.py:
|
||||
keywords:
|
||||
- include role
|
||||
- include_role
|
||||
- role include
|
||||
lib/ansible/playbook/role/requirement.py:
|
||||
keywords:
|
||||
- role dependencies
|
||||
- role dep
|
||||
- role dependency
|
||||
lib/ansible/plugins/action/asa:
|
||||
maintainers: ogenstad gdpak
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/aireos:
|
||||
maintainers: jmighion
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/aruba:
|
||||
maintainers: jmighion
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/dellos:
|
||||
maintainers: skg-net
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/eos:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/ios:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/ironware:
|
||||
maintainers: paulquack
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/junos:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/net:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/nxos:
|
||||
maintainers: $team_networking
|
||||
labels:
|
||||
- networking
|
||||
- nxos
|
||||
lib/ansible/plugins/action/onyx_config.py:
|
||||
maintainers: $team_onyx
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/sros:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/vyos:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/callback/unixy.py:
|
||||
support: community
|
||||
maintainers: akatch
|
||||
lib/ansible/plugins/callback/grafana_annotations.py:
|
||||
support: community
|
||||
maintainers: rrey
|
||||
lib/ansible/plugins/callback/sumologic.py:
|
||||
support: community
|
||||
maintainers: ryancurrah
|
||||
lib/ansible/plugins/cliconf/:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/cliconf/exos.py:
|
||||
maintainers: rdvencioneck
|
||||
labels: networking
|
||||
lib/ansible/plugins/cliconf/ironware.py:
|
||||
maintainers: paulquack
|
||||
labels: networking
|
||||
lib/ansible/plugins/cliconf/nos.py:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
lib/ansible/plugins/cliconf/nxos.py:
|
||||
maintainers: $team_nxos
|
||||
labels:
|
||||
- networking
|
||||
lib/ansible/plugins/cliconf/onyx.py:
|
||||
maintainers: $team_onyx
|
||||
labels: networking
|
||||
lib/ansible/plugins/cliconf/routeros.py:
|
||||
maintainers: heuels
|
||||
labels: networking
|
||||
lib/ansible/plugins/cliconf/slxos.py:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
lib/ansible/plugins/connection/lxd.py:
|
||||
maintainers: mattclay
|
||||
lib/ansible/plugins/connection/netconf.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/connection/network_cli.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/connection/persistent.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/httpapi/ftd.py:
|
||||
maintainers: annikulin $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/inventory/openstack.py:
|
||||
maintainers: $team_openstack
|
||||
keywords:
|
||||
- openstack
|
||||
- inventory
|
||||
labels:
|
||||
- cloud
|
||||
lib/ansible/plugins/cliconf/voss.py:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
lib/ansible/plugins/connection/winrm.py:
|
||||
maintainers: $team_windows_core
|
||||
labels:
|
||||
- windows
|
||||
lib/ansible/plugins/inventory/ovirt4.py:
|
||||
maintainers: machacekondra
|
||||
labels:
|
||||
- ovirt
|
||||
- cloud
|
||||
lib/ansible/plugins/inventory/vultr.py: *vultr
|
||||
lib/ansible/plugins/inventory/scaleway.py: *scaleway
|
||||
lib/ansible/plugins/filter/network.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/lookup/nios.py:
|
||||
maintainers: $team_networking sganesh-infoblox
|
||||
labels:
|
||||
- networking
|
||||
- infoblox
|
||||
lib/ansible/plugins/lookup/nios_next_ip.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/lookup/dig:
|
||||
maintainers: jpmens
|
||||
labels: community
|
||||
lib/ansible/plugins/lookup/conjur_variable.py:
|
||||
maintainers: $team_cyberark_conjur
|
||||
notified: cyberark-bizdev
|
||||
lib/ansible/plugins/lookup/cyberarkpassword.py:
|
||||
notified: cyberark-bizdev
|
||||
lib/ansible/plugins/netconf/:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/lookup/onepassword.py:
|
||||
maintainers: samdoran
|
||||
ignored: azenk
|
||||
lib/ansible/plugins/lookup/onepassword_raw.py:
|
||||
maintainers: samdoran
|
||||
ignored: azenk
|
||||
lib/ansible/plugins/netconf/sros.py:
|
||||
maintainers: wisotzky $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/shell/powershell.py:
|
||||
maintainers: $team_windows_core
|
||||
labels:
|
||||
- windows
|
||||
lib/ansible/plugins/terminal/aireos.py:
|
||||
maintainers: jmighion
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/aruba.py:
|
||||
maintainers: jmighion
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/asa.py:
|
||||
maintainers: ogenstad gdpak
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/dellos10:
|
||||
maintainers: skg-net
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/edgeos.py:
|
||||
maintainers: samdoran
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/eos.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/exos.py:
|
||||
maintainers: rdvencioneck
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/ios.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/iosxr.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/ironware.py:
|
||||
maintainers: paulquack
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/junos.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/nos.py:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/nxos.py:
|
||||
maintainers: $team_networking
|
||||
labels:
|
||||
- networking
|
||||
lib/ansible/plugins/terminal/onyx.py:
|
||||
maintainers: $team_onyx
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/routeros.py:
|
||||
maintainers: heuels
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/slxos.py:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/sros.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/voss.py:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/vyos.py:
|
||||
maintainers: $team_networking samdoran
|
||||
labels: networking
|
||||
lib/ansible/release.py:
|
||||
notify: mattclay nitzmahone
|
||||
lib/ansible/template:
|
||||
keywords:
|
||||
- jinja
|
||||
- jinja2
|
||||
lib/ansible/utils/module_docs_fragments/acme.py:
|
||||
maintainers: resmo felixfontein
|
||||
test/sanity/validate-modules:
|
||||
keywords:
|
||||
- validate-modules
|
||||
docs/:
|
||||
maintainers:
|
||||
- acozine
|
||||
docs/docsite/rst/network/:
|
||||
labels: networking
|
||||
maintainers:
|
||||
- samccann
|
||||
- gundalow
|
||||
docs/docsite/rst/scenario_guides/guide_aci.rst:
|
||||
maintainers: $team_aci
|
||||
labels:
|
||||
- aci
|
||||
- networking
|
||||
packaging/:
|
||||
test/:
|
||||
# 'test' is a component path, then 'test' label will be automatically added
|
||||
test/runner/:
|
||||
notify: mattclay
|
||||
test/sanity/:
|
||||
notify: mattclay
|
||||
test/utils/shippable/:
|
||||
notify: mattclay
|
||||
test/integration/group_vars/:
|
||||
notify: mattclay
|
||||
test/integration/host_vars/:
|
||||
notify: mattclay
|
||||
test/integration/roles/:
|
||||
notify: mattclay
|
||||
test/integration/targets/aci:
|
||||
maintainers: $team_aci
|
||||
labels:
|
||||
- networking
|
||||
test/integration/targets/meraki:
|
||||
maintainers: $team_meraki
|
||||
labels:
|
||||
- networking
|
||||
test/integration/targets/nxos:
|
||||
maintainers: $team_nxos
|
||||
labels:
|
||||
- networking
|
||||
test/integration/targets/setup_acme:
|
||||
maintainers: resmo felixfontein
|
||||
test/integration/targets/setup_zabbix:
|
||||
maintainers: eikef D3DeFi
|
||||
test/integration/targets/ucs:
|
||||
maintainers: $team_ucs
|
||||
labels:
|
||||
- remote_management
|
||||
test/units/modules/network:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
test/units/modules/network/nxos:
|
||||
maintainers: $team_nxos
|
||||
labels:
|
||||
- networking
|
||||
test/sanity/pep8/legacy-files.txt:
|
||||
hacking/report.py:
|
||||
notify: mattclay
|
||||
shippable.yml:
|
||||
notify: mattclay
|
||||
.yamllint:
|
||||
notify: mattclay
|
||||
tox.ini:
|
||||
notify: mattclay
|
||||
macros:
|
||||
module_utils: lib/ansible/module_utils
|
||||
modules: lib/ansible/modules
|
||||
team_aci: brunocalogero dagwieers jmcgill298 schunduri
|
||||
team_ansible: []
|
||||
team_avi: ericsysmin grastogi23 khaltore
|
||||
team_azure: haroldwongms nitzmahone trstringer yuwzho xscript zikalino
|
||||
team_cloudstack: resmo dpassante
|
||||
team_cumulus: isharacomix jrrivers
|
||||
team_cyberark_conjur: jvanderhoof ryanprior
|
||||
team_dell: skg-net manjuv1 dhivyap abirami-n
|
||||
team_extreme: bigmstone LindsayHill
|
||||
team_ipa: Nosmoht Akasurde fxfitz
|
||||
team_jboss: jairojunior wbrefvem Wolfant
|
||||
team_manageiq: gtanzillo abellotti zgalor yaacov cben
|
||||
team_meraki: dagwieers kbreit
|
||||
team_netapp: hulquest lmprice ndswartz amit0701 schmots1 carchi8py
|
||||
team_netscaler: chiradeep giorgos-nikolopoulos
|
||||
team_netvisor: Qalthos amitsi
|
||||
team_networking: Qalthos ganeshrn rcarrillocruz trishnaguha gdpak justjais
|
||||
team_nso: cmoberg cnasten tbjurman
|
||||
team_nxos: mikewiebe rahushen rcarrillocruz trishnaguha tstoner
|
||||
team_onyx: samerd
|
||||
team_openstack: emonty omgjlk juliakreger rcarrillocruz shrews thingee dagnello
|
||||
team_openswitch: Qalthos gdpak
|
||||
team_rabbitmq: chrishoffman manuel-sousa hyperized
|
||||
team_rhn: alikins barnabycourt flossware vritant
|
||||
team_scaleway: sieben hekonsek Spredzy
|
||||
team_tower: ghjm jlaska matburt wwitzel3 simfarm ryanpetrello rooftopcellist AlanCoding
|
||||
team_ucs: dsoper2 johnamcdonough SDBrett vallard vvb dagwieers
|
||||
team_vmware: Akasurde dav1x warthog9
|
||||
team_vultr: resmo Spredzy
|
||||
team_windows: dagwieers jborean93 jhawkesworth nitzmahone
|
||||
team_windows_core: nitzmahone jborean93
|
||||
13
.github/CONTRIBUTING.md
vendored
13
.github/CONTRIBUTING.md
vendored
@ -4,22 +4,25 @@ Hi! Nice to see you here!
|
||||
|
||||
## QUESTIONS ?
|
||||
|
||||
Please see the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for information on how to ask questions on the [mailing lists](https://docs.ansible.com/ansible/latest/community/communication.html#mailing-list-information) and IRC.
|
||||
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 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 you agree that these contributions are your own (or approved by your employer) and you grant a full, complete, irrevocable copyright license to all users and developers of the project, present and future, pursuant to the license of the project. You can also read the same [CLA](https://docs.ansible.com/ansible/latest/community/contributor_license_agreement.html) on the Ansible docsite.
|
||||
By contributing 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.
|
||||
|
||||
Please review the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for more information on contributing to Ansible.
|
||||
Please see the [community guide](https://docs.ansible.com/ansible/latest/community/index.html) for information regarding the contribution process. Important license agreement information is also included on that page.
|
||||
|
||||
## BUG TO REPORT ?
|
||||
|
||||
First and foremost, also check the [Community Guide](https://docs.ansible.com/ansible/latest/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.
|
||||
|
||||
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. You can find the latest releases and development branch at:
|
||||
|
||||
- https://github.com/ansible/ansible/releases
|
||||
- https://github.com/ansible/ansible/archive/devel.tar.gz
|
||||
|
||||
Thanks!
|
||||
|
||||
59
.github/ISSUE_TEMPLATE.md
vendored
59
.github/ISSUE_TEMPLATE.md
vendored
@ -1 +1,58 @@
|
||||
Please raise issues via the [new interface](https://github.com/ansible/ansible/issues/new/choose)
|
||||
<!---
|
||||
Verify first that your issue/request is not already reported on GitHub.
|
||||
THIS FORM WILL BE READ BY A MACHINE, COMPLETE ALL SECTIONS AS DESCRIBED.
|
||||
Also test if the latest release, and devel branch are affected too.
|
||||
ALWAYS add information AFTER (OUTSIDE) these html comments.
|
||||
Otherwise it may end up being automatically closed by our bot. -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
<!--- Pick one below and delete the rest -->
|
||||
- Bug Report
|
||||
- Feature Idea
|
||||
- Documentation Report
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Insert, BELOW THIS COMMENT, the name of the module, plugin, task or feature.
|
||||
Do not include extra details here, e.g. "vyos_command" not "the network module vyos_command" or the full path-->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste, BELOW THIS COMMENT, verbatim output from "ansible --version" between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!--- If using Ansible 2.4 or above, paste, BELOW THIS COMMENT, the results of "ansible-config dump --only-changed"
|
||||
Otherwise, mention any settings you have changed/added/removed in ansible.cfg
|
||||
(or using the ANSIBLE_* environment variables).-->
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!--- Mention, BELOW THIS COMMENT, the OS you are running Ansible from, and the OS you are
|
||||
managing, or say "N/A" for anything that is not platform-specific.
|
||||
Also mention the specific version of what you are trying to control,
|
||||
e.g. if this is a network bug the version of firmware on the network device.-->
|
||||
|
||||
##### STEPS TO REPRODUCE
|
||||
<!--- For bugs, show exactly how to reproduce the problem, using a minimal test-case.
|
||||
For new features, show how the feature would be used. -->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- You can also paste gist.github.com links for larger files -->
|
||||
|
||||
##### EXPECTED RESULTS
|
||||
<!--- What did you expect to happen when running the steps above? -->
|
||||
|
||||
##### ACTUAL RESULTS
|
||||
<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->
|
||||
|
||||
<!--- Paste verbatim command output between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
61
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
61
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
---
|
||||
name: 🐛 Bug report
|
||||
about: Create a report to help us improve
|
||||
|
||||
---
|
||||
|
||||
<!---
|
||||
Verify first that your issue/request is not already reported on GitHub.
|
||||
THIS FORM WILL BE READ BY A MACHINE, COMPLETE ALL SECTIONS AS DESCRIBED.
|
||||
Also test if the latest release, and devel branch are affected too.
|
||||
ALWAYS add information AFTER (OUTSIDE) these html comments.
|
||||
Otherwise it may end up being automatically closed by our bot. -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
- Bug Report
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Insert, BELOW THIS COMMENT, the name of the module, plugin, task or feature.
|
||||
Do not include extra details here, e.g. "vyos_command" not "the network module vyos_command" or the full path-->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste, BELOW THIS COMMENT, verbatim output from "ansible --version" between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!--- If using Ansible 2.4 or above, paste, BELOW THIS COMMENT, the results of "ansible-config dump --only-changed"
|
||||
Otherwise, mention any settings you have changed/added/removed in ansible.cfg
|
||||
(or using the ANSIBLE_* environment variables).-->
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!--- Mention, BELOW THIS COMMENT, the OS you are running Ansible from, and the OS you are
|
||||
managing, or say "N/A" for anything that is not platform-specific.
|
||||
Also mention the specific version of what you are trying to control,
|
||||
e.g. if this is a network bug the version of firmware on the network device.-->
|
||||
|
||||
##### STEPS TO REPRODUCE
|
||||
<!--- For bugs, show exactly how to reproduce the problem, using a minimal test-case.
|
||||
For new features, show how the feature would be used. -->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- You can also paste gist.github.com links for larger files -->
|
||||
|
||||
##### EXPECTED RESULTS
|
||||
<!--- What did you expect to happen when running the steps above? -->
|
||||
|
||||
##### ACTUAL RESULTS
|
||||
<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->
|
||||
|
||||
<!--- Paste verbatim command output between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
265
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
265
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -1,265 +0,0 @@
|
||||
---
|
||||
name: 🐛 Bug report
|
||||
description: Create a report to help us improve
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
**Thank you for wanting to report a bug in ansible-core!**
|
||||
|
||||
|
||||
⚠
|
||||
Verify first that your issue is not [already reported on
|
||||
GitHub][issue search] and keep in mind that we may have to keep
|
||||
the current behavior because [every change breaks someone's
|
||||
workflow][XKCD 1172].
|
||||
We try to be mindful about this.
|
||||
|
||||
Also test if the latest release and devel branch are affected too.
|
||||
|
||||
|
||||
**Tip:** If you are seeking community support, please consider
|
||||
[starting a mailing list thread or chatting in IRC][ML||IRC].
|
||||
|
||||
|
||||
|
||||
[ML||IRC]:
|
||||
https://docs.ansible.com/ansible-core/devel/community/communication.html?utm_medium=github&utm_source=issue_form--bug_report.yml#mailing-list-information
|
||||
|
||||
[issue search]: ../search?q=is%3Aissue&type=issues
|
||||
|
||||
[XKCD 1172]: https://xkcd.com/1172/
|
||||
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Summary
|
||||
description: Explain the problem briefly below.
|
||||
placeholder: >-
|
||||
When I try to do X with ansible-core from the devel branch on GitHub, Y
|
||||
breaks in a way Z under the env E. Here are all the details I know
|
||||
about this problem...
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Issue Type
|
||||
description: >
|
||||
Please select the single available option in the drop-down.
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
<em>Why?</em>
|
||||
</summary>
|
||||
|
||||
We would do it by ourselves but unfortunatelly, the curent
|
||||
edition of GitHub Issue Forms Alpha does not support this yet 🤷
|
||||
|
||||
|
||||
_We will make it easier in the future, once GitHub
|
||||
supports dropdown defaults. Promise!_
|
||||
|
||||
</details>
|
||||
# FIXME: Once GitHub allows defining the default choice, update this
|
||||
options:
|
||||
- Bug Report
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Component Name
|
||||
description: >
|
||||
Write the short name of the rst file, module, plugin, task or
|
||||
feature below, *use your best guess if unsure*.
|
||||
|
||||
|
||||
**Tip:** Cannot find it in this repository? Please be advised that
|
||||
the source for some parts of the documentation are hosted outside
|
||||
of this repository. If the page you are reporting describes
|
||||
modules/plugins/etc that are not officially supported by the
|
||||
Ansible Core Engineering team, there is a good chance that it is
|
||||
coming from one of the [Ansible Collections maintained by the
|
||||
community][collections org]. If this is the case, please make sure
|
||||
to file an issue under the appropriate project there instead.
|
||||
|
||||
|
||||
[collections org]: /ansible-collections
|
||||
placeholder: dnf, apt, yum, 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/ansibullbot/blob/master/ISSUE_HELP.md#for-issue-submitters
|
||||
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: |
|
||||
Read the [Ansible Code of Conduct][CoC] first.
|
||||
|
||||
[CoC]: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--bug_report.yml
|
||||
options:
|
||||
- label: I agree to follow the Ansible Code of Conduct
|
||||
required: true
|
||||
...
|
||||
26
.github/ISSUE_TEMPLATE/config.yml
vendored
26
.github/ISSUE_TEMPLATE/config.yml
vendored
@ -1,26 +0,0 @@
|
||||
# Ref: https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser
|
||||
blank_issues_enabled: false # default: true
|
||||
contact_links:
|
||||
- name: 🔐 Security bug report 🔥
|
||||
url: https://docs.ansible.com/ansible/latest/community/reporting_bugs_and_features.html?utm_medium=github&utm_source=issue_template_chooser
|
||||
about: |
|
||||
Please learn how to report security vulnerabilities here.
|
||||
|
||||
For all security related bugs, email security@ansible.com
|
||||
instead of using this issue tracker and you will receive
|
||||
a prompt response.
|
||||
|
||||
For more information, see
|
||||
https://docs.ansible.com/ansible/latest/community/reporting_bugs_and_features.html
|
||||
- name: 📝 Ansible Code of Conduct
|
||||
url: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_template_chooser
|
||||
about: ❤ Be nice to other members of the community. ☮ Behave.
|
||||
- name: 💬 Talks to the community
|
||||
url: https://docs.ansible.com/ansible/latest/community/communication.html?utm_medium=github&utm_source=issue_template_chooser#mailing-list-information
|
||||
about: Please ask and answer usage questions here
|
||||
- name: ⚡ Working groups
|
||||
url: https://github.com/ansible/community/wiki
|
||||
about: Interested in improving a specific area? Become a part of a working group!
|
||||
- name: 💼 For Enterprise
|
||||
url: https://www.ansible.com/products/engine?utm_medium=github&utm_source=issue_template_chooser
|
||||
about: Red Hat offers support for the Ansible Automation Platform
|
||||
61
.github/ISSUE_TEMPLATE/documentation_report.md
vendored
Normal file
61
.github/ISSUE_TEMPLATE/documentation_report.md
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
---
|
||||
name: 📝 Documentation Report
|
||||
about: Ask us about docs
|
||||
|
||||
---
|
||||
|
||||
<!---
|
||||
Verify first that your issue/request is not already reported on GitHub.
|
||||
THIS FORM WILL BE READ BY A MACHINE, COMPLETE ALL SECTIONS AS DESCRIBED.
|
||||
Also test if the latest release, and devel branch are affected too.
|
||||
ALWAYS add information AFTER (OUTSIDE) these html comments.
|
||||
Otherwise it may end up being automatically closed by our bot. -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
- Documentation Report
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Insert, BELOW THIS COMMENT, the name of the module, plugin, task or feature.
|
||||
Do not include extra details here, e.g. "vyos_command" not "the network module vyos_command" or the full path-->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste, BELOW THIS COMMENT, verbatim output from "ansible --version" between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!--- If using Ansible 2.4 or above, paste, BELOW THIS COMMENT, the results of "ansible-config dump --only-changed"
|
||||
Otherwise, mention any settings you have changed/added/removed in ansible.cfg
|
||||
(or using the ANSIBLE_* environment variables).-->
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!--- Mention, BELOW THIS COMMENT, the OS you are running Ansible from, and the OS you are
|
||||
managing, or say "N/A" for anything that is not platform-specific.
|
||||
Also mention the specific version of what you are trying to control,
|
||||
e.g. if this is a network bug the version of firmware on the network device.-->
|
||||
|
||||
##### STEPS TO REPRODUCE
|
||||
<!--- For bugs, show exactly how to reproduce the problem, using a minimal test-case.
|
||||
For new features, show how the feature would be used. -->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- You can also paste gist.github.com links for larger files -->
|
||||
|
||||
##### EXPECTED RESULTS
|
||||
<!--- What did you expect to happen when running the steps above? -->
|
||||
|
||||
##### ACTUAL RESULTS
|
||||
<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->
|
||||
|
||||
<!--- Paste verbatim command output between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
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 consider
|
||||
[starting a mailing list thread or chatting in IRC][ML||IRC].
|
||||
|
||||
|
||||
[ML||IRC]:
|
||||
https://docs.ansible.com/ansible-core/devel/community/communication.html?utm_medium=github&utm_source=issue_form--documentation_report.yml#mailing-list-information
|
||||
|
||||
[issue search]: ../search?q=is%3Aissue&type=issues
|
||||
|
||||
[submit a pull request]:
|
||||
https://docs.ansible.com/ansible-core/devel/community/documentation_contributions.html
|
||||
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Summary
|
||||
description: >
|
||||
Explain the problem briefly below, add suggestions to wording
|
||||
or structure.
|
||||
|
||||
|
||||
**HINT:** Did you know the documentation has a `View on GitHub`
|
||||
link on some pages? Feel free to use it to start a pull request
|
||||
right from the GitHub UI!
|
||||
placeholder: >-
|
||||
I was reading the ansible-core documentation of version X and I'm having
|
||||
problems understanding Y. It would be very helpful if that got
|
||||
rephrased as Z.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Issue Type
|
||||
description: >
|
||||
Please select the single available option in the drop-down.
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
<em>Why?</em>
|
||||
</summary>
|
||||
|
||||
We would do it by ourselves but unfortunatelly, the curent
|
||||
edition of GitHub Issue Forms Alpha does not support this yet 🤷
|
||||
|
||||
|
||||
_We will make it easier in the future, once GitHub
|
||||
supports dropdown defaults. Promise!_
|
||||
|
||||
</details>
|
||||
# FIXME: Once GitHub allows defining the default choice, update this
|
||||
options:
|
||||
- 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*.
|
||||
|
||||
|
||||
**Tip:** Be advised that the source for some parts of the
|
||||
documentation are hosted outside of this repository. If the page
|
||||
you are reporting describes modules/plugins/etc that are not
|
||||
officially supported by the Ansible Core Engineering team, there
|
||||
is a good chance that it is coming from one of the [Ansible
|
||||
Collections maintained by the community][collections org]. If this
|
||||
is the case, please make sure to file an issue under the
|
||||
appropriate project there instead.
|
||||
|
||||
|
||||
[collections org]: /ansible-collections
|
||||
placeholder: docs/docsite/rst/dev_guide/debugging.rst
|
||||
validations:
|
||||
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/ansibullbot/blob/master/ISSUE_HELP.md#for-issue-submitters
|
||||
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: |
|
||||
Read the [Ansible Code of Conduct][CoC] first.
|
||||
|
||||
[CoC]: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--documentation_report.yml
|
||||
options:
|
||||
- label: I agree to follow the Ansible Code of Conduct
|
||||
required: true
|
||||
...
|
||||
61
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
61
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
---
|
||||
name: ✨ Feature request
|
||||
about: Suggest an idea for this project
|
||||
|
||||
---
|
||||
|
||||
<!---
|
||||
Verify first that your issue/request is not already reported on GitHub.
|
||||
THIS FORM WILL BE READ BY A MACHINE, COMPLETE ALL SECTIONS AS DESCRIBED.
|
||||
Also test if the latest release, and devel branch are affected too.
|
||||
ALWAYS add information AFTER (OUTSIDE) these html comments.
|
||||
Otherwise it may end up being automatically closed by our bot. -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
- Feature Idea
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Insert, BELOW THIS COMMENT, the name of the module, plugin, task or feature.
|
||||
Do not include extra details here, e.g. "vyos_command" not "the network module vyos_command" or the full path-->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste, BELOW THIS COMMENT, verbatim output from "ansible --version" between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!--- If using Ansible 2.4 or above, paste, BELOW THIS COMMENT, the results of "ansible-config dump --only-changed"
|
||||
Otherwise, mention any settings you have changed/added/removed in ansible.cfg
|
||||
(or using the ANSIBLE_* environment variables).-->
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!--- Mention, BELOW THIS COMMENT, the OS you are running Ansible from, and the OS you are
|
||||
managing, or say "N/A" for anything that is not platform-specific.
|
||||
Also mention the specific version of what you are trying to control,
|
||||
e.g. if this is a network bug the version of firmware on the network device.-->
|
||||
|
||||
##### STEPS TO REPRODUCE
|
||||
<!--- For bugs, show exactly how to reproduce the problem, using a minimal test-case.
|
||||
For new features, show how the feature would be used. -->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- You can also paste gist.github.com links for larger files -->
|
||||
|
||||
##### EXPECTED RESULTS
|
||||
<!--- What did you expect to happen when running the steps above? -->
|
||||
|
||||
##### ACTUAL RESULTS
|
||||
<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->
|
||||
|
||||
<!--- Paste verbatim command output between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
192
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
192
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@ -1,192 +0,0 @@
|
||||
---
|
||||
name: ✨ Feature request
|
||||
description: Suggest an idea for this project
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
**Thank you for wanting to suggest a feature for ansible-core!**
|
||||
|
||||
|
||||
|
||||
💡
|
||||
Before you go ahead with your request, please first consider if it
|
||||
would be useful for majority of the ansible-core users. As a
|
||||
general rule of thumb, any feature that is only of interest to a
|
||||
small sub group should be [implemented in a third-party Ansible
|
||||
Collection][contribute to collections] or maybe even just your
|
||||
project alone. Be mindful of the fact that the essential
|
||||
ansible-core features have a broad impact.
|
||||
|
||||
If unsure, consider filing a [new proposal] instead outlining your
|
||||
use-cases, the research and implementation considerations. Then,
|
||||
start a discussion on one of the public [IRC meetings] we have just
|
||||
for this.
|
||||
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
❗ Every change breaks someone's workflow.
|
||||
</summary>
|
||||
|
||||
|
||||
[
|
||||
](https://xkcd.com/1172/)
|
||||
</details>
|
||||
|
||||
|
||||
⚠
|
||||
Verify first that your idea is not [already requested on
|
||||
GitHub][issue search].
|
||||
|
||||
Also test if the devel branch does not already implement this.
|
||||
|
||||
|
||||
**Tip:** If you are seeking community support, please consider
|
||||
[starting a mailing list thread or chatting in IRC][ML||IRC].
|
||||
|
||||
|
||||
|
||||
[contribute to collections]:
|
||||
https://docs.ansible.com/ansible-core/devel/community/contributing_maintained_collections.html?utm_medium=github&utm_source=issue_form--feature_request.yml
|
||||
|
||||
[IRC meetings]:
|
||||
https://docs.ansible.com/ansible-core/devel/community/communication.html?utm_medium=github&utm_source=issue_form--feature_request.yml#irc-meetings
|
||||
|
||||
[issue search]: ../search?q=is%3Aissue&type=issues
|
||||
|
||||
[ML||IRC]:
|
||||
https://docs.ansible.com/ansible-core/devel/community/communication.html?utm_medium=github&utm_source=issue_form--feature_request.yml#mailing-list-information
|
||||
|
||||
[new proposal]: ../../proposals/issues/new
|
||||
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Summary
|
||||
description: >
|
||||
Describe the new feature/improvement you would like briefly below.
|
||||
|
||||
|
||||
What's the problem this feature will solve?
|
||||
|
||||
What are you trying to do, that you are unable to achieve
|
||||
with ansible-core as it currently stands?
|
||||
|
||||
|
||||
* Provide examples of real-world use cases that this would enable
|
||||
and how it solves the problem you described.
|
||||
|
||||
* How do you solve this now?
|
||||
|
||||
* Have you tried to work around the problem using other tools?
|
||||
|
||||
* Could there be a different approach to solving this issue?
|
||||
|
||||
|
||||
*Know **exactly** what you want?* Consider filing a [new proposal]
|
||||
instead outlining your research and implementation considerations.
|
||||
|
||||
|
||||
[new proposal]: ../../proposals/issues/new
|
||||
placeholder: >-
|
||||
I am trying to do X with ansible-core from the devel branch on GitHub and
|
||||
I think that implementing a feature Y would be very helpful for me and
|
||||
every other user of ansible-core because of Z.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Issue Type
|
||||
description: >
|
||||
Please select the single available option in the drop-down.
|
||||
|
||||
<details>
|
||||
<summary>
|
||||
<em>Why?</em>
|
||||
</summary>
|
||||
|
||||
We would do it by ourselves but unfortunatelly, the curent
|
||||
edition of GitHub Issue Forms Alpha does not support this yet 🤷
|
||||
|
||||
|
||||
_We will make it easier in the future, once GitHub
|
||||
supports dropdown defaults. Promise!_
|
||||
|
||||
</details>
|
||||
# FIXME: Once GitHub allows defining the default choice, update this
|
||||
options:
|
||||
- Feature Idea
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Component Name
|
||||
description: >
|
||||
Write the short name of the module, plugin, task or feature below,
|
||||
*use your best guess if unsure*.
|
||||
|
||||
|
||||
Be aware that a lot of content that used to reside in this repository
|
||||
previously, is now hosted under [individual collection
|
||||
projects][collections org].
|
||||
If this is the case, please make sure to file an issue under the
|
||||
appropriate project there instead.
|
||||
|
||||
|
||||
[collections org]: /ansible-collections
|
||||
placeholder: dnf, apt, yum, 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/ansibullbot/blob/master/ISSUE_HELP.md#for-issue-submitters
|
||||
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: |
|
||||
Read the [Ansible Code of Conduct][CoC] first.
|
||||
|
||||
[CoC]: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--feature_request.yml
|
||||
options:
|
||||
- label: I agree to follow the Ansible Code of Conduct
|
||||
required: true
|
||||
...
|
||||
8
.github/ISSUE_TEMPLATE/security_bug_report.md
vendored
Normal file
8
.github/ISSUE_TEMPLATE/security_bug_report.md
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
name: 🔥 Security bug report
|
||||
about: How to report security vulnerabilities
|
||||
---
|
||||
|
||||
For all security related bugs, email security@ansible.com instead of using this issue tracker and you will receive a prompt response.
|
||||
|
||||
For more information, see https://docs.ansible.com/ansible/latest/community/reporting_bugs_and_features.html
|
||||
38
.github/PULL_REQUEST_TEMPLATE.md
vendored
38
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,23 +1,33 @@
|
||||
##### SUMMARY
|
||||
<!--- Describe the change below, including rationale and design decisions -->
|
||||
<!--- Describe the change, including rationale and design decisions -->
|
||||
|
||||
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
|
||||
<!--- If you are fixing an existing issue, please include "Fixes #nnn" in your
|
||||
commit message and your description; but you should still explain what
|
||||
the change does.-->
|
||||
|
||||
##### ISSUE TYPE
|
||||
<!--- Pick one below and delete the rest -->
|
||||
- Bugfix Pull Request
|
||||
- Docs Pull Request
|
||||
- Feature Pull Request
|
||||
- Test Pull Request
|
||||
<!--- Pick one below and delete the rest: -->
|
||||
- Feature Pull Request
|
||||
- New Module Pull Request
|
||||
- Bugfix Pull Request
|
||||
- Docs Pull Request
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Write the short name of the module, plugin, task or feature below -->
|
||||
<!--- Name of the module, plugin, task or feature -->
|
||||
|
||||
##### 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
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste verbatim output from "ansible --version" between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
|
||||
##### ADDITIONAL INFORMATION
|
||||
<!--- Include additional information to help people understand the change here.
|
||||
For bugs that don't have a linked bug report, a step-by-step reproduction
|
||||
of the problem is helpful. -->
|
||||
|
||||
<!--- Paste verbatim command output below, e.g. before and after your change -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
17
.github/RELEASE_NAMES.yml
vendored
17
.github/RELEASE_NAMES.yml
vendored
@ -1,17 +0,0 @@
|
||||
---
|
||||
- 2.15.0 Ten Years Gone
|
||||
- 2.14.0 C'mon Everybody
|
||||
- 2.13.0 Nobody's Fault but Mine
|
||||
- 2.12.0 Dazed and Confused
|
||||
- 2.11.0 Hey Hey, What Can I Do
|
||||
- 2.10.0 When the Levee Breaks
|
||||
- 2.9.0 Immigrant Song
|
||||
- 2.8.0 How Many More Times
|
||||
- 2.7.0 In the Light
|
||||
- 2.6.0 Heartbreaker
|
||||
- 2.5.0 Kashmir
|
||||
- 2.4.0 Dancing Days
|
||||
- 2.3.0 Ramble On
|
||||
- 2.2.0 The Battle of Evermore
|
||||
- 2.1.0 The Song Remains the Same
|
||||
- 2.0.0 Over the Hills and Far Away
|
||||
15
.github/SECURITY.md
vendored
15
.github/SECURITY.md
vendored
@ -1,15 +0,0 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Ansible applies security fixes according to the 3-versions-back support
|
||||
policy. Please find more information in [our docs](
|
||||
https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html#release-status
|
||||
).
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
We encourage responsible disclosure practices for security
|
||||
vulnerabilities. Please read our [policies for reporting bugs](
|
||||
https://docs.ansible.com/ansible/devel/community/reporting_bugs_and_features.html#reporting-a-bug
|
||||
) if you want to report a security issue that might affect Ansible.
|
||||
51
.gitignore
vendored
51
.gitignore
vendored
@ -29,20 +29,14 @@ docs/man/man3/*
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
# docsite stuff...
|
||||
docs/api/_build/
|
||||
docs/api/rst/
|
||||
docs/docsite/_build
|
||||
docs/docsite/*.html
|
||||
docs/docsite/htmlout
|
||||
docs/docsite/rst/conf.py
|
||||
docs/docsite/rst/index.rst
|
||||
docs/docsite/rst/cli/ansible-*.rst
|
||||
docs/docsite/rst/cli/ansible.rst
|
||||
docs/docsite/rst/dev_guide/collections_galaxy_meta.rst
|
||||
docs/docsite/rst/dev_guide/testing/sanity/index.rst.new
|
||||
docs/docsite/rst/dev_guide/index.rst
|
||||
docs/docsite/rst/modules/*.rst
|
||||
docs/docsite/rst/collections/*.rst
|
||||
!docs/docsite/rst/collections/all_plugins.rst
|
||||
docs/docsite/rst/collections/*/*.rst
|
||||
docs/docsite/rst/playbooks_directives.rst
|
||||
docs/docsite/rst/plugins_by_category.rst
|
||||
docs/docsite/rst/plugins/*/*.rst
|
||||
@ -53,10 +47,12 @@ docs/docsite/searchindex.js
|
||||
docs/docsite/_static/*.gif
|
||||
docs/docsite/_static/*.png
|
||||
docs/docsite/_static/websupport.js
|
||||
# deb building stuff...
|
||||
/debian/
|
||||
deb-build
|
||||
# Vim swap files
|
||||
*.swp
|
||||
*.swo
|
||||
[._]*.un~
|
||||
credentials.yml
|
||||
# test output
|
||||
*.retry
|
||||
@ -68,44 +64,30 @@ credentials.yml
|
||||
results.xml
|
||||
coverage.xml
|
||||
/test/units/cover-html
|
||||
/test/integration/inventory
|
||||
/test/integration/targets/*/backup/
|
||||
/test/cache/*
|
||||
# Development
|
||||
/test/develop
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
venv
|
||||
env
|
||||
Vagrantfile
|
||||
.vagrant
|
||||
# Backwards compatibility with `stable-2.9` and earlier branches.
|
||||
# Also used in the `devel` branch during early Ansible 2.10 development.
|
||||
/lib/ansible.egg-info/
|
||||
# First used in the `devel` branch during Ansible 2.10 development.
|
||||
/lib/ansible_base.egg-info/
|
||||
# First used in the `devel` branch during Ansible 2.11 development.
|
||||
/lib/ansible_core.egg-info/
|
||||
# vendored lib dir
|
||||
lib/ansible/_vendor/*
|
||||
!lib/ansible/_vendor/__init__.py
|
||||
# test stuff
|
||||
ansible.egg-info/
|
||||
/shippable/
|
||||
/test/integration/cloud-config-*.*
|
||||
!/test/integration/cloud-config-*.*.template
|
||||
.python-version
|
||||
/hacking/tests/selinux/*.mod
|
||||
/hacking/tests/selinux/*.pp
|
||||
# Release directory
|
||||
packaging/release/ansible_release
|
||||
/.cache/
|
||||
/test/results/
|
||||
/test/integration/cloud-config-aws.yml
|
||||
/test/results/coverage/*=coverage.*
|
||||
/test/results/coverage/coverage*
|
||||
/test/results/reports/coverage*.xml
|
||||
/test/results/reports/coverage*/
|
||||
/test/results/bot/*.json
|
||||
/test/results/junit/*.xml
|
||||
/test/results/logs/*.log
|
||||
/test/results/data/*.json
|
||||
/test/integration/inventory.remote
|
||||
/test/integration/inventory.networking
|
||||
/test/integration/inventory.winrm
|
||||
/test/integration/cloud-config-aws.yml
|
||||
@ -123,4 +105,3 @@ test/units/.coverage.*
|
||||
/test/integration/cloud-config-azure.yml
|
||||
/SYMLINK_CACHE.json
|
||||
changelogs/.plugin-cache.yaml
|
||||
.ansible-test-timeout.json
|
||||
|
||||
316
CODING_GUIDELINES.md
Normal file
316
CODING_GUIDELINES.md
Normal file
@ -0,0 +1,316 @@
|
||||
Coding Guidelines
|
||||
=================
|
||||
|
||||
Hi! Thanks for your interest in contributing to Ansible.
|
||||
|
||||
Here are some guidelines for contributing code. The purpose of this document is to establish what we're looking for in code contributions, and to make sure
|
||||
new contributors know some of the conventions that we've been using.
|
||||
|
||||
We don't think much of this should be too strange to readers familiar with contributing to Python projects, though it helps if we all get on the same page.
|
||||
|
||||
Language
|
||||
========
|
||||
|
||||
* While not all components of Ansible must be in Python, core contributions to the Ansible repo must be written in Python. This is to maximize the ability of everyone to contribute.
|
||||
* If you want to write non-Python ansible modules or inventory scripts, that's fine, but they are not going to get merged in most likely. Sorry!!
|
||||
|
||||
PEP 8 and basic style checks
|
||||
============================
|
||||
|
||||
* [PEP 8](https://www.python.org/dev/peps/pep-0008/) is a great Python style guide, which you should read.
|
||||
* PEP 8 must not be strictly followed in all aspects, but most of it is good advice.
|
||||
* The line is limited to 160 characters.
|
||||
* To run checks for things we care about, use [ansible-test](https://docs.ansible.com/ansible/devel/dev_guide/testing_sanity.html).
|
||||
* Similarly, additional checks can be made with "make pyflakes".
|
||||
* There is no need to submit code changes for PEP 8 and pyflakes fixes, as these break attribution history. Project leadership will make these periodically.
|
||||
* Do not submit pull requests that simply adjust whitespace in the code.
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
* Much of Ansible's testing needs are in integration, not unit tests. Add module tests there.
|
||||
* That being said, there are unit tests too!
|
||||
* Code written must absolutely pass tests (i.e. "make tests")
|
||||
* You should anticipate any error paths in your code and test down those error paths.
|
||||
* Additions to tests for core code are welcome, but not always possible. Be sure things are at least well tested manually in that case.
|
||||
|
||||
Whitespace
|
||||
==========
|
||||
|
||||
* Four space indent is strictly required
|
||||
* Include meaningful whitespace between lines of code
|
||||
|
||||
Shebang Lines
|
||||
=============
|
||||
|
||||
* /usr/bin/scripts should start with '/usr/bin/env python'
|
||||
* module code should still use '/usr/bin/python' as this is replaced automatically by 'ansible_python_interpreter', see the FAQ in the docs for more info.
|
||||
|
||||
Comments
|
||||
========
|
||||
|
||||
* Readability is one of the most important goals for this project
|
||||
* Comment any non-trivial code where someone might not know why you are doing something in a particular way
|
||||
* Though if something should be commented, that's often a sign someone should write a function
|
||||
* All new functions must have a basic docstring comment
|
||||
* Commenting above a line is preferable to commenting at the end of a line
|
||||
|
||||
Classes
|
||||
=======
|
||||
|
||||
* With the exception of module code (where inline is better), it is desirable to see classes in their own files.
|
||||
* Classes should generally not cause side effects as soon as they are instantiated, move meaningful behavior to methods rather than constructors.
|
||||
|
||||
Functions and Methods
|
||||
=====================
|
||||
|
||||
* In general, functions should not be 'too long' and should describe a meaningful amount of work
|
||||
* When code gets too nested, that's usually the sign the loop body could benefit from being a function
|
||||
* Parts of our existing code are not the best examples of this at times.
|
||||
* Functions should have names that describe what they do, along with docstrings
|
||||
* Functions should be named with_underscores
|
||||
* "Don't repeat yourself" is generally a good philosophy
|
||||
|
||||
Variables
|
||||
=========
|
||||
|
||||
* Use descriptive variable names instead of variables like 'x', unless x is an obvious loop index
|
||||
* Ansible python code uses identifiers like 'ClassesLikeThis and variables_like_this
|
||||
* Module parameters should also use_underscores and not runtogether
|
||||
|
||||
Module Security
|
||||
===============
|
||||
|
||||
* Modules must take steps to avoid passing user input from the shell and always check return codes
|
||||
* always use module.run_command instead of subprocess or Popen or os.system -- this is mandatory
|
||||
* if you need to use the shell you must pass use_unsafe_shell=True to module.run_command
|
||||
* if you do not need the shell, avoid using the shell
|
||||
* any variables that can come from the user input with use_unsafe_shell=True must be wrapped by pipes.quote(x)
|
||||
* downloads of https:// resource urls must import module_utils.urls and use the fetch_url method
|
||||
|
||||
Misc Preferences
|
||||
================
|
||||
|
||||
Use the dict constructor where possible when allocating dictionaries:
|
||||
|
||||
# not this:
|
||||
foo = {
|
||||
'a' : 12,
|
||||
'b' : 34
|
||||
}
|
||||
|
||||
# this:
|
||||
foo = dict(
|
||||
a=12,
|
||||
b=34,
|
||||
)
|
||||
|
||||
Do not line up variables
|
||||
|
||||
# not this
|
||||
a = 12
|
||||
foosball = 34
|
||||
xyz = 'dog'
|
||||
|
||||
# this
|
||||
a = 12
|
||||
foosball = 34
|
||||
xyz = 'dog'
|
||||
|
||||
Don't use line continuations:
|
||||
|
||||
# no
|
||||
if (this_is_a_very_long_line and foo and \
|
||||
i_am_going_to_continue_it):
|
||||
bar()
|
||||
|
||||
# better:
|
||||
if (this_is_a_very_long_line and foo and i_am_going_to_continue_it):
|
||||
bar()
|
||||
|
||||
Spacing:
|
||||
|
||||
# no
|
||||
x = [1,2,3]
|
||||
|
||||
# no
|
||||
x = [ 1, 2, 3 ]
|
||||
|
||||
# yes
|
||||
x = [1, 2, 3]
|
||||
|
||||
Spacing continued:
|
||||
|
||||
# no
|
||||
x=foo(12)
|
||||
|
||||
# no
|
||||
x = foo( 12 )
|
||||
|
||||
# yes
|
||||
x = foo(12)
|
||||
|
||||
Licenses
|
||||
========
|
||||
|
||||
Every file should have a license header, including the copyright of the original author. Major additions to the module are allowed
|
||||
to add an additional copyright line, and this is especially true of rewrites, but original authorship copyright messages should be preserved.
|
||||
|
||||
All contributions to the core repo should preserve original licenses and new contributions must include the GPLv3 header.
|
||||
|
||||
Module Documentation
|
||||
====================
|
||||
|
||||
All module pull requests must include a DOCUMENTATION docstring (YAML format,
|
||||
see other modules for examples) as well as an EXAMPLES docstring, which is free form.
|
||||
|
||||
When adding new modules, any new parameter must have a "version_added" attribute.
|
||||
When submitting a new module, the module should have a "version_added" attribute in the
|
||||
pull request as well, set to the current development version.
|
||||
|
||||
Be sure to check grammar and spelling.
|
||||
|
||||
It's frequently the case that modules get submitted with YAML that isn't valid,
|
||||
so you can run "make webdocs" from the checkout to preview your module's documentation.
|
||||
If it fails to build, take a look at your DOCUMENTATION string
|
||||
or you might have a Python syntax error in there too.
|
||||
|
||||
Python Imports
|
||||
==============
|
||||
|
||||
To make it clear what a module is importing, imports should not be sprinkled throughout the code.
|
||||
|
||||
Python Imports should happen at the top of the file, exempting code from module_utils.
|
||||
|
||||
When a conditional runtime import is required, do so something like this instead:
|
||||
|
||||
HAS_FOO = False
|
||||
try:
|
||||
import foo
|
||||
HAS_FOO = True
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
...
|
||||
|
||||
if not HAS_FOO:
|
||||
raise Exception("the foo library is required")
|
||||
|
||||
This makes it clear what optional dependencies are but allows this to be deferred until runtime. In the case of module code, the raising of the Exception will be replaced
|
||||
with a "module.exit_json" call.
|
||||
|
||||
Exceptions
|
||||
==========
|
||||
|
||||
In the main body of the code, use typed exceptions where possible:
|
||||
|
||||
# not this
|
||||
raise Exception("panic!")
|
||||
|
||||
# this
|
||||
from ansible import errors
|
||||
...
|
||||
raise errors.AnsibleError("panic!")
|
||||
|
||||
Similarly, exception checking should be fine grained:
|
||||
|
||||
# not this
|
||||
try:
|
||||
foo()
|
||||
except:
|
||||
bar()
|
||||
|
||||
# but this
|
||||
try:
|
||||
foo()
|
||||
except SomeTypedException:
|
||||
bar()
|
||||
|
||||
List Comprehensions
|
||||
===================
|
||||
|
||||
In general list comprehensions are always preferred to map() and filter() calls.
|
||||
|
||||
However, they can be abused. Optimize for readability, and avoid nesting them too deeply.
|
||||
|
||||
Regexes
|
||||
=======
|
||||
|
||||
There is a time and place for them, but here's an illustrative joke.
|
||||
|
||||
"A developer had a problem, and used a regular expression to solve it. Now the developer had two problems".
|
||||
|
||||
Often regexes are difficult to maintain, and a trusty call to other string operations can be a great solution, faster,
|
||||
and more readable.
|
||||
|
||||
File Conventions
|
||||
================
|
||||
|
||||
If a piece of code looks for a named YAML file in a directory, it should assume it can take no extension, or an extension of '.yml' or '.yaml'.
|
||||
This should be true against all code that loads files.
|
||||
|
||||
Any code that uses directories should consider the possibility that the directory may be symlink.
|
||||
|
||||
New Ansible language parameters
|
||||
===============================
|
||||
|
||||
If adding a new parameter, like 'can_fizzbuzz: True/False' be sure the value of the parameter is templated somewhere in the Runner code, as if anything can be parameterized in Ansible,
|
||||
there is a user that will try to parameterize it.
|
||||
|
||||
String Find
|
||||
===========
|
||||
|
||||
Use 'in':
|
||||
|
||||
# not this:
|
||||
if x.find('foo') != -1:
|
||||
|
||||
# this:
|
||||
if 'foo' in x:
|
||||
|
||||
String checks
|
||||
=============
|
||||
|
||||
To test if something is a string, consider that it may be unicode.
|
||||
|
||||
# no
|
||||
if type(x) == str:
|
||||
|
||||
# yes
|
||||
from ansible.module_utils.six import string_types
|
||||
if isinstance(x, string_types):
|
||||
|
||||
Cleverness
|
||||
==========
|
||||
|
||||
Ansible's code is intended to be read by as many people as possible, so we don't particularly encourage clever or heavily idiomatic code.
|
||||
|
||||
In particular, metaclasses are probably not appropriate, however entertaining they may be to add.
|
||||
|
||||
Git Practices
|
||||
=============
|
||||
|
||||
Pull requests cannot be accepted if they contain merge commits.
|
||||
|
||||
Always do "git pull --rebase" and "git rebase" vs "git pull" or "git merge". See [rebasing a pull request](https://docs.ansible.com/ansible/latest/dev_guide/developing_rebasing.html) for more information.
|
||||
|
||||
Always create a new branch for each pull request to avoid intermingling different features or fixes on the same branch.
|
||||
|
||||
|
||||
Python Version Compliance
|
||||
=========================
|
||||
|
||||
All code in Ansible core must support a minimum version of Python 2.6.
|
||||
|
||||
Module code must support a minimum of Python 2.4, with occasional exceptions for modules that require code that themselves require 2.6 and later.
|
||||
|
||||
A quick reminder is that list comprehensions in Python 2.4 are not as fully fleshed out, there are no 'dict' comprehensions, and there is no 'with' statement.
|
||||
But otherwise it's pretty much all the same.
|
||||
|
||||
The End
|
||||
=======
|
||||
|
||||
This was not meant to be a scary document, so we hope it wasn't, but we also hope this helps you write code that is easier to maintain by others in the future.
|
||||
If you have questions about this document, please ask on the ansible-devel mailing list.
|
||||
|
||||
Thank you!
|
||||
27
MANIFEST.in
27
MANIFEST.in
@ -1,11 +1,20 @@
|
||||
prune hacking
|
||||
include README.rst
|
||||
include COPYING
|
||||
include bin/*
|
||||
include changelogs/CHANGELOG*.rst
|
||||
include changelogs/changelog.yaml
|
||||
include licenses/*.txt
|
||||
include SYMLINK_CACHE.json
|
||||
include requirements.txt
|
||||
recursive-include packaging *.py *.j2
|
||||
recursive-include test/integration *
|
||||
recursive-include test/sanity *.in *.json *.py *.txt
|
||||
recursive-include test/support *.py *.ps1 *.psm1 *.cs *.md
|
||||
recursive-include test/units *
|
||||
include .coveragerc
|
||||
include examples/hosts
|
||||
include examples/ansible.cfg
|
||||
recursive-include lib/ansible/module_utils/powershell *
|
||||
recursive-include lib/ansible/modules *
|
||||
recursive-include lib/ansible/galaxy/data *
|
||||
recursive-include docs *
|
||||
recursive-include licenses *
|
||||
recursive-include packaging *
|
||||
recursive-include test *
|
||||
include Makefile
|
||||
include MANIFEST.in
|
||||
include changelogs/CHANGELOG*.rst
|
||||
include contrib/README.md
|
||||
recursive-include contrib/inventory *
|
||||
|
||||
3
MODULE_GUIDELINES.md
Normal file
3
MODULE_GUIDELINES.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Module Maintainer Guidelines
|
||||
|
||||
The Ansible Module Maintainer Guidelines can now be found in the [official Ansible community guide](https://docs.ansible.com/ansible/latest/community/maintainers.html).
|
||||
401
Makefile
Normal file
401
Makefile
Normal file
@ -0,0 +1,401 @@
|
||||
# WARN: gmake syntax
|
||||
########################################################
|
||||
# Makefile for Ansible
|
||||
#
|
||||
# useful targets:
|
||||
# make sdist ---------------- produce a tarball
|
||||
# make srpm ----------------- produce a SRPM
|
||||
# make rpm ----------------- produce RPMs
|
||||
# make deb-src -------------- produce a DEB source
|
||||
# make deb ------------------ produce a DEB
|
||||
# make docs ----------------- rebuild the manpages (results are checked in)
|
||||
# make tests ---------------- run the tests (see https://docs.ansible.com/ansible/devel/dev_guide/testing_units.html for requirements)
|
||||
# make pyflakes, make pep8 -- source code checks
|
||||
|
||||
########################################################
|
||||
# variable section
|
||||
|
||||
NAME = ansible
|
||||
OS = $(shell uname -s)
|
||||
PREFIX ?= '/usr/local'
|
||||
|
||||
# This doesn't evaluate until it's called. The -D argument is the
|
||||
# directory of the target file ($@), kinda like `dirname`.
|
||||
MANPAGES ?= $(patsubst %.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
|
||||
GENERATE_CLI = docs/bin/generate_man.py
|
||||
|
||||
PYTHON=python
|
||||
SITELIB = $(shell $(PYTHON) -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
|
||||
|
||||
# fetch version from project release.py as single source-of-truth
|
||||
VERSION := $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --raw || echo error)
|
||||
ifeq ($(findstring error,$(VERSION)), error)
|
||||
$(error "version_helper failed")
|
||||
endif
|
||||
|
||||
MAJOR_VERSION := $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --majorversion)
|
||||
CODENAME := $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --codename)
|
||||
|
||||
# if a specific release was not requested, set to 1 (RPMs have "fancier" logic for this further down)
|
||||
RELEASE ?= 1
|
||||
|
||||
# Get the branch information from git
|
||||
ifneq ($(shell which git),)
|
||||
GIT_DATE := $(shell git log -n 1 --format="%ai")
|
||||
GIT_HASH := $(shell git log -n 1 --format="%h")
|
||||
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD | sed 's/[-_.\/]//g')
|
||||
GITINFO = .$(GIT_HASH).$(GIT_BRANCH)
|
||||
else
|
||||
GITINFO = ""
|
||||
endif
|
||||
|
||||
ifeq ($(shell echo $(OS) | egrep -c 'Darwin|FreeBSD|OpenBSD|DragonFly'),1)
|
||||
DATE := $(shell date -j -r $(shell git log -n 1 --format="%at") +%Y%m%d%H%M)
|
||||
CPUS ?= $(shell sysctl hw.ncpu|awk '{print $$2}')
|
||||
else
|
||||
DATE := $(shell date --utc --date="$(GIT_DATE)" +%Y%m%d%H%M)
|
||||
CPUS ?= $(shell nproc)
|
||||
endif
|
||||
|
||||
# DEB build parameters
|
||||
DEBUILD_BIN ?= debuild
|
||||
DEBUILD_OPTS = --source-option="-I"
|
||||
DPUT_BIN ?= dput
|
||||
DPUT_OPTS ?=
|
||||
DEB_DATE := $(shell LC_TIME=C date +"%a, %d %b %Y %T %z")
|
||||
DEB_VERSION ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --debversion)
|
||||
ifeq ($(OFFICIAL),yes)
|
||||
DEB_RELEASE ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --debrelease)ppa
|
||||
# Sign OFFICIAL builds using 'DEBSIGN_KEYID'
|
||||
# DEBSIGN_KEYID is required when signing
|
||||
ifneq ($(DEBSIGN_KEYID),)
|
||||
DEBUILD_OPTS += -k$(DEBSIGN_KEYID)
|
||||
endif
|
||||
else
|
||||
DEB_RELEASE ?= 100.git$(DATE)$(GITINFO)
|
||||
# Do not sign unofficial builds
|
||||
DEBUILD_OPTS += -uc -us
|
||||
DPUT_OPTS += -u
|
||||
endif
|
||||
DEBUILD = $(DEBUILD_BIN) $(DEBUILD_OPTS)
|
||||
DEB_PPA ?= ppa
|
||||
# Choose the desired Ubuntu release: lucid precise saucy trusty
|
||||
DEB_DIST ?= unstable
|
||||
|
||||
# pbuilder parameters
|
||||
PBUILDER_ARCH ?= amd64
|
||||
PBUILDER_CACHE_DIR = /var/cache/pbuilder
|
||||
PBUILDER_BIN ?= pbuilder
|
||||
PBUILDER_OPTS ?= --debootstrapopts --variant=buildd --architecture $(PBUILDER_ARCH) --debbuildopts -b
|
||||
|
||||
# RPM build parameters
|
||||
RPMSPECDIR= packaging/rpm
|
||||
RPMSPEC = $(RPMSPECDIR)/ansible.spec
|
||||
RPMDIST = $(shell rpm --eval '%{?dist}')
|
||||
|
||||
ifneq ($(OFFICIAL),yes)
|
||||
RPMRELEASE = 100.git$(DATE)$(GITINFO)
|
||||
endif
|
||||
ifeq ($(PUBLISH),nightly)
|
||||
# https://fedoraproject.org/wiki/Packaging:Versioning#Snapshots
|
||||
RPMRELEASE = $(RELEASE).$(DATE)git.$(GIT_HASH)
|
||||
endif
|
||||
|
||||
RPMVERSION ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --baseversion)
|
||||
RPMRELEASE ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --rpmrelease)
|
||||
RPMNVR = "$(NAME)-$(RPMVERSION)-$(RPMRELEASE)$(RPMDIST)$(REPOTAG)"
|
||||
|
||||
# MOCK build parameters
|
||||
MOCK_BIN ?= mock
|
||||
MOCK_CFG ?=
|
||||
|
||||
# dynamically add repotag define only if specified
|
||||
ifneq ($(REPOTAG),)
|
||||
EXTRA_RPM_DEFINES += --define "repotag $(REPOTAG)"
|
||||
endif
|
||||
|
||||
# ansible-test parameters
|
||||
ANSIBLE_TEST ?= test/runner/ansible-test
|
||||
TEST_FLAGS ?=
|
||||
|
||||
# ansible-test units parameters (make test / make test-py3)
|
||||
PYTHON_VERSION ?= $(shell python2 -c 'import sys; print("%s.%s" % sys.version_info[:2])')
|
||||
PYTHON3_VERSION ?= $(shell python3 -c 'import sys; print("%s.%s" % sys.version_info[:2])')
|
||||
|
||||
# ansible-test integration parameters (make integration)
|
||||
IMAGE ?= centos7
|
||||
TARGET ?=
|
||||
|
||||
########################################################
|
||||
|
||||
.PHONY: all
|
||||
all: clean python
|
||||
|
||||
.PHONY: tests
|
||||
tests:
|
||||
$(ANSIBLE_TEST) units -v --python $(PYTHON_VERSION) $(TEST_FLAGS)
|
||||
|
||||
.PHONY: tests-py3
|
||||
tests-py3:
|
||||
$(ANSIBLE_TEST) units -v --python $(PYTHON3_VERSION) $(TEST_FLAGS)
|
||||
|
||||
.PHONY: tests-nonet
|
||||
tests-nonet:
|
||||
$(ANSIBLE_TEST) units -v --python $(PYTHON_VERSION) $(TEST_FLAGS) --exclude test/units/modules/network/
|
||||
|
||||
.PHONY: integration
|
||||
integration:
|
||||
$(ANSIBLE_TEST) integration -v --docker $(IMAGE) $(TARGET) $(TEST_FLAGS)
|
||||
|
||||
.PHONY: authors
|
||||
authors:
|
||||
sh hacking/authors.sh
|
||||
|
||||
# Regenerate %.1.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: loc
|
||||
loc:
|
||||
sloccount lib library bin
|
||||
|
||||
.PHONY: pep8
|
||||
pep8:
|
||||
$(ANSIBLE_TEST) sanity --test pep8 --python $(PYTHON_VERSION) $(TEST_FLAGS)
|
||||
|
||||
.PHONY: pyflakes
|
||||
pyflakes:
|
||||
pyflakes lib/ansible/*.py lib/ansible/*/*.py bin/*
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
@echo "Cleaning up distutils stuff"
|
||||
rm -rf build
|
||||
rm -rf dist
|
||||
rm -rf lib/ansible.egg-info/
|
||||
@echo "Cleaning up byte compiled python stuff"
|
||||
find . -type f -regex ".*\.py[co]$$" -delete
|
||||
find . -type d -name "__pycache__" -delete
|
||||
@echo "Cleaning up editor backup files"
|
||||
find . -type f -not -path ./test/units/inventory_test_data/group_vars/noparse/all.yml~ \( -name "*~" -or -name "#*" \) -delete
|
||||
find . -type f \( -name "*.swp" \) -delete
|
||||
@echo "Cleaning up manpage stuff"
|
||||
find ./docs/man -type f -name "*.xml" -delete
|
||||
find ./docs/man -type f -name "*.rst" -delete
|
||||
find ./docs/man/man3 -type f -name "*.3" -delete
|
||||
rm -f ./docs/man/man1/*
|
||||
@echo "Cleaning up output from test runs"
|
||||
rm -rf test/test_data
|
||||
rm -rf shippable/
|
||||
rm -rf logs/
|
||||
rm -rf .cache/
|
||||
rm -f test/units/.coverage*
|
||||
rm -rf test/results/*/*
|
||||
find test/ -type f -name '*.retry' -delete
|
||||
@echo "Cleaning up RPM building stuff"
|
||||
rm -rf MANIFEST rpm-build
|
||||
@echo "Cleaning up Debian building stuff"
|
||||
rm -rf debian
|
||||
rm -rf deb-build
|
||||
rm -rf docs/json
|
||||
rm -rf docs/js
|
||||
@echo "Cleaning up authors file"
|
||||
rm -f AUTHORS.TXT
|
||||
@echo "Cleaning up docsite"
|
||||
$(MAKE) -C docs/docsite clean
|
||||
$(MAKE) -C docs/api clean
|
||||
|
||||
.PHONY: python
|
||||
python:
|
||||
$(PYTHON) setup.py build
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
$(PYTHON) setup.py install
|
||||
|
||||
install_manpages:
|
||||
gzip -9 $(wildcard ./docs/man/man1/ansible*.1)
|
||||
cp $(wildcard ./docs/man/man1/ansible*.1.gz) $(PREFIX)/man/man1/
|
||||
|
||||
.PHONY: sdist
|
||||
sdist: clean docs
|
||||
$(PYTHON) setup.py sdist
|
||||
|
||||
.PHONY: sdist_upload
|
||||
sdist_upload: clean docs
|
||||
$(PYTHON) setup.py sdist upload 2>&1 |tee upload.log
|
||||
|
||||
.PHONY: changelog
|
||||
changelog:
|
||||
packaging/release/changelogs/changelog.py release -vv && packaging/release/changelogs/changelog.py generate -vv
|
||||
|
||||
.PHONY: rpmcommon
|
||||
rpmcommon: sdist
|
||||
@mkdir -p rpm-build
|
||||
@cp dist/*.gz rpm-build/
|
||||
@cp $(RPMSPEC) rpm-build/$(NAME).spec
|
||||
|
||||
.PHONY: mock-srpm
|
||||
mock-srpm: /etc/mock/$(MOCK_CFG).cfg rpmcommon
|
||||
$(MOCK_BIN) -r $(MOCK_CFG) $(MOCK_ARGS) --resultdir rpm-build/ --bootstrap-chroot --old-chroot --buildsrpm --spec rpm-build/$(NAME).spec --sources rpm-build/ \
|
||||
--define "rpmversion $(RPMVERSION)" \
|
||||
--define "upstream_version $(VERSION)" \
|
||||
--define "rpmrelease $(RPMRELEASE)" \
|
||||
$(EXTRA_RPM_DEFINES)
|
||||
@echo "#############################################"
|
||||
@echo "Ansible SRPM is built:"
|
||||
@echo rpm-build/*.src.rpm
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: mock-rpm
|
||||
mock-rpm: /etc/mock/$(MOCK_CFG).cfg mock-srpm
|
||||
$(MOCK_BIN) -r $(MOCK_CFG) $(MOCK_ARGS) --resultdir rpm-build/ --bootstrap-chroot --old-chroot --rebuild rpm-build/$(NAME)-*.src.rpm \
|
||||
--define "rpmversion $(RPMVERSION)" \
|
||||
--define "upstream_version $(VERSION)" \
|
||||
--define "rpmrelease $(RPMRELEASE)" \
|
||||
$(EXTRA_RPM_DEFINES)
|
||||
@echo "#############################################"
|
||||
@echo "Ansible RPM is built:"
|
||||
@echo rpm-build/*.noarch.rpm
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: srpm
|
||||
srpm: rpmcommon
|
||||
@rpmbuild --define "_topdir %(pwd)/rpm-build" \
|
||||
--define "_builddir %{_topdir}" \
|
||||
--define "_rpmdir %{_topdir}" \
|
||||
--define "_srcrpmdir %{_topdir}" \
|
||||
--define "_specdir $(RPMSPECDIR)" \
|
||||
--define "_sourcedir %{_topdir}" \
|
||||
--define "upstream_version $(VERSION)" \
|
||||
--define "rpmversion $(RPMVERSION)" \
|
||||
--define "rpmrelease $(RPMRELEASE)" \
|
||||
$(EXTRA_RPM_DEFINES) \
|
||||
-bs rpm-build/$(NAME).spec
|
||||
@rm -f rpm-build/$(NAME).spec
|
||||
@echo "#############################################"
|
||||
@echo "Ansible SRPM is built:"
|
||||
@echo " rpm-build/$(RPMNVR).src.rpm"
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: rpm
|
||||
rpm: rpmcommon
|
||||
@rpmbuild --define "_topdir %(pwd)/rpm-build" \
|
||||
--define "_builddir %{_topdir}" \
|
||||
--define "_rpmdir %{_topdir}" \
|
||||
--define "_srcrpmdir %{_topdir}" \
|
||||
--define "_specdir $(RPMSPECDIR)" \
|
||||
--define "_sourcedir %{_topdir}" \
|
||||
--define "_rpmfilename $(RPMNVR).%%{ARCH}.rpm" \
|
||||
--define "__python `which $(PYTHON)`" \
|
||||
--define "upstream_version $(VERSION)" \
|
||||
--define "rpmversion $(RPMVERSION)" \
|
||||
--define "rpmrelease $(RPMRELEASE)" \
|
||||
$(EXTRA_RPM_DEFINES) \
|
||||
-ba rpm-build/$(NAME).spec
|
||||
@rm -f rpm-build/$(NAME).spec
|
||||
@echo "#############################################"
|
||||
@echo "Ansible RPM is built:"
|
||||
@echo " rpm-build/$(RPMNVR).noarch.rpm"
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: debian
|
||||
debian: sdist
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
mkdir -p deb-build/$${DIST} ; \
|
||||
tar -C deb-build/$${DIST} -xvf dist/$(NAME)-$(VERSION).tar.gz ; \
|
||||
cp -a packaging/debian deb-build/$${DIST}/$(NAME)-$(VERSION)/ ; \
|
||||
sed -ie "s|%VERSION%|$(DEB_VERSION)|g;s|%RELEASE%|$(DEB_RELEASE)|;s|%DIST%|$${DIST}|g;s|%DATE%|$(DEB_DATE)|g" deb-build/$${DIST}/$(NAME)-$(VERSION)/debian/changelog ; \
|
||||
done
|
||||
|
||||
.PHONY: deb
|
||||
deb: deb-src
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
PBUILDER_OPTS="$(PBUILDER_OPTS) --distribution $${DIST} --basetgz $(PBUILDER_CACHE_DIR)/$${DIST}-$(PBUILDER_ARCH)-base.tgz --buildresult $(CURDIR)/deb-build/$${DIST}" ; \
|
||||
$(PBUILDER_BIN) create $${PBUILDER_OPTS} --othermirror "deb http://archive.ubuntu.com/ubuntu $${DIST} universe" ; \
|
||||
$(PBUILDER_BIN) update $${PBUILDER_OPTS} ; \
|
||||
$(PBUILDER_BIN) build $${PBUILDER_OPTS} deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}.dsc ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_amd64.changes ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
|
||||
# Build package outside of pbuilder, with locally installed dependencies.
|
||||
# Install BuildRequires as noted in packaging/debian/control.
|
||||
.PHONY: local_deb
|
||||
local_deb: debian
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
(cd deb-build/$${DIST}/$(NAME)-$(VERSION)/ && $(DEBUILD) -b) ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_amd64.changes ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: deb-src
|
||||
deb-src: debian
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
(cd deb-build/$${DIST}/$(NAME)-$(VERSION)/ && $(DEBUILD) -S) ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_source.changes ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: deb-upload
|
||||
deb-upload: deb
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
$(DPUT_BIN) $(DPUT_OPTS) $(DEB_PPA) deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_amd64.changes ; \
|
||||
done
|
||||
|
||||
.PHONY: deb-src-upload
|
||||
deb-src-upload: deb-src
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
$(DPUT_BIN) $(DPUT_OPTS) $(DEB_PPA) deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_source.changes ; \
|
||||
done
|
||||
|
||||
.PHONY: epub
|
||||
epub:
|
||||
(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) epub)
|
||||
|
||||
# for arch or gentoo, read instructions in the appropriate 'packaging' subdirectory directory
|
||||
.PHONY: webdocs
|
||||
webdocs:
|
||||
(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) docs)
|
||||
|
||||
.PHONY: generate_rst
|
||||
generate_rst: lib/ansible/cli/*.py
|
||||
mkdir -p ./docs/man/man1/ ; \
|
||||
PYTHONPATH=./lib $(GENERATE_CLI) --template-file=docs/templates/man.j2 --output-dir=docs/man/man1/ --output-format man lib/ansible/cli/*.py
|
||||
|
||||
|
||||
docs: generate_rst
|
||||
$(MAKE) $(MANPAGES)
|
||||
|
||||
.PHONY: alldocs
|
||||
alldocs: docs webdocs
|
||||
|
||||
version:
|
||||
@echo $(VERSION)
|
||||
|
||||
89
README.md
89
README.md
@ -1,89 +0,0 @@
|
||||
[](https://pypi.org/project/ansible-core)
|
||||
[](https://docs.ansible.com/ansible/latest/)
|
||||
[](https://docs.ansible.com/ansible/latest/community/communication.html)
|
||||
[](https://dev.azure.com/ansible/ansible/_build/latest?definitionId=20&branchName=devel)
|
||||
[](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html)
|
||||
[](https://docs.ansible.com/ansible/latest/community/communication.html#mailing-list-information)
|
||||
[](COPYING)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/2372)
|
||||
|
||||
# Ansible
|
||||
|
||||
Ansible is a radically simple IT automation system. It handles
|
||||
configuration management, application deployment, cloud provisioning,
|
||||
ad-hoc task execution, network automation, and multi-node orchestration. Ansible makes complex
|
||||
changes like zero-downtime rolling updates with load balancers easy. More information on the Ansible [website](https://ansible.com/).
|
||||
|
||||
## Design Principles
|
||||
|
||||
* Have an extremely simple setup process with a minimal learning curve.
|
||||
* Manage machines quickly and in parallel.
|
||||
* Avoid custom-agents and additional open ports, be agentless by
|
||||
leveraging the existing SSH daemon.
|
||||
* Describe infrastructure in a language that is both machine and human
|
||||
friendly.
|
||||
* Focus on security and easy auditability/review/rewriting of content.
|
||||
* Manage new remote machines instantly, without bootstrapping any
|
||||
software.
|
||||
* Allow module development in any dynamic language, not just Python.
|
||||
* Be usable as non-root.
|
||||
* Be the easiest IT automation system to use, ever.
|
||||
|
||||
## Use Ansible
|
||||
|
||||
You can install a released version of Ansible with `pip` or a package manager. See our
|
||||
[installation guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) for details on installing Ansible
|
||||
on a variety of platforms.
|
||||
|
||||
Power users and developers can run the `devel` branch, which has the latest
|
||||
features and fixes, directly. Although it is reasonably stable, you are more likely to encounter
|
||||
breaking changes when running the `devel` branch. We recommend getting involved
|
||||
in the Ansible community if you want to run the `devel` branch.
|
||||
|
||||
## Get Involved
|
||||
|
||||
* Read [Community Information](https://docs.ansible.com/ansible/latest/community) for all
|
||||
kinds of ways to contribute to and interact with the project,
|
||||
including mailing list information and how to submit bug reports and
|
||||
code to Ansible.
|
||||
* Join a [Working Group](https://github.com/ansible/community/wiki),
|
||||
an organized community devoted to a specific technology domain or platform.
|
||||
* Submit a proposed code update through a pull request to the `devel` branch.
|
||||
* Talk to us before making larger changes
|
||||
to avoid duplicate efforts. This not only helps everyone
|
||||
know what is going on, but it also helps save time and effort if we decide
|
||||
some changes are needed.
|
||||
* For a list of email lists, IRC channels and Working Groups, see the
|
||||
[Communication page](https://docs.ansible.com/ansible/latest/community/communication.html)
|
||||
|
||||
## Coding Guidelines
|
||||
|
||||
We document our Coding Guidelines in the [Developer Guide](https://docs.ansible.com/ansible/devel/dev_guide/). We particularly suggest you review:
|
||||
|
||||
* [Contributing your module to Ansible](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_checklist.html)
|
||||
* [Conventions, tips, and pitfalls](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_best_practices.html)
|
||||
|
||||
## Branch Info
|
||||
|
||||
* The `devel` branch corresponds to the release actively under development.
|
||||
* The `stable-2.X` branches correspond to stable releases.
|
||||
* Create a branch based on `devel` and set up a [dev environment](https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html#common-environment-setup) if you want to open a PR.
|
||||
* See the [Ansible release and maintenance](https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html) page for information about active branches.
|
||||
|
||||
## Roadmap
|
||||
|
||||
Based on team and community feedback, an initial roadmap will be published for a major or minor version (ex: 2.7, 2.8).
|
||||
The [Ansible Roadmap page](https://docs.ansible.com/ansible/devel/roadmap/) details what is planned and how to influence the roadmap.
|
||||
|
||||
## Authors
|
||||
|
||||
Ansible was created by [Michael DeHaan](https://github.com/mpdehaan)
|
||||
and has contributions from over 5000 users (and growing). Thanks everyone!
|
||||
|
||||
[Ansible](https://www.ansible.com) is sponsored by [Red Hat, Inc.](https://www.redhat.com)
|
||||
|
||||
## License
|
||||
|
||||
GNU General Public License v3.0 or later
|
||||
|
||||
See [COPYING](COPYING) to see the full text.
|
||||
124
README.rst
Normal file
124
README.rst
Normal file
@ -0,0 +1,124 @@
|
||||
|PyPI version| |Docs badge| |Build Status|
|
||||
|
||||
*******
|
||||
Ansible
|
||||
*******
|
||||
|
||||
Ansible is a radically simple IT automation system. It handles
|
||||
configuration-management, application deployment, cloud provisioning,
|
||||
ad-hoc task-execution, and multinode orchestration -- including
|
||||
trivializing things like zero-downtime rolling updates with load
|
||||
balancers.
|
||||
|
||||
Read the documentation and more at https://ansible.com/
|
||||
|
||||
You can find installation instructions
|
||||
`here <https://docs.ansible.com/intro_getting_started.html>`_ for a
|
||||
variety of platforms.
|
||||
|
||||
Most users should probably install a released version of Ansible from ``pip``, a package manager or
|
||||
our `release repository <https://releases.ansible.com/ansible/>`_. `Officially supported
|
||||
<https://www.ansible.com/ansible-engine>`_ builds of Ansible are also available. Some power users
|
||||
run directly from the development branch - while significant efforts are made to ensure that
|
||||
``devel`` is reasonably stable, you're more likely to encounter breaking changes when running
|
||||
Ansible this way.
|
||||
|
||||
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.
|
||||
|
||||
Get Involved
|
||||
============
|
||||
|
||||
* Read `Community
|
||||
Information <https://docs.ansible.com/community.html>`_ for all
|
||||
kinds of ways to contribute to and interact with the project,
|
||||
including mailing list information and how to submit bug reports and
|
||||
code to Ansible.
|
||||
* All code submissions are done through pull requests. Take care to
|
||||
make sure no merge commits are in the submission, and use
|
||||
``git rebase`` vs ``git merge`` for this reason. If submitting a
|
||||
large code change (other than modules), it's probably a good idea to
|
||||
join ansible-devel and talk about what you would like to do or add
|
||||
first to avoid duplicate efforts. This not only helps everyone
|
||||
know what's going on, it also helps save time and effort if we decide
|
||||
some changes are needed.
|
||||
* Users list:
|
||||
`ansible-project <https://groups.google.com/group/ansible-project>`_
|
||||
* Development list:
|
||||
`ansible-devel <https://groups.google.com/group/ansible-devel>`_
|
||||
* Announcement list:
|
||||
`ansible-announce <https://groups.google.com/group/ansible-announce>`_
|
||||
-- read only
|
||||
* irc.freenode.net: #ansible
|
||||
|
||||
Branch Info
|
||||
===========
|
||||
|
||||
* Releases are named after Led Zeppelin songs. (Releases prior to 2.0
|
||||
were named after Van Halen songs.)
|
||||
* The devel branch corresponds to the release actively under
|
||||
development.
|
||||
* Various release-X.Y branches exist for previous releases.
|
||||
* We'd love to have your contributions, read `Community
|
||||
Information <https://docs.ansible.com/community.html>`_ for notes on
|
||||
how to get started.
|
||||
|
||||
Roadmap
|
||||
=======
|
||||
|
||||
Based on team and community feedback, an initial roadmap will be published for a major or minor version (ex: 2.0, 2.1).
|
||||
Subminor versions will generally not have roadmaps published.
|
||||
|
||||
Ansible 2.1 was the first release which published this and asked for feedback in this manner.
|
||||
Feedback on the roadmap and the new process is quite welcome.
|
||||
The team is aiming for further transparency and better inclusion of both community desires and submissions.
|
||||
|
||||
These are the team's *best guess* roadmaps based on the Ansible team's experience and are also based on requests and feedback from the community.
|
||||
There are things that may not make it due to time constraints, lack of community maintainers, etc.
|
||||
Each roadmap is published both as an idea of what is upcoming in Ansible, and as a medium for seeking further feedback from the community.
|
||||
|
||||
There are multiple places for you to submit feedback:
|
||||
|
||||
- Add to the agenda of an IRC `Core Team Meeting <https://github.com/ansible/community/blob/master/meetings/README.md>`_ (preferred)
|
||||
- Ansible's google-group: ansible-devel
|
||||
- AnsibleFest conferences
|
||||
- IRC Freenode channel: #ansible-devel (this one may have things lost in lots of conversation)
|
||||
|
||||
For additional details consult the published `Ansible Roadmap <https://docs.ansible.com/ansible/devel/roadmap/>`_.
|
||||
|
||||
Authors
|
||||
=======
|
||||
|
||||
Ansible was created by `Michael DeHaan <https://github.com/mpdehaan>`_
|
||||
(michael.dehaan/gmail/com) and has contributions from over 3700 users
|
||||
(and growing). Thanks everyone!
|
||||
|
||||
`Ansible <https://www.ansible.com>`_ is sponsored by `Red Hat, Inc.
|
||||
<https://www.redhat.com>`_
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
GNU General Public License v3.0
|
||||
|
||||
See `COPYING <COPYING>`_ to see the full text.
|
||||
|
||||
.. |PyPI version| image:: https://img.shields.io/pypi/v/ansible.svg
|
||||
:target: https://pypi.org/project/ansible
|
||||
.. |Docs badge| image:: https://img.shields.io/badge/docs-latest-brightgreen.svg
|
||||
:target: https://docs.ansible.com/ansible
|
||||
.. |Build Status| image:: https://api.shippable.com/projects/573f79d02a8192902e20e34b/badge?branch=devel
|
||||
:target: https://app.shippable.com/projects/573f79d02a8192902e20e34b
|
||||
@ -1 +0,0 @@
|
||||
../lib/ansible/cli/adhoc.py
|
||||
163
bin/ansible
Executable file
163
bin/ansible
Executable file
@ -0,0 +1,163 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
|
||||
#
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
########################################################
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
__requires__ = ['ansible']
|
||||
try:
|
||||
import pkg_resources
|
||||
except Exception:
|
||||
# Use pkg_resources to find the correct versions of libraries and set
|
||||
# sys.path appropriately when there are multiversion installs. But we
|
||||
# have code that better expresses the errors in the places where the code
|
||||
# is actually used (the deps are optional for many code paths) so we don't
|
||||
# want to fail here.
|
||||
pass
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
from ansible.errors import AnsibleError, AnsibleOptionsError, AnsibleParserError
|
||||
from ansible.module_utils._text import to_text
|
||||
|
||||
|
||||
# Used for determining if the system is running a new enough python version
|
||||
# and should only restrict on our documented minimum versions
|
||||
_PY3_MIN = sys.version_info[:2] >= (3, 5)
|
||||
_PY2_MIN = (2, 6) <= sys.version_info[:2] < (3,)
|
||||
_PY_MIN = _PY3_MIN or _PY2_MIN
|
||||
if not _PY_MIN:
|
||||
raise SystemExit('ERROR: Ansible requires a minimum of Python2 version 2.6 or Python3 version 3.5. Current version: %s' % ''.join(sys.version.splitlines()))
|
||||
|
||||
|
||||
class LastResort(object):
|
||||
# OUTPUT OF LAST RESORT
|
||||
def display(self, msg, log_only=None):
|
||||
print(msg, file=sys.stderr)
|
||||
|
||||
def error(self, msg, wrap_text=None):
|
||||
print(msg, file=sys.stderr)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
display = LastResort()
|
||||
|
||||
try: # bad ANSIBLE_CONFIG or config options can force ugly stacktrace
|
||||
import ansible.constants as C
|
||||
from ansible.utils.display import Display
|
||||
except AnsibleOptionsError as e:
|
||||
display.error(to_text(e), wrap_text=False)
|
||||
sys.exit(5)
|
||||
|
||||
cli = None
|
||||
me = os.path.basename(sys.argv[0])
|
||||
|
||||
try:
|
||||
display = Display()
|
||||
display.debug("starting run")
|
||||
|
||||
sub = None
|
||||
target = me.split('-')
|
||||
if target[-1][0].isdigit():
|
||||
# Remove any version or python version info as downstreams
|
||||
# sometimes add that
|
||||
target = target[:-1]
|
||||
|
||||
if len(target) > 1:
|
||||
sub = target[1]
|
||||
myclass = "%sCLI" % sub.capitalize()
|
||||
elif target[0] == 'ansible':
|
||||
sub = 'adhoc'
|
||||
myclass = 'AdHocCLI'
|
||||
else:
|
||||
raise AnsibleError("Unknown Ansible alias: %s" % me)
|
||||
|
||||
try:
|
||||
mycli = getattr(__import__("ansible.cli.%s" % sub, fromlist=[myclass]), myclass)
|
||||
except ImportError as e:
|
||||
# ImportError members have changed in py3
|
||||
if 'msg' in dir(e):
|
||||
msg = e.msg
|
||||
else:
|
||||
msg = e.message
|
||||
if msg.endswith(' %s' % sub):
|
||||
raise AnsibleError("Ansible sub-program not implemented: %s" % me)
|
||||
else:
|
||||
raise
|
||||
|
||||
try:
|
||||
args = [to_text(a, errors='surrogate_or_strict') for a in sys.argv]
|
||||
except UnicodeError:
|
||||
display.error('Command line args are not in utf-8, unable to continue. Ansible currently only understands utf-8')
|
||||
display.display(u"The full traceback was:\n\n%s" % to_text(traceback.format_exc()))
|
||||
exit_code = 6
|
||||
else:
|
||||
cli = mycli(args)
|
||||
cli.parse()
|
||||
exit_code = cli.run()
|
||||
|
||||
except AnsibleOptionsError as e:
|
||||
cli.parser.print_help()
|
||||
display.error(to_text(e), wrap_text=False)
|
||||
exit_code = 5
|
||||
except AnsibleParserError as e:
|
||||
display.error(to_text(e), wrap_text=False)
|
||||
exit_code = 4
|
||||
# TQM takes care of these, but leaving comment to reserve the exit codes
|
||||
# except AnsibleHostUnreachable as e:
|
||||
# display.error(str(e))
|
||||
# exit_code = 3
|
||||
# except AnsibleHostFailed as e:
|
||||
# display.error(str(e))
|
||||
# exit_code = 2
|
||||
except AnsibleError as e:
|
||||
display.error(to_text(e), wrap_text=False)
|
||||
exit_code = 1
|
||||
except KeyboardInterrupt:
|
||||
display.error("User interrupted execution")
|
||||
exit_code = 99
|
||||
except Exception as e:
|
||||
if C.DEFAULT_DEBUG:
|
||||
# Show raw stacktraces in debug mode, It also allow pdb to
|
||||
# enter post mortem mode.
|
||||
raise
|
||||
have_cli_options = cli is not None and cli.options is not None
|
||||
display.error("Unexpected Exception, this is probably a bug: %s" % to_text(e), wrap_text=False)
|
||||
if not have_cli_options or have_cli_options and cli.options.verbosity > 2:
|
||||
log_only = False
|
||||
if hasattr(e, 'orig_exc'):
|
||||
display.vvv('\nexception type: %s' % to_text(type(e.orig_exc)))
|
||||
why = to_text(e.orig_exc)
|
||||
if to_text(e) != why:
|
||||
display.vvv('\noriginal msg: %s' % why)
|
||||
else:
|
||||
display.display("to see the full traceback, use -vvv")
|
||||
log_only = True
|
||||
display.display(u"the full traceback was:\n\n%s" % to_text(traceback.format_exc()), log_only=log_only)
|
||||
exit_code = 250
|
||||
finally:
|
||||
# Remove ansible tmpdir
|
||||
shutil.rmtree(C.DEFAULT_LOCAL_TMP, True)
|
||||
|
||||
sys.exit(exit_code)
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/config.py
|
||||
ansible
|
||||
@ -1 +0,0 @@
|
||||
../lib/ansible/cli/scripts/ansible_connection_cli_stub.py
|
||||
321
bin/ansible-connection
Executable file
321
bin/ansible-connection
Executable file
@ -0,0 +1,321 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright: (c) 2017, Ansible Project
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
|
||||
__metaclass__ = type
|
||||
__requires__ = ['ansible']
|
||||
|
||||
try:
|
||||
import pkg_resources
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
import fcntl
|
||||
import hashlib
|
||||
import os
|
||||
import signal
|
||||
import socket
|
||||
import sys
|
||||
import time
|
||||
import traceback
|
||||
import errno
|
||||
import json
|
||||
|
||||
from contextlib import contextmanager
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible.module_utils._text import to_bytes, to_text
|
||||
from ansible.module_utils.six import PY3
|
||||
from ansible.module_utils.six.moves import cPickle, StringIO
|
||||
from ansible.module_utils.connection import Connection, ConnectionError, send_data, recv_data
|
||||
from ansible.module_utils.service import fork_process
|
||||
from ansible.playbook.play_context import PlayContext
|
||||
from ansible.plugins.loader import connection_loader
|
||||
from ansible.utils.path import unfrackpath, makedirs_safe
|
||||
from ansible.utils.display import Display
|
||||
from ansible.utils.jsonrpc import JsonRpcServer
|
||||
|
||||
|
||||
def read_stream(byte_stream):
|
||||
size = int(byte_stream.readline().strip())
|
||||
|
||||
data = byte_stream.read(size)
|
||||
if len(data) < size:
|
||||
raise Exception("EOF found before data was complete")
|
||||
|
||||
data_hash = to_text(byte_stream.readline().strip())
|
||||
if data_hash != hashlib.sha1(data).hexdigest():
|
||||
raise Exception("Read {0} bytes, but data did not match checksum".format(size))
|
||||
|
||||
# restore escaped loose \r characters
|
||||
data = data.replace(br'\r', b'\r')
|
||||
|
||||
return data
|
||||
|
||||
|
||||
@contextmanager
|
||||
def file_lock(lock_path):
|
||||
"""
|
||||
Uses contextmanager to create and release a file lock based on the
|
||||
given path. This allows us to create locks using `with file_lock()`
|
||||
to prevent deadlocks related to failure to unlock properly.
|
||||
"""
|
||||
|
||||
lock_fd = os.open(lock_path, os.O_RDWR | os.O_CREAT, 0o600)
|
||||
fcntl.lockf(lock_fd, fcntl.LOCK_EX)
|
||||
yield
|
||||
fcntl.lockf(lock_fd, fcntl.LOCK_UN)
|
||||
os.close(lock_fd)
|
||||
|
||||
|
||||
class ConnectionProcess(object):
|
||||
'''
|
||||
The connection process wraps around a Connection object that manages
|
||||
the connection to a remote device that persists over the playbook
|
||||
'''
|
||||
def __init__(self, fd, play_context, socket_path, original_path, ansible_playbook_pid=None):
|
||||
self.play_context = play_context
|
||||
self.socket_path = socket_path
|
||||
self.original_path = original_path
|
||||
|
||||
self.fd = fd
|
||||
self.exception = None
|
||||
|
||||
self.srv = JsonRpcServer()
|
||||
self.sock = None
|
||||
|
||||
self.connection = None
|
||||
self._ansible_playbook_pid = ansible_playbook_pid
|
||||
|
||||
def start(self, variables):
|
||||
try:
|
||||
messages = list()
|
||||
result = {}
|
||||
|
||||
messages.append('control socket path is %s' % self.socket_path)
|
||||
|
||||
# If this is a relative path (~ gets expanded later) then plug the
|
||||
# key's path on to the directory we originally came from, so we can
|
||||
# find it now that our cwd is /
|
||||
if self.play_context.private_key_file and self.play_context.private_key_file[0] not in '~/':
|
||||
self.play_context.private_key_file = os.path.join(self.original_path, self.play_context.private_key_file)
|
||||
self.connection = connection_loader.get(self.play_context.connection, self.play_context, '/dev/null',
|
||||
ansible_playbook_pid=self._ansible_playbook_pid)
|
||||
self.connection.set_options(var_options=variables)
|
||||
self.connection._connect()
|
||||
|
||||
self.connection._socket_path = self.socket_path
|
||||
self.srv.register(self.connection)
|
||||
messages.extend(sys.stdout.getvalue().splitlines())
|
||||
messages.append('connection to remote device started successfully')
|
||||
|
||||
self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
self.sock.bind(self.socket_path)
|
||||
self.sock.listen(1)
|
||||
messages.append('local domain socket listeners started successfully')
|
||||
except Exception as exc:
|
||||
result['error'] = to_text(exc)
|
||||
result['exception'] = traceback.format_exc()
|
||||
finally:
|
||||
result['messages'] = messages
|
||||
self.fd.write(json.dumps(result))
|
||||
self.fd.close()
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
while self.connection.connected:
|
||||
signal.signal(signal.SIGALRM, self.connect_timeout)
|
||||
signal.signal(signal.SIGTERM, self.handler)
|
||||
signal.alarm(self.connection.get_option('persistent_connect_timeout'))
|
||||
|
||||
self.exception = None
|
||||
(s, addr) = self.sock.accept()
|
||||
signal.alarm(0)
|
||||
|
||||
signal.signal(signal.SIGALRM, self.command_timeout)
|
||||
while True:
|
||||
data = recv_data(s)
|
||||
if not data:
|
||||
break
|
||||
|
||||
signal.alarm(self.connection.get_option('persistent_command_timeout'))
|
||||
resp = self.srv.handle_request(data)
|
||||
signal.alarm(0)
|
||||
|
||||
send_data(s, to_bytes(resp))
|
||||
|
||||
s.close()
|
||||
|
||||
except Exception as e:
|
||||
# socket.accept() will raise EINTR if the socket.close() is called
|
||||
if hasattr(e, 'errno'):
|
||||
if e.errno != errno.EINTR:
|
||||
self.exception = traceback.format_exc()
|
||||
else:
|
||||
self.exception = traceback.format_exc()
|
||||
|
||||
finally:
|
||||
# allow time for any exception msg send over socket to receive at other end before shutting down
|
||||
time.sleep(0.1)
|
||||
|
||||
# when done, close the connection properly and cleanup the socket file so it can be recreated
|
||||
self.shutdown()
|
||||
|
||||
def connect_timeout(self, signum, frame):
|
||||
msg = 'persistent connection idle timeout triggered, timeout value is %s secs.\nSee the timeout setting options in the Network Debug and ' \
|
||||
'Troubleshooting Guide.' % self.connection.get_option('persistent_connect_timeout')
|
||||
display.display(msg, log_only=True)
|
||||
raise Exception(msg)
|
||||
|
||||
def command_timeout(self, signum, frame):
|
||||
msg = 'command timeout triggered, timeout value is %s secs.\nSee the timeout setting options in the Network Debug and Troubleshooting Guide.'\
|
||||
% self.connection.get_option('persistent_command_timeout')
|
||||
display.display(msg, log_only=True)
|
||||
raise Exception(msg)
|
||||
|
||||
def handler(self, signum, frame):
|
||||
msg = 'signal handler called with signal %s.' % signum
|
||||
display.display(msg, log_only=True)
|
||||
raise Exception(msg)
|
||||
|
||||
def shutdown(self):
|
||||
""" Shuts down the local domain socket
|
||||
"""
|
||||
if os.path.exists(self.socket_path):
|
||||
try:
|
||||
if self.sock:
|
||||
self.sock.close()
|
||||
if self.connection:
|
||||
self.connection.close()
|
||||
except:
|
||||
pass
|
||||
finally:
|
||||
if os.path.exists(self.socket_path):
|
||||
os.remove(self.socket_path)
|
||||
setattr(self.connection, '_socket_path', None)
|
||||
setattr(self.connection, '_connected', False)
|
||||
display.display('shutdown complete', log_only=True)
|
||||
|
||||
|
||||
def main():
|
||||
""" Called to initiate the connect to the remote device
|
||||
"""
|
||||
rc = 0
|
||||
result = {}
|
||||
messages = list()
|
||||
socket_path = None
|
||||
|
||||
# Need stdin as a byte stream
|
||||
if PY3:
|
||||
stdin = sys.stdin.buffer
|
||||
else:
|
||||
stdin = sys.stdin
|
||||
|
||||
# Note: update the below log capture code after Display.display() is refactored.
|
||||
saved_stdout = sys.stdout
|
||||
sys.stdout = StringIO()
|
||||
|
||||
try:
|
||||
# read the play context data via stdin, which means depickling it
|
||||
vars_data = read_stream(stdin)
|
||||
init_data = read_stream(stdin)
|
||||
|
||||
if PY3:
|
||||
pc_data = cPickle.loads(init_data, encoding='bytes')
|
||||
variables = cPickle.loads(vars_data, encoding='bytes')
|
||||
else:
|
||||
pc_data = cPickle.loads(init_data)
|
||||
variables = cPickle.loads(vars_data)
|
||||
|
||||
play_context = PlayContext()
|
||||
play_context.deserialize(pc_data)
|
||||
display.verbosity = play_context.verbosity
|
||||
|
||||
except Exception as e:
|
||||
rc = 1
|
||||
result.update({
|
||||
'error': to_text(e),
|
||||
'exception': traceback.format_exc()
|
||||
})
|
||||
|
||||
if rc == 0:
|
||||
ssh = connection_loader.get('ssh', class_only=True)
|
||||
ansible_playbook_pid = sys.argv[1]
|
||||
cp = ssh._create_control_path(play_context.remote_addr, play_context.port, play_context.remote_user, play_context.connection, ansible_playbook_pid)
|
||||
|
||||
# create the persistent connection dir if need be and create the paths
|
||||
# which we will be using later
|
||||
tmp_path = unfrackpath(C.PERSISTENT_CONTROL_PATH_DIR)
|
||||
makedirs_safe(tmp_path)
|
||||
|
||||
lock_path = unfrackpath("%s/.ansible_pc_lock_%s" % (tmp_path, play_context.remote_addr))
|
||||
socket_path = unfrackpath(cp % dict(directory=tmp_path))
|
||||
|
||||
with file_lock(lock_path):
|
||||
if not os.path.exists(socket_path):
|
||||
messages.append('local domain socket does not exist, starting it')
|
||||
original_path = os.getcwd()
|
||||
r, w = os.pipe()
|
||||
pid = fork_process()
|
||||
|
||||
if pid == 0:
|
||||
try:
|
||||
os.close(r)
|
||||
wfd = os.fdopen(w, 'w')
|
||||
process = ConnectionProcess(wfd, play_context, socket_path, original_path, ansible_playbook_pid)
|
||||
process.start(variables)
|
||||
except Exception:
|
||||
messages.append(traceback.format_exc())
|
||||
rc = 1
|
||||
|
||||
if rc == 0:
|
||||
process.run()
|
||||
|
||||
sys.exit(rc)
|
||||
|
||||
else:
|
||||
os.close(w)
|
||||
rfd = os.fdopen(r, 'r')
|
||||
data = json.loads(rfd.read())
|
||||
messages.extend(data.pop('messages'))
|
||||
result.update(data)
|
||||
|
||||
else:
|
||||
messages.append('found existing local domain socket, using it!')
|
||||
conn = Connection(socket_path)
|
||||
conn.set_options(var_options=variables)
|
||||
pc_data = to_text(init_data)
|
||||
try:
|
||||
messages.extend(conn.update_play_context(pc_data))
|
||||
except Exception as exc:
|
||||
# Only network_cli has update_play context, so missing this is
|
||||
# not fatal e.g. netconf
|
||||
if isinstance(exc, ConnectionError) and getattr(exc, 'code', None) == -32601:
|
||||
pass
|
||||
else:
|
||||
result.update({
|
||||
'error': to_text(exc),
|
||||
'exception': traceback.format_exc()
|
||||
})
|
||||
|
||||
messages.append(sys.stdout.getvalue())
|
||||
result.update({
|
||||
'messages': messages,
|
||||
'socket_path': socket_path
|
||||
})
|
||||
|
||||
sys.stdout = saved_stdout
|
||||
if 'exception' in result:
|
||||
rc = 1
|
||||
sys.stderr.write(json.dumps(result))
|
||||
else:
|
||||
rc = 0
|
||||
sys.stdout.write(json.dumps(result))
|
||||
|
||||
sys.exit(rc)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
display = Display()
|
||||
main()
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/console.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/doc.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/galaxy.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/inventory.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/playbook.py
|
||||
ansible
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/pull.py
|
||||
ansible
|
||||
@ -1 +0,0 @@
|
||||
../test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py
|
||||
@ -1 +1 @@
|
||||
../lib/ansible/cli/vault.py
|
||||
ansible
|
||||
413
changelogs/.changes.yaml
Normal file
413
changelogs/.changes.yaml
Normal file
@ -0,0 +1,413 @@
|
||||
releases:
|
||||
2.7.0.a1:
|
||||
codename: In the Light
|
||||
fragments:
|
||||
- 32738-native-jinja-types.yaml
|
||||
- 42042-inventory_with_no_region.yaml
|
||||
- 42170-acme-backend-selection.yaml
|
||||
- 42647-win_updates.yaml
|
||||
- 42669-add_ssl_zabbix_inventory.yaml
|
||||
- 43024-nclu-empty-net-commands.yaml
|
||||
- 43931-strip-trailing-comments.yml
|
||||
- 44500-win_domain_computer.yaml
|
||||
- 44508-win_lineinfile.yaml
|
||||
- 44552-mail-py370-compat.yml
|
||||
- add_file_lock_feature.yaml
|
||||
- add_random_mac_filtter.yaml
|
||||
- admin-users-default-change.yaml
|
||||
- alternative_facts.yml
|
||||
- ansiballz_one_interpreter.yml
|
||||
- ansiballz_streamline_imports.yaml
|
||||
- any_unparsed_is_failed.yaml
|
||||
- authorized_key_symlinks.yaml
|
||||
- avoid_cwd_vars.yml
|
||||
- aws_caller_facts_add_account_alias.yaml
|
||||
- aws_core_is_boto3_error_code.yml
|
||||
- aws_rds_inventory_plugin_added.yaml
|
||||
- aws_s3_async_fix.yaml
|
||||
- aws_s3_decryption_fix.yaml
|
||||
- aws_s3_fix_custom_endpoints.yaml
|
||||
- basic_booleans_backward_compat.yaml
|
||||
- batch_mode_elasticsearch_plugin.yaml
|
||||
- callback_plugin_merge.yml
|
||||
- clarify_error_message.yml
|
||||
- cleanup__file__.yaml
|
||||
- command_shell_check_mode.yaml
|
||||
- connection_reset.yaml
|
||||
- console_color.yml
|
||||
- deepcopy-alternative.yaml
|
||||
- deprecated-__file__.yaml
|
||||
- docker-default-ssl.yml
|
||||
- drop-python-2.6-controller.yaml
|
||||
- ec2-facts.yaml
|
||||
- ec2_group_diff_mode_support.yml
|
||||
- elasticsearch_plugin-showSTDERRonFailure.yaml
|
||||
- elb_application_lb_fix_state_default.yml
|
||||
- ensure_text_source.yaml
|
||||
- env_inject.yml
|
||||
- file_attributes.yaml
|
||||
- file_touch_check_mode.yaml
|
||||
- file_touch_diff.yaml
|
||||
- fips_md5_import.yaml
|
||||
- fix-255-exit-code.yaml
|
||||
- fix-config-from-environment.yaml
|
||||
- fix-open-url.yml
|
||||
- fix-os_router.yaml
|
||||
- fix-selectors-error-condition.yaml
|
||||
- fix-swap-mount-module.yaml
|
||||
- fix-world-readable-skip-message.yaml
|
||||
- fix_no_log_loop.yml
|
||||
- flatten-better-type-check.yml
|
||||
- from_yaml_all_filter_plugin.yaml
|
||||
- galaxy_list_all_roles.yaml
|
||||
- gce-sort-fix.yaml
|
||||
- get_url.yaml
|
||||
- grafana_5_dashboard_compatible.yaml
|
||||
- hashing-changes.yaml
|
||||
- ignore_unreachable.yml
|
||||
- inventory_dir_ext_compare_fix.yaml
|
||||
- irc_py3_compat.yaml
|
||||
- lineinfile-empty-regexp.yml
|
||||
- lxd-idempotent-config.yaml
|
||||
- mass-remove-deprecated.yaml
|
||||
- missing_interpreter.yml
|
||||
- module_defaults_groups.yml
|
||||
- more-world-readable-warning-skips.yaml
|
||||
- no_log_fix_for_connection_exceptions.yaml
|
||||
- password_sanity_check.yml
|
||||
- passwordstore-lookup-backup.yaml
|
||||
- pause-stdout-redirection.yaml
|
||||
- pause-try-except-curses.yaml
|
||||
- preserve_delegate_nolog.yml
|
||||
- puppet_debugging_options.yaml
|
||||
- remote_tmp_de-escalated_user.yaml
|
||||
- remove-merge-multiple-tags.yaml
|
||||
- remove-simplejson.yaml
|
||||
- remove-unused-ansible-remote-temp.yaml
|
||||
- s3.yaml
|
||||
- service.yml
|
||||
- sns_topic_boto3_port.yaml
|
||||
- syslog_facility-for-journald.yml
|
||||
- template_output_encoding.yml
|
||||
- to-nice-json-separators.yaml
|
||||
- user-freebsd-createhome-name-fix.yaml
|
||||
- user-module-backup-shadow.yaml
|
||||
- user_freebsd_always_changed_bugfix.yaml
|
||||
- v2.7.0-initial-commit.yaml
|
||||
- v2.7.0a1_summary.yaml
|
||||
- vars_prompt-allow-prompting-for-play-vars.yaml
|
||||
- vault-errors.yaml
|
||||
- vultr_modules_renamed.yml
|
||||
- win_become_async_older_hosts.yml
|
||||
- win_chocoalatey_install_tls12.yml
|
||||
- win_chocolatey-bugfixes.yaml
|
||||
- win_chocolatey-return-rc-always.yml
|
||||
- win_domain-dns-typo-fix.yml
|
||||
- win_domain_controller-netlogon.yaml
|
||||
- win_iis_webapppool-output-fix.yml
|
||||
- win_privilege_util.yaml
|
||||
- win_reboot-fixes.yml
|
||||
- win_security_policy-empty-value.yaml
|
||||
- win_updates-async-fix.yml
|
||||
- win_user-validate-fixes.yaml
|
||||
- winrm_kinit-remove-pass-log.yml
|
||||
- wrcwd_ansible.cfg.yml
|
||||
- yum4_dnf_yum_action_plugin.yml
|
||||
- zypper-on-ubuntu.yaml
|
||||
modules:
|
||||
- aci_interface_policy_ospf
|
||||
- acme_account_facts
|
||||
- acme_certificate_revoke
|
||||
- acme_challenge_cert_helper
|
||||
- aws_eks_cluster
|
||||
- azure_rm_appgateway
|
||||
- azure_rm_appserviceplan
|
||||
- azure_rm_appserviceplan_facts
|
||||
- azure_rm_mysqldatabase_facts
|
||||
- azure_rm_mysqlserver_facts
|
||||
- azure_rm_postgresqldatabase_facts
|
||||
- azure_rm_postgresqlserver_facts
|
||||
- azure_rm_route
|
||||
- azure_rm_routetable
|
||||
- azure_rm_routetable_facts
|
||||
- azure_rm_virtualmachine_facts
|
||||
- azure_rm_webapp
|
||||
- bigip_appsvcs_extension
|
||||
- bigip_cli_alias
|
||||
- bigip_cli_script
|
||||
- bigip_device_auth
|
||||
- bigip_device_facts
|
||||
- bigip_firewall_dos_profile
|
||||
- bigip_firewall_policy
|
||||
- bigip_firewall_rule
|
||||
- bigip_firewall_rule_list
|
||||
- bigip_monitor_dns
|
||||
- bigip_profile_http
|
||||
- bigip_profile_http_compression
|
||||
- bigip_profile_oneconnect
|
||||
- bigip_profile_persistence_src_addr
|
||||
- bigip_remote_role
|
||||
- bigip_software_image
|
||||
- bigip_software_install
|
||||
- bigip_tunnel
|
||||
- bigiq_utility_license_assignment
|
||||
- certificate_complete_chain
|
||||
- cli_command
|
||||
- cli_config
|
||||
- cloudformation_stack_set
|
||||
- cobbler_sync
|
||||
- cobbler_system
|
||||
- cs_disk_offering
|
||||
- docker_swarm
|
||||
- docker_swarm_service
|
||||
- emc_vnx_sg_member
|
||||
- exos_config
|
||||
- exos_facts
|
||||
- gcp_compute_address_facts
|
||||
- gcp_compute_backend_bucket_facts
|
||||
- gcp_compute_backend_service_facts
|
||||
- gcp_compute_disk_facts
|
||||
- gcp_compute_firewall_facts
|
||||
- gcp_compute_forwarding_rule_facts
|
||||
- gcp_compute_global_address_facts
|
||||
- gcp_compute_global_forwarding_rule_facts
|
||||
- gcp_compute_health_check_facts
|
||||
- gcp_compute_http_health_check_facts
|
||||
- gcp_compute_https_health_check_facts
|
||||
- gcp_compute_image_facts
|
||||
- gcp_compute_instance_facts
|
||||
- gcp_compute_instance_group_facts
|
||||
- gcp_compute_instance_group_manager_facts
|
||||
- gcp_compute_instance_template_facts
|
||||
- gcp_compute_network_facts
|
||||
- gcp_compute_route_facts
|
||||
- gcp_compute_router_facts
|
||||
- gcp_compute_ssl_certificate_facts
|
||||
- gcp_compute_ssl_policy
|
||||
- gcp_compute_ssl_policy_facts
|
||||
- gcp_compute_subnetwork_facts
|
||||
- gcp_compute_target_http_proxy_facts
|
||||
- gcp_compute_target_https_proxy_facts
|
||||
- gcp_compute_target_pool_facts
|
||||
- gcp_compute_target_ssl_proxy_facts
|
||||
- gcp_compute_target_tcp_proxy_facts
|
||||
- gcp_compute_target_vpn_gateway
|
||||
- gcp_compute_target_vpn_gateway_facts
|
||||
- gcp_compute_url_map_facts
|
||||
- gcp_compute_vpn_tunnel
|
||||
- gcp_compute_vpn_tunnel_facts
|
||||
- ibm_sa_vol
|
||||
- ipa_config
|
||||
- ipa_vault
|
||||
- java_keystore
|
||||
- k8s_facts
|
||||
- meraki_config_template
|
||||
- meraki_device
|
||||
- meraki_mr_l3_firewall
|
||||
- meraki_mx_l3_firewall
|
||||
- meraki_ssid
|
||||
- meraki_switchport
|
||||
- meraki_vlan
|
||||
- na_elementsw_backup
|
||||
- na_elementsw_cluster_pair
|
||||
- na_elementsw_snapshot_schedule
|
||||
- na_elementsw_vlan
|
||||
- na_elementsw_volume
|
||||
- na_elementsw_volume_pair
|
||||
- na_ontap_cg_snapshot
|
||||
- na_ontap_dns
|
||||
- na_ontap_fcp
|
||||
- na_ontap_snapmirror
|
||||
- na_ontap_software_update
|
||||
- na_ontap_svm_options
|
||||
- na_ontap_vserver_peer
|
||||
- netcup_dns
|
||||
- nios_a_record
|
||||
- nios_cname_record
|
||||
- nios_mx_record
|
||||
- nios_naptr_record
|
||||
- nios_ptr_record
|
||||
- nios_srv_record
|
||||
- nios_txt_record
|
||||
- nos_command
|
||||
- nos_config
|
||||
- nos_facts
|
||||
- nxos_rpm
|
||||
- onyx_igmp
|
||||
- openssl_pkcs12
|
||||
- os_coe_cluster_template
|
||||
- os_listener
|
||||
- os_loadbalancer
|
||||
- os_member
|
||||
- os_pool
|
||||
- panos_set
|
||||
- python_requirements_facts
|
||||
- reboot
|
||||
- redfish_facts
|
||||
- routeros_command
|
||||
- scaleway_image_facts
|
||||
- scaleway_ip_facts
|
||||
- scaleway_organization_facts
|
||||
- scaleway_security_group_facts
|
||||
- scaleway_server_facts
|
||||
- scaleway_snapshot_facts
|
||||
- scaleway_volume
|
||||
- scaleway_volume_facts
|
||||
- slxos_lldp
|
||||
- tower_inventory_source
|
||||
- ucs_ntp_server
|
||||
- ucs_storage_profile
|
||||
- ucs_timezone
|
||||
- ucs_uuid_pool
|
||||
- vmware_about_facts
|
||||
- vmware_category
|
||||
- vmware_category_facts
|
||||
- vmware_deploy_ovf
|
||||
- vmware_guest_boot_facts
|
||||
- vmware_guest_boot_manager
|
||||
- vmware_guest_custom_attribute_defs
|
||||
- vmware_guest_custom_attributes
|
||||
- vmware_guest_move
|
||||
- vmware_host_ssl_facts
|
||||
- vmware_local_role_facts
|
||||
- voss_command
|
||||
- voss_facts
|
||||
- vultr_block_storage
|
||||
- vultr_block_storage_facts
|
||||
- vultr_dns_domain_facts
|
||||
- vultr_firewall_group_facts
|
||||
- vultr_network
|
||||
- vultr_network_facts
|
||||
- vultr_os_facts
|
||||
- vultr_plan_facts
|
||||
- vultr_region_facts
|
||||
- vultr_server_facts
|
||||
- vultr_ssh_key_facts
|
||||
- vultr_startup_script_facts
|
||||
- vultr_user_facts
|
||||
- win_chocolatey_config
|
||||
- win_chocolatey_feature
|
||||
- win_chocolatey_source
|
||||
- zabbix_host_facts
|
||||
plugins:
|
||||
callback:
|
||||
- counter_enabled
|
||||
- logdna
|
||||
- splunk
|
||||
connection:
|
||||
- psrp
|
||||
inventory:
|
||||
- tower
|
||||
lookup:
|
||||
- cpm_status
|
||||
- grafana_dashboard
|
||||
- nios_next_network
|
||||
release_date: '2018-08-27'
|
||||
2.7.0b1:
|
||||
codename: In the Light
|
||||
fragments:
|
||||
- blockdoc.yml
|
||||
- delegate-to-get-vars-no-task.yaml
|
||||
- gcp_service_account_home_path.yaml
|
||||
- include-apply-insert-order.yaml
|
||||
- include-double-handler.yaml
|
||||
- loop-cache-fix.yaml
|
||||
- no-dynamic-import-tasks.yaml
|
||||
- onepassword_unlock_vault.yaml
|
||||
- plugins-accept-only-valid-args.yaml
|
||||
- urls-if-modified-since.yaml
|
||||
- v2.7.0b1_summary.yaml
|
||||
- win_disk_image-mount-paths.yaml
|
||||
- win_psexec_command_arg.yaml
|
||||
- win_psexec_session-selection.yaml
|
||||
- win_uri-json.yml
|
||||
- win_wait_for-timeout.yaml
|
||||
modules:
|
||||
- azure_rm_autoscale
|
||||
- azure_rm_autoscale_facts
|
||||
- azure_rm_containerregistry_facts
|
||||
- azure_rm_sqlfirewallrule
|
||||
- azure_rm_trafficmanagerendpoint
|
||||
- azure_rm_trafficmanagerendpoint_facts
|
||||
- azure_rm_trafficmanagerprofile
|
||||
- azure_rm_trafficmanagerprofile_facts
|
||||
- azure_rm_webapp_facts
|
||||
- cpm_user
|
||||
- elb_target_facts
|
||||
- fmgr_provisioning
|
||||
- ftd_configuration
|
||||
- ftd_file_download
|
||||
- ftd_file_upload
|
||||
- gcp_compute_router
|
||||
- gcp_spanner_database
|
||||
- gcp_spanner_instance
|
||||
- gcp_sql_database
|
||||
- gcp_sql_instance
|
||||
- gcp_sql_user
|
||||
- ibm_sa_host
|
||||
- ibm_sa_pool
|
||||
- na_elementsw_access_group
|
||||
- na_elementsw_account
|
||||
- na_elementsw_admin_users
|
||||
- na_elementsw_check_connections
|
||||
- na_elementsw_cluster
|
||||
- na_elementsw_drive
|
||||
- na_elementsw_ldap
|
||||
- na_elementsw_network_interfaces
|
||||
- na_elementsw_node
|
||||
- na_elementsw_snapshot
|
||||
- na_elementsw_snapshot_restore
|
||||
- na_elementsw_volume_clone
|
||||
- na_ontap_autosupport
|
||||
- na_ontap_cluster_peer
|
||||
- na_ontap_command
|
||||
- na_ontap_disks
|
||||
- na_ontap_firewall_policy
|
||||
- na_ontap_gather_facts
|
||||
- na_ontap_motd
|
||||
- na_ontap_node
|
||||
- netapp_e_alerts
|
||||
- netapp_e_asup
|
||||
- netapp_e_auditlog
|
||||
- netapp_e_global
|
||||
- netapp_e_iscsi_interface
|
||||
- netapp_e_iscsi_target
|
||||
- netapp_e_ldap
|
||||
- netapp_e_mgmt_interface
|
||||
- netapp_e_syslog
|
||||
- onepassword_facts
|
||||
- opx_cps
|
||||
- purefb_facts
|
||||
- rds_instance
|
||||
- redfish_command
|
||||
- redfish_config
|
||||
- tower_credential_type
|
||||
- tower_settings
|
||||
- tower_workflow_template
|
||||
- vmware_host_ntp_facts
|
||||
- win_wait_for_process
|
||||
- win_xml
|
||||
plugins:
|
||||
lookup:
|
||||
- cpm_metering
|
||||
release_date: '2018-08-31'
|
||||
2.7.0rc1:
|
||||
codename: In the Light
|
||||
fragments:
|
||||
- 16748-docker_container-memory.yaml
|
||||
- 33579-docker_container-log_driver.yaml
|
||||
- 42380-docker_container-check-mode.yaml
|
||||
- 42641-44812-docker-env-variables.yaml
|
||||
- 42857-docker_container-working_dir.yaml
|
||||
- 44808-docker_container-idempotency.yaml
|
||||
- aws_bugfix_backports.yml
|
||||
- cb_fix_config.yml
|
||||
- dnf-group-removal.yaml
|
||||
- ec2_vpc_route_table_replace_route_fix.yaml
|
||||
- elb_target_group_fix_KeyError.yaml
|
||||
- systemd_user_dep_fixes.yml
|
||||
- terminal_plugin_nxos_iosxr.yaml
|
||||
- v2.7.0rc1_summary.yaml
|
||||
modules:
|
||||
- online_user_facts
|
||||
release_date: '2018-09-06'
|
||||
@ -1,720 +0,0 @@
|
||||
================================================
|
||||
ansible-core 2.15 "Ten Years Gone" Release Notes
|
||||
================================================
|
||||
|
||||
.. contents:: Topics
|
||||
|
||||
|
||||
v2.15.13
|
||||
========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-11-04
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Improve container runtime probe error handling. When unexpected probe output is encountered, an error with more useful debugging information is provided.
|
||||
- ansible-test - Removed support for provisioning remote Windows 2012 and 2012-R2 instances.
|
||||
- ansible-test - Removed the ``vyos/1.1.8`` network remote as it is no longer functional.
|
||||
- ansible-test - Update ``pypi-test-container`` to version 3.1.0.
|
||||
|
||||
Security Fixes
|
||||
--------------
|
||||
|
||||
- include_vars action - Ensure that result masking is correctly requested when vault-encrypted files are read. (CVE-2024-8775)
|
||||
- task result processing - Ensure that action-sourced result masking (``_ansible_no_log=True``) is preserved. (CVE-2024-8775)
|
||||
- user action won't allow ssh-keygen, chown and chmod to run on existing ssh public key file, avoiding traversal on existing symlinks (CVE-2024-9902).
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix ``SemanticVersion.parse()`` to store the version string so that ``__repr__`` reports it instead of ``None`` (https://github.com/ansible/ansible/pull/83831).
|
||||
- runtime-metadata sanity test - do not crash on deprecations if ``galaxy.yml`` contains an empty ``version`` field (https://github.com/ansible/ansible/pull/83831).
|
||||
- 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.
|
||||
|
||||
v2.15.12
|
||||
========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-05-20
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Add a version ceiling constraint for pypsrp to avoid potential breaking changes in the 1.0.0 release.
|
||||
- ansible-test - Automatically enable the PyPI proxy for the ``centos7`` container to restore the ability to use ``pip`` in that container.
|
||||
- facts - add a generic detection for VMware in product name.
|
||||
- uri - update the documentation for follow_redirects.
|
||||
|
||||
v2.15.11
|
||||
========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-04-22
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fixes permission for cache json file from 600 to 644 (https://github.com/ansible/ansible/issues/82683).
|
||||
- allow_duplicates - fix evaluating if the current role allows duplicates instead of using the initial value from the duplicate's cached role.
|
||||
- ansible-test ansible-doc sanity test - do not remove underscores from plugin names in collections before calling ``ansible-doc`` (https://github.com/ansible/ansible/pull/82574).
|
||||
- dnf5 - replace removed API calls
|
||||
- unarchive modules now uses zipinfo options without relying on implementation defaults, making it more compatible with all OS/distributions.
|
||||
- winrm - Do not raise another exception during cleanup when a task is timed out - https://github.com/ansible/ansible/issues/81095
|
||||
|
||||
v2.15.10
|
||||
========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-03-25
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Add a work-around for permission denied errors when using ``pytest >= 8`` on multi-user systems with an installed version of ``ansible-test``.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix an issue when setting a plugin name from an unsafe source resulted in ``ValueError: unmarshallable object`` (https://github.com/ansible/ansible/issues/82708)
|
||||
- ansible-test - The ``libexpat`` package is automatically upgraded during remote bootstrapping to maintain compatibility with newer Python packages.
|
||||
- winrm - does not hang when attempting to get process output when stdin write failed
|
||||
|
||||
v2.15.9
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2024-01-29
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Removed `freebsd/12.4` remote.
|
||||
|
||||
Security Fixes
|
||||
--------------
|
||||
|
||||
- ANSIBLE_NO_LOG - Address issue where ANSIBLE_NO_LOG was ignored (CVE-2024-0690)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- ``ansible-galaxy role import`` - fix using the ``role_name`` in a standalone role's ``galaxy_info`` metadata by disabling automatic removal of the ``ansible-role-`` prefix. This matches the behavior of the Galaxy UI which also no longer implicitly removes the ``ansible-role-`` prefix. Use the ``--role-name`` option or add a ``role_name`` to the ``galaxy_info`` dictionary in the role's ``meta/main.yml`` to use an alternate role name.
|
||||
- ``ansible-test sanity --test runtime-metadata`` - add ``action_plugin`` as a valid field for modules in the schema (https://github.com/ansible/ansible/pull/82562).
|
||||
- ansible-config init will now dedupe ini entries from plugins.
|
||||
- ansible-galaxy role install - fix symlinks (https://github.com/ansible/ansible/issues/82702, https://github.com/ansible/ansible/issues/81965).
|
||||
- ansible-galaxy role install - normalize tarfile paths and symlinks using ``ansible.utils.path.unfrackpath`` and consider them valid as long as the realpath is in the tarfile's role directory (https://github.com/ansible/ansible/issues/81965).
|
||||
- delegate_to when set to an empty or undefined variable will now give a proper error.
|
||||
- unsafe data - Enable directly using ``AnsibleUnsafeText`` with Python ``pathlib`` (https://github.com/ansible/ansible/issues/82414)
|
||||
|
||||
v2.15.8
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2023-12-11
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Add FreeBSD 13.2 remote.
|
||||
- ansible-test - Removed `freebsd/13.1` remote.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- unsafe data - Address an incompatibility when iterating or getting a single index from ``AnsibleUnsafeBytes``
|
||||
- unsafe data - Address an incompatibility with ``AnsibleUnsafeText`` and ``AnsibleUnsafeBytes`` when pickling with ``protocol=0``
|
||||
|
||||
v2.15.7
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2023-12-04
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Breaking Changes / Porting Guide
|
||||
--------------------------------
|
||||
|
||||
- assert - Nested templating may result in an inability for the conditional to be evaluated. See the porting guide for more information.
|
||||
|
||||
Security Fixes
|
||||
--------------
|
||||
|
||||
- templating - Address issues where internal templating can cause unsafe variables to lose their unsafe designation (CVE-2023-5764)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- ansible-pull now will expand relative paths for the ``-d|--directory`` option is now expanded before use.
|
||||
- flush_handlers - properly handle a handler failure in a nested block when ``force_handlers`` is set (http://github.com/ansible/ansible/issues/81532)
|
||||
- module no_log will no longer affect top level booleans, for example ``no_log_module_parameter='a'`` will no longer hide ``changed=False`` as a 'no log value' (matches 'a').
|
||||
- modules/user.py - Add check for valid directory when creating new user homedir (allows /dev/null as skeleton) (https://github.com/ansible/ansible/issues/75063)
|
||||
- role params now have higher precedence than host facts again, matching documentation, this had unintentionally changed in 2.15.
|
||||
- wait_for should not handle 'non mmapable files' again.
|
||||
|
||||
v2.15.6
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2023-11-06
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Windows 2012 and 2012-R2 instances are now requested from Azure instead of AWS.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix ``run_once`` being incorrectly interpreted on handlers (https://github.com/ansible/ansible/issues/81666)
|
||||
- Plugin loader does not dedupe nor cache filter/test plugins by file basename, but full path name.
|
||||
- Properly template tags in parent blocks (https://github.com/ansible/ansible/issues/81053)
|
||||
- Restoring the ability of filters/tests can have same file base name but different tests/filters defined inside.
|
||||
- ``import_role`` reverts to previous behavior of exporting vars at compile time.
|
||||
- ansible-galaxy - Provide a better error message when using a requirements file with an invalid format - https://github.com/ansible/ansible/issues/81901
|
||||
- ansible-inventory - index available_hosts for major performance boost when dumping large inventories
|
||||
- ansible-test - Fix parsing of cgroup entries which contain a ``:`` in the path (https://github.com/ansible/ansible/issues/81977).
|
||||
|
||||
v2.15.5
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2023-10-09
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-galaxy dependency resolution messages have changed the unexplained 'virtual' collection for the specific type ('scm', 'dir', etc) that is more user friendly
|
||||
|
||||
Security Fixes
|
||||
--------------
|
||||
|
||||
- ansible-galaxy - Prevent roles from using symlinks to overwrite files outside of the installation directory (CVE-2023-5115)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Allow for searching handler subdir for included task via include_role (https://github.com/ansible/ansible/issues/81722)
|
||||
- PluginLoader - fix Jinja plugin performance issues (https://github.com/ansible/ansible/issues/79652)
|
||||
- ``ansible.module_utils.service`` - ensure binary data transmission in ``daemonize()``
|
||||
- ``ansible.module_utils.service`` - fix inter-process communication in ``daemonize()``
|
||||
- ansible-galaxy - started allowing the use of pre-releases for collections that do not have any stable versions published. (https://github.com/ansible/ansible/pull/81606)
|
||||
- ansible-galaxy - started allowing the use of pre-releases for dependencies on any level of the dependency tree that specifically demand exact pre-release versions of collections and not version ranges. (https://github.com/ansible/ansible/pull/81606)
|
||||
- ansible-galaxy error on dependency resolution will not error itself due to 'virtual' collections not having a name/namespace.
|
||||
- ansible-galaxy info - fix reporting no role found when lookup_role_by_name returns None.
|
||||
- role deduplication - don't deduplicate before a role has had a task run for that particular host (https://github.com/ansible/ansible/issues/81486).
|
||||
- uri/urls - Add compat function to handle the ability to parse the filename from a Content-Disposition header (https://github.com/ansible/ansible/issues/81806)
|
||||
- winrm - Better handle send input failures when communicating with hosts under load
|
||||
|
||||
v2.15.4
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2023-09-11
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- vault and unfault filters - the undocumented ``vaultid`` parameter is deprecated and will be removed in ansible-core 2.20. Use ``vault_id`` instead.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- PowerShell - Remove some code which is no longer valid for dotnet 5+
|
||||
- Prompting - add a short sleep between polling for user input to reduce CPU consumption (https://github.com/ansible/ansible/issues/81516).
|
||||
- ansible-galaxy - Enabled the ``data`` tarfile filter during role installation for Python versions that support it. A probing mechanism is used to avoid Python versions with a broken implementation.
|
||||
- ansible-test - Always use ansible-test managed entry points for ansible-core CLI tools when not running from source. This fixes issues where CLI entry points created during install are not compatible with ansible-test.
|
||||
- first found lookup has been updated to use the normalized argument parsing (pythonic) matching the documented examples.
|
||||
- handlers - the ``listen`` keyword can affect only one handler with the same name, the last one defined as it is a case with the ``notify`` keyword (https://github.com/ansible/ansible/issues/81013)
|
||||
- include_role - expose variables from parent roles to role's handlers (https://github.com/ansible/ansible/issues/80459)
|
||||
- tarfile - handle data filter deprecation warning message for extract and extractall (https://github.com/ansible/ansible/issues/80832).
|
||||
- vault and unvault filters now properly take ``vault_id`` parameter.
|
||||
|
||||
v2.15.3
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2023-08-14
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- Removed ``exclude`` and ``recursive-exclude`` commands for generated files from the ``MANIFEST.in`` file. These excludes were unnecessary since releases are expected to be built with a clean worktree.
|
||||
- Removed ``exclude`` commands for sanity test files from the ``MANIFEST.in`` file. These tests were previously excluded because they did not pass when run from an sdist. However, sanity tests are not expected to pass from an sdist, so excluding some (but not all) of the failing tests makes little sense.
|
||||
- Removed redundant ``include`` commands from the ``MANIFEST.in`` file. These includes either duplicated default behavior or another command.
|
||||
- The ``ansible-core`` sdist no longer contains pre-generated man pages. Instead, a ``packaging/cli-doc/build.py`` script is included in the sdist. This script can generate man pages and standalone RST documentation for ``ansible-core`` CLI programs.
|
||||
- The ``docs`` and ``examples`` directories are no longer included in the ``ansible-core`` sdist. These directories have been moved to the https://github.com/ansible/ansible-documentation repository.
|
||||
- Use ``include`` where ``recursive-include`` is unnecessary in the ``MANIFEST.in`` file.
|
||||
- ansible-test - Update the logic used to detect when ``ansible-test`` is running from source.
|
||||
- ansible-test - Updated the CloudStack test container to version 1.6.1.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Exclude internal options from man pages and docs.
|
||||
- Fix ``ansible-config init`` man page option indentation.
|
||||
- The ``ansible-config init`` command now has a documentation description.
|
||||
- The ``ansible-galaxy collection download`` command now has a documentation description.
|
||||
- The ``ansible-galaxy collection install`` command documentation is now visible (previously hidden by a decorator).
|
||||
- The ``ansible-galaxy collection verify`` command now has a documentation description.
|
||||
- The ``ansible-galaxy role install`` command documentation is now visible (previously hidden by a decorator).
|
||||
- The ``ansible-inventory`` command command now has a documentation description (previously used as the epilog).
|
||||
- Update module_utils.urls unit test to work with cryptography >= 41.0.0.
|
||||
- When generating man pages, use ``func`` to find the command function instead of looking it up by the command name.
|
||||
- ``ansible-galaxy`` now considers all collection paths when identifying which collection requirements are already installed. Use the ``COLLECTIONS_PATHS`` and ``COLLECTIONS_SCAN_SYS_PATHS`` config options to modify these. Previously only the install path was considered when resolving the candidates. The install path will remain the only one potentially modified. (https://github.com/ansible/ansible/issues/79767, https://github.com/ansible/ansible/issues/81163)
|
||||
- ansible-test - Fix several possible tracebacks when using the ``-e`` option with sanity tests.
|
||||
- ansible-test - Pre-build a PyYAML wheel before installing requirements to avoid a potential Cython build failure.
|
||||
- ansible-test - Remove redundant warning about missing programs before attempting to execute them.
|
||||
- core will now also look at the connection plugin to force 'local' interpreter for networking path compatibility as just ansible_network_os could be misleading.
|
||||
- man page build - Sub commands of ``ansible-galaxy role`` and ``ansible-galaxy collection`` are now documented.
|
||||
- password_hash - fix salt format for ``crypt`` (only used if ``passlib`` is not installed) for the ``bcrypt`` algorithm.
|
||||
- urls.py - fixed cert_file and key_file parameters when running on Python 3.12 - https://github.com/ansible/ansible/issues/80490
|
||||
|
||||
v2.15.2
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2023-07-18
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- Utilize gpg check provided internally by the ``transaction.run`` method as oppose to calling it manually.
|
||||
- ansible-test - Add Fedora 38 remote.
|
||||
- ansible-test - Use a context manager to perform cleanup at exit instead of using the built-in ``atexit`` module.
|
||||
- dnf5 - enable environment groups installation testing in CI as its support was added.
|
||||
- dnf5 - enable now implemented ``cacheonly`` functionality
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- From issue https://github.com/ansible/ansible/issues/80880, when notifying a handler from another handler, handler notifications must be registered immediately as the flush_handler call is not recursive.
|
||||
- ansible-galaxy - Fix issue installing collections containing directories with more than 100 characters on python versions before 3.10.6
|
||||
- paramiko_ssh, psrp, and ssh connection plugins - ensure that all values for options that should be strings are actually converted to strings (https://github.com/ansible/ansible/pull/81029).
|
||||
- templating - In the template action and lookup, use local jinja2 environment overlay overrides instead of mutating the templars environment
|
||||
|
||||
Known Issues
|
||||
------------
|
||||
|
||||
- ansible-test - The Fedora 37 remote is known to occasionally hang during boot. It is no longer routinely tested as a result. If possible, use the Fedora 38 remote instead.
|
||||
|
||||
v2.15.1
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2023-06-20
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Allow float values for the ``--timeout`` option to the ``env`` command. This simplifies testing.
|
||||
- ansible-test - Refactored ``env`` command logic and timeout handling.
|
||||
- ansible-test - Use ``datetime.datetime.now`` with ``tz`` specified instead of ``datetime.datetime.utcnow``.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Properly disable ``jinja2_native`` in the template module when jinja2 override is used in the template (https://github.com/ansible/ansible/issues/80605)
|
||||
- ansible-galaxy - Fix variable type error when installing subdir collections (https://github.com/ansible/ansible/issues/80943)
|
||||
- ansible-test - Fix a traceback that occurs when attempting to test Ansible source using a different ansible-test. A clear error message is now given when this scenario occurs.
|
||||
- ansible-test - Fix handling of timeouts exceeding one day.
|
||||
- ansible-test - Fix various cases where the test timeout could expire without terminating the tests.
|
||||
- ansible-test local change detection - use ``git merge-base <branch> HEAD`` instead of ``git merge-base --fork-point <branch>`` (https://github.com/ansible/ansible/pull/79734).
|
||||
- deb822_repository - use http-agent for receiving content (https://github.com/ansible/ansible/issues/80809).
|
||||
- dnf5 - Update dnf5 module to handle API change for setting the download directory (https://github.com/ansible/ansible/issues/80887)
|
||||
- man page build - Remove the dependency on the ``docs`` directory for building man pages.
|
||||
- pep517 build backend - Copy symlinks when copying the source tree. This avoids tracebacks in various scenarios, such as when a venv is present in the source tree.
|
||||
- uri - fix search for JSON type to include complex strings containing '+'
|
||||
|
||||
v2.15.0
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2023-05-15
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
|
||||
|
||||
Major Changes
|
||||
-------------
|
||||
|
||||
- ansible-test - Docker Desktop on WSL2 is now supported (additional configuration required).
|
||||
- ansible-test - Docker and Podman are now supported on hosts with cgroup v2 unified. Previously only cgroup v1 and cgroup v2 hybrid were supported.
|
||||
- ansible-test - Podman now works on container hosts without systemd. Previously only some containers worked, while others required rootfull or rootless Podman, but would not work with both. Some containers did not work at all.
|
||||
- ansible-test - Podman on WSL2 is now supported.
|
||||
- ansible-test - When additional cgroup setup is required on the container host, this will be automatically detected. Instructions on how to configure the host will be provided in the error message shown.
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- Add support for custom salt for vault encoding to make it deterministic (https://github.com/ansible/ansible/issues/35480).
|
||||
- Added the conditional that was False if ``when`` caused a task to skip under ``false_condition``.
|
||||
- Allow force deletion of a group even when it is the primary group of a user. (https://github.com/ansible/ansible/issues/77849)
|
||||
- Ansible.ModuleUtils.AddType - Add support for compiling ``unsafe`` code with the ``//AllowUnsafe`` directive
|
||||
- Cache field attributes list on the playbook classes
|
||||
- Cleaned up unused imports in core.
|
||||
- Get user input for ``pause`` and ``paramiko_ssh`` from the strategy rather than access ``sys.stdin`` in the WorkerProcess.
|
||||
- Introduce ``Delegatable`` and ``Notifiable`` mixin classes for playbook objects
|
||||
- Make using blocks as handlers a parser error (https://github.com/ansible/ansible/issues/79968)
|
||||
- Playbook objects - Replace deprecated stacked ``@classmethod`` and ``@property``
|
||||
- Raise an error when an incorrect ``isa`` type is passed to ``FieldAttribute``.
|
||||
- Remove fallback code for when ``defined``/``undefined`` tests were used on objects containing nested undefined variables; due to changes in lazy evalution of Jinja2 expressions it is no longer needed.
|
||||
- Remove unused Python stdlib imports from module_utils which were not present for backwards compatibility in: common.file, compat.selectors, facts.network.iscsi, facts.network.nvme, yumdnf
|
||||
- Remove unused internal imports from module_utils which were not present for backwards compatibility in: common.file, common.parameters, facts.system.caps, yumdnf
|
||||
- Removed ``straight.plugin`` from the build and packaging requirements.
|
||||
- Removed unused imports from the following action plugins: async_status, command, pause, set_stats, uri, validate_argument_spec
|
||||
- Removed unused imports from the following lookup plugins: fileglob, template
|
||||
- Removed unused imports from the following modules: apt, dnf, expect, pip, slurp, user, yum
|
||||
- Removed unused imports from the following set of test plugins: files
|
||||
- Removed unused imports from the following strategy plugins: debug
|
||||
- Removed unused imports from the following vars plugins: host_group_vars
|
||||
- The minimum required ``setuptools`` version is now 45.2.0, as it is the oldest version to support Python 3.10.
|
||||
- Use ``ansible.module_utils.six.moves.collections_abc`` instead of ``ansible.module_utils.common._collections_compat`` in modules and module_utils.
|
||||
- Use ``collections.abc`` instead of ``ansible.module_utils.common._collections_compat`` in controller code.
|
||||
- Use ``package_data`` instead of ``include_package_data`` for ``setup.cfg`` to avoid ``setuptools`` warnings.
|
||||
- ``AnsibleJ2Vars`` class that acts as a storage for all variables for templating purposes now uses ``collections.ChainMap`` internally.
|
||||
- add parameter ``numeric`` to the iptables module to disable dns lookups when running list -action internally (https://github.com/ansible/ansible/issues/78793).
|
||||
- allow user to set ansible specific env vars for selecting pager and editor, but still fall back to commonly used defaults.
|
||||
- ansible-doc - support role extension for semantic markup spec so that ``O()`` and ``RV()`` referring to role entrypoints are rendered more readable (https://github.com/ansible/ansible/pull/80305).
|
||||
- ansible-doc - support semantic markup in text output (https://github.com/ansible/ansible/pull/80242).
|
||||
- ansible-doc text output - support ``seealso`` plugin record that was added for filter and test plugin documentation (https://github.com/ansible/ansible/pull/80212).
|
||||
- ansible-galaxy - Add ability to specify collection versions on the CLI without the need for a colon. Such as ``namespace.name==1.2.3`` vs ``namespace.name:1.2.3``.
|
||||
- ansible-galaxy - Use Python's native ``raise ... from`` instead of ``six.raise_from``.
|
||||
- ansible-galaxy - support ``resolvelib >= 0.5.3, < 0.10.0``.
|
||||
- ansible-galaxy - support ``resolvelib >= 0.5.3, < 1.1.0``.
|
||||
- ansible-inventory now supports the limit command line options.
|
||||
- ansible-test - A new ``audit`` option is available when running custom containers. This option can be used to indicate whether a container requires the AUDIT_WRITE capability. The default is ``required``, which most containers will need when using Podman. If necessary, the ``none`` option can be used to opt-out of the capability. This has no effect on Docker, which always provides the capability.
|
||||
- ansible-test - A new ``cgroup`` option is available when running custom containers. This option can be used to indicate a container requires cgroup v1 or that it does not use cgroup. The default behavior assumes the container works with cgroup v2 (as well as v1).
|
||||
- ansible-test - Add Alpine 3.17 remote.
|
||||
- ansible-test - Add Fedora 37 container.
|
||||
- ansible-test - Add Fedora 37 remote.
|
||||
- ansible-test - Add FreeBSD 12.4 remote.
|
||||
- ansible-test - Add RHEL 8.7 remote.
|
||||
- ansible-test - Add RHEL 9.1 remote.
|
||||
- ansible-test - Add macOS 13.2 remote.
|
||||
- ansible-test - Additional log details are shown when containers fail to start or SSH connections to containers fail.
|
||||
- ansible-test - Connection failures to remote provisioned hosts now show failure details as a warning.
|
||||
- ansible-test - Containers included with ansible-test no longer disable seccomp by default.
|
||||
- ansible-test - Disabled the ``ansible-format-automatic-specification`` rule from the ``pylint`` sanity test, now that Python 2.6 is no longer supported.
|
||||
- ansible-test - Enable the ``trailing-comma-tuple`` rule in the ``pylint`` sanity test.
|
||||
- ansible-test - Enable the ``unused-import`` rule for the ``pylint`` sanity test for collections.
|
||||
- ansible-test - Failure to connect to a container over SSH now results in a clear error. Previously tests would be attempted even after initial connection attempts failed.
|
||||
- ansible-test - Improve consistency of executed ``pylint`` commands by making the plugins ordered.
|
||||
- ansible-test - Improve consistency of version specific documentation links.
|
||||
- ansible-test - Integration tests can be excluded from retries triggered by the ``--retry-on-error`` option by adding the ``retry/never`` alias. This is useful for tests that cannot pass on a retry or are too slow to make retries useful.
|
||||
- ansible-test - Minor cleanup and package updates in distro containers.
|
||||
- ansible-test - More details are provided about an instance when provisioning fails.
|
||||
- ansible-test - Moved git handling out of the validate-modules sanity test and into ansible-test.
|
||||
- ansible-test - Reduce the polling limit for SSHD startup in containers from 60 retries to 10. The one second delay between retries remains in place.
|
||||
- ansible-test - Removed test containers: fedora36
|
||||
- ansible-test - Removed test remotes: alpine/3.16, fedora/36, freebsd/12.3, rhel/8.6, rhel/9.0, macos/12.0
|
||||
- ansible-test - Removed the ``--keep-git`` sanity test option, which was limited to testing ansible-core itself.
|
||||
- ansible-test - SSH connections from OpenSSH 8.8+ to CentOS 6 containers now work without additional configuration. However, clients older than OpenSSH 7.0 can no longer connect to CentOS 6 containers as a result. The container must have ``centos6`` in the image name for this work-around to be applied.
|
||||
- ansible-test - SSH shell connections from OpenSSH 8.8+ to ansible-test provisioned network instances now work without additional configuration. However, clients older than OpenSSH 7.0 can no longer open shell sessions for ansible-test provisioned network instances as a result.
|
||||
- ansible-test - Specify the configuration file location required by test plugins when the config file is not found. This resolves issue: https://github.com/ansible/ansible/issues/79411
|
||||
- ansible-test - The ``ansible-test env`` command now detects and reports the container ID if running in a container.
|
||||
- ansible-test - The ``pep8`` sanity test rule ``E203`` is now disabled since it is not PEP 8 compliant. This provides compatibility with output generated by the ``black`` code formatter.
|
||||
- ansible-test - The ``validate-modules`` sanity test no longer limits the ``__future__`` imports that can be used. Other sanity tests that check ``__future__`` imports remain unchanged. As a result, the error code ``illegal-future-imports`` is no longer used.
|
||||
- ansible-test - Unit tests now support network disconnect by default when running under Podman. Previously this feature only worked by default under Docker.
|
||||
- ansible-test - Update Alpine 3 container to 3.17.
|
||||
- ansible-test - Update Python requirements used for sanity tests.
|
||||
- ansible-test - Update ``base`` and ``default`` containers to include Python 3.11.0.
|
||||
- ansible-test - Update ``default`` containers to include new ``docs-build`` sanity test requirements.
|
||||
- ansible-test - Update error handling code to use Python 3.x constructs, avoiding direct use of ``errno``.
|
||||
- ansible-test - Update test container to ``7.4.0`` which includes the new PSScriptAnalyzer versions
|
||||
- ansible-test - Update the CloudStack test plugin to use a newer test container with CloudStack 4.18.0.
|
||||
- ansible-test - Update the NIOS test plugin to use a newer multi-arch test container.
|
||||
- ansible-test - Update the ``ansible-bad-import-from`` rule in the ``pylint`` sanity test to recommend ``ansible.module_utils.six.moves.collections_abc`` instead of ``ansible.module_utils.common._collections_compat``.
|
||||
- ansible-test - Update the ``base`` and ``default`` test containers with the latest requirements.
|
||||
- ansible-test - Update the ``default`` containers to include the ``package-data`` requirements update.
|
||||
- ansible-test - Update the ``default`` containers to include the ``pylint`` requirements update.
|
||||
- ansible-test - Updated the Azure Pipelines CI plugin to work with newer versions of git.
|
||||
- ansible-test - Use ``stop --time 0`` followed by ``rm`` to remove ephemeral containers instead of ``rm -f``. This speeds up teardown of ephemeral containers.
|
||||
- ansible-test - Warnings are now shown when using containers that were built with VOLUME instructions.
|
||||
- ansible-test - When setting the max open files for containers, the container host's limit will be checked. If the host limit is lower than the preferred value, it will be used and a warning will be shown.
|
||||
- ansible-test - When using Podman, ansible-test will detect if the loginuid used in containers is incorrect. When this occurs a warning is displayed and the container is run with the AUDIT_CONTROL capability. Previously containers would fail under this situation, with no useful warnings or errors given.
|
||||
- ansible-test acme test container - update version to update used Pebble version, underlying Python and Go base containers, and Python requirements (https://github.com/ansible/ansible/pull/79783).
|
||||
- ansible-test pslint - Upgrade PSScriptAnalyzer to ``1.21.0`` which enables the ``AvoidMultipleTypeAttributes``, ``AvoidSemicolonsAsLineTerminators``, and ``AvoidUsingBrokenHashAlgorithms`` rules
|
||||
- ansible-test runtime-metadata sanity test - ensure that ``redirect`` entries in ``meta/runtime.yml`` contain collection names, except for ``module_utils`` plugin redirects and ``import_redirect`` redirects (https://github.com/ansible/ansible/pull/78802).
|
||||
- ansible-test sanity --test ansible-doc - now also lists documentation for test and filter plugins that are documented (https://github.com/ansible/ansible/pull/77737).
|
||||
- ansible-test validate-modules - Added support for validating module documentation stored in a sidecar file alongside the module (``{module}.yml`` or ``{module}.yaml``). Previously these files were ignored and documentation had to be placed in ``{module}.py``.
|
||||
- ansible-test validate-modules - no longer treat falsy non-``False`` values for defaults as ``None`` (https://github.com/ansible/ansible/pull/79267).
|
||||
- apt - add allow-change-held-packages option to apt remove (https://github.com/ansible/ansible/issues/78131)
|
||||
- apt_repository - adds ``sources_added`` and ``sources_removed`` to the return of the module (https://github.com/ansible/ansible/issues/79306).
|
||||
- apt_repository will use the trust repo directories in order of preference (more appropriate to less) as they exist on the target.
|
||||
- collections - Add additional ignores for commonly rejected file extensions
|
||||
- collections - Add additional includes for REUSE license files (https://github.com/ansible/ansible/issues/79368)
|
||||
- deb822_repository - Add new module for managing DEB822 formatted apt repositories
|
||||
- debug - Perform argspec valdiation in debug action plugin (https://github.com/ansible/ansible/issues/79862)
|
||||
- dnf5 - Add new module for managing packages and other artifacts via the next version of DNF (https://github.com/ansible/ansible/issues/78898)
|
||||
- galaxy - include ``license_file`` in the default manifest directives (https://github.com/ansible/ansible/pull-request/79420)
|
||||
- optimized var loading by caching results as there is no variance in input during run.
|
||||
- pycompat24 module_utils - Remove support for Python 2.5 and earlier.
|
||||
- sanity tests - updates the collection-deprecated-version tests to ignore the ``prerelease`` component of the collection version ().
|
||||
- strftime filter, additional docs and links to source of truth.
|
||||
- updated the vendored distro library to upstream version (https://github.com/ansible/ansible/pull/79227)
|
||||
- validate-modules sanity test - add support for semantic markup (https://github.com/ansible/ansible/pull/80243).
|
||||
- validate-modules sanity test - if the ``check_mode`` attribute is present, check that it coincides with the ``support_check_mode`` parameter of ``AnsibleModule`` (https://github.com/ansible/ansible/pull/80090).
|
||||
- validate-modules sanity test - remove support for the never implemented ``forced_action_plugin`` attribute (https://github.com/ansible/ansible/pull/79317).
|
||||
- validate-modules sanity test - support the ``plugin`` see-also part of the semantic markup specification (https://github.com/ansible/ansible/pull/80244).
|
||||
|
||||
Breaking Changes / Porting Guide
|
||||
--------------------------------
|
||||
|
||||
- ansible-doc - no longer treat plugins in collections whose name starts with ``_`` as deprecated (https://github.com/ansible/ansible/pull/79362).
|
||||
- ansible-test - Integration tests which depend on specific file permissions when running in an ansible-test managed host environment may require changes. Tests that require permissions other than ``755`` or ``644`` may need to be updated to set the necessary permissions as part of the test run.
|
||||
- ansible-test - The ``vcenter`` test plugin now defaults to using a user-provided static configuration instead of the ``govcsim`` simulator for collections. Set the ``ANSIBLE_VCSIM_CONTAINER`` environment variable to ``govcsim`` to use the simulator. Keep in mind that the simulator is deprecated and will be removed in a future release.
|
||||
- ansible-test sanity - previously plugins and modules in collections whose name started with ``_`` were treated as deprecated, even when they were not marked as deprecated in ``meta/runtime.yml``. This is no longer the case (https://github.com/ansible/ansible/pull/79362).
|
||||
- ansible-test validate-modules - Removed the ``missing-python-doc`` error code in validate modules, ``missing-documentation`` is used instead for missing PowerShell module documentation.
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- The ``ConnectionBase()._new_stdin`` attribute is deprecated, use ``display.prompt_until(msg)`` instead.
|
||||
- ansible-test - The ``foreman`` test plugin is now deprecated. It will be removed in a future release.
|
||||
- ansible-test - The ``govcsim`` simulator in the ``vcenter`` test plugin is now deprecated. It will be removed in a future release. Users should switch to providing their own test environment through a static configuration file.
|
||||
- password_hash - deprecate using passlib.hash.hashtype if hashtype isn't in the list of documented choices.
|
||||
- vars - Specifying a list of dictionaries for ``vars:`` is deprecated in favor of specifying a dictionary.
|
||||
|
||||
Removed Features (previously deprecated)
|
||||
----------------------------------------
|
||||
|
||||
- Remove deprecated ``ANSIBLE_CALLBACK_WHITELIST`` configuration environment variable, use ``ANSIBLE_CALLBACKS_ENABLED`` instead. (https://github.com/ansible/ansible/issues/78821)
|
||||
- Remove deprecated ``ANSIBLE_COW_WHITELIST`` configuration environment variable, use ``ANSIBLE_COW_ACCEPTLIST`` instead. (https://github.com/ansible/ansible/issues/78819)
|
||||
- Remove deprecated ``callback_whitelist`` configuration option, use ``callbacks_enabled`` instead. (https://github.com/ansible/ansible/issues/78822)
|
||||
- Remove deprecated ``cow_whitelist`` configuration option, use ``cowsay_enabled_stencils`` instead. (https://github.com/ansible/ansible/issues/78820)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Ansible.Basic.cs - Ignore compiler warning (reported as an error) when running under PowerShell 7.3.x.
|
||||
- AnsibleModule.run_command - Only use selectors when needed, and rely on Python stdlib subprocess for the simple task of collecting stdout/stderr when prompt matching is not required.
|
||||
- BSD network facts - Do not assume column indexes, look for ``netmask`` and ``broadcast`` for determining the correct columns when parsing ``inet`` line (https://github.com/ansible/ansible/issues/79117)
|
||||
- Correctly count rescued tasks in play recap (https://github.com/ansible/ansible/issues/79711)
|
||||
- Display - Defensively configure writing to stdout and stderr with a custom encoding error handler that will replace invalid characters while providing a deprecation warning that non-utf8 text will result in an error in a future version.
|
||||
- Do not crash when templating an expression with a test or filter that is not a valid Ansible filter name (https://github.com/ansible/ansible/issues/78912, https://github.com/ansible/ansible/pull/78913).
|
||||
- Fix ``MANIFEST.in`` to exclude unwanted files in the ``packaging/`` directory.
|
||||
- Fix ``MANIFEST.in`` to include ``*.md`` files in the ``test/support/`` directory.
|
||||
- Fix a traceback occuring when a task is named ``meta`` (https://github.com/ansible/ansible/issues/79459)
|
||||
- Fix an issue where the value of ``become`` was ignored when used on a role used as a dependency in ``main/meta.yml`` (https://github.com/ansible/ansible/issues/79777)
|
||||
- Fix bug in `vars` applied to roles, they were being incorrectly exported among others while only vars/main.yml was meant to be. Also adjusted the precedence to act the same as inline params.
|
||||
- Fix conditionally notifying ``include_tasks` handlers when ``force_handlers`` is used (https://github.com/ansible/ansible/issues/79776)
|
||||
- Fix post-validating looped task fields so the strategy uses the correct values after task execution.
|
||||
- Fix reusing a connection in a task loop that uses a redirected or aliased name - https://github.com/ansible/ansible/issues/78425
|
||||
- Fix setting become activation in a task loop - https://github.com/ansible/ansible/issues/78425
|
||||
- Fix traceback when using the ``template`` module and running with ``ANSIBLE_DEBUG=1`` (https://github.com/ansible/ansible/issues/79763)
|
||||
- Fix using ``GALAXY_IGNORE_CERTS`` in conjunction with collections in requirements files which specify a specific ``source`` that isn't in the configured servers.
|
||||
- Fix using ``GALAXY_IGNORE_CERTS`` when downloading tarballs from Galaxy servers (https://github.com/ansible/ansible/issues/79557).
|
||||
- Fixes leftover _valid_attrs usage.
|
||||
- Fixes the password lookup to not rewrite files if they are not changed when using the "encrypt" parameter (#79430).
|
||||
- Module and role argument validation - include the valid suboption choices in the error when an invalid suboption is provided.
|
||||
- Perform type check on data passed to Display.display to enforce the requirement of being given a python3 unicode string
|
||||
- Prevent running same handler multiple times when included via ``include_role`` (https://github.com/ansible/ansible/issues/73643)
|
||||
- TaskExecutor - don't ignore templated _raw_params that k=v parser failed to parse (https://github.com/ansible/ansible/issues/79862)
|
||||
- Windows - Display a warning if the module failed to cleanup any temporary files rather than failing the task. The warning contains a brief description of what failed to be deleted.
|
||||
- Windows - Ensure the module temp directory contains more unique values to avoid conflicts with concurrent runs - https://github.com/ansible/ansible/issues/80294
|
||||
- Windows - Improve temporary file cleanup used by modules. Will use a more reliable delete operation on Windows Server 2016 and newer to delete files that might still be open by other software like Anti Virus scanners. There are still scenarios where a file or directory cannot be deleted but the new method should work in more scenarios.
|
||||
- ``ansible-galaxy search rolename`` - give a warning instead of non-zero return code when search results are empty. This is similar to the behavior when listing roles, which gives a warning if a role cannot be found and exits with a return code of ``0``.
|
||||
- ``ansible_eval_concat`` - avoid redundant unsafe wrapping of templated strings converted to Python types
|
||||
- ``pkg_mgr`` - fix the default dnf version detection
|
||||
- ansible-config limit shorthand format to assigned values
|
||||
- ansible-doc - stop generating wrong module URLs for module see-alsos. The URLs for modules in ansible.builtin do now work, and URLs for modules outside ansible.builtin are no longer added (https://github.com/ansible/ansible/pull/80280).
|
||||
- ansible-doc now will correctly display short descriptions on listing filters/tests no matter the directory sorting.
|
||||
- ansible-galaxy - Improve retries for collection installs, to properly retry, and extend retry logic to common URL related connection errors (https://github.com/ansible/ansible/issues/80170 https://github.com/ansible/ansible/issues/80174)
|
||||
- ansible-galaxy - fix installing collections from directories that have a trailing path separator (https://github.com/ansible/ansible/issues/77803).
|
||||
- ansible-galaxy - fix installing collections in git repositories/directories which contain a MANIFEST.json file (https://github.com/ansible/ansible/issues/79796).
|
||||
- ansible-galaxy - fix installing signed collections (https://github.com/ansible/ansible/issues/80648).
|
||||
- ansible-galaxy - make initial call to Galaxy server on-demand only when installing, getting info about, and listing roles.
|
||||
- ansible-galaxy - reduce API calls to servers by fetching signatures only for final candidates.
|
||||
- ansible-galaxy collection install - respect symlinks when installing from source or local repository (https://github.com/ansible/ansible/issues/78442)
|
||||
- ansible-galaxy collection verify - fix verifying signed collections when the keyring is not configured.
|
||||
- ansible-galaxy collection/role init - preserve symlinks (https://github.com/ansible/ansible/issues/39334).
|
||||
- ansible-galaxy role info - fix unhandled AttributeError by catching the correct exception.
|
||||
- ansible-inventory will no longer duplicate host entries if they were part of a group's childrens tree.
|
||||
- ansible-inventory will not explicitly sort groups/hosts anymore, giving a chance (depending on output format) to match the order in the input sources.
|
||||
- ansible-playbook -K breaks when passwords have quotes (https://github.com/ansible/ansible/issues/79836).
|
||||
- ansible-test - Add ``wheel < 0.38.0`` constraint for Python 3.6 and earlier.
|
||||
- ansible-test - Add support for ``argcomplete`` version 3.
|
||||
- ansible-test - Add support for ``pytest`` assertion rewriting when running unit tests on Python 3.5 and later. Resolves issue https://github.com/ansible/ansible/issues/68032
|
||||
- ansible-test - Added a work-around for a traceback under Python 3.11 when completing certain command line options.
|
||||
- ansible-test - Allow disabled, unsupported, unstable and destructive integration test targets to be selected using their respective prefixes.
|
||||
- ansible-test - Allow unstable tests to run when targeted changes are made and the ``--allow-unstable-changed`` option is specified (resolves https://github.com/ansible/ansible/issues/74213).
|
||||
- ansible-test - Always indicate the Python version being used before installing requirements. Resolves issue https://github.com/ansible/ansible/issues/72855
|
||||
- ansible-test - Avoid using ``exec`` after container startup when possible. This improves container startup performance and avoids intermittent startup issues with some old containers.
|
||||
- ansible-test - Connection attempts to managed remote instances no longer abort on ``Permission denied`` errors.
|
||||
- ansible-test - Detection for running in a Podman or Docker container has been fixed to detect more scenarios. The new detection relies on ``/proc/self/mountinfo`` instead of ``/proc/self/cpuset``. Detection now works with custom cgroups and private cgroup namespaces.
|
||||
- ansible-test - Exclude ansible-core vendored Python packages from ansible-test payloads.
|
||||
- ansible-test - Fix broken documentation link for ``aws`` test plugin error messages.
|
||||
- ansible-test - Fix validate-modules error when retrieving PowerShell argspec when retrieved inside a Cmdlet
|
||||
- ansible-test - Handle server errors when executing the ``docker info`` command.
|
||||
- ansible-test - Integration test target prefixes defined in a ``tests/integration/target-prefixes.{group}`` file can now contain an underscore (``_``) character. Resolves issue https://github.com/ansible/ansible/issues/79225
|
||||
- ansible-test - Multiple containers now work under Podman without specifying the ``--docker-network`` option.
|
||||
- ansible-test - Pass the ``XDG_RUNTIME_DIR`` environment variable through to container commands.
|
||||
- ansible-test - Perform PyPI proxy configuration after instances are ready and bootstrapping has been completed. Only target instances are affected, as controller instances were already handled this way. This avoids proxy configuration errors when target instances are not yet ready for use.
|
||||
- ansible-test - Prevent concurrent / repeat inspections of the same container image.
|
||||
- ansible-test - Prevent concurrent / repeat pulls of the same container image.
|
||||
- ansible-test - Prevent concurrent execution of cached methods.
|
||||
- ansible-test - Removed pointless comparison in diff evaluation logic.
|
||||
- ansible-test - Set ``PYLINTHOME`` for the ``pylint`` sanity test to prevent failures due to ``pylint`` checking for the existence of an obsolete home directory.
|
||||
- ansible-test - Show the exception type when reporting errors during instance provisioning.
|
||||
- ansible-test - Support Podman 4.4.0+ by adding the ``SYS_CHROOT`` capability when running containers.
|
||||
- ansible-test - Support loading of vendored Python packages from ansible-core.
|
||||
- ansible-test - The ``validate-modules`` sanity test now properly enforces documentation before imports for plugins. Previously this was only enforced for modules due to a coding error.
|
||||
- ansible-test - Update ``pylint`` to 2.17.2 to resolve several possible false positives.
|
||||
- ansible-test - Update ``pylint`` to 2.17.3 to resolve several possible false positives.
|
||||
- ansible-test - Update the ``pylint`` sanity test requirements to resolve crashes on Python 3.11. (https://github.com/ansible/ansible/issues/78882)
|
||||
- ansible-test - Update the ``pylint`` sanity test to use version 2.15.4.
|
||||
- ansible-test - Update the ``pylint`` sanity test to use version 2.15.5.
|
||||
- ansible-test - Use consistent file permissions when delegating tests to a container or remote host. Files with any execute bit set will use permissions ``755``. All other files will use permissions ``644``. (Resolves issue https://github.com/ansible/ansible/issues/75079)
|
||||
- ansible-test - When bootstrapping remote FreeBSD instances, use the OS packaged ``setuptools`` instead of installing the latest version from PyPI.
|
||||
- ansible-test - fix warning message about failing to run an image to include the image name
|
||||
- ansible-test runtime-metadata sanity test - do not crash on YAML parsing errors without a context mark (https://github.com/ansible/ansible/pull/78802).
|
||||
- ansible-test sanity - correctly report invalid YAML in validate-modules (https://github.com/ansible/ansible/issues/75837).
|
||||
- ansible-vault encrypt_string - started appending a line feed at the end of the encrypted string output. Missing newline character caused problems identifying where the string ends in some shells (like bash) or accidentally copying an extra trailing terminator symbol (e.g., zsh prints out a ``%`` sign to signal where the original output stops) (https://github.com/ansible/ansible/issues/78932).
|
||||
- ansible_facts.hardware - Define all processor facts on s390x (https://github.com/ansible/ansible/issues/19755)
|
||||
- apt - set locale to fix updating the cache (https://github.com/ansible/ansible/issues/79523).
|
||||
- apt module should not traceback on invalid type given as package. issue 78663.
|
||||
- apt_repository will no longer fail to detect key when unrelated errors/warnings are issued by apt-key.
|
||||
- argument spec validation - again report deprecated parameters for Python-based modules. This was accidentally removed in ansible-core 2.11 when argument spec validation was refactored (https://github.com/ansible/ansible/issues/79680, https://github.com/ansible/ansible/pull/79681).
|
||||
- argument spec validation - ensure that deprecated aliases in suboptions are also reported (https://github.com/ansible/ansible/pull/79740).
|
||||
- argument spec validation - fix warning message when two aliases of the same option are used for suboptions to also mention the option's name they are in (https://github.com/ansible/ansible/pull/79740).
|
||||
- basic.py module_utils - Perform Python version check much earlier to ensure it runs before other errors occur.
|
||||
- connection local now avoids traceback on invalid user being used to execuet ansible (valid in host, but not in container).
|
||||
- copy - fix creating the dest directory in check mode with remote_src=True (https://github.com/ansible/ansible/issues/78611).
|
||||
- copy - fix reporting changes to file attributes in check mode with remote_src=True (https://github.com/ansible/ansible/issues/77957).
|
||||
- copy module will no longer move 'non files' set as src when remote_src=true.
|
||||
- copy remote_src=true - fix copying subdirs recursively when the dest exists and the src and dest have multiple common subdirectories in a common directory (https://github.com/ansible/ansible/issues/74536).
|
||||
- copy remote_src=true - fix reporting changed for copying empty directories.
|
||||
- display - reduce risk of post-fork output deadlocks (https://github.com/ansible/ansible/pull/79522)
|
||||
- dnf5 - Use ``transaction.check_gpg_signatures`` API call to check package signatures AND possibly to recover from when keys are missing.
|
||||
- dnf5 - fix module and package names in the message following failed module respawn attempt
|
||||
- dnf5 - use the logs API to determine transaction problems
|
||||
- file - touch action in check mode was always returning ok. Fix now evaluates the different conditions and returns the appropriate changed status. (https://github.com/ansible/ansible/issues/79360)
|
||||
- file lookup now handles missing files more gracefully.
|
||||
- file lookup now plays nice with generic lookup ``errors`` option.
|
||||
- get_url - Ensure we are passing ciphers to all url_get calls (https://github.com/ansible/ansible/issues/79717)
|
||||
- get_url module - Added a documentation reference to ``hashlib`` regarding algorithms, as well as a note about ``md5`` support on systems running in FIPS compliant mode.
|
||||
- get_url module - Removed out-of-date documentation stating that ``hashlib`` is a third-party library.
|
||||
- handlers - fix ``v2_playbook_on_notify`` callback not being called when notifying handlers
|
||||
- handlers - fix an issue where the ``flush_handlers`` meta task could not be used with FQCN: ``ansible.builtin.meta`` (https://github.com/ansible/ansible/issues/79023)
|
||||
- include_role - Inherit from role parents beyond a depth of 3 (https://github.com/ansible/ansible/issues/47023).
|
||||
- jinja2_native - fix intermittent 'could not find job' failures when a value of ``ansible_job_id`` from a result of an async task was inadvertently changed during execution; to prevent this a format of ``ansible_job_id`` was changed.
|
||||
- jinja2_native: preserve quotes in strings (https://github.com/ansible/ansible/issues/79083)
|
||||
- keyword inheritance - Ensure that we do not squash keywords in validate (https://github.com/ansible/ansible/issues/79021)
|
||||
- known_hosts - do not return changed status when a non-existing key is removed (https://github.com/ansible/ansible/issues/78598)
|
||||
- list-tags now shows the 'never' tag, which was being excluded by default. To list all tasks you still need to add `--list-tasks --tags never,all`.
|
||||
- loops/delegate_to - Do not double calculate the values of loops and ``delegate_to`` (https://github.com/ansible/ansible/issues/80038)
|
||||
- module responses - Ensure that module responses are utf-8 adhereing to JSON RFC and expectations of the core code.
|
||||
- module/role argument spec - validate the type for options that are None when the option is required or has a non-None default (https://github.com/ansible/ansible/issues/79656).
|
||||
- module_utils/basic.py - Fix detection of available hashing algorithms on Python 3.x. All supported algorithms are now available instead of being limited to a hard-coded list. This affects modules such as ``get_url`` which accept an arbitrary checksum algorithm.
|
||||
- normal action plugin - remove obsolete ``if`` (https://github.com/ansible/ansible/pull/79690).
|
||||
- omit on keywords was resetting to default value, ignoring inheritance.
|
||||
- paramiko - Add a new option to allow paramiko >= 2.9 to easily work with all devices now that rsa-sha2 support was added to paramiko, which prevented communication with numerous platforms. (https://github.com/ansible/ansible/issues/76737)
|
||||
- paramiko - Add back support for ``ssh_args``, ``ssh_common_args``, and ``ssh_extra_args`` for parsing the ``ProxyCommand`` (https://github.com/ansible/ansible/issues/78750)
|
||||
- paramiko connection was still using outdated playcontext, this should bring it up to date to use the 'correct' data for each task/loop.
|
||||
- password lookup now correctly reads stored ident fields.
|
||||
- password_hash - handle errors using unknown passlib hashtypes more gracefully (https://github.com/ansible/ansible/issues/45392).
|
||||
- pep517 build backend - Use the documented ``import_module`` import from ``importlib``.
|
||||
- plugin loader, fix detection for existing configuration before initializing for a plugin
|
||||
- role deduplication - Always create new role object, regardless of deduplication. Deduplication will only affect whether a duplicate call to a role will execute, as opposed to re-using the same object. (https://github.com/ansible/ansible/pull/78661)
|
||||
- roles - Fix templating ``public``, ``allow_duplicates`` and ``rolespec_validate`` (https://github.com/ansible/ansible/issues/80304).
|
||||
- service_facts - Use python re to parse service output instead of grep (https://github.com/ansible/ansible/issues/78541)
|
||||
- strategy plugins now correctly identify bad registered variables, even on skip.
|
||||
- strategy plugins: get the correctly templated and validated run_once value on strategy linear (https://github.com/ansible/ansible/issues/78492)
|
||||
- syntax check - Limit ``--syntax-check`` to ``ansible-playbook`` only, as that is the only CLI affected by this argument (https://github.com/ansible/ansible/issues/80506)
|
||||
- systemd - daemon-reload and daemon-reexec ignore errors when running in a chroot (https://github.com/ansible/ansible/pull/79643)
|
||||
- templates - Fixed ``TypeError`` when a lookup plugin has an option called ``name``.
|
||||
- unarchive - allow relative path for ``dest`` (https://github.com/ansible/ansible/issues/64612)
|
||||
- unarchive - log errors from commands to assist in debugging (https://github.com/ansible/ansible/issues/64612)
|
||||
- updated error messages to include 'acl' and not just mode changes when failing to set required permissions on remote.
|
||||
- uri - improve JSON content type detection
|
||||
- user - fix comparing group IDs to existing group names so groups are not always updated (https://github.com/ansible/ansible/issues/79956).
|
||||
- user module - Removed ``password_expire_max`` from the return docs, as it is not returned.
|
||||
- user module - Removed ``password_expire_min`` from the return docs, as it is not returned.
|
||||
- validate-modules sanity test - replace semantic markup parsing and validating code with the code from `antsibull-docs-parser 0.2.0 <https://github.com/ansible-community/antsibull-docs-parser/releases/tag/0.2.0>`__ (https://github.com/ansible/ansible/pull/80406).
|
||||
- vault - show filename additionally if missing secrets prevents decryption (https://github.com/ansible/ansible/issues/79723)
|
||||
- winrm - Increase the read timeout to 10 seconds later than the operation timeout reducing the chances of a false read timeout
|
||||
|
||||
Known Issues
|
||||
------------
|
||||
|
||||
- ansible-test - Additional configuration may be required for certain container host and container combinations. Further details are available in the testing documentation.
|
||||
- ansible-test - Custom containers with ``VOLUME`` instructions may be unable to start, when previously the containers started correctly. Remove the ``VOLUME`` instructions to resolve the issue. Containers with this condition will cause ``ansible-test`` to emit a warning.
|
||||
- ansible-test - Systems with Podman networking issues may be unable to run containers, when previously the issue went unreported. Correct the networking issues to continue using ``ansible-test`` with Podman.
|
||||
- ansible-test - Unit tests for collections do not support ``pytest`` assertion rewriting on Python 2.7.
|
||||
- ansible-test - Using Docker on systems with SELinux may require setting SELinux to permissive mode. Podman should work with SELinux in enforcing mode.
|
||||
- dnf5 - The DNF5 package manager currently does not provide all functionality to ensure feature parity between the existing ``dnf`` and the new ``dnf5`` module. As a result the following ``dnf5`` options are effectively a no-op: ``cacheonly``, ``enable_plugin``, ``disable_plugin`` and ``lock_timeout``.
|
||||
|
||||
New Plugins
|
||||
-----------
|
||||
|
||||
Filter
|
||||
~~~~~~
|
||||
|
||||
- commonpath - gets the common path
|
||||
- normpath - Normalize a pathname
|
||||
|
||||
New Modules
|
||||
-----------
|
||||
|
||||
Lib
|
||||
~~~
|
||||
|
||||
ansible.modules
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
- deb822_repository - Add and remove deb822 formatted repositories
|
||||
- dnf5 - Manages packages with the I(dnf5) package manager
|
||||
794
changelogs/CHANGELOG-v2.7.rst
Normal file
794
changelogs/CHANGELOG-v2.7.rst
Normal file
@ -0,0 +1,794 @@
|
||||
========================================
|
||||
Ansible 2.7 "In the Light" Release Notes
|
||||
========================================
|
||||
|
||||
.. contents:: Topics
|
||||
|
||||
|
||||
v2.7.0rc1
|
||||
=========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2018-09-06
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- dnf - group removal does not work if group was installed with Ansible because of dnf upstream bug https://bugzilla.redhat.com/show_bug.cgi?id=1620324
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Add argspec to aws_application_scaling_policy module to handle metric specifications, scaling cooldowns, and target values. https://github.com/ansible/ansible/pull/45235
|
||||
- Allow arbitrary ``log_driver`` for docker_container (https://github.com/ansible/ansible/pull/33579).
|
||||
- Fix ec2_group support for multi-account and peered VPC security groups. Reported in https://github.com/ansible/ansible/issue/44788 and fixed in https://github.com/ansible/ansible/pull/45296
|
||||
- Fix ecs_taskdefinition handling of changed role_arn. If the task role in a ECS task definition changes ansible should create a new revsion of the task definition. https://github.com/ansible/ansible/pull/45317
|
||||
- Fix health check parameter handling in elb_target_group per https://github.com/ansible/ansible/issues/43244 about health_check_port. Fixed in https://github.com/ansible/ansible/pull/45314
|
||||
- Fix lambda_policy updates when principal is an account number. Backport of https://github.com/ansible/ansible/pull/44871
|
||||
- Fix python2.6 `nothing to repeat` nxos terminal plugin bug (https://github.com/ansible/ansible/pull/45271).
|
||||
- Fix s3_lifecycle module backwards compatibility without providing prefix. Blank prefixes regression was introduced in boto3 rewrite. https://github.com/ansible/ansible/pull/45318
|
||||
- Fix terminal plugin regex nxos, iosxr (https://github.com/ansible/ansible/pull/45135).
|
||||
- Remove spurious `changed=True` returns when ec2_group module is used with numeric ports. https://github.com/ansible/ansible/pull/45240
|
||||
- Support key names that contain spaces in ec2_metadata_facts module. https://github.com/ansible/ansible/pull/45313
|
||||
- The docker_* modules respect the DOCKER_* environment variables again (https://github.com/ansible/ansible/pull/42641).
|
||||
- corrected and clarified 'user' option deprecation in systemd module in favor of 'scope' option.
|
||||
- docker_container: fixing ``working_dir`` idempotency problem (https://github.com/ansible/ansible/pull/42857)
|
||||
- docker_container: makes unit parsing for memory sizes more consistent, and fixes idempotency problem when ``kernel_memory`` is set (see https://github.com/ansible/ansible/pull/16748 and https://github.com/ansible/ansible/issues/42692)
|
||||
- ec2_vpc_route_table - check the origin before replacing routes. Routes with the origin 'EnableVgwRoutePropagation' may not be replaced.
|
||||
- elb_target_group - cast target ports to integers before making API calls after the key 'Targets' is in params.
|
||||
- fixed typo in config that prevented keys matching
|
||||
- fixes docker_container check and debug mode (https://github.com/ansible/ansible/pull/42380)
|
||||
- improves docker_container idempotency (https://github.com/ansible/ansible/pull/44808)
|
||||
|
||||
New Modules
|
||||
-----------
|
||||
|
||||
Cloud
|
||||
~~~~~
|
||||
|
||||
online
|
||||
^^^^^^
|
||||
|
||||
- online_user_facts - Gather facts about Online user.
|
||||
|
||||
v2.7.0b1
|
||||
========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2018-08-31
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- GCP Modules will do home path expansion on service account file paths
|
||||
- action plugins strictly accept valid parameters and report invalid parameters
|
||||
- import_tasks - Do not allow import_tasks to transition to dynamic if the file is missing (https://github.com/ansible/ansible/issues/44822)
|
||||
- onepassword/onepassword_raw - accept subdomain and vault_password to allow Ansible to unlock 1Password vaults
|
||||
- win_disk_image - return a list of mount paths with the return value ``mount_paths``, this will always be a list and contain all mount points in an image
|
||||
- win_psexec - Added the ``session`` option to specify a session to start the process in
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- win_disk_image - the return value ``mount_path`` is deprecated and will be removed in 2.11, this can be accessed through ``mount_paths[0]`` instead.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- delegate_to - ensure if we get a non-Task object in _get_delegated_vars, we return early (https://github.com/ansible/ansible/pull/44934)
|
||||
- get_url / uri - Use custom rfc2822 date format function instead of locale specific strftime (https://github.com/ansible/ansible/issues/44857)
|
||||
- improved block docs
|
||||
- include - Change order of where the new block is inserted with apply so that apply args are not applied to the include also (https://github.com/ansible/ansible/pull/44912)
|
||||
- includes - ensure we do not double register handlers from includes to prevent exception (https://github.com/ansible/ansible/issues/44848)
|
||||
- loop - Ensure we only cache the loop when the task had a loop and delegate_to was templated (https://github.com/ansible/ansible/issues/44874)
|
||||
- win_psexec - changed code to not escape the command option when building the args - https://github.com/ansible/ansible/issues/43839
|
||||
- win_uri: Fix support for JSON output when charset is set
|
||||
- win_wait_for - fix issue where timeout doesn't wait unless state=drained - https://github.com/ansible/ansible/issues/43446
|
||||
|
||||
New Plugins
|
||||
-----------
|
||||
|
||||
Lookup
|
||||
~~~~~~
|
||||
|
||||
- cpm_metering - Get Power and Current data from WTI OOB/Combo and PDU devices
|
||||
|
||||
New Modules
|
||||
-----------
|
||||
|
||||
Cloud
|
||||
~~~~~
|
||||
|
||||
amazon
|
||||
^^^^^^
|
||||
|
||||
- elb_target_facts - Gathers which target groups a target is associated with.
|
||||
- rds_instance - Manage RDS instances
|
||||
|
||||
azure
|
||||
^^^^^
|
||||
|
||||
- azure_rm_autoscale - Manage Azure autoscale setting.
|
||||
- azure_rm_autoscale_facts - Get Azure Auto Scale Setting facts.
|
||||
- azure_rm_containerregistry_facts - Get Azure Container Registry facts.
|
||||
- azure_rm_sqlfirewallrule - Manage Firewall Rule instance.
|
||||
- azure_rm_trafficmanagerendpoint - Manage Azure Traffic Manager endpoint.
|
||||
- azure_rm_trafficmanagerendpoint_facts - Get Azure Traffic Manager endpoint facts
|
||||
- azure_rm_trafficmanagerprofile - Manage Azure Traffic Manager profile.
|
||||
- azure_rm_trafficmanagerprofile_facts - Get Azure Traffic Manager profile facts
|
||||
- azure_rm_webapp_facts - Get azure web app facts.
|
||||
|
||||
google
|
||||
^^^^^^
|
||||
|
||||
- gcp_compute_router - Creates a GCP Router
|
||||
- gcp_spanner_database - Creates a GCP Database
|
||||
- gcp_spanner_instance - Creates a GCP Instance
|
||||
- gcp_sql_database - Creates a GCP Database
|
||||
- gcp_sql_instance - Creates a GCP Instance
|
||||
- gcp_sql_user - Creates a GCP User
|
||||
|
||||
vmware
|
||||
^^^^^^
|
||||
|
||||
- vmware_host_ntp_facts - Gathers facts about NTP configuration on an ESXi host
|
||||
|
||||
Identity
|
||||
~~~~~~~~
|
||||
|
||||
- onepassword_facts - Fetch facts from 1Password items
|
||||
|
||||
Network
|
||||
~~~~~~~
|
||||
|
||||
fortimanager
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- fmgr_provisioning - Provision devices via FortiMananger
|
||||
|
||||
ftd
|
||||
^^^
|
||||
|
||||
- ftd_configuration - Manages configuration on Cisco FTD devices over REST API
|
||||
- ftd_file_download - Downloads files from Cisco FTD devices over HTTP(S)
|
||||
- ftd_file_upload - Uploads files to Cisco FTD devices over HTTP(S)
|
||||
|
||||
opx
|
||||
^^^
|
||||
|
||||
- opx_cps - CPS operations on networking device running Openswitch (OPX)
|
||||
|
||||
Remote Management
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
cpm
|
||||
^^^
|
||||
|
||||
- cpm_user - Get various status and parameters from WTI OOB and PDU devices
|
||||
|
||||
redfish
|
||||
^^^^^^^
|
||||
|
||||
- redfish_command - Manages Out-Of-Band controllers using Redfish APIs
|
||||
- redfish_config - Manages Out-Of-Band controllers using Redfish APIs
|
||||
|
||||
Storage
|
||||
~~~~~~~
|
||||
|
||||
ibm
|
||||
^^^
|
||||
|
||||
- ibm_sa_host - Adds hosts to or removes them from IBM Spectrum Accelerate storage systems.
|
||||
- ibm_sa_pool - Handles pools on an IBM Spectrum Accelerate storage array.
|
||||
|
||||
netapp
|
||||
^^^^^^
|
||||
|
||||
- na_elementsw_access_group - NetApp Element Software Manage Access Groups
|
||||
- na_elementsw_account - NetApp Element Software Manage Accounts
|
||||
- na_elementsw_admin_users - NetApp Element Software Manage Admin Users
|
||||
- na_elementsw_check_connections - NetApp Element Software Check connectivity to MVIP and SVIP.
|
||||
- na_elementsw_cluster - NetApp Element Software Create Cluster
|
||||
- na_elementsw_drive - NetApp Element Software ManageNetApp Element Software Node Drives
|
||||
- na_elementsw_ldap - NetApp Element Software Manage ldap admin users
|
||||
- na_elementsw_network_interfaces - NetApp Element Software Configure Node Network Interfaces
|
||||
- na_elementsw_node - NetApp Element Software Node Operation
|
||||
- na_elementsw_snapshot - NetApp Element Software Manage Snapshots
|
||||
- na_elementsw_snapshot_restore - NetApp Element Software Restore Snapshot
|
||||
- na_elementsw_volume_clone - NetApp Element Software Create Volume Clone
|
||||
- na_ontap_autosupport - Manage NetApp Autosupport
|
||||
- na_ontap_cluster_peer - NetApp ONTAP Manage Cluster peering
|
||||
- na_ontap_command - NetApp ONTAP Run any cli command
|
||||
- na_ontap_disks - NetApp ONTAP Assign disks to nodes
|
||||
- na_ontap_firewall_policy - NetApp ONTAP Manage a firewall policy
|
||||
- na_ontap_gather_facts - NetApp information gatherer
|
||||
- na_ontap_motd - Setup motd on cDOT
|
||||
- na_ontap_node - NetApp ONTAP Rename a node.
|
||||
- netapp_e_alerts - NetApp E-Series manage email notification settings
|
||||
- netapp_e_asup - manage E-Series auto-support settings
|
||||
- netapp_e_auditlog - NetApp E-Series manage audit-log configuration
|
||||
- netapp_e_global - NetApp E-Series manage global settings configuration
|
||||
- netapp_e_iscsi_interface - NetApp E-Series manage iSCSI interface configuration
|
||||
- netapp_e_iscsi_target - NetApp E-Series manage iSCSI target configuration
|
||||
- netapp_e_ldap - NetApp E-Series manage LDAP integration to use for authentication
|
||||
- netapp_e_mgmt_interface - NetApp E-Series management interface configuration
|
||||
- netapp_e_syslog - NetApp E-Series manage syslog settings
|
||||
|
||||
purestorage
|
||||
^^^^^^^^^^^
|
||||
|
||||
- purefb_facts - Collect facts from Pure Storage FlashBlade
|
||||
|
||||
Web Infrastructure
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
ansible_tower
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
- tower_credential_type - Create, update, or destroy custom Ansible Tower credential type.
|
||||
- tower_settings - Modify Ansible Tower settings.
|
||||
- tower_workflow_template - create, update, or destroy Ansible Tower workflow template.
|
||||
|
||||
Windows
|
||||
~~~~~~~
|
||||
|
||||
- win_wait_for_process - Waits for a process to exist or not exist before continuing.
|
||||
- win_xml - Add XML fragment to an XML parent
|
||||
|
||||
v2.7.0.a1
|
||||
=========
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2018-08-31
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Major Changes
|
||||
-------------
|
||||
|
||||
- Allow config to enable native jinja types (https://github.com/ansible/ansible/pull/32738)
|
||||
- Extends `module_defaults` by adding a prefix to defaults `group/` which denotes a builtin or user-specified list of modules, such as `group/aws` or `group/gcp`
|
||||
- New keyword `ignore_unreachable` for plays and blocks. Allows ignoring tasks that fail due to unreachable hosts, and check results with `is unreachable` test.
|
||||
- New yumdnf module defines the shared argument specification for both yum and dnf modules and provides an entry point to share code when applicable
|
||||
- Remove support for simplejson (https://github.com/ansible/ansible/issues/42761)
|
||||
- Support for running an Ansible controller with Python-2.6 has been dropped. You can still manage machines which use Python-2.6 but you will have to manage them from a machine which has Python-2.7 or Python-3.5 or greater installed. See the `porting guide <https://docs.ansible.com/ansible/devel/porting_guides/porting_guide_2.7.html>`_ if you need more information.
|
||||
- new yum action plugin enables the yum module to work with both yum3 and dnf-based yum4 by detecting the backend package manager and routing commands through the correct Ansible module for that python API
|
||||
- yum and dnf modules now at feature parity
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ActionBase - removed deprecated _fixup_perms method (https://github.com/ansible/ansible/pull/44320)
|
||||
- Add `is_boto3_error_code` function to `module_utils/aws/core.py` to make it easier for modules to handle special AWS error codes.
|
||||
- Add use_backend to yum module/action plugin
|
||||
- Added PrivilegeUtil PowerShell module util to easily control Windows Privileges in a process
|
||||
- Added capability to skip ssl verification on zabbix host with dynamic inventory
|
||||
- Added inventory.any_unparsed_is_failed configuration setting. In an inventory with a static hosts file and (say) ec2.py, enabling this setting will cause a failure instead of a warning if ec2.py fails.
|
||||
- Added new filter to generate random MAC addresses from a given string acting as a prefix. Refer to the appropriate entry which has been added to user_guide playbook_filters.rst document.
|
||||
- Added the from_yaml_all filter to parse multi-document yaml strings. Refer to the appropriate entry which as been added to user_guide playbooks_filters.rst document.
|
||||
- Ansible-2.7 changes the Ansiballz strategy for running modules remotely so that invoking a module only needs to invoke python once per module on the remote machine instead of twice.
|
||||
- Better error handling for depsolve and transaction errors in DNF
|
||||
- Changed the prefix of all Vultr modules from vr to vultr (https://github.com/ansible/ansible/issues/42942).
|
||||
- Enable installroot tests for yum4(dnf) integration testing, dnf backend now supports that
|
||||
- Explicit encoding for the output of the template module, to be able to generate non-utf8 files from a utf-8 template. (https://github.com/ansible/proposals/issues/121)
|
||||
- File locking feature added, making it possible to gain exclusive access to given file through module_utils.common.file.FileLock (https://github.com/ansible/ansible/issues/29962)
|
||||
- Fix dnf handling of autoremove to be compatible with yum
|
||||
- Fixed group action idempotent transactions in dnf backend
|
||||
- Fixed group actions in check mode to report correct changed state
|
||||
- In Ansible-2.4 and above, Ansible passes the temporary directory a module should use to the module. This is done via a module parameter (_ansible_tmpdir). An earlier version of this which was also prototyped in Ansible-2.4 development used an environment variable, ANSIBLE_REMOTE_TMP to pass this information to the module instead. When we switched to using a module parameter, the environment variable was left in by mistake. Ansible-2.7 removes that variable. Any third party modules which relied on it should use the module parameter instead.
|
||||
- New config options `display_ok_hosts` and `display_failed_stderr` (along with the existing `display_skipped_hosts` option) allow more fine-grained control over the way that ansible displays output from a playbook (https://github.com/ansible/ansible/pull/41058)
|
||||
- Removed an unnecessary import from the AnsiballZ wrapper
|
||||
- Restore module_utils.basic.BOOLEANS variable for backwards compatibility with the module API in older ansible releases.
|
||||
- Setting file attributes (via the file module amongst others) now accepts + and - modifiers to add or remove individual attributes. (https://github.com/ansible/ansible/issues/33838)
|
||||
- Switch from zip to bc for certain package install/remove test cases in yum integration tests. The dnf depsolver downgrades python when you uninstall zip which alters the test environment and we have no control over that.
|
||||
- The acme_account and acme_certificate modules now support two backends: the Python cryptograpy module or the OpenSSL binary. By default, the modules detect if a new enough cryptography module is available and use it, with the OpenSSL binary being a fallback. If the detection fails for some reason, the OpenSSL binary backend can be explicitly selected by setting select_crypto_backend to openssl.
|
||||
- The apt, ec2_elb_lb, elb_classic_lb, and unarchive modules have been ported away from using __file__. This is futureproofing as__file__ won't work if we switch to using python -m to invoke modules in the future or if we figure out a way to make a module never touch disk for pipelining purposes.
|
||||
- The password_hash filter supports all parameters of passlib. This allows users to provide a rounds parameter. (https://github.com/ansible/ansible/issues/15326)
|
||||
- allow user to customize default ansible-console prompt/msg default color
|
||||
- aws_caller_facts - The module now outputs the "account_alias" as well
|
||||
- aws_rds - Add new inventory plugin for RDS instances and clusters to match behavior in the ec2 inventory script.
|
||||
- command module - Add support for check mode when passing creates or removes arguments. (https://github.com/ansible/ansible/pull/40428)
|
||||
- ec2_group - Add diff mode support with and without check mode. This feature is preview and may change when a common framework is adopted for AWS modules.
|
||||
- elasticsearch_plugin - Add the possibility to use the elasticsearch_plugin installation batch mode to install plugins with advanced privileges without user interaction.
|
||||
- gather_subset - removed deprecated functionality for using comma separated list with gather_subset (https://github.com/ansible/ansible/pull/44320)
|
||||
- get_url - implement [expend checksum format to <algorithm>:(<checksum>|<url>)] (https://github.com/ansible/ansible/issues/27617)
|
||||
- lineinfile - add warning when using an empty regexp (https://github.com/ansible/ansible/issues/29443)
|
||||
- password_hash is not restricted to the subset provided by crypt.crypt (https://github.com/ansible/ansible/issues/17266)
|
||||
- passwordstore - Add backup option when overwriting password (off by default)
|
||||
- puppet - Add support for --debug, --verbose, --summarize https://github.com/ansible/ansible/issues/37986
|
||||
- puppet - Add support for setting logdest to both stdout and syslog via 'all'
|
||||
- replace copy.deepcopy in high workload areas with a custom function to improve performance (https://github.com/ansible/ansible/pull/44337)
|
||||
- roles - removed deprecated functionality for non YAML role specs (https://github.com/ansible/ansible/pull/44320)
|
||||
- roles - removed deprecated special casing functionality of connection, port, and remote_user for role params (https://github.com/ansible/ansible/pull/44320)
|
||||
- service - removed deprecated state=running (https://github.com/ansible/ansible/pull/44320)
|
||||
- shell module - Add support for check mode when passing creates or removes arguments. (https://github.com/ansible/ansible/pull/40428)
|
||||
- sns_topic - Port sns_topic module to boto3 and add an integration test suite.
|
||||
- ssh - reset connection will show a warning instead of failing for older OpenSSH versions
|
||||
- to_nice_json - specify separators to json.dumps to normalize the output between python2 and python3 (https://github.com/ansible/ansible/pull/42633)
|
||||
- user - backup shadow file on platforms where the module modifies it directly (https://github.com/ansible/ansible/issues/40696)
|
||||
- user module - add a sanity check for the user's password and a more helpful warning message (https://github.com/ansible/ansible/pull/43615)
|
||||
- vars_prompt - removed deprecated functionality supporting 'short form' for vars_prompt (https://github.com/ansible/ansible/pull/44320)
|
||||
- vault - removed deprecated functionality for insecure VaultAES class (https://github.com/ansible/ansible/pull/44320)
|
||||
- win_chocolatey - Add support for installing Chocolatey itself from a source feed
|
||||
- win_chocolatey - Add support for username and password on source feeds
|
||||
- win_chocolatey - Added ability to specify multiple packages as a list in 1 module invocation
|
||||
- win_chocolatey - Removed the need to manually escape double quotes in the proxy username and password
|
||||
- win_chocolatey - Will no longer upgrade Chocolatey in check mode
|
||||
- win_chocolatey - set the rc return value to always be returned, default to 0 https://github.com/ansible/ansible/issues/41758
|
||||
- winrm - change the _reset() method to use reset() that is part of ConnectionBase
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- Modules will no longer be able to rely on the __file__ attribute pointing to a real file. If your third party module is using __file__ for something it should be changed before 2.8. See the 2.7 porting guide for more information.
|
||||
- The `skippy`, `full_skip`, `actionable`, and `stderr` callback plugins have been deprecated in favor of config options that influence the behavior of the `default` callback plugin (https://github.com/ansible/ansible/pull/41058)
|
||||
|
||||
Removed Features (previously deprecated)
|
||||
----------------------------------------
|
||||
|
||||
- The configuration toggle, ``merge_multiple_cli_tags``, has been removed. This setting controlled whether specifying ``--tags`` or ``--skip-tags`` multiple times on the commandline would merge the specified tags or use the old behaviour of overwriting the previous entry. The overwriting behaviour was deprecated in 2.3 and the default value of the config option became merge in 2.4.
|
||||
- ec2_facts - deprecated module removed (https://github.com/ansible/ansible/pull/44536)
|
||||
- s3 - deprecated module removed (https://github.com/ansible/ansible/pull/44537)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- **Security Fix** - Some connection exceptions would cause no_log specified on a task to be ignored. If this happened, the task information, including any private information could have been displayed to stdout and (if enabled, not the default) logged to a log file specified in ansible.cfg's log_path. Additionally, sites which redirected stdout from ansible runs to a log file may have stored that private information onto disk that way as well. (https://github.com/ansible/ansible/pull/41414)
|
||||
- **Security Fix** - avoid loading host/group vars from cwd when not specifying a playbook or playbook base dir
|
||||
- **Security Fix** - avoid using ansible.cfg in a world writable dir.
|
||||
- Additional checks ensure that there is always a result of hashing passwords in the password_hash filter and vars_prompt, otherwise an error is returned. Some modules (like user module) interprets None as no password at all, which can be dangerous if the password given above is passed directly into those modules.
|
||||
- Avoids deprecated functionality of passlib with newer library versions.
|
||||
- Changed the admin_users config option to not include "admin" by default as admin is frequently used for a non-privileged account (https://github.com/ansible/ansible/pull/41164)
|
||||
- Fix alt linux detection/matching
|
||||
- Fix an atomic_move error that is 'true', but misleading. Now we show all 3 files involved and clarify what happened.
|
||||
- Fix glob path of rc.d Some distribtuions like SUSE has the rc%.d directories under /etc/init.d
|
||||
- Fix lxd module to be idempotent when the given configuration for the lxd container has not changed (https://github.com/ansible/ansible/pull/38166)
|
||||
- Fix the mount module's handling of swap entries in fstab (https://github.com/ansible/ansible/pull/42837)
|
||||
- Fixed an issue where ``ansible_facts.pkg_mgr`` would incorrectly set to ``zypper`` on Debian/Ubuntu systems that happened to have the command installed.
|
||||
- Fixed runtime module to be able to handle syslog_facility properly when python systemd module installed in a target system. (https://github.com/ansible/ansible/pull/41078)
|
||||
- Grafana dashboard module compatible with grafana 5 (https://github.com/ansible/ansible/pull/41249)
|
||||
- On Python2, loading config values from environment variables could lead to a traceback if there were nonascii characters present. Converted them to text strings so that no traceback will occur (https://github.com/ansible/ansible/pull/43468)
|
||||
- The fix for `CVE-2018-10875 <https://access.redhat.com/security/cve/cve-2018-10875>`__ prints out a warning message about skipping a config file from a world writable current working directory. However, if the user explicitly specifies that the config file should be used via the ANSIBLE_CONFIG environment variable then Ansible would honor that but still print out the warning message. This has been fixed so that Ansible honors the user's explicit wishes and does not print a warning message in that circumstance.
|
||||
- The fix for `CVE-2018-10875 <https://access.redhat.com/security/cve/cve-2018-10875>`__ prints out a warning message about skipping a config file from a world writable current working directory. However, if the user is in a world writable current working directory which does not contain a config file, it should not print a warning message. This release fixes that extaneous warning.
|
||||
- The ssh connection plugin was categorizing all 255 exit statuses as an ssh error but modules can return exit code 255 as well. The connection plugin has now been changed to know that certain instances of exit code 255 are not ssh-related. (https://github.com/ansible/ansible/pull/41716)
|
||||
- allow custom endpoints to be used in the aws_s3 module (https://github.com/ansible/ansible/pull/36832)
|
||||
- allow gathering env exception to work even when injection is off
|
||||
- always correctly template no log for tasks https://github.com/ansible/ansible/issues/43294
|
||||
- ansible-galaxy - properly list all roles in roles_path (https://github.com/ansible/ansible/issues/43010)
|
||||
- authorized_key now have an option for following symlinks, default behaviour (False) can be changed by setting follow True/False
|
||||
- basic.py - catch ValueError in case a FIPS enabled platform raises this exception - https://github.com/ansible/ansible/issues/44447
|
||||
- become runas - changed runas process so it does not create a temporary file on the disk during execution
|
||||
- elasticsearch_plugin - Improve error messages and show stderr of elasticsearch commands
|
||||
- elb_application_lb - Fix a dangerous behavior of deleting an ELB if state was omitted from the task. Now state defaults to 'present', which is typical throughout AWS modules.
|
||||
- file module - The touch subcommand had its diff output broken during the 2.6.x development cycle. The patch to fix that broke check mode. This is now fixed (https://github.com/ansible/ansible/issues/42111)
|
||||
- file module - The touch subcommand had its diff output broken during the 2.6.x development cycle. This is now fixed (https://github.com/ansible/ansible/issues/41755)
|
||||
- fix async for the aws_s3 module by adding async support to the action plugin (https://github.com/ansible/ansible/pull/40826)
|
||||
- fix decrypting vault files for the aws_s3 module (https://github.com/ansible/ansible/pull/39634)
|
||||
- fix default SSL version for docker modules https://github.com/ansible/ansible/issues/42897
|
||||
- fix for the bundled selectors module (used in the ssh and local connection plugins) when a syscall is restarted after being interrupted by a signal (https://github.com/ansible/ansible/issues/41630)
|
||||
- fix mail module for python 3.7.0 (https://github.com/ansible/ansible/pull/44552)
|
||||
- fix the enable_snat parameter that is only supposed to be used by an user with the right policies. https://github.com/ansible/ansible/pull/44418
|
||||
- fix the remote tmp folder permissions issue when becoming a non admin user - https://github.com/ansible/ansible/issues/41340, https://github.com/ansible/ansible/issues/42117
|
||||
- flatten filter - use better method of type checking allowing flattening of mutable and non-mutable sequences (https://github.com/ansible/ansible/pull/44331)
|
||||
- gce_net - Fix sorting of allowed ports (https://github.com/ansible/ansible/pull/41567)
|
||||
- get_url - fix the bug that get_url does not change mode when checksum matches (https://github.com/ansible/ansible/issues/29614)
|
||||
- inventory - When using an inventory directory, ensure extension comparison uses text types (https://github.com/ansible/ansible/pull/42475)
|
||||
- made irc module python3 compatible https://github.com/ansible/ansible/issues/42256
|
||||
- nclu - no longer runs net on empty lines in templates (https://github.com/ansible/ansible/pull/43024)
|
||||
- nicer message when we are missing interpreter
|
||||
- password_hash does not hard-code the salt-length, which fixes bcrypt in connection with passlib as bcrypt requires a salt with length 22.
|
||||
- pause - do not set stdout to raw mode when redirecting to a file (https://github.com/ansible/ansible/issues/41717)
|
||||
- pause - nest try except when importing curses to gracefully fail if curses is not present (https://github.com/ansible/ansible/issues/42004)
|
||||
- plugins/inventory/openstack.py - Do not create group with empty name if region is not set
|
||||
- preseve delegation info on nolog https://github.com/ansible/ansible/issues/42344
|
||||
- remove ambiguity when it comes to 'the source'
|
||||
- urls - Only assume GET method if data is empty, otherwise POST
|
||||
- user - Strip trailing comments in /etc/default/passwd (https://github.com/ansible/ansible/pull/43931)
|
||||
- user - fix bug that resulted in module always reporting a change when specifiying the home directory on FreeBSD (https://github.com/ansible/ansible/issues/42484)
|
||||
- user - use correct attribute name in FreeBSD for creat_home (https://github.com/ansible/ansible/pull/42711)
|
||||
- vars_prompt - properly template play level variables in vars_prompt (https://github.com/ansible/ansible/issues/37984)
|
||||
- vars_prompt with encrypt does not require passlib for the algorithms supported by crypt.
|
||||
- vault - fix error message encoding, and ensure we present a friendlier error when the EDITOR is missing (https://github.com/ansible/ansible/pull/44423)
|
||||
- win_chocolatey - enable TLSv1.2 support when downloading the Chocolatey installer https://github.com/ansible/ansible/issues/41906
|
||||
- win_chocolatey - fix issue where state=downgrade would upgrade a package if no version was set
|
||||
- win_domain - ensure the Netlogon service is up and running after promoting host to controller - https://github.com/ansible/ansible/issues/39235
|
||||
- win_domain - fixes typo in one of the AD cmdlets https://github.com/ansible/ansible/issues/41536
|
||||
- win_domain_computer - fixed deletion of computer active directory object that have dependent objects (https://github.com/ansible/ansible/pull/44500)
|
||||
- win_domain_controller - ensure the Netlogon service is up and running after promoting host to controller - https://github.com/ansible/ansible/issues/39235
|
||||
- win_iis_webapppool - redirect some module output to null so Ansible can read the output JSON https://github.com/ansible/ansible/issues/40874
|
||||
- win_lineinfile - changed `-Path` to `-LiteralPath` so that square brackes in the path are interpreted literally - https://github.com/ansible/ansible/issues/44508
|
||||
- win_reboot - fix for handling an already scheduled reboot and other minor log formatting issues
|
||||
- win_reboot - fix issue when overridding connection timeout hung the post reboot uptime check - https://github.com/ansible/ansible/issues/42185 https://github.com/ansible/ansible/issues/42294
|
||||
- win_reboot - handle post reboots when running test_command - https://github.com/ansible/ansible/issues/41713
|
||||
- win_security_policy - allows an empty string to reset a policy value https://github.com/ansible/ansible/issues/40869
|
||||
- win_updates - Fixed issue where running win_updates on async fails without any error
|
||||
- win_updates - fixed module return value is lost in error in some cases (https://github.com/ansible/ansible/pull/42647)
|
||||
- win_user - Use LogonUser to validate the password as it does not rely on SMB/RPC to be available https://github.com/ansible/ansible/issues/24884
|
||||
- winrm - ensure pexpect is set to not echo the input on a failure and have a manual sanity check afterwards https://github.com/ansible/ansible/issues/41865
|
||||
- winrm - running async with become on a Server 2008 or 2008 R2 host will now work
|
||||
|
||||
New Plugins
|
||||
-----------
|
||||
|
||||
Callback
|
||||
~~~~~~~~
|
||||
|
||||
- counter_enabled - adds counters to the output items (tasks and hosts/task)
|
||||
- logdna - Sends playbook logs to LogDNA
|
||||
- splunk - Sends task result events to Splunk HTTP Event Collector
|
||||
|
||||
Connection
|
||||
~~~~~~~~~~
|
||||
|
||||
- psrp - Run tasks over Microsoft PowerShell Remoting Protocol
|
||||
|
||||
Inventory
|
||||
~~~~~~~~~
|
||||
|
||||
- tower - Ansible dynamic inventory plugin for Ansible Tower.
|
||||
|
||||
Lookup
|
||||
~~~~~~
|
||||
|
||||
- cpm_status - Get status and parameters from WTI OOB and PDU devices.
|
||||
- grafana_dashboard - list or search grafana dashboards
|
||||
- nios_next_network - Return the next available network range for a network-container
|
||||
|
||||
New Modules
|
||||
-----------
|
||||
|
||||
Cloud
|
||||
~~~~~
|
||||
|
||||
amazon
|
||||
^^^^^^
|
||||
|
||||
- aws_eks_cluster - Manage Elastic Kubernetes Service Clusters
|
||||
- cloudformation_stack_set - Manage groups of CloudFormation stacks
|
||||
|
||||
azure
|
||||
^^^^^
|
||||
|
||||
- azure_rm_appgateway - Manage Application Gateway instance.
|
||||
- azure_rm_appserviceplan - Manage App Service Plan
|
||||
- azure_rm_appserviceplan_facts - Get azure app service plan facts.
|
||||
- azure_rm_mysqldatabase_facts - Get Azure MySQL Database facts.
|
||||
- azure_rm_mysqlserver_facts - Get Azure MySQL Server facts.
|
||||
- azure_rm_postgresqldatabase_facts - Get Azure PostgreSQL Database facts.
|
||||
- azure_rm_postgresqlserver_facts - Get Azure PostgreSQL Server facts.
|
||||
- azure_rm_route - Manage Azure route resource.
|
||||
- azure_rm_routetable - Manage Azure route table resource.
|
||||
- azure_rm_routetable_facts - Get route table facts.
|
||||
- azure_rm_virtualmachine_facts - Get virtual machine facts.
|
||||
- azure_rm_webapp - Manage Web App instance.
|
||||
|
||||
cloudstack
|
||||
^^^^^^^^^^
|
||||
|
||||
- cs_disk_offering - Manages disk offerings on Apache CloudStack based clouds.
|
||||
|
||||
docker
|
||||
^^^^^^
|
||||
|
||||
- docker_swarm - Manage Swarm cluster
|
||||
- docker_swarm_service - docker swarm service
|
||||
|
||||
google
|
||||
^^^^^^
|
||||
|
||||
- gcp_compute_address_facts - Gather facts for GCP Address
|
||||
- gcp_compute_backend_bucket_facts - Gather facts for GCP BackendBucket
|
||||
- gcp_compute_backend_service_facts - Gather facts for GCP BackendService
|
||||
- gcp_compute_disk_facts - Gather facts for GCP Disk
|
||||
- gcp_compute_firewall_facts - Gather facts for GCP Firewall
|
||||
- gcp_compute_forwarding_rule_facts - Gather facts for GCP ForwardingRule
|
||||
- gcp_compute_global_address_facts - Gather facts for GCP GlobalAddress
|
||||
- gcp_compute_global_forwarding_rule_facts - Gather facts for GCP GlobalForwardingRule
|
||||
- gcp_compute_health_check_facts - Gather facts for GCP HealthCheck
|
||||
- gcp_compute_http_health_check_facts - Gather facts for GCP HttpHealthCheck
|
||||
- gcp_compute_https_health_check_facts - Gather facts for GCP HttpsHealthCheck
|
||||
- gcp_compute_image_facts - Gather facts for GCP Image
|
||||
- gcp_compute_instance_facts - Gather facts for GCP Instance
|
||||
- gcp_compute_instance_group_facts - Gather facts for GCP InstanceGroup
|
||||
- gcp_compute_instance_group_manager_facts - Gather facts for GCP InstanceGroupManager
|
||||
- gcp_compute_instance_template_facts - Gather facts for GCP InstanceTemplate
|
||||
- gcp_compute_network_facts - Gather facts for GCP Network
|
||||
- gcp_compute_route_facts - Gather facts for GCP Route
|
||||
- gcp_compute_router_facts - Gather facts for GCP Router
|
||||
- gcp_compute_ssl_certificate_facts - Gather facts for GCP SslCertificate
|
||||
- gcp_compute_ssl_policy - Creates a GCP SslPolicy
|
||||
- gcp_compute_ssl_policy_facts - Gather facts for GCP SslPolicy
|
||||
- gcp_compute_subnetwork_facts - Gather facts for GCP Subnetwork
|
||||
- gcp_compute_target_http_proxy_facts - Gather facts for GCP TargetHttpProxy
|
||||
- gcp_compute_target_https_proxy_facts - Gather facts for GCP TargetHttpsProxy
|
||||
- gcp_compute_target_pool_facts - Gather facts for GCP TargetPool
|
||||
- gcp_compute_target_ssl_proxy_facts - Gather facts for GCP TargetSslProxy
|
||||
- gcp_compute_target_tcp_proxy_facts - Gather facts for GCP TargetTcpProxy
|
||||
- gcp_compute_target_vpn_gateway - Creates a GCP TargetVpnGateway
|
||||
- gcp_compute_target_vpn_gateway_facts - Gather facts for GCP TargetVpnGateway
|
||||
- gcp_compute_url_map_facts - Gather facts for GCP UrlMap
|
||||
- gcp_compute_vpn_tunnel - Creates a GCP VpnTunnel
|
||||
- gcp_compute_vpn_tunnel_facts - Gather facts for GCP VpnTunnel
|
||||
|
||||
openstack
|
||||
^^^^^^^^^
|
||||
|
||||
- os_coe_cluster_template - Add/Remove COE cluster template from OpenStack Cloud
|
||||
- os_listener - Add/Delete a listener for a load balancer from OpenStack Cloud
|
||||
- os_loadbalancer - Add/Delete load balancer from OpenStack Cloud
|
||||
- os_member - Add/Delete a member for a pool in load balancer from OpenStack Cloud
|
||||
- os_pool - Add/Delete a pool in the load balancing service from OpenStack Cloud
|
||||
|
||||
scaleway
|
||||
^^^^^^^^
|
||||
|
||||
- scaleway_image_facts - Gather facts about the Scaleway images available.
|
||||
- scaleway_ip_facts - Gather facts about the Scaleway ips available.
|
||||
- scaleway_organization_facts - Gather facts about the Scaleway organizations available.
|
||||
- scaleway_security_group_facts - Gather facts about the Scaleway security groups available.
|
||||
- scaleway_server_facts - Gather facts about the Scaleway servers available.
|
||||
- scaleway_snapshot_facts - Gather facts about the Scaleway snapshots available.
|
||||
- scaleway_volume - Scaleway volumes management module
|
||||
- scaleway_volume_facts - Gather facts about the Scaleway volumes available.
|
||||
|
||||
vmware
|
||||
^^^^^^
|
||||
|
||||
- vmware_about_facts - Provides information about VMware server to which user is connecting to
|
||||
- vmware_category - Manage VMware categories
|
||||
- vmware_category_facts - Gather facts about VMware tag categories
|
||||
- vmware_deploy_ovf - Deploys a VMware virtual machine from an OVF or OVA file
|
||||
- vmware_guest_boot_facts - Gather facts about boot options for the given virtual machine
|
||||
- vmware_guest_boot_manager - Manage boot options for the given virtual machine
|
||||
- vmware_guest_custom_attribute_defs - Manage custom attributes definitions for virtual machine from VMWare
|
||||
- vmware_guest_custom_attributes - Manage custom attributes from VMWare for the given virtual machine
|
||||
- vmware_guest_move - Moves virtual machines in vCenter
|
||||
- vmware_host_ssl_facts - Gather facts of ESXi host system about SSL
|
||||
- vmware_local_role_facts - Gather facts about local roles on an ESXi host
|
||||
|
||||
vultr
|
||||
^^^^^
|
||||
|
||||
- vultr_block_storage - Manages block storage volumes on Vultr.
|
||||
- vultr_block_storage_facts - Gather facts about the Vultr block storage volumes available.
|
||||
- vultr_dns_domain_facts - Gather facts about the Vultr DNS domains available.
|
||||
- vultr_firewall_group_facts - Gather facts about the Vultr firewall groups available.
|
||||
- vultr_network - Manages networks on Vultr.
|
||||
- vultr_network_facts - Gather facts about the Vultr networks available.
|
||||
- vultr_os_facts - Gather facts about the Vultr OSes available.
|
||||
- vultr_plan_facts - Gather facts about the Vultr plans available.
|
||||
- vultr_region_facts - Gather facts about the Vultr regions available.
|
||||
- vultr_server_facts - Gather facts about the Vultr servers available.
|
||||
- vultr_ssh_key_facts - Gather facts about the Vultr SSH keys available.
|
||||
- vultr_startup_script_facts - Gather facts about the Vultr startup scripts available.
|
||||
- vultr_user_facts - Gather facts about the Vultr user available.
|
||||
|
||||
Clustering
|
||||
~~~~~~~~~~
|
||||
|
||||
k8s
|
||||
^^^
|
||||
|
||||
- k8s_facts - Describe Kubernetes (K8s) objects
|
||||
|
||||
Crypto
|
||||
~~~~~~
|
||||
|
||||
- certificate_complete_chain - Complete certificate chain given a set of untrusted and root certificates
|
||||
- openssl_pkcs12 - Generate OpenSSL PKCS#12 archive.
|
||||
|
||||
acme
|
||||
^^^^
|
||||
|
||||
- acme_account_facts - Retrieves information on ACME accounts
|
||||
- acme_certificate_revoke - Revoke certificates with the ACME protocol
|
||||
- acme_challenge_cert_helper - Prepare certificates required for ACME challenges such as C(tls-alpn-01)
|
||||
|
||||
Identity
|
||||
~~~~~~~~
|
||||
|
||||
ipa
|
||||
^^^
|
||||
|
||||
- ipa_config - Manage Global FreeIPA Configuration Settings
|
||||
- ipa_vault - Manage FreeIPA vaults
|
||||
|
||||
Monitoring
|
||||
~~~~~~~~~~
|
||||
|
||||
zabbix
|
||||
^^^^^^
|
||||
|
||||
- zabbix_host_facts - Gather facts about Zabbix host
|
||||
|
||||
Net Tools
|
||||
~~~~~~~~~
|
||||
|
||||
- netcup_dns - manage Netcup DNS records
|
||||
|
||||
nios
|
||||
^^^^
|
||||
|
||||
- nios_a_record - Configure Infoblox NIOS A records
|
||||
- nios_cname_record - Configure Infoblox NIOS CNAME records
|
||||
- nios_mx_record - Configure Infoblox NIOS MX records
|
||||
- nios_naptr_record - Configure Infoblox NIOS NAPTR records
|
||||
- nios_ptr_record - Configure Infoblox NIOS PTR records
|
||||
- nios_srv_record - Configure Infoblox NIOS SRV records
|
||||
- nios_txt_record - Configure Infoblox NIOS txt records
|
||||
|
||||
Network
|
||||
~~~~~~~
|
||||
|
||||
aci
|
||||
^^^
|
||||
|
||||
- aci_interface_policy_ospf - Manage OSPF interface policies (ospf:IfPol)
|
||||
|
||||
cli
|
||||
^^^
|
||||
|
||||
- cli_command - Run a cli command on cli-based network devices
|
||||
- cli_config - Push text based configuration to network devices over network_cli
|
||||
|
||||
exos
|
||||
^^^^
|
||||
|
||||
- exos_config - Manage Extreme Networks EXOS configuration sections
|
||||
- exos_facts - Collect facts from devices running Extreme EXOS
|
||||
|
||||
f5
|
||||
^^
|
||||
|
||||
- bigip_appsvcs_extension - Manage application service deployments
|
||||
- bigip_cli_alias - Manage CLI aliases on a BIG-IP
|
||||
- bigip_cli_script - Manage CLI scripts on a BIG-IP
|
||||
- bigip_device_auth - Manage system authentication on a BIG-IP
|
||||
- bigip_device_facts - Collect facts from F5 BIG-IP devices
|
||||
- bigip_firewall_dos_profile - Manage AFM DoS profiles on a BIG-IP
|
||||
- bigip_firewall_policy - Manage AFM security firewall policies on a BIG-IP
|
||||
- bigip_firewall_rule - Manage AFM Firewall rules
|
||||
- bigip_firewall_rule_list - Manage AFM security firewall policies on a BIG-IP
|
||||
- bigip_monitor_dns - Manage DNS monitors on a BIG-IP
|
||||
- bigip_profile_http - Manage HTTP profiles on a BIG-IP
|
||||
- bigip_profile_http_compression - Manage HTTP compression profiles on a BIG-IP
|
||||
- bigip_profile_oneconnect - Manage OneConnect profiles on a BIG-IP
|
||||
- bigip_profile_persistence_src_addr - Manage source address persistence profiles
|
||||
- bigip_remote_role - Manage remote roles on a BIG-IP
|
||||
- bigip_software_image - Manage software images on a BIG-IP
|
||||
- bigip_software_install - Install software images on a BIG-IP
|
||||
- bigip_tunnel - Manage tunnels on a BIG-IP
|
||||
- bigiq_utility_license_assignment - Manage utility license assignment on BIG-IPs from a BIG-IQ
|
||||
|
||||
meraki
|
||||
^^^^^^
|
||||
|
||||
- meraki_config_template - Manage configuration templates in the Meraki cloud
|
||||
- meraki_device - Manage devices in the Meraki cloud
|
||||
- meraki_mr_l3_firewall - Manage MR access point layer 3 firewalls in the Meraki cloud
|
||||
- meraki_mx_l3_firewall - Manage MX appliance layer 3 firewalls in the Meraki cloud
|
||||
- meraki_ssid - Manage wireless SSIDs in the Meraki cloud
|
||||
- meraki_switchport - Manage switchports on a switch in the Meraki cloud
|
||||
- meraki_vlan - Manage VLANs in the Meraki cloud
|
||||
|
||||
nos
|
||||
^^^
|
||||
|
||||
- nos_command - Run commands on remote devices running Extreme Networks NOS
|
||||
- nos_config - Manage Extreme Networks NOS configuration sections
|
||||
- nos_facts - Collect facts from devices running Extreme NOS
|
||||
|
||||
nxos
|
||||
^^^^
|
||||
|
||||
- nxos_rpm - Install patch or feature rpms on Cisco NX-OS devices.
|
||||
|
||||
onyx
|
||||
^^^^
|
||||
|
||||
- onyx_igmp - Configures IGMP globl parameters
|
||||
|
||||
panos
|
||||
^^^^^
|
||||
|
||||
- panos_set - Execute arbitrary commands on a PAN-OS device using XPath and element
|
||||
|
||||
routeros
|
||||
^^^^^^^^
|
||||
|
||||
- routeros_command - Run commands on remote devices running MikroTik RouterOS
|
||||
|
||||
slxos
|
||||
^^^^^
|
||||
|
||||
- slxos_lldp - Manage LLDP configuration on Extreme Networks SLX-OS network devices.
|
||||
|
||||
voss
|
||||
^^^^
|
||||
|
||||
- voss_command - Run commands on remote devices running Extreme VOSS
|
||||
- voss_facts - Collect facts from remote devices running Extreme VOSS
|
||||
|
||||
Remote Management
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
cobbler
|
||||
^^^^^^^
|
||||
|
||||
- cobbler_sync - Sync Cobbler
|
||||
- cobbler_system - Manage system objects in Cobbler
|
||||
|
||||
redfish
|
||||
^^^^^^^
|
||||
|
||||
- redfish_facts - Manages Out-Of-Band controllers using Redfish APIs
|
||||
|
||||
ucs
|
||||
^^^
|
||||
|
||||
- ucs_ntp_server - Configures NTP server on Cisco UCS Manager
|
||||
- ucs_storage_profile - Configures storage profiles on Cisco UCS Manager
|
||||
- ucs_timezone - Configures timezone on Cisco UCS Manager
|
||||
- ucs_uuid_pool - Configures server UUID pools on Cisco UCS Manager
|
||||
|
||||
Storage
|
||||
~~~~~~~
|
||||
|
||||
emc
|
||||
^^^
|
||||
|
||||
- emc_vnx_sg_member - Manage storage group member on EMC VNX
|
||||
|
||||
ibm
|
||||
^^^
|
||||
|
||||
- ibm_sa_vol - Handle volumes on an IBM Spectrum Accelerate storage array
|
||||
|
||||
netapp
|
||||
^^^^^^
|
||||
|
||||
- na_elementsw_backup - NetApp Element Software Create Backups
|
||||
- na_elementsw_cluster_pair - NetApp Element Software Manage Cluster Pair
|
||||
- na_elementsw_snapshot_schedule - NetApp Element Software Snapshot Schedules
|
||||
- na_elementsw_vlan - NetApp Element Software Manage VLAN
|
||||
- na_elementsw_volume - NetApp Element Software Manage Volumes
|
||||
- na_elementsw_volume_pair - NetApp Element Software Volume Pair
|
||||
- na_ontap_cg_snapshot - Create consistency group snapshot
|
||||
- na_ontap_dns - NetApp ONTAP Create, delete, modify DNS servers.
|
||||
- na_ontap_fcp - NetApp ONTAP Start, Stop and Enable FCP services.
|
||||
- na_ontap_snapmirror - NetApp ONTAP Manage SnapMirror
|
||||
- na_ontap_software_update - NetApp ONTAP Update software
|
||||
- na_ontap_svm_options - NetApp ONTAP Modify Options
|
||||
- na_ontap_vserver_peer - Manage NetApp Vserver peering
|
||||
|
||||
System
|
||||
~~~~~~
|
||||
|
||||
- java_keystore - Create or delete a Java keystore in JKS format.
|
||||
- python_requirements_facts - Show python path and assert dependency versions
|
||||
- reboot - Reboot a machine
|
||||
|
||||
Web Infrastructure
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
ansible_tower
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
- tower_inventory_source - create, update, or destroy Ansible Tower inventory source.
|
||||
|
||||
Windows
|
||||
~~~~~~~
|
||||
|
||||
- win_chocolatey_config - Manages Chocolatey config settings
|
||||
- win_chocolatey_feature - Manages Chocolatey features
|
||||
- win_chocolatey_source - Manages Chocolatey sources
|
||||
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,22 +1,13 @@
|
||||
---
|
||||
title: ansible-core
|
||||
release_tag_re: '(v(?:[\d.ab\-]|rc)+)'
|
||||
pre_release_tag_re: '(?P<pre_release>(?:[ab]|rc)+\d*)$'
|
||||
changes_file: changelog.yaml
|
||||
changes_format: combined
|
||||
keep_fragments: true
|
||||
always_refresh: true
|
||||
ignore_other_fragment_extensions: true
|
||||
mention_ancestor: false
|
||||
notesdir: fragments
|
||||
prelude_section_name: release_summary
|
||||
new_plugins_after_name: removed_features
|
||||
sections:
|
||||
- ['major_changes', 'Major Changes']
|
||||
- ['minor_changes', 'Minor Changes']
|
||||
- ['breaking_changes', 'Breaking Changes / Porting Guide']
|
||||
- ['deprecated_features', 'Deprecated Features']
|
||||
- ['removed_features', 'Removed Features (previously deprecated)']
|
||||
- ['security_fixes', 'Security Fixes']
|
||||
- ['bugfixes', 'Bugfixes']
|
||||
- ['known_issues', 'Known Issues']
|
||||
|
||||
5
changelogs/fragments/16748-docker_container-memory.yaml
Normal file
5
changelogs/fragments/16748-docker_container-memory.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
bugfixes:
|
||||
- "docker_container: makes unit parsing for memory sizes more consistent, and
|
||||
fixes idempotency problem when ``kernel_memory`` is set (see
|
||||
https://github.com/ansible/ansible/pull/16748 and
|
||||
https://github.com/ansible/ansible/issues/42692)"
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- ansible_facts.hardware - Define all processor facts on s390x (https://github.com/ansible/ansible/issues/19755)
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-05-15
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-04-04
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-04-10
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-04-17
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-04-25
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-05-01
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-03-25
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-03-18
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-04-22
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-04-16
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-05-20
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-05-13
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-11-04
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2024-10-29
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-06-20
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-06-12
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-07-18
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-07-10
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-08-14
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-08-07
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-09-11
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-09-05
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-10-09
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-10-03
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-11-06
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-10-30
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
@ -1,3 +0,0 @@
|
||||
release_summary: |
|
||||
| Release Date: 2023-12-04
|
||||
| `Porting Guide <https://docs.ansible.com/ansible-core/2.15/porting_guides/porting_guide_core_2.15.html>`__
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user