mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-04-29 01:46:53 +00:00
Compare commits
226 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
743591cedc | ||
|
|
412a348738 | ||
|
|
020fcb251f | ||
|
|
1ea0904e69 | ||
|
|
90aa3ec24d | ||
|
|
2b64eb69be | ||
|
|
9233243c13 | ||
|
|
6407d59323 | ||
|
|
25b09239f6 | ||
|
|
524aa8bab4 | ||
|
|
09bea0031d | ||
|
|
be4cf3ba4d | ||
|
|
03da9164d1 | ||
|
|
d99b778fa1 | ||
|
|
fa179e6d0c | ||
|
|
dc79f4a170 | ||
|
|
748882dfa8 | ||
|
|
6458abb9c1 | ||
|
|
09201bf49e | ||
|
|
973b5be063 | ||
|
|
449a179d8f | ||
|
|
27ca6be10a | ||
|
|
3867300eca | ||
|
|
ae05131a54 | ||
|
|
f67003cf3a | ||
|
|
2bd64a891c | ||
|
|
6e226f4588 | ||
|
|
d82bf01128 | ||
|
|
2873d439c3 | ||
|
|
956fc075ef | ||
|
|
7b82e694a2 | ||
|
|
119623952d | ||
|
|
644d362228 | ||
|
|
8def5bf46e | ||
|
|
057fd16cc0 | ||
|
|
3a56f19656 | ||
|
|
729eb996e8 | ||
|
|
3e721f9572 | ||
|
|
4d30704615 | ||
|
|
308a5d7e06 | ||
|
|
f78a44c6a3 | ||
|
|
1b4e58bbbf | ||
|
|
705ffc564d | ||
|
|
86dc3c8816 | ||
|
|
1b1746896d | ||
|
|
32c4bbea30 | ||
|
|
e278490fe7 | ||
|
|
d01187d03b | ||
|
|
3ef5b36066 | ||
|
|
150f63b36b | ||
|
|
582807ea3a | ||
|
|
bdcd10ca2c | ||
|
|
42e88c56b6 | ||
|
|
d858cfa8a8 | ||
|
|
15d5670065 | ||
|
|
e5f55149c6 | ||
|
|
50d22c9f70 | ||
|
|
671ce86565 | ||
|
|
0fc99ae2d8 | ||
|
|
dfa9f77b7a | ||
|
|
cfa712f30e | ||
|
|
c65a675a52 | ||
|
|
e757ff30b3 | ||
|
|
d74e553f4b | ||
|
|
d5a759b2e3 | ||
|
|
c8f2219fb0 | ||
|
|
8fe227d456 | ||
|
|
59fe80ef94 | ||
|
|
d9a2fa9bd9 | ||
|
|
a046ae812e | ||
|
|
953d70611b | ||
|
|
04367d8b9c | ||
|
|
e5f9516335 | ||
|
|
b4f09831b0 | ||
|
|
5f5043d4b8 | ||
|
|
ea465e21c3 | ||
|
|
f00f70f849 | ||
|
|
6020893160 | ||
|
|
1eecf281bc | ||
|
|
fa9ac2b3a9 | ||
|
|
f77d731faf | ||
|
|
56bcb0c32b | ||
|
|
83aa142331 | ||
|
|
cac85a5480 | ||
|
|
3bca7e1ad4 | ||
|
|
b41916285e | ||
|
|
1df4b3ee74 | ||
|
|
ae089aefad | ||
|
|
f92fedcfa0 | ||
|
|
9d269ee8ca | ||
|
|
66d394dc81 | ||
|
|
de180d01e0 | ||
|
|
1a1056099c | ||
|
|
300f525ff9 | ||
|
|
03a639e809 | ||
|
|
f739035d1f | ||
|
|
17e02f87c9 | ||
|
|
becbd2d80f | ||
|
|
aa352ccf45 | ||
|
|
e5b01dfc01 | ||
|
|
a5d830bbf4 | ||
|
|
02b25fb096 | ||
|
|
555d7b9038 | ||
|
|
4dfe6816a8 | ||
|
|
a12ac59223 | ||
|
|
9d7097ef4d | ||
|
|
8e4581c0e6 | ||
|
|
28b50a1e45 | ||
|
|
414f0541a5 | ||
|
|
c4da6e4202 | ||
|
|
05f3052937 | ||
|
|
919d27676c | ||
|
|
a425d16e7c | ||
|
|
12808f67d5 | ||
|
|
268b31b53d | ||
|
|
fa682e8b40 | ||
|
|
0f7d508344 | ||
|
|
ac771079db | ||
|
|
96852b7032 | ||
|
|
08bb917d59 | ||
|
|
e7e9cf97e5 | ||
|
|
deb9d63783 | ||
|
|
a882022280 | ||
|
|
f06bcabeed | ||
|
|
19462b72ca | ||
|
|
a8bd4c750b | ||
|
|
000b92a425 | ||
|
|
7784fbdf17 | ||
|
|
292bb400eb | ||
|
|
c6ddff0dad | ||
|
|
86616b1559 | ||
|
|
99ebbbdf49 | ||
|
|
c853dfb1a8 | ||
|
|
79d8c9bd6e | ||
|
|
e631648ef6 | ||
|
|
5106aa8065 | ||
|
|
25e35bdda7 | ||
|
|
74bc10b8fc | ||
|
|
7415220cad | ||
|
|
7f8bc6f99d | ||
|
|
b5846a3d05 | ||
|
|
25c475a7ef | ||
|
|
b3782a76e0 | ||
|
|
fc5de1a194 | ||
|
|
80184b6fd4 | ||
|
|
be7dc5f37d | ||
|
|
fc7bcccc9d | ||
|
|
5cb4632c15 | ||
|
|
eae5987be1 | ||
|
|
d45044790a | ||
|
|
434f7ce55b | ||
|
|
f88b8c85d7 | ||
|
|
6385fbe038 | ||
|
|
4b6cd41512 | ||
|
|
8c429ac69d | ||
|
|
30eb35cb95 | ||
|
|
33f3e7172b | ||
|
|
c2751dd6f5 | ||
|
|
d3dd685ad4 | ||
|
|
696b6e737a | ||
|
|
45d16053ee | ||
|
|
1d4fd21702 | ||
|
|
bfcdeeab91 | ||
|
|
5dcb3b8f59 | ||
|
|
42c20a754b | ||
|
|
75b6b4d792 | ||
|
|
a0c4308bed | ||
|
|
6437fe15c8 | ||
|
|
baddfa5a80 | ||
|
|
b7d1483a08 | ||
|
|
b87121e1eb | ||
|
|
cb17703c36 | ||
|
|
05d457dca7 | ||
|
|
7fce59fbc6 | ||
|
|
de6967d3ff | ||
|
|
bbb9b03b5e | ||
|
|
a0d6487f6d | ||
|
|
88bfb6dda3 | ||
|
|
d637db7623 | ||
|
|
2198588afa | ||
|
|
9d6db6002c | ||
|
|
dd9c86dfc0 | ||
|
|
a266ba1d6e | ||
|
|
4167d8ebeb | ||
|
|
e9064bbf97 | ||
|
|
79a5e6745b | ||
|
|
b5d57a35d6 | ||
|
|
44dfe9e1ab | ||
|
|
4d05149b6c | ||
|
|
31bab91c31 | ||
|
|
ccdf82f163 | ||
|
|
1670f8693a | ||
|
|
d58777ff5e | ||
|
|
68f2433577 | ||
|
|
0f6dfd1ebb | ||
|
|
43f0152969 | ||
|
|
68bd8babf7 | ||
|
|
ca805badc0 | ||
|
|
5b571fd53f | ||
|
|
68b2385efd | ||
|
|
b5c965939f | ||
|
|
136c7debe3 | ||
|
|
5d16a88298 | ||
|
|
02ed21b2a6 | ||
|
|
b769b0bc01 | ||
|
|
ebaf2e71d5 | ||
|
|
e3535de323 | ||
|
|
6169699b24 | ||
|
|
e714d15891 | ||
|
|
dda90768f5 | ||
|
|
cd548f779a | ||
|
|
c1ba162ec0 | ||
|
|
2d99eb92de | ||
|
|
e0bd7e334e | ||
|
|
1d09a36e0f | ||
|
|
bb6d5fb735 | ||
|
|
8242f6fa46 | ||
|
|
88eee5fbb4 | ||
|
|
5945c56b4c | ||
|
|
4514e271af | ||
|
|
f49c5f79a7 | ||
|
|
2d07481e64 | ||
|
|
41f815be57 | ||
|
|
8d4e702d89 | ||
|
|
303bac630a | ||
|
|
213dc22217 |
@@ -29,6 +29,7 @@ schedules:
|
||||
always: true
|
||||
branches:
|
||||
include:
|
||||
- stable-12
|
||||
- stable-11
|
||||
- cron: 0 11 * * 0
|
||||
displayName: Weekly (old stable branches)
|
||||
@@ -69,6 +70,19 @@ stages:
|
||||
- test: 2
|
||||
- test: 3
|
||||
- test: 4
|
||||
- stage: Sanity_2_21
|
||||
displayName: Sanity 2.21
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Test {0}
|
||||
testFormat: 2.21/sanity/{0}
|
||||
targets:
|
||||
- test: 1
|
||||
- test: 2
|
||||
- test: 3
|
||||
- test: 4
|
||||
- stage: Sanity_2_20
|
||||
displayName: Sanity 2.20
|
||||
dependsOn: []
|
||||
@@ -95,19 +109,6 @@ stages:
|
||||
- test: 2
|
||||
- test: 3
|
||||
- test: 4
|
||||
- stage: Sanity_2_18
|
||||
displayName: Sanity 2.18
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Test {0}
|
||||
testFormat: 2.18/sanity/{0}
|
||||
targets:
|
||||
- test: 1
|
||||
- test: 2
|
||||
- test: 3
|
||||
- test: 4
|
||||
### Units
|
||||
- stage: Units_devel
|
||||
displayName: Units devel
|
||||
@@ -124,6 +125,19 @@ stages:
|
||||
- test: '3.12'
|
||||
- test: '3.13'
|
||||
- test: '3.14'
|
||||
- test: '3.15'
|
||||
- stage: Units_2_21
|
||||
displayName: Units 2.21
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Python {0}
|
||||
testFormat: 2.21/units/{0}/1
|
||||
targets:
|
||||
- test: 3.9
|
||||
- test: "3.12"
|
||||
- test: "3.14"
|
||||
- stage: Units_2_20
|
||||
displayName: Units 2.20
|
||||
dependsOn: []
|
||||
@@ -148,18 +162,6 @@ stages:
|
||||
- test: 3.8
|
||||
- test: "3.11"
|
||||
- test: "3.13"
|
||||
- stage: Units_2_18
|
||||
displayName: Units 2.18
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Python {0}
|
||||
testFormat: 2.18/units/{0}/1
|
||||
targets:
|
||||
- test: 3.8
|
||||
- test: "3.11"
|
||||
- test: "3.13"
|
||||
|
||||
## Remote
|
||||
- stage: Remote_devel_extra_vms
|
||||
@@ -170,10 +172,10 @@ stages:
|
||||
parameters:
|
||||
testFormat: devel/{0}
|
||||
targets:
|
||||
- name: Alpine 3.22
|
||||
test: alpine/3.22
|
||||
# - name: Fedora 42
|
||||
# test: fedora/42
|
||||
- name: Alpine 3.23
|
||||
test: alpine/3.23
|
||||
# - name: Fedora 44
|
||||
# test: fedora/44
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu/22.04
|
||||
- name: Ubuntu 24.04
|
||||
@@ -188,16 +190,36 @@ stages:
|
||||
parameters:
|
||||
testFormat: devel/{0}
|
||||
targets:
|
||||
- name: macOS 15.3
|
||||
test: macos/15.3
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: RHEL 9.6
|
||||
test: rhel/9.6
|
||||
- name: FreeBSD 14.3
|
||||
test: freebsd/14.3
|
||||
- name: FreeBSD 13.5
|
||||
test: freebsd/13.5
|
||||
- name: macOS 26.3
|
||||
test: macos/26.3
|
||||
- name: RHEL 10.1
|
||||
test: rhel/10.1
|
||||
- name: RHEL 9.7
|
||||
test: rhel/9.7
|
||||
# TODO: enable this ASAP!
|
||||
# - name: FreeBSD 15.0
|
||||
# test: freebsd/15.0
|
||||
# TODO: enable this ASAP!
|
||||
# - name: FreeBSD 14.4
|
||||
# test: freebsd/14.4
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- stage: Remote_2_21
|
||||
displayName: Remote 2.21
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: 2.21/{0}
|
||||
targets:
|
||||
# - name: macOS 26.3
|
||||
# test: macos/26.3
|
||||
- name: RHEL 10.1
|
||||
test: rhel/10.1
|
||||
# - name: RHEL 9.7
|
||||
# test: rhel/9.7
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
@@ -210,8 +232,10 @@ stages:
|
||||
parameters:
|
||||
testFormat: 2.20/{0}
|
||||
targets:
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: macOS 15.3
|
||||
test: macos/15.3
|
||||
- name: RHEL 10.1
|
||||
test: rhel/10.1
|
||||
- name: FreeBSD 14.3
|
||||
test: freebsd/14.3
|
||||
groups:
|
||||
@@ -226,34 +250,14 @@ stages:
|
||||
parameters:
|
||||
testFormat: 2.19/{0}
|
||||
targets:
|
||||
- name: RHEL 9.5
|
||||
test: rhel/9.5
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: RHEL 10.1
|
||||
test: rhel/10.1
|
||||
- name: FreeBSD 14.2
|
||||
test: freebsd/14.2
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- stage: Remote_2_18
|
||||
displayName: Remote 2.18
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: 2.18/{0}
|
||||
targets:
|
||||
- name: macOS 14.3
|
||||
test: macos/14.3
|
||||
- name: RHEL 9.4
|
||||
test: rhel/9.4
|
||||
- name: FreeBSD 14.1
|
||||
test: freebsd/14.1
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
|
||||
### Docker
|
||||
- stage: Docker_devel
|
||||
@@ -264,10 +268,10 @@ stages:
|
||||
parameters:
|
||||
testFormat: devel/linux/{0}
|
||||
targets:
|
||||
- name: Fedora 42
|
||||
test: fedora42
|
||||
- name: Alpine 3.22
|
||||
test: alpine322
|
||||
- name: Fedora 44
|
||||
test: fedora44
|
||||
- name: Alpine 3.23
|
||||
test: alpine323
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu2204
|
||||
- name: Ubuntu 24.04
|
||||
@@ -276,6 +280,26 @@ stages:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- stage: Docker_2_21
|
||||
displayName: Docker 2.21
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: 2.21/linux/{0}
|
||||
targets:
|
||||
- name: Fedora 43
|
||||
test: fedora43
|
||||
# - name: Alpine 3.23
|
||||
# test: alpine323
|
||||
# - name: Ubuntu 22.04
|
||||
# test: ubuntu2204
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu2404
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- stage: Docker_2_20
|
||||
displayName: Docker 2.20
|
||||
dependsOn: []
|
||||
@@ -308,24 +332,6 @@ stages:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- stage: Docker_2_18
|
||||
displayName: Docker 2.18
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: 2.18/linux/{0}
|
||||
targets:
|
||||
- name: Fedora 40
|
||||
test: fedora40
|
||||
- name: Alpine 3.20
|
||||
test: alpine320
|
||||
- name: Ubuntu 24.04
|
||||
test: ubuntu2404
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
|
||||
### Community Docker
|
||||
- stage: Docker_community_devel
|
||||
@@ -343,7 +349,7 @@ stages:
|
||||
- name: Debian 13 Trixie
|
||||
test: debian-13-trixie/3.13
|
||||
- name: ArchLinux
|
||||
test: archlinux/3.13
|
||||
test: archlinux/3.14
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
@@ -361,6 +367,18 @@ stages:
|
||||
# testFormat: devel/generic/{0}/1
|
||||
# targets:
|
||||
# - test: '3.9'
|
||||
# - test: '3.13'
|
||||
# - test: '3.15'
|
||||
# - stage: Generic_2_21
|
||||
# displayName: Generic 2.21
|
||||
# dependsOn: []
|
||||
# jobs:
|
||||
# - template: templates/matrix.yml
|
||||
# parameters:
|
||||
# nameFormat: Python {0}
|
||||
# testFormat: 2.21/generic/{0}/1
|
||||
# targets:
|
||||
# - test: '3.9'
|
||||
# - test: '3.12'
|
||||
# - test: '3.14'
|
||||
# - stage: Generic_2_20
|
||||
@@ -384,44 +402,33 @@ stages:
|
||||
# testFormat: 2.19/generic/{0}/1
|
||||
# targets:
|
||||
# - test: '3.9'
|
||||
# - test: '3.13'
|
||||
# - stage: Generic_2_18
|
||||
# displayName: Generic 2.18
|
||||
# dependsOn: []
|
||||
# jobs:
|
||||
# - template: templates/matrix.yml
|
||||
# parameters:
|
||||
# nameFormat: Python {0}
|
||||
# testFormat: 2.18/generic/{0}/1
|
||||
# targets:
|
||||
# - test: '3.8'
|
||||
# - test: '3.13'
|
||||
|
||||
- stage: Summary
|
||||
condition: succeededOrFailed()
|
||||
dependsOn:
|
||||
- Sanity_devel
|
||||
- Sanity_2_21
|
||||
- Sanity_2_20
|
||||
- Sanity_2_19
|
||||
- Sanity_2_18
|
||||
- Units_devel
|
||||
- Units_2_21
|
||||
- Units_2_20
|
||||
- Units_2_19
|
||||
- Units_2_18
|
||||
- Remote_devel_extra_vms
|
||||
- Remote_devel
|
||||
- Remote_2_21
|
||||
- Remote_2_20
|
||||
- Remote_2_19
|
||||
- Remote_2_18
|
||||
- Docker_devel
|
||||
- Docker_2_21
|
||||
- Docker_2_20
|
||||
- Docker_2_19
|
||||
- Docker_2_18
|
||||
- Docker_community_devel
|
||||
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
|
||||
# - Generic_devel
|
||||
# - Generic_2_21
|
||||
# - Generic_2_20
|
||||
# - Generic_2_19
|
||||
# - Generic_2_18
|
||||
jobs:
|
||||
- template: templates/coverage.yml
|
||||
|
||||
@@ -43,20 +43,20 @@ def main():
|
||||
jobs[label] = max(attempt, jobs.get(label, 0))
|
||||
|
||||
for label, attempt in jobs.items():
|
||||
name = "Coverage {attempt} {label}".format(label=label, attempt=attempt)
|
||||
name = f"Coverage {attempt} {label}"
|
||||
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))
|
||||
print(f'"{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)
|
||||
print(f"Coverage file count: {count}")
|
||||
print(f"##vso[task.setVariable variable=coverageFileCount]{count}")
|
||||
print(f"##vso[task.setVariable variable=outputPath]{output_path}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -15,7 +15,6 @@ import pathlib
|
||||
import shutil
|
||||
import subprocess
|
||||
import tempfile
|
||||
import typing as t
|
||||
import urllib.request
|
||||
|
||||
|
||||
@@ -23,7 +22,7 @@ import urllib.request
|
||||
class CoverageFile:
|
||||
name: str
|
||||
path: pathlib.Path
|
||||
flags: t.List[str]
|
||||
flags: list[str]
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
@@ -46,7 +45,7 @@ def parse_args() -> Args:
|
||||
return Args(**kwargs)
|
||||
|
||||
|
||||
def process_files(directory: pathlib.Path) -> t.Tuple[CoverageFile, ...]:
|
||||
def process_files(directory: pathlib.Path) -> tuple[CoverageFile, ...]:
|
||||
processed = []
|
||||
for file in directory.joinpath("reports").glob("coverage*.xml"):
|
||||
name = file.stem.replace("coverage=", "")
|
||||
@@ -62,7 +61,7 @@ def process_files(directory: pathlib.Path) -> t.Tuple[CoverageFile, ...]:
|
||||
return tuple(processed)
|
||||
|
||||
|
||||
def upload_files(codecov_bin: pathlib.Path, files: t.Tuple[CoverageFile, ...], dry_run: bool = False) -> None:
|
||||
def upload_files(codecov_bin: pathlib.Path, files: tuple[CoverageFile, ...], dry_run: bool = False) -> None:
|
||||
for file in files:
|
||||
cmd = [
|
||||
str(codecov_bin),
|
||||
|
||||
@@ -19,8 +19,8 @@ def main():
|
||||
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))
|
||||
seconds = int(time.time() - start)
|
||||
sys.stdout.write(f"{seconds // 60:02}:{seconds % 60:02} {line}")
|
||||
sys.stdout.flush()
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"ms-python.vscode-pylance",
|
||||
"redhat.ansible",
|
||||
"redhat.vscode-yaml",
|
||||
"trond-snekvik.simple-rst",
|
||||
"trond-snekvik.simple-rst"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
set -x
|
||||
sudo chown -R vscode:vscode /workspace/
|
||||
|
||||
pip install -U pip
|
||||
|
||||
@@ -11,3 +11,5 @@ eaa5e07b2866e05b6c7b5628ca92e9cb1142d008
|
||||
# Code reformatting
|
||||
340ff8586d4f1cb6a0f3c934eb42589bcc29c0ea
|
||||
e530d2906a1f61df89861286ac57c951a247f32c
|
||||
b769b0bc01520d12699d3911e1fc290b813cde40
|
||||
dd9c86dfc094131f223ffb59e5a3d9f2dfc5875d
|
||||
|
||||
91
.github/BOTMETA.yml
vendored
91
.github/BOTMETA.yml
vendored
@@ -65,6 +65,9 @@ files:
|
||||
$callbacks/log_plays.py: {}
|
||||
$callbacks/loganalytics.py:
|
||||
maintainers: zhcli
|
||||
$callbacks/loganalytics_ingestion.py:
|
||||
ignore: zhcli
|
||||
maintainers: pboushy vsh47 wtcline-intc
|
||||
$callbacks/logdna.py: {}
|
||||
$callbacks/logentries.py: {}
|
||||
$callbacks/logstash.py:
|
||||
@@ -133,6 +136,8 @@ files:
|
||||
$doc_fragments/hwc.py:
|
||||
labels: hwc
|
||||
maintainers: $team_huawei
|
||||
$doc_fragments/_icinga2_api.py:
|
||||
maintainers: cfiehe
|
||||
$doc_fragments/nomad.py:
|
||||
maintainers: chris93111 apecnascimento
|
||||
$doc_fragments/pipx.py:
|
||||
@@ -216,6 +221,10 @@ files:
|
||||
maintainers: resmo
|
||||
$filters/to_time_unit.yml:
|
||||
maintainers: resmo
|
||||
$filters/to_toml.py:
|
||||
maintainers: milliams
|
||||
$filters/to_toml.yml:
|
||||
maintainers: milliams
|
||||
$filters/to_weeks.yml:
|
||||
maintainers: resmo
|
||||
$filters/to_yaml.py:
|
||||
@@ -303,7 +312,7 @@ files:
|
||||
$lookups/lmdb_kv.py:
|
||||
maintainers: jpmens
|
||||
$lookups/merge_variables.py:
|
||||
maintainers: rlenferink m-a-r-k-e alpex8
|
||||
maintainers: rlenferink m-a-r-k-e alpex8 cfiehe
|
||||
$lookups/onepass:
|
||||
labels: onepassword
|
||||
maintainers: samdoran
|
||||
@@ -358,6 +367,8 @@ files:
|
||||
keywords: cloud huawei hwc
|
||||
labels: huawei hwc_utils networking
|
||||
maintainers: $team_huawei
|
||||
$module_utils/_icinga2.py:
|
||||
maintainers: cfiehe
|
||||
$module_utils/identity/keycloak/keycloak.py:
|
||||
maintainers: $team_keycloak
|
||||
$module_utils/identity/keycloak/keycloak_clientsecret.py:
|
||||
@@ -368,8 +379,13 @@ files:
|
||||
$module_utils/jenkins.py:
|
||||
labels: jenkins
|
||||
maintainers: russoz
|
||||
$module_utils/_crypt.py:
|
||||
maintainers: russoz
|
||||
$module_utils/_lxc.py:
|
||||
maintainers: russoz
|
||||
$module_utils/_lvm.py:
|
||||
labels: lvm
|
||||
maintainers: russoz
|
||||
$module_utils/manageiq.py:
|
||||
labels: manageiq
|
||||
maintainers: $team_manageiq
|
||||
@@ -631,6 +647,10 @@ files:
|
||||
maintainers: adrianmoisey
|
||||
$modules/github_repo.py:
|
||||
maintainers: atorrescogollo
|
||||
$modules/github_secrets.py:
|
||||
maintainers: konstruktoid
|
||||
$modules/github_secrets_info.py:
|
||||
maintainers: konstruktoid
|
||||
$modules/gitlab_:
|
||||
keywords: gitlab source_control
|
||||
maintainers: $team_gitlab
|
||||
@@ -646,10 +666,10 @@ files:
|
||||
maintainers: zvaraondrej
|
||||
$modules/gitlab_milestone.py:
|
||||
maintainers: gpongelli
|
||||
$modules/gitlab_project_variable.py:
|
||||
maintainers: markuman
|
||||
$modules/gitlab_instance_variable.py:
|
||||
maintainers: benibr
|
||||
$modules/gitlab_project_variable.py:
|
||||
maintainers: markuman
|
||||
$modules/gitlab_runner.py:
|
||||
maintainers: SamyCoenen
|
||||
$modules/gitlab_user.py:
|
||||
@@ -709,6 +729,8 @@ files:
|
||||
maintainers: $team_huawei huaweicloud
|
||||
$modules/ibm_sa_:
|
||||
maintainers: tzure
|
||||
$modules/icinga2_downtime.py:
|
||||
maintainers: cfiehe
|
||||
$modules/icinga2_feature.py:
|
||||
maintainers: nerzhul
|
||||
$modules/icinga2_host.py:
|
||||
@@ -756,14 +778,14 @@ files:
|
||||
maintainers: abakanovskii
|
||||
$modules/ipa_dnsrecord.py:
|
||||
maintainers: $team_ipa jwbernin
|
||||
$modules/ipbase_info.py:
|
||||
maintainers: dominikkukacka
|
||||
$modules/ipa_pwpolicy.py:
|
||||
maintainers: adralioh
|
||||
$modules/ipa_service.py:
|
||||
maintainers: cprh
|
||||
$modules/ipa_vault.py:
|
||||
maintainers: jparrill
|
||||
$modules/ipbase_info.py:
|
||||
maintainers: dominikkukacka
|
||||
$modules/ipify_facts.py:
|
||||
maintainers: resmo
|
||||
$modules/ipinfoio_facts.py:
|
||||
@@ -823,16 +845,22 @@ files:
|
||||
maintainers: elfelip Gaetan2907
|
||||
$modules/keycloak_authentication_required_actions.py:
|
||||
maintainers: Skrekulko
|
||||
$modules/keycloak_authentication_v2.py:
|
||||
maintainers: thomasbargetz
|
||||
$modules/keycloak_authz_authorization_scope.py:
|
||||
maintainers: mattock
|
||||
$modules/keycloak_authz_permission.py:
|
||||
maintainers: mattock
|
||||
$modules/keycloak_authz_custom_policy.py:
|
||||
maintainers: mattock
|
||||
$modules/keycloak_authz_permission.py:
|
||||
maintainers: mattock
|
||||
$modules/keycloak_authz_permission_info.py:
|
||||
maintainers: mattock
|
||||
$modules/keycloak_client.py:
|
||||
maintainers: koke1997
|
||||
$modules/keycloak_client_rolemapping.py:
|
||||
maintainers: Gaetan2907
|
||||
$modules/keycloak_client_rolescope.py:
|
||||
maintainers: desand01
|
||||
$modules/keycloak_clientscope.py:
|
||||
maintainers: Gaetan2907
|
||||
$modules/keycloak_clientscope_type.py:
|
||||
@@ -843,6 +871,8 @@ files:
|
||||
maintainers: fynncfchen johncant
|
||||
$modules/keycloak_component.py:
|
||||
maintainers: fivetide
|
||||
$modules/keycloak_component_info.py:
|
||||
maintainers: desand01
|
||||
$modules/keycloak_group.py:
|
||||
maintainers: adamgoossens
|
||||
$modules/keycloak_identity_provider.py:
|
||||
@@ -852,25 +882,23 @@ files:
|
||||
$modules/keycloak_realm_info.py:
|
||||
maintainers: fynncfchen
|
||||
$modules/keycloak_realm_key.py:
|
||||
maintainers: mattock
|
||||
maintainers: mattock koke1997
|
||||
$modules/keycloak_realm_localization.py:
|
||||
maintainers: danekja
|
||||
$modules/keycloak_realm_rolemapping.py:
|
||||
maintainers: agross mhuysamen Gaetan2907
|
||||
$modules/keycloak_role.py:
|
||||
maintainers: laurpaum
|
||||
$modules/keycloak_user.py:
|
||||
maintainers: elfelip
|
||||
$modules/keycloak_user_federation.py:
|
||||
maintainers: laurpaum
|
||||
$modules/keycloak_userprofile.py:
|
||||
maintainers: yeoldegrove
|
||||
$modules/keycloak_component_info.py:
|
||||
maintainers: desand01
|
||||
$modules/keycloak_client_rolescope.py:
|
||||
maintainers: desand01
|
||||
$modules/keycloak_user_rolemapping.py:
|
||||
maintainers: bratwurzt
|
||||
$modules/keycloak_realm_rolemapping.py:
|
||||
maintainers: agross mhuysamen Gaetan2907
|
||||
$modules/keycloak_user_execute_actions_email.py:
|
||||
maintainers: mariusbertram
|
||||
$modules/keycloak_user_federation.py:
|
||||
maintainers: laurpaum
|
||||
$modules/keycloak_user_rolemapping.py:
|
||||
maintainers: bratwurzt koke1997
|
||||
$modules/keycloak_userprofile.py:
|
||||
maintainers: yeoldegrove
|
||||
$modules/keyring.py:
|
||||
maintainers: ahussey-redhat
|
||||
$modules/keyring_info.py:
|
||||
@@ -913,6 +941,8 @@ files:
|
||||
labels: logentries
|
||||
$modules/logentries_msg.py:
|
||||
maintainers: jcftang
|
||||
$modules/logrotate.py:
|
||||
maintainers: a-gabidullin
|
||||
$modules/logstash_plugin.py:
|
||||
maintainers: nerzhul
|
||||
$modules/lvg.py:
|
||||
@@ -1315,8 +1345,11 @@ files:
|
||||
$modules/snap_alias.py:
|
||||
labels: snap
|
||||
maintainers: russoz
|
||||
$modules/snap_connect.py:
|
||||
labels: snap
|
||||
maintainers: russoz
|
||||
$modules/snmp_facts.py:
|
||||
maintainers: ogenstad ujwalkomarla
|
||||
maintainers: ogenstad ujwalkomarla lalten
|
||||
$modules/solaris_zone.py:
|
||||
keywords: beadm dladm illumos ipadm nexenta omnios openindiana pfexec smartos solaris sunos zfs zpool
|
||||
labels: solaris
|
||||
@@ -1333,6 +1366,8 @@ files:
|
||||
maintainers: farhan7500 gautamphegde
|
||||
$modules/ssh_config.py:
|
||||
maintainers: gaqzi Akasurde
|
||||
$modules/sssd_info.py:
|
||||
maintainers: a-gabidullin
|
||||
$modules/stacki_host.py:
|
||||
labels: stacki_host
|
||||
maintainers: bsanders bbyhuy
|
||||
@@ -1489,23 +1524,23 @@ files:
|
||||
ignore: matze
|
||||
labels: zypper
|
||||
maintainers: $team_suse
|
||||
$plugin_utils/ansible_type.py:
|
||||
maintainers: vbotka
|
||||
$modules/zypper_repository_info.py:
|
||||
labels: zypper
|
||||
maintainers: $team_suse TobiasZeuch181
|
||||
$plugin_utils/ansible_type.py:
|
||||
maintainers: vbotka
|
||||
$plugin_utils/keys_filter.py:
|
||||
maintainers: vbotka
|
||||
$plugin_utils/unsafe.py:
|
||||
maintainers: felixfontein
|
||||
$plugin_utils/_tags.py:
|
||||
maintainers: felixfontein
|
||||
$tests/a_module.py:
|
||||
maintainers: felixfontein
|
||||
$tests/ansible_type.py:
|
||||
maintainers: vbotka
|
||||
$tests/fqdn_valid.py:
|
||||
maintainers: vbotka
|
||||
$modules/sssd_info.py:
|
||||
maintainers: a-gabidullin
|
||||
#########################
|
||||
docs/docsite/rst/filter_guide.rst: {}
|
||||
docs/docsite/rst/filter_guide_abstract_informations.rst: {}
|
||||
@@ -1545,6 +1580,8 @@ files:
|
||||
maintainers: russoz
|
||||
docs/docsite/rst/guide_deps.rst:
|
||||
maintainers: russoz
|
||||
docs/docsite/rst/guide_ee.rst:
|
||||
maintainers: russoz
|
||||
docs/docsite/rst/guide_iocage.rst:
|
||||
maintainers: russoz felixfontein
|
||||
docs/docsite/rst/guide_iocage_inventory.rst:
|
||||
@@ -1602,7 +1639,7 @@ macros:
|
||||
plugin_utils: plugins/plugin_utils
|
||||
tests: plugins/test
|
||||
team_ansible_core:
|
||||
team_aix: MorrisA bcoca d-little flynn1973 gforster kairoaraujo marvin-sinister mator molekuul ramooncamacho wtcross
|
||||
team_aix: MorrisA bcoca d-little flynn1973 gforster kairoaraujo marvin-sinister molekuul ramooncamacho wtcross
|
||||
team_bsd: JoergFiedler MacLemon bcoca dch jasperla mekanix opoplawski overhacked tuxillo
|
||||
team_consul: sgargan apollo13 Ilgmi
|
||||
team_cyberark_conjur: jvanderhoof ryanprior
|
||||
@@ -1623,7 +1660,7 @@ macros:
|
||||
team_redfish: mraineri tomasg2012 xmadsen renxulei rajeevkallur bhavya06 jyundt
|
||||
team_rhsm: cnsnyder ptoscano
|
||||
team_scaleway: remyleone abarbare
|
||||
team_solaris: bcoca fishman jasperla jpdasma mator scathatheworm troy2914 xen0l
|
||||
team_solaris: bcoca fishman jasperla jpdasma scathatheworm troy2914 xen0l
|
||||
team_suse: commel evrardjp lrupp AnderEnder alxgu andytom sealor
|
||||
team_virt: joshainglis karmab Thulium-Drake Ajpantuso
|
||||
team_wdc: mikemoerk
|
||||
|
||||
53
.github/workflows/ansible-test.yml
vendored
53
.github/workflows/ansible-test.yml
vendored
@@ -30,6 +30,7 @@ jobs:
|
||||
matrix:
|
||||
ansible:
|
||||
- '2.17'
|
||||
- '2.18'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Perform sanity testing
|
||||
@@ -63,6 +64,12 @@ jobs:
|
||||
python: '3.10'
|
||||
- ansible: '2.17'
|
||||
python: '3.12'
|
||||
- ansible: '2.18'
|
||||
python: '3.8'
|
||||
- ansible: '2.18'
|
||||
python: '3.11'
|
||||
- ansible: '2.18'
|
||||
python: '3.13'
|
||||
|
||||
steps:
|
||||
- name: >-
|
||||
@@ -144,6 +151,52 @@ jobs:
|
||||
# docker: default
|
||||
# python: '3.12'
|
||||
# target: azp/generic/1/
|
||||
# 2.18
|
||||
- ansible: '2.18'
|
||||
docker: fedora40
|
||||
python: ''
|
||||
target: azp/posix/1/
|
||||
- ansible: '2.18'
|
||||
docker: fedora40
|
||||
python: ''
|
||||
target: azp/posix/2/
|
||||
- ansible: '2.18'
|
||||
docker: fedora40
|
||||
python: ''
|
||||
target: azp/posix/3/
|
||||
- ansible: '2.18'
|
||||
docker: ubuntu2404
|
||||
python: ''
|
||||
target: azp/posix/1/
|
||||
- ansible: '2.18'
|
||||
docker: ubuntu2404
|
||||
python: ''
|
||||
target: azp/posix/2/
|
||||
- ansible: '2.18'
|
||||
docker: ubuntu2404
|
||||
python: ''
|
||||
target: azp/posix/3/
|
||||
- ansible: '2.18'
|
||||
docker: alpine320
|
||||
python: ''
|
||||
target: azp/posix/1/
|
||||
- ansible: '2.18'
|
||||
docker: alpine320
|
||||
python: ''
|
||||
target: azp/posix/2/
|
||||
- ansible: '2.18'
|
||||
docker: alpine320
|
||||
python: ''
|
||||
target: azp/posix/3/
|
||||
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
|
||||
# - ansible: '2.18'
|
||||
# docker: default
|
||||
# python: '3.8'
|
||||
# target: azp/generic/1/
|
||||
# - ansible: '2.18'
|
||||
# docker: default
|
||||
# python: '3.13'
|
||||
# target: azp/generic/1/
|
||||
|
||||
steps:
|
||||
- name: >-
|
||||
|
||||
26
.mypy.ini
26
.mypy.ini
@@ -14,6 +14,8 @@ warn_redundant_casts = True
|
||||
# warn_return_any = True
|
||||
warn_unreachable = True
|
||||
|
||||
exclude = tests/integration/targets/django_.*/files/.*
|
||||
|
||||
[mypy-ansible.*]
|
||||
# ansible-core has partial typing information
|
||||
follow_untyped_imports = True
|
||||
@@ -24,6 +26,10 @@ follow_untyped_imports = True
|
||||
# 3. That have no types and type stubs.
|
||||
[mypy-aerospike.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-antsibull_nox.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-asyncore.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-boto3.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-bs4.*]
|
||||
@@ -38,6 +44,8 @@ ignore_missing_imports = True
|
||||
ignore_missing_imports = True
|
||||
[mypy-crypt.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-daemon.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-datadog.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-dbus.*]
|
||||
@@ -62,6 +70,8 @@ ignore_missing_imports = True
|
||||
ignore_missing_imports = True
|
||||
[mypy-github3.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-gssapi.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-hashids.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-heroku3.*]
|
||||
@@ -122,6 +132,10 @@ ignore_missing_imports = True
|
||||
ignore_missing_imports = True
|
||||
[mypy-nomad.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-nopackagewiththisname.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-nox.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-oci.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-oneandone.*]
|
||||
@@ -144,6 +158,8 @@ ignore_missing_imports = True
|
||||
ignore_missing_imports = True
|
||||
[mypy-pingdom.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-pkg_resources.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-portage.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-potatoes_that_will_never_be_there.*]
|
||||
@@ -174,6 +190,8 @@ ignore_missing_imports = True
|
||||
ignore_missing_imports = True
|
||||
[mypy-rpm.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-ruamel.yaml.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-salt.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-selinux.*]
|
||||
@@ -186,6 +204,10 @@ ignore_missing_imports = True
|
||||
ignore_missing_imports = True
|
||||
[mypy-sha.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-smtpd.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-smtpd_tls.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-SoftLayer.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-spotinst_sdk.*]
|
||||
@@ -198,10 +220,14 @@ ignore_missing_imports = True
|
||||
ignore_missing_imports = True
|
||||
[mypy-thycotic.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-tomlkit.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-univention.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-vexatapi.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-voluptuous.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-websocket.*]
|
||||
ignore_missing_imports = True
|
||||
[mypy-XenAPI.*]
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
repos:
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
# Ruff version.
|
||||
rev: v0.14.10
|
||||
rev: v0.15.9
|
||||
hooks:
|
||||
# Run the linter.
|
||||
- id: ruff-check
|
||||
|
||||
528
CHANGELOG.md
528
CHANGELOG.md
File diff suppressed because one or more lines are too long
432
CHANGELOG.rst
432
CHANGELOG.rst
@@ -6,6 +6,438 @@ Community General Release Notes
|
||||
|
||||
This changelog describes changes after version 11.0.0.
|
||||
|
||||
v12.6.0
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
Regular bugfix and feature release.
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- cobbler_sync - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- cobbler_system - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- composer - add ``force`` parameter; when ``command=create-project``, the module now checks whether a ``composer.json`` already exists in ``working_dir`` and skips the command if so, making the task idempotent. Set ``force=true`` to always run the command regardless (https://github.com/ansible-collections/community.general/issues/725, https://github.com/ansible-collections/community.general/pull/11689).
|
||||
- consul_kv - add ``ca_path`` option to specify a CA bundle for HTTPS connections (https://github.com/ansible-collections/community.general/pull/11817).
|
||||
- consul_kv lookup plugin - add ``ca_path`` option to specify a CA bundle for HTTPS connections (https://github.com/ansible-collections/community.general/issues/2876, https://github.com/ansible-collections/community.general/pull/11817).
|
||||
- dconf - add support for C(dbus-broker) (https://github.com/ansible-collections/community.general/issues/495, https://github.com/ansible-collections/community.general/pull/11772).
|
||||
- filesystem - migrate ``LVM.get_fs_size()`` to use ``CmdRunner``, ensuring locale-independent output parsing (https://github.com/ansible-collections/community.general/pull/11888).
|
||||
- flatpak - add new parameter ``from_url`` to install a flatpak from a ``.flatpakref`` URL (https://github.com/ansible-collections/community.general/issues/4000, https://github.com/ansible-collections/community.general/pull/11748).
|
||||
- gem - refactor module to use ``CmdRunner`` (https://github.com/ansible-collections/community.general/pull/11733).
|
||||
- homebrew_services - remove various redundancies including dead state validation, unused return values, and unnecessary locale environment variables (https://github.com/ansible-collections/community.general/pull/11839).
|
||||
- homebrew_tap - avoid redundant ``brew tap`` calls when processing multiple taps by fetching the tap list once upfront (https://github.com/ansible-collections/community.general/pull/11848).
|
||||
- ipa_dnsrecord - add ``exclusive`` parameter to allow appending values to existing records without replacing them (https://github.com/ansible-collections/community.general/issues/682, https://github.com/ansible-collections/community.general/pull/11694).
|
||||
- java_cert - support proxy authentication when ``https_proxy`` environment variable includes credentials (https://github.com/ansible-collections/community.general/issues/4126, https://github.com/ansible-collections/community.general/pull/11753).
|
||||
- jira - add ``cloud`` option to support Jira Cloud's new search endpoint ``/rest/api/2/search/jql``, since the legacy ``/rest/api/2/search`` endpoint has been removed on Jira Cloud (https://github.com/ansible-collections/community.general/issues/10786, https://github.com/ansible-collections/community.general/pull/11701).
|
||||
- jira - when ``cloud=true``, user-type fields (``assignee``, ``reporter``, and any listed in the new ``custom_user_fields`` parameter) containing an email address are automatically resolved to Jira Cloud account IDs (https://github.com/ansible-collections/community.general/issues/11734, https://github.com/ansible-collections/community.general/pull/11735).
|
||||
- logrotate - adds optional ``backup`` parameter to create a backup of the existing configuration file before writing changes (https://github.com/ansible-collections/community.general/pull/11764).
|
||||
- lvg - migrate to ``CmdRunner``, removing direct ``run_command`` calls and ``run_command_environ_update`` (https://github.com/ansible-collections/community.general/pull/11835).
|
||||
- lvm_pv - migrate to ``CmdRunner`` using shared runners from ``module_utils/_lvm`` (https://github.com/ansible-collections/community.general/pull/11811).
|
||||
- lvol - migrate to ``CmdRunner`` (https://github.com/ansible-collections/community.general/pull/11887).
|
||||
- manageiq module utils - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- manageiq_alert_profiles - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- manageiq_alerts - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- oneview module utils - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- oneview_san_manager - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- opendj_backendprop - refactor to use ``CmdRunner`` (https://github.com/ansible-collections/community.general/pull/11728).
|
||||
- packet_device - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- packet_ip_subnet - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- pacman - add ``root``, ``cachedir``, and ``config`` options to support installing packages into an alternative root directory (https://github.com/ansible-collections/community.general/issues/438, https://github.com/ansible-collections/community.general/pull/11681).
|
||||
- parted - add ``unit_preserve_case`` option to control the case of the ``unit`` field in the return value, fixing the round-trip use case where the returned unit is fed back as input (https://github.com/ansible-collections/community.general/issues/1860, https://github.com/ansible-collections/community.general/pull/11813).
|
||||
- pubnub_blocks - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- terraform - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- xenserver_guest - use ``enumerate()`` instead of manual index variable in ``for`` loop (https://github.com/ansible-collections/community.general/pull/11721).
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- alternatives - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- apache2_module - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- apk - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- apt_repo - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11782).
|
||||
- apt_rpm - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- awall - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11784).
|
||||
- beadm - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11780).
|
||||
- bower - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11783).
|
||||
- btrfs module_utils - set ``LANGUAGE`` and ``LC_ALL`` environment variables to ``C`` in all ``run_command()`` calls (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11787).
|
||||
- bundler - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11783).
|
||||
- bzr - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11785).
|
||||
- capabilities - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11779).
|
||||
- cargo - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- composer - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- cronvar - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11773).
|
||||
- dconf - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11765).
|
||||
- dnf_versionlock - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11773).
|
||||
- dpkg_divert - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11773).
|
||||
- easy_install - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11782).
|
||||
- etcd3 lookup plugin - improve HTTPS endpoint handling by stripping URL schemes from the ``host`` option and warning when ``ca_cert`` is not provided for HTTPS endpoints (https://github.com/ansible-collections/community.general/issues/1664, https://github.com/ansible-collections/community.general/pull/11861).
|
||||
- facter_facts - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- filesystem - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- flatpak - fix removal of runtimes, which was broken because the module was filtering the installed flatpak list to apps only, so runtimes could never be matched for uninstallation (https://github.com/ansible-collections/community.general/issues/553, https://github.com/ansible-collections/community.general/pull/11688).
|
||||
- flatpak - support new output message when an update resulted in no action that appears on Fedora 44 (https://github.com/ansible-collections/community.general/pull/11836).
|
||||
- flatpak_remote - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11773).
|
||||
- git_config - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- git_config_info - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- gitlab_project_members - fail with a clear error when multiple projects match the given name, instead of silently operating on the first result (https://github.com/ansible-collections/community.general/issues/2767, https://github.com/ansible-collections/community.general/pull/11851).
|
||||
- gitlab_project_variable - use ``find_project()`` from module utils for project lookup, consistent with all other GitLab modules in the collection (https://github.com/ansible-collections/community.general/issues/3157, https://github.com/ansible-collections/community.general/pull/11878).
|
||||
- hg - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11773).
|
||||
- homebrew - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- homebrew_cask - fix ``sudo_password`` failing when the password contains single quotes or other special shell characters (https://github.com/ansible-collections/community.general/issues/4957, https://github.com/ansible-collections/community.general/pull/11850).
|
||||
- homebrew_cask - fix failure when ``brew --version`` returns a placeholder version string (https://github.com/ansible-collections/community.general/issues/4708, https://github.com/ansible-collections/community.general/pull/11849).
|
||||
- homebrew_cask - fix false task failure when upgrading casks with ``version=latest``; the post-upgrade check incorrectly re-ran ``brew outdated`` (which always lists ``latest`` casks as outdated under ``--greedy``), now uses the command exit code instead (https://github.com/ansible-collections/community.general/issues/1647, https://github.com/ansible-collections/community.general/pull/11838).
|
||||
- homebrew_cask - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- homebrew_tap - fix ``None`` being passed as a command argument when adding a tap without a URL (https://github.com/ansible-collections/community.general/pull/11848).
|
||||
- homectl - allow to use passlib instead of legacycrypt for Python 3.13+ (https://github.com/ansible-collections/community.general/pull/11860).
|
||||
- homectl - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11774).
|
||||
- icinga2_feature - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- imgadm - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- incus connection plugin - work when the active become plugin sets ``require_tty`` instead of failing silently (https://github.com/ansible-collections/community.general/pull/11771).
|
||||
- ip_netns - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11779).
|
||||
- ipa module utils - fix failure to detect errors reported in the ``failed`` field of the IPA API response, which is returned with HTTP 200 on partial or full failures in member add/remove operations (https://github.com/ansible-collections/community.general/issues/1239, https://github.com/ansible-collections/community.general/pull/11698).
|
||||
- ipa_dnsrecord - fix errors when module is used with existing record with default TTL (https://github.com/ansible-collections/community.general/pull/11717).
|
||||
- ipa_host - fix logic to disable existing hosts (https://github.com/ansible-collections/community.general/issues/11483, https://github.com/ansible-collections/community.general/pull/11487).
|
||||
- iptables_state - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- iso_extract - retry ``umount`` up to 5 times preventing ``OSError`` on cleanup (https://github.com/ansible-collections/community.general/issues/5333, https://github.com/ansible-collections/community.general/pull/11837).
|
||||
- iso_extract - strip leading path separator from file entries so files with a leading ``/`` are extracted correctly (https://github.com/ansible-collections/community.general/issues/5283, https://github.com/ansible-collections/community.general/pull/11825).
|
||||
- java_cert - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11774).
|
||||
- java_keystore - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- keyring - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11774).
|
||||
- keyring_info - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11786).
|
||||
- kibana_plugin - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11783).
|
||||
- known_hosts module utils - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- launchd - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11774).
|
||||
- lbu - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- listen_ports_facts - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11774).
|
||||
- lldp - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11785).
|
||||
- locale_gen - add missing locale entries to ``/etc/locale.gen`` when not already present (https://github.com/ansible-collections/community.general/issues/2399, https://github.com/ansible-collections/community.general/pull/11824).
|
||||
- logrotate - adds missing default values for ``state`` and ``config_dir`` parameters, and adds ``required_by`` declarations for shred and compression parameters (https://github.com/ansible-collections/community.general/pull/11764).
|
||||
- logrotate - fixes ``TypeError`` when ``shred_cycles`` is ``None`` and corrects ``enabled=None`` handling in ``get_config_path()`` (https://github.com/ansible-collections/community.general/pull/11764).
|
||||
- logrotate - writes configuration files to a temporary file first and validates before atomically moving to the destination, and properly wraps all ``os.remove()`` and ``atomic_move()`` calls in error handling (https://github.com/ansible-collections/community.general/pull/11764).
|
||||
- logstash_plugin - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11775).
|
||||
- lvg - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11775).
|
||||
- lvol - fix LVM version parsing (https://github.com/ansible-collections/community.general/issues/5445, https://github.com/ansible-collections/community.general/pull/11823).
|
||||
- lvol - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- lxc_container - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11779).
|
||||
- machinectl become plugin - prevent printing ANSI terminal color sequences (https://github.com/ansible-collections/community.general/pull/11771).
|
||||
- macports - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- mas - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11775).
|
||||
- modprobe - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- monit - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- mssql_db - fail with a clear error message when a named instance (``server\instance`` format) is used together with ``login_port``, since these are mutually exclusive connection methods (https://github.com/ansible-collections/community.general/issues/5693, https://github.com/ansible-collections/community.general/pull/11664).
|
||||
- mssql_script - fail with a clear error message when a named instance (``server\instance`` format) is used together with ``login_port``, since these are mutually exclusive connection methods (https://github.com/ansible-collections/community.general/issues/5693, https://github.com/ansible-collections/community.general/pull/11664).
|
||||
- mssql_script - only passes ``params`` to ``cursor.execute()`` when the user actually provides them (https://github.com/ansible-collections/community.general/issues/11699, https://github.com/ansible-collections/community.general/pull/11754).
|
||||
- nmcli - use ``get_best_parsable_locale()`` to set locale environment for ``run_command()`` calls, fixing UTF-8 connection names being corrupted to ``????`` under ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/10384, https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11742).
|
||||
- nsupdate - fix GSS-TSIG support (accidentally broken by https://github.com/ansible-collections/community.general/pull/11461, https://github.com/ansible-collections/community.general/pull/11712)
|
||||
- ohai - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11785).
|
||||
- onepassword_info - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11786).
|
||||
- open_iscsi - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- openbsd_pkg - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11767).
|
||||
- openwrt_init - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11784).
|
||||
- osx_defaults - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11775).
|
||||
- pacemaker_resource, pacemaker_stonith - fix resource and stonith creation race condition by polling PCS status (https://github.com/ansible-collections/community.general/issues/11574, https://github.com/ansible-collections/community.general/pull/11750).
|
||||
- pacman - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- pacman_key - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- parted - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- pear - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11782).
|
||||
- pip_package_info - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11784).
|
||||
- pkg5 - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11780).
|
||||
- pkg5_publisher - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11780).
|
||||
- pkgin - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- pkgng - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11765).
|
||||
- pkgutil - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11775).
|
||||
- pnpm - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11776).
|
||||
- portage - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- portinstall - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- redhat_subscription - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- rhsm_release - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- rhsm_repository - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- riak - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11786).
|
||||
- rpm_ostree_pkg - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- run0 become plugin - mark the plugin as incompatible with connection pipelining (see https://github.com/ansible/ansible/issues/81254, https://github.com/ansible-collections/community.general/pull/11771).
|
||||
- run0 become plugin - prevent printing ANSI terminal color sequences (https://github.com/ansible-collections/community.general/pull/11771).
|
||||
- runit - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- sefcontext - flush the in-process ``matchpathcon`` cache after applying changes, so subsequent tasks running in the same process (for example via the Mitogen connection plugin) see the updated SELinux file context rules instead of stale cached data (https://github.com/ansible-collections/community.general/issues/888, https://github.com/ansible-collections/community.general/pull/11812).
|
||||
- smartos_image_info - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- snmp_facts - the module now also supports pysnmp >= 7.1 (https://github.com/ansible-collections/community.general/issues/8852, https://github.com/ansible-collections/community.general/pull/11683).
|
||||
- sorcery - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11767).
|
||||
- supervisorctl - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- svc - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- swdepot - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11780).
|
||||
- syspatch - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- sysrc - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11776).
|
||||
- sysupgrade - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- terraform - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11765).
|
||||
- timezone - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11776).
|
||||
- udm_user - allow to use passlib instead of legacycrypt for Python 3.13+ (https://github.com/ansible-collections/community.general/issues/4690, https://github.com/ansible-collections/community.general/pull/11860).
|
||||
- udm_user - fix alias-to-canonical parameter name mismatch that caused all camelCase-aliased parameters such as ``display_name`` and ``primary_group`` to be silently ignored (https://github.com/ansible-collections/community.general/issues/2950, https://github.com/ansible-collections/community.general/issues/3691, https://github.com/ansible-collections/community.general/pull/11859).
|
||||
- ufw - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- xattr - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11776).
|
||||
- xbps - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- xenserver_guest - fix an issue where booting from ISO is not possible because CD-ROM device is placed in position above number 3. Position number 3 is now reserved for CD-ROM device and cannot be occupied by a disk (https://github.com/ansible-collections/community.general/issues/11624, https://github.com/ansible-collections/community.general/pull/11702).
|
||||
- yarn - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11776).
|
||||
- yum_versionlock - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11777).
|
||||
- zfs - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11778).
|
||||
- zfs_delegate_admin - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11778).
|
||||
- zfs_facts - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11778).
|
||||
- zpool_facts - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11778).
|
||||
- zypper - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- zypper_repository - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11777).
|
||||
- zypper_repository_info - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11782).
|
||||
|
||||
New Modules
|
||||
-----------
|
||||
|
||||
- community.general.snap_connect - Manages snap interface connections.
|
||||
|
||||
v12.5.0
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
Bugfix and feature release.
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ansible_galaxy_install - add parameter ``executable`` (https://github.com/ansible-collections/community.general/issues/7261, https://github.com/ansible-collections/community.general/pull/11646).
|
||||
- api module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- bitbucket module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- consul module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561, https://github.com/ansible-collections/community.general/pull/11573).
|
||||
- doas become plugin - add new option ``allow_pipelining`` to explicitly allow the use of pipelining with this plugin. This should only be set to ``true`` with ansible-core 2.19+ when ``doas`` does not require a password (https://github.com/ansible-collections/community.general/issues/11411, https://github.com/ansible-collections/community.general/pull/11481).
|
||||
- gandi_livedns_api module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- github_app_access_token lookup plugin - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- hwc_utils module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561, https://github.com/ansible-collections/community.general/pull/11573).
|
||||
- icinga2 inventory plugin - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561, https://github.com/ansible-collections/community.general/pull/11573).
|
||||
- incus inventory plugin - add support for constructing project-independent FQDNs (https://github.com/ansible-collections/community.general/pull/11555).
|
||||
- ipa module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- keycloak module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- keycloak_realm - add ``first_broker_login_flow`` parameter (https://github.com/ansible-collections/community.general/pull/11622).
|
||||
- ldap_attrs - add ``binary_attributes`` and ``honor_binary`` parameters to handle binary attribute values (https://github.com/ansible-collections/community.general/pull/11558).
|
||||
- ldap_entry - add ``binary_attributes`` and ``honor_binary`` parameters to handle creating objects with attributes set to binary values (https://github.com/ansible-collections/community.general/pull/11558).
|
||||
- lookup plugin passwordstore - modernize internal ``check_output2()`` helper using ``subprocess.run()`` and rename it to ``run_backend_cmd()`` (https://github.com/ansible-collections/community.general/pull/11655).
|
||||
- memset module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- merge_variables lookup plugin - extended merging capabilities added (https://github.com/ansible-collections/community.general/pull/11536).
|
||||
- nmcli - fix idempotency for MAC VLAN interfaces when using ``macvlan.tap`` (https://github.com/ansible-collections/community.general/pull/11551).
|
||||
- nsupdate - replace ``list(map(...))`` constructs with Python comprehensions (https://github.com/ansible-collections/community.general/pull/11590).
|
||||
- ocapi_utils module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- oci_utils module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- online module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- osx_defaults - add support for ``dict`` type values, including ``dict_mode`` option to merge keys into an existing dictionary (https://github.com/ansible-collections/community.general/issues/238, https://github.com/ansible-collections/community.general/pull/11659).
|
||||
- redfish_utils module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561, https://github.com/ansible-collections/community.general/pull/11573).
|
||||
- rundeck module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561, https://github.com/ansible-collections/community.general/pull/11573).
|
||||
- scaleway module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- supervisorctl - added an additional condition for generating the error 'no such process' (https://github.com/ansible-collections/community.general/issues/11621, https://github.com/ansible-collections/community.general/pull/11632).
|
||||
- timezone - replace ``list(map(...))`` constructs with Python comprehensions (https://github.com/ansible-collections/community.general/pull/11590).
|
||||
- utm_utils module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561, https://github.com/ansible-collections/community.general/pull/11573).
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- aix_devices - module is superseded by equivalent in ``ibm.power_aix`` collection. It will be removed from community.general 15.0.0 (https://github.com/ansible-collections/community.general/issues/11290, https://github.com/ansible-collections/community.general/pull/11540).
|
||||
- aix_filesystem - module is superseded by equivalent in ``ibm.power_aix`` collection. It will be removed from community.general 15.0.0 (https://github.com/ansible-collections/community.general/issues/11290, https://github.com/ansible-collections/community.general/pull/11540).
|
||||
- aix_inittab - module is superseded by equivalent in ``ibm.power_aix`` collection. It will be removed from community.general 15.0.0 (https://github.com/ansible-collections/community.general/issues/11290, https://github.com/ansible-collections/community.general/pull/11540).
|
||||
- aix_lvg - module is superseded by equivalent in ``ibm.power_aix`` collection. It will be removed from community.general 15.0.0 (https://github.com/ansible-collections/community.general/issues/11290, https://github.com/ansible-collections/community.general/pull/11540).
|
||||
- aix_lvol - module is superseded by equivalent in ``ibm.power_aix`` collection. It will be removed from community.general 15.0.0 (https://github.com/ansible-collections/community.general/issues/11290, https://github.com/ansible-collections/community.general/pull/11540).
|
||||
- monit - support for Monit version 5.18 or older is deprecated and will be removed in community.general 14.0.0 (https://github.com/ansible-collections/community.general/pull/11254).
|
||||
- puppet - the ``timeout`` parameter is deprecated and will be removed in community.general 14.0.0. (https://github.com/ansible-collections/community.general/pull/11658).
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- counter_enabled callback plugin - fix plugin not observing ``display_ok_hosts`` option (https://github.com/ansible-collections/community.general/issues/3978, https://github.com/ansible-collections/community.general/pull/11656).
|
||||
- ipa_dnsrecord - fix idempotency bug when using ``dnsttl`` due to wrong Python types (https://github.com/ansible-collections/community.general/pull/11559).
|
||||
- keycloak_authentication - fix ``TypeError`` crash when a flow is defined without ``authenticationExecutions`` (https://github.com/ansible-collections/community.general/issues/11547, https://github.com/ansible-collections/community.general/pull/11548).
|
||||
- nictagadm - add a condition to the if statement so that ``is_valid_mac()`` does not get called if ``etherstub`` is false (https://github.com/ansible-collections/community.general/pull/11589).
|
||||
- nmcli - add missing ``ipv6.routing-rules`` to ``settings_type()`` list type, preventing ``routing_rules6`` list from being corrupted (https://github.com/ansible-collections/community.general/issues/11630, https://github.com/ansible-collections/community.general/pull/11635).
|
||||
- open_iscsi - fix IPv6 portal address formatting; iscsiadm requires bracket notation for IPv6 addresses but the module was producing an incorrect format (https://github.com/ansible-collections/community.general/issues/4467, https://github.com/ansible-collections/community.general/pull/11657).
|
||||
- xfconf - representation of boolean properties was not consistent between Python and ``xfconf-query``, leading to broken idempotency (https://github.com/ansible-collections/community.general/pull/11645).
|
||||
|
||||
New Modules
|
||||
-----------
|
||||
|
||||
- community.general.github_secrets - Manage GitHub repository or organization secrets.
|
||||
- community.general.github_secrets_info - List GitHub repository or organization secrets.
|
||||
- community.general.keycloak_authentication_v2 - Configure authentication flows in Keycloak in an idempotent and safe manner.
|
||||
- community.general.logrotate - Manage logrotate configurations.
|
||||
|
||||
v12.4.0
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
Regular bugfix and feature release.
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ModuleHelper module utils - allow to ignore specific exceptions in ``module_fails_on_exception`` decorator (https://github.com/ansible-collections/community.general/pull/11488).
|
||||
- from_ini filter plugin - add ``delimiters`` parameter to allow correctly parsing more INI documents (https://github.com/ansible-collections/community.general/issues/11506, https://github.com/ansible-collections/community.general/pull/11512).
|
||||
- keycloak_client - add ``valid_post_logout_redirect_uris`` option to configure post logout redirect URIs for a client, and ``backchannel_logout_url`` option to configure the backchannel logout URL for a client (https://github.com/ansible-collections/community.general/issues/6812, https://github.com/ansible-collections/community.general/issues/4892, https://github.com/ansible-collections/community.general/pull/11473).
|
||||
- keycloak_client_rolemapping, keycloak_realm_rolemapping, keycloak_group - optimize retrieval of groups by name to use Keycloak search API with exact matching instead of fetching all groups (https://github.com/ansible-collections/community.general/pull/11503).
|
||||
- keycloak_realm - add support for ``localizationTexts`` option in Keycloak realms (https://github.com/ansible-collections/community.general/pull/11513).
|
||||
- keycloak_realm_key - add support for auto-generated key providers (``rsa-generated``, ``rsa-enc-generated``, ``hmac-generated``, ``aes-generated``, ``ecdsa-generated``, ``ecdh-generated``, ``eddsa-generated``), ``java-keystore`` provider, additional algorithms (HMAC, ECDSA, ECDH, EdDSA, AES), and new config options (``secret_size``, ``key_size``, ``elliptic_curve``, ``keystore``, ``keystore_password``, ``key_alias``, ``key_password``). Also makes ``config.private_key`` and ``config.certificate`` optional as they are only required for imported key providers (https://github.com/ansible-collections/community.general/pull/11468).
|
||||
- redfish_info - add Redfish Root data to results of successful ``CheckAvailability`` command (https://github.com/ansible-collections/community.general/pull/11504).
|
||||
- seport - adds support for DCCP and SCTP protocols (https://github.com/ansible-collections/community.general/pull/11486).
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- keycloak module utils - fix ``TypeError`` crash when managing users whose username or email contains special characters such as ``+`` (https://github.com/ansible-collections/community.general/issues/10305, https://github.com/ansible-collections/community.general/pull/11472).
|
||||
- keycloak module utils - use proper URL encoding (``urllib.parse.quote``) for query parameters in authorization permission name searches, replacing fragile manual space replacement (https://github.com/ansible-collections/community.general/pull/11472).
|
||||
- keycloak_client - fix idempotency bug caused by ``null`` flow overrides value differences for non-existing flow overrides (https://github.com/ansible-collections/community.general/issues/11430, https://github.com/ansible-collections/community.general/pull/11455).
|
||||
- keycloak_client - remove IDs as change from diff result for protocol mappers (https://github.com/ansible-collections/community.general/issues/11453, https://github.com/ansible-collections/community.general/pull/11454).
|
||||
- keycloak_realm_key - fix ``KeyError`` crash when managing realm keys where Keycloak does not return ``active``, ``enabled``, or ``algorithm`` fields in the config response (https://github.com/ansible-collections/community.general/issues/11459, https://github.com/ansible-collections/community.general/pull/11470).
|
||||
- keycloak_user_federation - mapper config item can be an array (https://github.com/ansible-collections/community.general/issues/11502, https://github.com/ansible-collections/community.general/pull/11515).
|
||||
- keycloak_user_rolemapping - fix ``TypeError`` crash when adding a client role to a user who has no existing roles for that client (https://github.com/ansible-collections/community.general/issues/10960, https://github.com/ansible-collections/community.general/pull/11471).
|
||||
- maven_artifact - fix SNAPSHOT version resolution to pick the newest matching ``<snapshotVersion>`` entry by ``<updated>`` timestamp instead of the first. Repositories like GitHub Packages keep all historical entries in ``<snapshotVersions>`` (oldest first), causing the module to resolve to the oldest snapshot instead of the latest (https://github.com/ansible-collections/community.general/issues/5117, https://github.com/ansible-collections/community.general/issues/11489, https://github.com/ansible-collections/community.general/pull/11501).
|
||||
- nsupdate - fix ``AttributeError`` when using the module without TSIG authentication (https://github.com/ansible-collections/community.general/issues/11460, https://github.com/ansible-collections/community.general/pull/11461).
|
||||
- python_requirements_info - use ``importlib.metadata`` if ``pkg_resources`` from ``setuptools`` cannot be imported. That module has been removed from setuptools 82.0.0 (https://github.com/ansible-collections/community.general/issues/11491, https://github.com/ansible-collections/community.general/pull/11492).
|
||||
- splunk callback plugin - replace deprecated callback function (https://github.com/ansible-collections/community.general/pull/11485).
|
||||
|
||||
New Plugins
|
||||
-----------
|
||||
|
||||
Callback
|
||||
~~~~~~~~
|
||||
|
||||
- community.general.loganalytics_ingestion - Posts task results to an Azure Log Analytics workspace using the new Logs Ingestion API.
|
||||
|
||||
New Modules
|
||||
-----------
|
||||
|
||||
- community.general.icinga2_downtime - Manages Icinga 2 downtimes.
|
||||
- community.general.keycloak_realm_localization - Allows management of Keycloak realm localization overrides via the Keycloak API.
|
||||
|
||||
v12.3.0
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
Regular feature and bugfix release.
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- alicloud_ecs module utils - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- android_sdk - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- archive - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- bitbucket_pipeline_known_host - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- chroot connection plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- cobbler inventory plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- copr - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- cronvar - simplify handling unknown exceptions (https://github.com/ansible-collections/community.general/pull/11340).
|
||||
- cronvar - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- crypttab - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- elasticsearch_plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- gitlab_group - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- gitlab_issue - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- gitlab_merge_request - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- gitlab_project - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- gunicorn - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- htpasswd - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- idrac_redfish_info - add multiple manager support to ``GetManagerAttributes`` command (https://github.com/ansible-collections/community.general/pull/11294).
|
||||
- imc_rest - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- incus connection plugin - improve code readability (https://github.com/ansible-collections/community.general/pull/11346).
|
||||
- incus connection plugin - simplify regular expression matching commands (https://github.com/ansible-collections/community.general/pull/11347).
|
||||
- ini_file - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- interfaces_file - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- iptables_state - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- jail connection plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- jenkins_credential - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- jenkins_plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- jenkins_script - move ``import`` statemetns to the top of the file (https://github.com/ansible-collections/community.general/pull/11396).
|
||||
- kdeconfig - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- known_hosts module utils - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- layman - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- linode - move ``import`` statemetns to the top of the file (https://github.com/ansible-collections/community.general/pull/11396).
|
||||
- linode inventory plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- listen_ports_facts - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- locale_gen - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- logentries callback plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- lvm_pv - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- lxc connection plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- lxd inventory plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- lxd module utils - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- manageiq module utils - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- manageiq_alert_profiles - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- modprobe - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- mssql_db - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- nagios - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- netcup_dns - support diff mode (https://github.com/ansible-collections/community.general/pull/11376).
|
||||
- nmcli - add idempotency check (https://github.com/ansible-collections/community.general/pull/11114).
|
||||
- nmcli - add support for IPv6 routing rules (https://github.com/ansible-collections/community.general/issues/7094, https://github.com/ansible-collections/community.general/pull/11413).
|
||||
- nosh - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- nsupdate - add support for server FQDN and the GSS-TSIG key algorithm (https://github.com/ansible-collections/community.general/issues/5730, https://github.com/ansible-collections/community.general/pull/11425).
|
||||
- nsupdate modules plugin - replace aliased errors with proper Python error (https://github.com/ansible-collections/community.general/pull/11391).
|
||||
- oci_utils module utils - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- omapi_host - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- one_image - move ``import`` statemetns to the top of the file (https://github.com/ansible-collections/community.general/pull/11396).
|
||||
- one_image_info - move ``import`` statemetns to the top of the file (https://github.com/ansible-collections/community.general/pull/11396).
|
||||
- one_service - move ``import`` statemetns to the top of the file (https://github.com/ansible-collections/community.general/pull/11396).
|
||||
- one_vm - move ``import`` statemetns to the top of the file (https://github.com/ansible-collections/community.general/pull/11396).
|
||||
- one_vm - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- opennebula inventory plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- pam_limits - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- pamd - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- parted - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- pmem - simplify text tests without using regular expression (https://github.com/ansible-collections/community.general/pull/11388).
|
||||
- pubnub_blocks - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- pulp_repo - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- read_csv - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- redfish_utils module utils - adds support of ``@Redfish.Settings`` in ``ComputerSystem`` attributes for ``set_boot_override`` function (https://github.com/ansible-collections/community.general/issues/11297, https://github.com/ansible-collections/community.general/pull/11322).
|
||||
- redhat_subscription - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- rhsm_repository - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- runit - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- scaleway_ip - added ``project`` parameter (https://github.com/ansible-collections/community.general/issues/11367, https://github.com/ansible-collections/community.general/pull/11368).
|
||||
- scaleway_security_group - added ``project`` parameter (https://github.com/ansible-collections/community.general/issues/11364, https://github.com/ansible-collections/community.general/pull/11366).
|
||||
- sensu_check - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- sensu_client - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- sensu_handler - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- sensu_subscription - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- seport - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- serverless - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- slackpkg - refactor function ``query_packages()`` (https://github.com/ansible-collections/community.general/pull/11390).
|
||||
- solaris_zone - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- sorcery - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- spotinst_aws_elastigroup - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- sudoers - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- svc - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- timestamp callback plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- timezone - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- univention_umc module utils - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- wakeonlan - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- wsl connection plugin - add option ``wsl_remote_ssh_shell_type``. Support PowerShell in addition to cmd as the Windows shell (https://github.com/ansible-collections/community.general/issues/11307, https://github.com/ansible-collections/community.general/pull/11308).
|
||||
- wsl connection plugin - replace aliased errors with proper Python error (https://github.com/ansible-collections/community.general/pull/11391).
|
||||
- wsl connection plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- xfs_quota - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- yaml cache plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- zone connection plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- zypper - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- zypper_repository - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- cloudflare_dns - also allow ``flag=128`` for CAA records (https://github.com/ansible-collections/community.general/issues/11355, https://github.com/ansible-collections/community.general/pull/11377).
|
||||
- gem - add compatibility with Ruby 4 rubygems (https://github.com/ansible-collections/community.general/issues/11397, https://github.com/ansible-collections/community.general/pull/11442).
|
||||
- incus connection plugin - fix parsing of commands for Windows, enforcing a ``\`` after the drive letter and colon symbol (https://github.com/ansible-collections/community.general/pull/11347).
|
||||
- keycloak_client - fix idempotency bug caused by ``null`` client attribute value differences for non-existing client attributes (https://github.com/ansible-collections/community.general/issues/11443, https://github.com/ansible-collections/community.general/pull/11444).
|
||||
- logstash_plugin - fix argument order when using ``version`` parameter. The plugin name must come after options like ``--version`` for the ``logstash-plugin`` CLI to work correctly (https://github.com/ansible-collections/community.general/issues/10745, https://github.com/ansible-collections/community.general/pull/11440).
|
||||
- pmem - fix test for invalid data input (https://github.com/ansible-collections/community.general/pull/11388).
|
||||
|
||||
New Plugins
|
||||
-----------
|
||||
|
||||
Filter
|
||||
~~~~~~
|
||||
|
||||
- community.general.to_toml - Convert variable to TOML string.
|
||||
|
||||
v12.2.0
|
||||
=======
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ The easiest way to format the code, and to run sanity and unit tests locally is
|
||||
|
||||
### Format code
|
||||
|
||||
The following commands show how to run ansible-test sanity tests:
|
||||
The following commands show how to run ruff format:
|
||||
|
||||
```.bash
|
||||
# Run all configured formatters:
|
||||
|
||||
@@ -39,7 +39,7 @@ For more information about communication, see the [Ansible communication guide](
|
||||
|
||||
## Tested with Ansible
|
||||
|
||||
Tested with the current ansible-core 2.17, ansible-core 2.18, ansible-core 2.19, ansible-core 2.20 releases and the current development version of ansible-core. Ansible-core versions before 2.17.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
|
||||
Tested with the current ansible-core 2.17, ansible-core 2.18, ansible-core 2.19, ansible-core 2.20, ansible-core 2.21 releases and the current development version of ansible-core. Ansible-core versions before 2.17.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
|
||||
|
||||
## External requirements
|
||||
|
||||
|
||||
@@ -20,8 +20,15 @@ stable_branches = [ "stable-*" ]
|
||||
[sessions]
|
||||
|
||||
[sessions.lint]
|
||||
code_files = ["."] # consider all Python files in the collection
|
||||
run_isort = false
|
||||
run_black = false
|
||||
run_ruff_autofix = true
|
||||
ruff_autofix_config = "ruff.toml"
|
||||
ruff_autofix_select = [
|
||||
"I",
|
||||
"RUF022",
|
||||
]
|
||||
run_ruff_check = true
|
||||
ruff_check_config = "ruff.toml"
|
||||
run_ruff_format = true
|
||||
|
||||
@@ -1627,3 +1627,941 @@ releases:
|
||||
name: sssd_info
|
||||
namespace: ''
|
||||
release_date: '2025-12-29'
|
||||
12.3.0:
|
||||
changes:
|
||||
bugfixes:
|
||||
- cloudflare_dns - also allow ``flag=128`` for CAA records (https://github.com/ansible-collections/community.general/issues/11355,
|
||||
https://github.com/ansible-collections/community.general/pull/11377).
|
||||
- gem - add compatibility with Ruby 4 rubygems (https://github.com/ansible-collections/community.general/issues/11397,
|
||||
https://github.com/ansible-collections/community.general/pull/11442).
|
||||
- 'incus connection plugin - fix parsing of commands for Windows, enforcing
|
||||
a ``\`` after the drive letter and colon symbol (https://github.com/ansible-collections/community.general/pull/11347).
|
||||
|
||||
'
|
||||
- keycloak_client - fix idempotency bug caused by ``null`` client attribute
|
||||
value differences for non-existing client attributes (https://github.com/ansible-collections/community.general/issues/11443,
|
||||
https://github.com/ansible-collections/community.general/pull/11444).
|
||||
- logstash_plugin - fix argument order when using ``version`` parameter. The
|
||||
plugin name must come after options like ``--version`` for the ``logstash-plugin``
|
||||
CLI to work correctly (https://github.com/ansible-collections/community.general/issues/10745,
|
||||
https://github.com/ansible-collections/community.general/pull/11440).
|
||||
- pmem - fix test for invalid data input (https://github.com/ansible-collections/community.general/pull/11388).
|
||||
minor_changes:
|
||||
- alicloud_ecs module utils - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- android_sdk - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- archive - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- bitbucket_pipeline_known_host - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- chroot connection plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- cobbler inventory plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- copr - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- cronvar - simplify handling unknown exceptions (https://github.com/ansible-collections/community.general/pull/11340).
|
||||
- cronvar - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- crypttab - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- elasticsearch_plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- gitlab_group - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- gitlab_issue - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- gitlab_merge_request - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- gitlab_project - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- gunicorn - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- htpasswd - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- idrac_redfish_info - add multiple manager support to ``GetManagerAttributes``
|
||||
command (https://github.com/ansible-collections/community.general/pull/11294).
|
||||
- imc_rest - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- incus connection plugin - improve code readability (https://github.com/ansible-collections/community.general/pull/11346).
|
||||
- incus connection plugin - simplify regular expression matching commands
|
||||
(https://github.com/ansible-collections/community.general/pull/11347).
|
||||
- ini_file - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- interfaces_file - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- iptables_state - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- jail connection plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- jenkins_credential - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- jenkins_plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- jenkins_script - move ``import`` statemetns to the top of the file (https://github.com/ansible-collections/community.general/pull/11396).
|
||||
- kdeconfig - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- known_hosts module utils - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- layman - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- linode - move ``import`` statemetns to the top of the file (https://github.com/ansible-collections/community.general/pull/11396).
|
||||
- linode inventory plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- listen_ports_facts - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- locale_gen - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- logentries callback plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- lvm_pv - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11343).
|
||||
- lxc connection plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- lxd inventory plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- lxd module utils - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- manageiq module utils - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- manageiq_alert_profiles - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- modprobe - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- mssql_db - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- nagios - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- netcup_dns - support diff mode (https://github.com/ansible-collections/community.general/pull/11376).
|
||||
- nmcli - add idempotency check (https://github.com/ansible-collections/community.general/pull/11114).
|
||||
- nmcli - add support for IPv6 routing rules (https://github.com/ansible-collections/community.general/issues/7094,
|
||||
https://github.com/ansible-collections/community.general/pull/11413).
|
||||
- nosh - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- nsupdate - add support for server FQDN and the GSS-TSIG key algorithm (https://github.com/ansible-collections/community.general/issues/5730,
|
||||
https://github.com/ansible-collections/community.general/pull/11425).
|
||||
- nsupdate modules plugin - replace aliased errors with proper Python error
|
||||
(https://github.com/ansible-collections/community.general/pull/11391).
|
||||
- oci_utils module utils - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- omapi_host - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- one_image - move ``import`` statemetns to the top of the file (https://github.com/ansible-collections/community.general/pull/11396).
|
||||
- one_image_info - move ``import`` statemetns to the top of the file (https://github.com/ansible-collections/community.general/pull/11396).
|
||||
- one_service - move ``import`` statemetns to the top of the file (https://github.com/ansible-collections/community.general/pull/11396).
|
||||
- one_vm - move ``import`` statemetns to the top of the file (https://github.com/ansible-collections/community.general/pull/11396).
|
||||
- one_vm - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- opennebula inventory plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- pam_limits - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- pamd - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- parted - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- pmem - simplify text tests without using regular expression (https://github.com/ansible-collections/community.general/pull/11388).
|
||||
- pubnub_blocks - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- pulp_repo - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- read_csv - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- redfish_utils module utils - adds support of ``@Redfish.Settings`` in ``ComputerSystem``
|
||||
attributes for ``set_boot_override`` function (https://github.com/ansible-collections/community.general/issues/11297,
|
||||
https://github.com/ansible-collections/community.general/pull/11322).
|
||||
- redhat_subscription - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- rhsm_repository - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- runit - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- scaleway_ip - added ``project`` parameter (https://github.com/ansible-collections/community.general/issues/11367,
|
||||
https://github.com/ansible-collections/community.general/pull/11368).
|
||||
- scaleway_security_group - added ``project`` parameter (https://github.com/ansible-collections/community.general/issues/11364,
|
||||
https://github.com/ansible-collections/community.general/pull/11366).
|
||||
- sensu_check - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- sensu_client - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- sensu_handler - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- sensu_subscription - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- seport - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- serverless - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- slackpkg - refactor function ``query_packages()`` (https://github.com/ansible-collections/community.general/pull/11390).
|
||||
- solaris_zone - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- sorcery - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- spotinst_aws_elastigroup - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- sudoers - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- svc - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- timestamp callback plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- timezone - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- univention_umc module utils - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- wakeonlan - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- wsl connection plugin - add option ``wsl_remote_ssh_shell_type``. Support
|
||||
PowerShell in addition to cmd as the Windows shell (https://github.com/ansible-collections/community.general/issues/11307,
|
||||
https://github.com/ansible-collections/community.general/pull/11308).
|
||||
- wsl connection plugin - replace aliased errors with proper Python error
|
||||
(https://github.com/ansible-collections/community.general/pull/11391).
|
||||
- wsl connection plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- xfs_quota - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- yaml cache plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- zone connection plugin - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11341).
|
||||
- zypper - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
- zypper_repository - update to Python 3.7 idioms (https://github.com/ansible-collections/community.general/pull/11344).
|
||||
release_summary: Regular feature and bugfix release.
|
||||
fragments:
|
||||
- 11114-nmcli-idempotency.yml
|
||||
- 11301-idrac-info-multi-manager.yml
|
||||
- 11308-wsl-shell-type.yml
|
||||
- 11322-handle-redfish-settings-in-setbootoverride.yml
|
||||
- 11340-cronvar-simplify-exc.yml
|
||||
- 11341-pyupgrade-1.yml
|
||||
- 11343-pyupgrade-3.yml
|
||||
- 11344-pyupgrade-4.yml
|
||||
- 11346-incus-readability.yml
|
||||
- 11347-incus-regex.yml
|
||||
- 11366-scaleway-sg-project-param.yml
|
||||
- 11368-scaleway-ip-project-param.yml
|
||||
- 11376-netcup-dns-diff-mode.yml
|
||||
- 11377-cloudflare_dns-caa.yml
|
||||
- 11388-pmem-redundant-regexps.yml
|
||||
- 11390-slackpkg-query.yml
|
||||
- 11391-ruff-cases-11.yml
|
||||
- 11396-in-def-imports.yml
|
||||
- 11413-nmcli-routing-rules6.yml
|
||||
- 11425-nsupdate-gss-tsig.yml
|
||||
- 11440-logstash-plugin-fix-version-argument-order.yml
|
||||
- 11442-gem-module-ruby-4.yml
|
||||
- 11443-fix-keycloak-client-diff-for-null-attributes.yml
|
||||
- 12.3.0.yml
|
||||
plugins:
|
||||
filter:
|
||||
- description: Convert variable to TOML string.
|
||||
name: to_toml
|
||||
namespace: null
|
||||
release_date: '2026-01-26'
|
||||
12.4.0:
|
||||
changes:
|
||||
bugfixes:
|
||||
- keycloak module utils - fix ``TypeError`` crash when managing users whose
|
||||
username or email contains special characters such as ``+`` (https://github.com/ansible-collections/community.general/issues/10305,
|
||||
https://github.com/ansible-collections/community.general/pull/11472).
|
||||
- keycloak module utils - use proper URL encoding (``urllib.parse.quote``)
|
||||
for query parameters in authorization permission name searches, replacing
|
||||
fragile manual space replacement (https://github.com/ansible-collections/community.general/pull/11472).
|
||||
- keycloak_client - fix idempotency bug caused by ``null`` flow overrides
|
||||
value differences for non-existing flow overrides (https://github.com/ansible-collections/community.general/issues/11430,
|
||||
https://github.com/ansible-collections/community.general/pull/11455).
|
||||
- keycloak_client - remove IDs as change from diff result for protocol mappers
|
||||
(https://github.com/ansible-collections/community.general/issues/11453,
|
||||
https://github.com/ansible-collections/community.general/pull/11454).
|
||||
- keycloak_realm_key - fix ``KeyError`` crash when managing realm keys where
|
||||
Keycloak does not return ``active``, ``enabled``, or ``algorithm`` fields
|
||||
in the config response (https://github.com/ansible-collections/community.general/issues/11459,
|
||||
https://github.com/ansible-collections/community.general/pull/11470).
|
||||
- keycloak_user_federation - mapper config item can be an array (https://github.com/ansible-collections/community.general/issues/11502,
|
||||
https://github.com/ansible-collections/community.general/pull/11515).
|
||||
- keycloak_user_rolemapping - fix ``TypeError`` crash when adding a client
|
||||
role to a user who has no existing roles for that client (https://github.com/ansible-collections/community.general/issues/10960,
|
||||
https://github.com/ansible-collections/community.general/pull/11471).
|
||||
- maven_artifact - fix SNAPSHOT version resolution to pick the newest matching
|
||||
``<snapshotVersion>`` entry by ``<updated>`` timestamp instead of the first.
|
||||
Repositories like GitHub Packages keep all historical entries in ``<snapshotVersions>``
|
||||
(oldest first), causing the module to resolve to the oldest snapshot instead
|
||||
of the latest (https://github.com/ansible-collections/community.general/issues/5117,
|
||||
https://github.com/ansible-collections/community.general/issues/11489, https://github.com/ansible-collections/community.general/pull/11501).
|
||||
- nsupdate - fix ``AttributeError`` when using the module without TSIG authentication
|
||||
(https://github.com/ansible-collections/community.general/issues/11460,
|
||||
https://github.com/ansible-collections/community.general/pull/11461).
|
||||
- python_requirements_info - use ``importlib.metadata`` if ``pkg_resources``
|
||||
from ``setuptools`` cannot be imported. That module has been removed from
|
||||
setuptools 82.0.0 (https://github.com/ansible-collections/community.general/issues/11491,
|
||||
https://github.com/ansible-collections/community.general/pull/11492).
|
||||
- splunk callback plugin - replace deprecated callback function (https://github.com/ansible-collections/community.general/pull/11485).
|
||||
minor_changes:
|
||||
- ModuleHelper module utils - allow to ignore specific exceptions in ``module_fails_on_exception``
|
||||
decorator (https://github.com/ansible-collections/community.general/pull/11488).
|
||||
- from_ini filter plugin - add ``delimiters`` parameter to allow correctly
|
||||
parsing more INI documents (https://github.com/ansible-collections/community.general/issues/11506,
|
||||
https://github.com/ansible-collections/community.general/pull/11512).
|
||||
- keycloak_client - add ``valid_post_logout_redirect_uris`` option to configure
|
||||
post logout redirect URIs for a client, and ``backchannel_logout_url`` option
|
||||
to configure the backchannel logout URL for a client (https://github.com/ansible-collections/community.general/issues/6812,
|
||||
https://github.com/ansible-collections/community.general/issues/4892, https://github.com/ansible-collections/community.general/pull/11473).
|
||||
- keycloak_client_rolemapping, keycloak_realm_rolemapping, keycloak_group
|
||||
- optimize retrieval of groups by name to use Keycloak search API with exact
|
||||
matching instead of fetching all groups (https://github.com/ansible-collections/community.general/pull/11503).
|
||||
- keycloak_realm - add support for ``localizationTexts`` option in Keycloak
|
||||
realms (https://github.com/ansible-collections/community.general/pull/11513).
|
||||
- keycloak_realm_key - add support for auto-generated key providers (``rsa-generated``,
|
||||
``rsa-enc-generated``, ``hmac-generated``, ``aes-generated``, ``ecdsa-generated``,
|
||||
``ecdh-generated``, ``eddsa-generated``), ``java-keystore`` provider, additional
|
||||
algorithms (HMAC, ECDSA, ECDH, EdDSA, AES), and new config options (``secret_size``,
|
||||
``key_size``, ``elliptic_curve``, ``keystore``, ``keystore_password``, ``key_alias``,
|
||||
``key_password``). Also makes ``config.private_key`` and ``config.certificate``
|
||||
optional as they are only required for imported key providers (https://github.com/ansible-collections/community.general/pull/11468).
|
||||
- redfish_info - add Redfish Root data to results of successful ``CheckAvailability``
|
||||
command (https://github.com/ansible-collections/community.general/pull/11504).
|
||||
- seport - adds support for DCCP and SCTP protocols (https://github.com/ansible-collections/community.general/pull/11486).
|
||||
release_summary: Regular bugfix and feature release.
|
||||
fragments:
|
||||
- 11430-fix-keycloak-client-diff-for-flow-overrides.yml
|
||||
- 11453-keycloak-client-protocol-mapper-ids.yml
|
||||
- 11485-avoid-deprected-callback.yml
|
||||
- 11486-seport-dccp-sctp.yaml
|
||||
- 11488-mh-ensure-compatibiliy-with-module-tests.yml
|
||||
- 11492-python_requires_info.yml
|
||||
- 11502-keycloak-config-mapper.yaml
|
||||
- 11503-keycloak-group-search-optimization.yml
|
||||
- 11504-redfish-info-add-results-to-return.yml
|
||||
- 11512-from_ini-delimiters.yaml
|
||||
- 11513-keycloak-realm-localizationTexts-support.yml
|
||||
- 12.4.0.yml
|
||||
- 5117-maven-artifact-snapshot-resolution.yml
|
||||
- fix-nsupdate-keyring.yml
|
||||
- keycloak-client-add-missing-fields.yml
|
||||
- keycloak-realm-key-generated-providers.yml
|
||||
- keycloak-realm-key-keyerror-bugfix.yml
|
||||
- keycloak-url-encode-query-params.yml
|
||||
- keycloak-user-rolemapping-client-none-check.yml
|
||||
modules:
|
||||
- description: Manages Icinga 2 downtimes.
|
||||
name: icinga2_downtime
|
||||
namespace: ''
|
||||
- description: Allows management of Keycloak realm localization overrides via
|
||||
the Keycloak API.
|
||||
name: keycloak_realm_localization
|
||||
namespace: ''
|
||||
plugins:
|
||||
callback:
|
||||
- description: Posts task results to an Azure Log Analytics workspace using
|
||||
the new Logs Ingestion API.
|
||||
name: loganalytics_ingestion
|
||||
namespace: null
|
||||
release_date: '2026-02-23'
|
||||
12.5.0:
|
||||
changes:
|
||||
bugfixes:
|
||||
- counter_enabled callback plugin - fix plugin not observing ``display_ok_hosts``
|
||||
option (https://github.com/ansible-collections/community.general/issues/3978,
|
||||
https://github.com/ansible-collections/community.general/pull/11656).
|
||||
- ipa_dnsrecord - fix idempotency bug when using ``dnsttl`` due to wrong Python
|
||||
types (https://github.com/ansible-collections/community.general/pull/11559).
|
||||
- keycloak_authentication - fix ``TypeError`` crash when a flow is defined
|
||||
without ``authenticationExecutions`` (https://github.com/ansible-collections/community.general/issues/11547,
|
||||
https://github.com/ansible-collections/community.general/pull/11548).
|
||||
- nictagadm - add a condition to the if statement so that ``is_valid_mac()``
|
||||
does not get called if ``etherstub`` is false (https://github.com/ansible-collections/community.general/pull/11589).
|
||||
- nmcli - add missing ``ipv6.routing-rules`` to ``settings_type()`` list type,
|
||||
preventing ``routing_rules6`` list from being corrupted (https://github.com/ansible-collections/community.general/issues/11630,
|
||||
https://github.com/ansible-collections/community.general/pull/11635).
|
||||
- open_iscsi - fix IPv6 portal address formatting; iscsiadm requires bracket
|
||||
notation for IPv6 addresses but the module was producing an incorrect format
|
||||
(https://github.com/ansible-collections/community.general/issues/4467, https://github.com/ansible-collections/community.general/pull/11657).
|
||||
- xfconf - representation of boolean properties was not consistent between
|
||||
Python and ``xfconf-query``, leading to broken idempotency (https://github.com/ansible-collections/community.general/pull/11645).
|
||||
deprecated_features:
|
||||
- aix_devices - module is superseded by equivalent in ``ibm.power_aix`` collection.
|
||||
It will be removed from community.general 15.0.0 (https://github.com/ansible-collections/community.general/issues/11290,
|
||||
https://github.com/ansible-collections/community.general/pull/11540).
|
||||
- aix_filesystem - module is superseded by equivalent in ``ibm.power_aix``
|
||||
collection. It will be removed from community.general 15.0.0 (https://github.com/ansible-collections/community.general/issues/11290,
|
||||
https://github.com/ansible-collections/community.general/pull/11540).
|
||||
- aix_inittab - module is superseded by equivalent in ``ibm.power_aix`` collection.
|
||||
It will be removed from community.general 15.0.0 (https://github.com/ansible-collections/community.general/issues/11290,
|
||||
https://github.com/ansible-collections/community.general/pull/11540).
|
||||
- aix_lvg - module is superseded by equivalent in ``ibm.power_aix`` collection.
|
||||
It will be removed from community.general 15.0.0 (https://github.com/ansible-collections/community.general/issues/11290,
|
||||
https://github.com/ansible-collections/community.general/pull/11540).
|
||||
- aix_lvol - module is superseded by equivalent in ``ibm.power_aix`` collection.
|
||||
It will be removed from community.general 15.0.0 (https://github.com/ansible-collections/community.general/issues/11290,
|
||||
https://github.com/ansible-collections/community.general/pull/11540).
|
||||
- monit - support for Monit version 5.18 or older is deprecated and will be
|
||||
removed in community.general 14.0.0 (https://github.com/ansible-collections/community.general/pull/11254).
|
||||
- puppet - the ``timeout`` parameter is deprecated and will be removed in
|
||||
community.general 14.0.0. (https://github.com/ansible-collections/community.general/pull/11658).
|
||||
minor_changes:
|
||||
- ansible_galaxy_install - add parameter ``executable`` (https://github.com/ansible-collections/community.general/issues/7261,
|
||||
https://github.com/ansible-collections/community.general/pull/11646).
|
||||
- api module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- bitbucket module utils - use Python-defined constants for HTTP return codes
|
||||
(https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- consul module utils - use Python-defined constants for HTTP return codes
|
||||
(https://github.com/ansible-collections/community.general/pull/11561, https://github.com/ansible-collections/community.general/pull/11573).
|
||||
- doas become plugin - add new option ``allow_pipelining`` to explicitly allow
|
||||
the use of pipelining with this plugin. This should only be set to ``true``
|
||||
with ansible-core 2.19+ when ``doas`` does not require a password (https://github.com/ansible-collections/community.general/issues/11411,
|
||||
https://github.com/ansible-collections/community.general/pull/11481).
|
||||
- gandi_livedns_api module utils - use Python-defined constants for HTTP return
|
||||
codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- github_app_access_token lookup plugin - use Python-defined constants for
|
||||
HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- hwc_utils module utils - use Python-defined constants for HTTP return codes
|
||||
(https://github.com/ansible-collections/community.general/pull/11561, https://github.com/ansible-collections/community.general/pull/11573).
|
||||
- icinga2 inventory plugin - use Python-defined constants for HTTP return
|
||||
codes (https://github.com/ansible-collections/community.general/pull/11561,
|
||||
https://github.com/ansible-collections/community.general/pull/11573).
|
||||
- incus inventory plugin - add support for constructing project-independent
|
||||
FQDNs (https://github.com/ansible-collections/community.general/pull/11555).
|
||||
- ipa module utils - use Python-defined constants for HTTP return codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- keycloak module utils - use Python-defined constants for HTTP return codes
|
||||
(https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- keycloak_realm - add ``first_broker_login_flow`` parameter (https://github.com/ansible-collections/community.general/pull/11622).
|
||||
- ldap_attrs - add ``binary_attributes`` and ``honor_binary`` parameters to
|
||||
handle binary attribute values (https://github.com/ansible-collections/community.general/pull/11558).
|
||||
- ldap_entry - add ``binary_attributes`` and ``honor_binary`` parameters to
|
||||
handle creating objects with attributes set to binary values (https://github.com/ansible-collections/community.general/pull/11558).
|
||||
- lookup plugin passwordstore - modernize internal ``check_output2()`` helper
|
||||
using ``subprocess.run()`` and rename it to ``run_backend_cmd()`` (https://github.com/ansible-collections/community.general/pull/11655).
|
||||
- memset module utils - use Python-defined constants for HTTP return codes
|
||||
(https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- merge_variables lookup plugin - extended merging capabilities added (https://github.com/ansible-collections/community.general/pull/11536).
|
||||
- nmcli - fix idempotency for MAC VLAN interfaces when using ``macvlan.tap``
|
||||
(https://github.com/ansible-collections/community.general/pull/11551).
|
||||
- nsupdate - replace ``list(map(...))`` constructs with Python comprehensions
|
||||
(https://github.com/ansible-collections/community.general/pull/11590).
|
||||
- ocapi_utils module utils - use Python-defined constants for HTTP return
|
||||
codes (https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- oci_utils module utils - use Python-defined constants for HTTP return codes
|
||||
(https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- online module utils - use Python-defined constants for HTTP return codes
|
||||
(https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- osx_defaults - add support for ``dict`` type values, including ``dict_mode``
|
||||
option to merge keys into an existing dictionary (https://github.com/ansible-collections/community.general/issues/238,
|
||||
https://github.com/ansible-collections/community.general/pull/11659).
|
||||
- redfish_utils module utils - use Python-defined constants for HTTP return
|
||||
codes (https://github.com/ansible-collections/community.general/pull/11561,
|
||||
https://github.com/ansible-collections/community.general/pull/11573).
|
||||
- rundeck module utils - use Python-defined constants for HTTP return codes
|
||||
(https://github.com/ansible-collections/community.general/pull/11561, https://github.com/ansible-collections/community.general/pull/11573).
|
||||
- scaleway module utils - use Python-defined constants for HTTP return codes
|
||||
(https://github.com/ansible-collections/community.general/pull/11561).
|
||||
- supervisorctl - added an additional condition for generating the error 'no
|
||||
such process' (https://github.com/ansible-collections/community.general/issues/11621,
|
||||
https://github.com/ansible-collections/community.general/pull/11632).
|
||||
- timezone - replace ``list(map(...))`` constructs with Python comprehensions
|
||||
(https://github.com/ansible-collections/community.general/pull/11590).
|
||||
- utm_utils module utils - use Python-defined constants for HTTP return codes
|
||||
(https://github.com/ansible-collections/community.general/pull/11561, https://github.com/ansible-collections/community.general/pull/11573).
|
||||
release_summary: Bugfix and feature release.
|
||||
fragments:
|
||||
- 11254-monit-deprecate-old.yml
|
||||
- 11481-doas-pipelining.yml
|
||||
- 11536-merge-variables-extended-merging-capabilities.yml
|
||||
- 11540-deprecate-aix.yml
|
||||
- 11551-fix-nmcli-idempotency-for-macvlan.yml
|
||||
- 11555-incus-domain-name.yml
|
||||
- 11558-binary-ldap-attributes.yml
|
||||
- 11559-fix-ipa_dnsrecord-fail-when-no-change.yaml
|
||||
- 11561-use-httpstatus-1.yml
|
||||
- 11584-keycloak-first-roker-login-parameter.yml
|
||||
- 11590-list-map.yml
|
||||
- 11621-skip-no_such_process-for-name-all.yml
|
||||
- 11630-nmcli-ipv6-routing-rules.yml
|
||||
- 11645-xfconf-bool.yml
|
||||
- 11646-galaxy-executable.yml
|
||||
- 11655-passwordstore-cleanup.yml
|
||||
- 11656-counter_enabled-display_ok_hosts.yml
|
||||
- 11657-open-iscsi-ipv6.yml
|
||||
- 11658-puppet-timeout-deprecation.yml
|
||||
- 11659-osx-defaults-dict.yml
|
||||
- 12.5.0.yml
|
||||
- keycloak-authentication-none-executions.yml
|
||||
- nictagadm-etherstub-nonetype-bugfix.yml
|
||||
modules:
|
||||
- description: Manage GitHub repository or organization secrets.
|
||||
name: github_secrets
|
||||
namespace: ''
|
||||
- description: List GitHub repository or organization secrets.
|
||||
name: github_secrets_info
|
||||
namespace: ''
|
||||
- description: Configure authentication flows in Keycloak in an idempotent and
|
||||
safe manner.
|
||||
name: keycloak_authentication_v2
|
||||
namespace: ''
|
||||
- description: Manage logrotate configurations.
|
||||
name: logrotate
|
||||
namespace: ''
|
||||
release_date: '2026-03-23'
|
||||
12.6.0:
|
||||
changes:
|
||||
bugfixes:
|
||||
- alternatives - normalize locale environment for ``run_command()`` calls
|
||||
to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- apache2_module - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running
|
||||
commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- apk - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``,
|
||||
``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- apt_repo - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11782).
|
||||
- apt_rpm - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``,
|
||||
``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- awall - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11784).
|
||||
- beadm - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11780).
|
||||
- bower - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11783).
|
||||
- btrfs module_utils - set ``LANGUAGE`` and ``LC_ALL`` environment variables
|
||||
to ``C`` in all ``run_command()`` calls (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11787).
|
||||
- bundler - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11783).
|
||||
- bzr - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11785).
|
||||
- capabilities - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11779).
|
||||
- cargo - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``,
|
||||
``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- composer - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands
|
||||
that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- cronvar - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands
|
||||
that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11773).
|
||||
- dconf - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands
|
||||
that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11765).
|
||||
- dnf_versionlock - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running
|
||||
commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11773).
|
||||
- dpkg_divert - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running
|
||||
commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11773).
|
||||
- easy_install - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11782).
|
||||
- etcd3 lookup plugin - improve HTTPS endpoint handling by stripping URL schemes
|
||||
from the ``host`` option and warning when ``ca_cert`` is not provided for
|
||||
HTTPS endpoints (https://github.com/ansible-collections/community.general/issues/1664,
|
||||
https://github.com/ansible-collections/community.general/pull/11861).
|
||||
- facter_facts - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running
|
||||
commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- filesystem - normalize locale environment for ``run_command()`` calls to
|
||||
``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- flatpak - fix removal of runtimes, which was broken because the module was
|
||||
filtering the installed flatpak list to apps only, so runtimes could never
|
||||
be matched for uninstallation (https://github.com/ansible-collections/community.general/issues/553,
|
||||
https://github.com/ansible-collections/community.general/pull/11688).
|
||||
- flatpak - support new output message when an update resulted in no action
|
||||
that appears on Fedora 44 (https://github.com/ansible-collections/community.general/pull/11836).
|
||||
- flatpak_remote - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running
|
||||
commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11773).
|
||||
- git_config - normalize locale environment for ``run_command()`` calls to
|
||||
``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- git_config_info - normalize locale environment for ``run_command()`` calls
|
||||
to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11738).
|
||||
- gitlab_project_members - fail with a clear error when multiple projects
|
||||
match the given name, instead of silently operating on the first result
|
||||
(https://github.com/ansible-collections/community.general/issues/2767, https://github.com/ansible-collections/community.general/pull/11851).
|
||||
- gitlab_project_variable - use ``find_project()`` from module utils for project
|
||||
lookup, consistent with all other GitLab modules in the collection (https://github.com/ansible-collections/community.general/issues/3157,
|
||||
https://github.com/ansible-collections/community.general/pull/11878).
|
||||
- hg - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands
|
||||
that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11773).
|
||||
- homebrew - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``,
|
||||
``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- homebrew_cask - fix ``sudo_password`` failing when the password contains
|
||||
single quotes or other special shell characters (https://github.com/ansible-collections/community.general/issues/4957,
|
||||
https://github.com/ansible-collections/community.general/pull/11850).
|
||||
- homebrew_cask - fix failure when ``brew --version`` returns a placeholder
|
||||
version string (https://github.com/ansible-collections/community.general/issues/4708,
|
||||
https://github.com/ansible-collections/community.general/pull/11849).
|
||||
- homebrew_cask - fix false task failure when upgrading casks with ``version=latest``;
|
||||
the post-upgrade check incorrectly re-ran ``brew outdated`` (which always
|
||||
lists ``latest`` casks as outdated under ``--greedy``), now uses the command
|
||||
exit code instead (https://github.com/ansible-collections/community.general/issues/1647,
|
||||
https://github.com/ansible-collections/community.general/pull/11838).
|
||||
- homebrew_cask - normalize locale environment for ``run_command()`` calls
|
||||
to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- homebrew_tap - fix ``None`` being passed as a command argument when adding
|
||||
a tap without a URL (https://github.com/ansible-collections/community.general/pull/11848).
|
||||
- homectl - allow to use passlib instead of legacycrypt for Python 3.13+ (https://github.com/ansible-collections/community.general/pull/11860).
|
||||
- homectl - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11774).
|
||||
- icinga2_feature - normalize locale environment for ``run_command()`` calls
|
||||
to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- imgadm - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- incus connection plugin - work when the active become plugin sets ``require_tty``
|
||||
instead of failing silently (https://github.com/ansible-collections/community.general/pull/11771).
|
||||
- ip_netns - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11779).
|
||||
- ipa module utils - fix failure to detect errors reported in the ``failed``
|
||||
field of the IPA API response, which is returned with HTTP 200 on partial
|
||||
or full failures in member add/remove operations (https://github.com/ansible-collections/community.general/issues/1239,
|
||||
https://github.com/ansible-collections/community.general/pull/11698).
|
||||
- ipa_dnsrecord - fix errors when module is used with existing record with
|
||||
default TTL (https://github.com/ansible-collections/community.general/pull/11717).
|
||||
- ipa_host - fix logic to disable existing hosts (https://github.com/ansible-collections/community.general/issues/11483,
|
||||
https://github.com/ansible-collections/community.general/pull/11487).
|
||||
- iptables_state - normalize locale environment for ``run_command()`` calls
|
||||
to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- iso_extract - retry ``umount`` up to 5 times preventing ``OSError`` on cleanup
|
||||
(https://github.com/ansible-collections/community.general/issues/5333, https://github.com/ansible-collections/community.general/pull/11837).
|
||||
- iso_extract - strip leading path separator from file entries so files with
|
||||
a leading ``/`` are extracted correctly (https://github.com/ansible-collections/community.general/issues/5283,
|
||||
https://github.com/ansible-collections/community.general/pull/11825).
|
||||
- java_cert - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11774).
|
||||
- java_keystore - normalize locale environment for ``run_command()`` calls
|
||||
to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- keyring - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11774).
|
||||
- keyring_info - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11786).
|
||||
- kibana_plugin - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11783).
|
||||
- known_hosts module utils - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set
|
||||
when running commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- launchd - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11774).
|
||||
- lbu - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- listen_ports_facts - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11774).
|
||||
- lldp - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11785).
|
||||
- locale_gen - add missing locale entries to ``/etc/locale.gen`` when not
|
||||
already present (https://github.com/ansible-collections/community.general/issues/2399,
|
||||
https://github.com/ansible-collections/community.general/pull/11824).
|
||||
- logrotate - adds missing default values for ``state`` and ``config_dir``
|
||||
parameters, and adds ``required_by`` declarations for shred and compression
|
||||
parameters (https://github.com/ansible-collections/community.general/pull/11764).
|
||||
- logrotate - fixes ``TypeError`` when ``shred_cycles`` is ``None`` and corrects
|
||||
``enabled=None`` handling in ``get_config_path()`` (https://github.com/ansible-collections/community.general/pull/11764).
|
||||
- logrotate - writes configuration files to a temporary file first and validates
|
||||
before atomically moving to the destination, and properly wraps all ``os.remove()``
|
||||
and ``atomic_move()`` calls in error handling (https://github.com/ansible-collections/community.general/pull/11764).
|
||||
- logstash_plugin - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11775).
|
||||
- lvg - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11775).
|
||||
- lvol - fix LVM version parsing (https://github.com/ansible-collections/community.general/issues/5445,
|
||||
https://github.com/ansible-collections/community.general/pull/11823).
|
||||
- lvol - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``,
|
||||
``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- lxc_container - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11779).
|
||||
- machinectl become plugin - prevent printing ANSI terminal color sequences
|
||||
(https://github.com/ansible-collections/community.general/pull/11771).
|
||||
- macports - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands
|
||||
that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- mas - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11775).
|
||||
- modprobe - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands
|
||||
that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- monit - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands
|
||||
that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- mssql_db - fail with a clear error message when a named instance (``server\instance``
|
||||
format) is used together with ``login_port``, since these are mutually exclusive
|
||||
connection methods (https://github.com/ansible-collections/community.general/issues/5693,
|
||||
https://github.com/ansible-collections/community.general/pull/11664).
|
||||
- mssql_script - fail with a clear error message when a named instance (``server\instance``
|
||||
format) is used together with ``login_port``, since these are mutually exclusive
|
||||
connection methods (https://github.com/ansible-collections/community.general/issues/5693,
|
||||
https://github.com/ansible-collections/community.general/pull/11664).
|
||||
- mssql_script - only passes ``params`` to ``cursor.execute()`` when the user
|
||||
actually provides them (https://github.com/ansible-collections/community.general/issues/11699,
|
||||
https://github.com/ansible-collections/community.general/pull/11754).
|
||||
- nmcli - use ``get_best_parsable_locale()`` to set locale environment for
|
||||
``run_command()`` calls, fixing UTF-8 connection names being corrupted to
|
||||
``????`` under ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/10384,
|
||||
https://github.com/ansible-collections/community.general/issues/11737, https://github.com/ansible-collections/community.general/pull/11742).
|
||||
- nsupdate - fix GSS-TSIG support (accidentally broken by https://github.com/ansible-collections/community.general/pull/11461,
|
||||
https://github.com/ansible-collections/community.general/pull/11712)
|
||||
- ohai - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11785).
|
||||
- onepassword_info - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11786).
|
||||
- open_iscsi - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running
|
||||
commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- openbsd_pkg - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running
|
||||
commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11767).
|
||||
- openwrt_init - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11784).
|
||||
- osx_defaults - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11775).
|
||||
- pacemaker_resource, pacemaker_stonith - fix resource and stonith creation
|
||||
race condition by polling PCS status (https://github.com/ansible-collections/community.general/issues/11574,
|
||||
https://github.com/ansible-collections/community.general/pull/11750).
|
||||
- pacman - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``,
|
||||
``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- pacman_key - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running
|
||||
commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- parted - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``,
|
||||
``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11740).
|
||||
- pear - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11782).
|
||||
- pip_package_info - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11784).
|
||||
- pkg5 - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11780).
|
||||
- pkg5_publisher - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11780).
|
||||
- pkgin - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``,
|
||||
``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- pkgng - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands
|
||||
that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11765).
|
||||
- pkgutil - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11775).
|
||||
- pnpm - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11776).
|
||||
- portage - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- portinstall - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- redhat_subscription - normalize locale environment for ``run_command()``
|
||||
calls to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- rhsm_release - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running
|
||||
commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- rhsm_repository - normalize locale environment for ``run_command()`` calls
|
||||
to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- riak - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11786).
|
||||
- rpm_ostree_pkg - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running
|
||||
commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- run0 become plugin - mark the plugin as incompatible with connection pipelining
|
||||
(see https://github.com/ansible/ansible/issues/81254, https://github.com/ansible-collections/community.general/pull/11771).
|
||||
- run0 become plugin - prevent printing ANSI terminal color sequences (https://github.com/ansible-collections/community.general/pull/11771).
|
||||
- runit - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``,
|
||||
``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- sefcontext - flush the in-process ``matchpathcon`` cache after applying
|
||||
changes, so subsequent tasks running in the same process (for example via
|
||||
the Mitogen connection plugin) see the updated SELinux file context rules
|
||||
instead of stale cached data (https://github.com/ansible-collections/community.general/issues/888,
|
||||
https://github.com/ansible-collections/community.general/pull/11812).
|
||||
- smartos_image_info - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- snmp_facts - the module now also supports pysnmp >= 7.1 (https://github.com/ansible-collections/community.general/issues/8852,
|
||||
https://github.com/ansible-collections/community.general/pull/11683).
|
||||
- sorcery - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running commands
|
||||
that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11767).
|
||||
- supervisorctl - normalize locale environment for ``run_command()`` calls
|
||||
to ``LANGUAGE=C``, ``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- svc - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``,
|
||||
``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- swdepot - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11780).
|
||||
- syspatch - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- sysrc - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11776).
|
||||
- sysupgrade - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running
|
||||
commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11768).
|
||||
- terraform - ensure ``LANGUAGE=C`` and ``LC_ALL=C`` are set when running
|
||||
commands that parse output (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11765).
|
||||
- timezone - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11776).
|
||||
- udm_user - allow to use passlib instead of legacycrypt for Python 3.13+
|
||||
(https://github.com/ansible-collections/community.general/issues/4690, https://github.com/ansible-collections/community.general/pull/11860).
|
||||
- udm_user - fix alias-to-canonical parameter name mismatch that caused all
|
||||
camelCase-aliased parameters such as ``display_name`` and ``primary_group``
|
||||
to be silently ignored (https://github.com/ansible-collections/community.general/issues/2950,
|
||||
https://github.com/ansible-collections/community.general/issues/3691, https://github.com/ansible-collections/community.general/pull/11859).
|
||||
- ufw - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``,
|
||||
``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- xattr - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11776).
|
||||
- xbps - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11781).
|
||||
- xenserver_guest - fix an issue where booting from ISO is not possible because
|
||||
CD-ROM device is placed in position above number 3. Position number 3 is
|
||||
now reserved for CD-ROM device and cannot be occupied by a disk (https://github.com/ansible-collections/community.general/issues/11624,
|
||||
https://github.com/ansible-collections/community.general/pull/11702).
|
||||
- yarn - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11776).
|
||||
- yum_versionlock - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11777).
|
||||
- zfs - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()`` calls
|
||||
to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11778).
|
||||
- zfs_delegate_admin - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11778).
|
||||
- zfs_facts - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11778).
|
||||
- zpool_facts - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11778).
|
||||
- zypper - normalize locale environment for ``run_command()`` calls to ``LANGUAGE=C``,
|
||||
``LC_ALL=C`` (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11741).
|
||||
- zypper_repository - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11777).
|
||||
- zypper_repository_info - set ``LANGUAGE`` and ``LC_ALL`` to ``C`` in ``run_command()``
|
||||
calls to ensure locale-independent output parsing (https://github.com/ansible-collections/community.general/issues/11737,
|
||||
https://github.com/ansible-collections/community.general/pull/11782).
|
||||
minor_changes:
|
||||
- cobbler_sync - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- cobbler_system - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- composer - add ``force`` parameter; when ``command=create-project``, the
|
||||
module now checks whether a ``composer.json`` already exists in ``working_dir``
|
||||
and skips the command if so, making the task idempotent. Set ``force=true``
|
||||
to always run the command regardless (https://github.com/ansible-collections/community.general/issues/725,
|
||||
https://github.com/ansible-collections/community.general/pull/11689).
|
||||
- consul_kv - add ``ca_path`` option to specify a CA bundle for HTTPS connections
|
||||
(https://github.com/ansible-collections/community.general/pull/11817).
|
||||
- consul_kv lookup plugin - add ``ca_path`` option to specify a CA bundle
|
||||
for HTTPS connections (https://github.com/ansible-collections/community.general/issues/2876,
|
||||
https://github.com/ansible-collections/community.general/pull/11817).
|
||||
- dconf - add support for C(dbus-broker) (https://github.com/ansible-collections/community.general/issues/495,
|
||||
https://github.com/ansible-collections/community.general/pull/11772).
|
||||
- filesystem - migrate ``LVM.get_fs_size()`` to use ``CmdRunner``, ensuring
|
||||
locale-independent output parsing (https://github.com/ansible-collections/community.general/pull/11888).
|
||||
- flatpak - add new parameter ``from_url`` to install a flatpak from a ``.flatpakref``
|
||||
URL (https://github.com/ansible-collections/community.general/issues/4000,
|
||||
https://github.com/ansible-collections/community.general/pull/11748).
|
||||
- gem - refactor module to use ``CmdRunner`` (https://github.com/ansible-collections/community.general/pull/11733).
|
||||
- homebrew_services - remove various redundancies including dead state validation,
|
||||
unused return values, and unnecessary locale environment variables (https://github.com/ansible-collections/community.general/pull/11839).
|
||||
- homebrew_tap - avoid redundant ``brew tap`` calls when processing multiple
|
||||
taps by fetching the tap list once upfront (https://github.com/ansible-collections/community.general/pull/11848).
|
||||
- ipa_dnsrecord - add ``exclusive`` parameter to allow appending values to
|
||||
existing records without replacing them (https://github.com/ansible-collections/community.general/issues/682,
|
||||
https://github.com/ansible-collections/community.general/pull/11694).
|
||||
- java_cert - support proxy authentication when ``https_proxy`` environment
|
||||
variable includes credentials (https://github.com/ansible-collections/community.general/issues/4126,
|
||||
https://github.com/ansible-collections/community.general/pull/11753).
|
||||
- jira - add ``cloud`` option to support Jira Cloud's new search endpoint
|
||||
``/rest/api/2/search/jql``, since the legacy ``/rest/api/2/search`` endpoint
|
||||
has been removed on Jira Cloud (https://github.com/ansible-collections/community.general/issues/10786,
|
||||
https://github.com/ansible-collections/community.general/pull/11701).
|
||||
- jira - when ``cloud=true``, user-type fields (``assignee``, ``reporter``,
|
||||
and any listed in the new ``custom_user_fields`` parameter) containing an
|
||||
email address are automatically resolved to Jira Cloud account IDs (https://github.com/ansible-collections/community.general/issues/11734,
|
||||
https://github.com/ansible-collections/community.general/pull/11735).
|
||||
- logrotate - adds optional ``backup`` parameter to create a backup of the
|
||||
existing configuration file before writing changes (https://github.com/ansible-collections/community.general/pull/11764).
|
||||
- lvg - migrate to ``CmdRunner``, removing direct ``run_command`` calls and
|
||||
``run_command_environ_update`` (https://github.com/ansible-collections/community.general/pull/11835).
|
||||
- lvm_pv - migrate to ``CmdRunner`` using shared runners from ``module_utils/_lvm``
|
||||
(https://github.com/ansible-collections/community.general/pull/11811).
|
||||
- lvol - migrate to ``CmdRunner`` (https://github.com/ansible-collections/community.general/pull/11887).
|
||||
- manageiq module utils - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- manageiq_alert_profiles - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- manageiq_alerts - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- oneview module utils - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- oneview_san_manager - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- opendj_backendprop - refactor to use ``CmdRunner`` (https://github.com/ansible-collections/community.general/pull/11728).
|
||||
- packet_device - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- packet_ip_subnet - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- pacman - add ``root``, ``cachedir``, and ``config`` options to support installing
|
||||
packages into an alternative root directory (https://github.com/ansible-collections/community.general/issues/438,
|
||||
https://github.com/ansible-collections/community.general/pull/11681).
|
||||
- parted - add ``unit_preserve_case`` option to control the case of the ``unit``
|
||||
field in the return value, fixing the round-trip use case where the returned
|
||||
unit is fed back as input (https://github.com/ansible-collections/community.general/issues/1860,
|
||||
https://github.com/ansible-collections/community.general/pull/11813).
|
||||
- pubnub_blocks - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- terraform - minor code cleanup (https://github.com/ansible-collections/community.general/pull/11879).
|
||||
- xenserver_guest - use ``enumerate()`` instead of manual index variable in
|
||||
``for`` loop (https://github.com/ansible-collections/community.general/pull/11721).
|
||||
release_summary: Regular bugfix and feature release.
|
||||
fragments:
|
||||
- 10786-jira-cloud-search.yml
|
||||
- 11487-ipa-host-fix-disable.yml
|
||||
- 11664-mssql-named-instance-port.yml
|
||||
- 11681-pacman-root-cachedir-config.yml
|
||||
- 11688-flatpak-fix-runtime-removal.yml
|
||||
- 11689-composer-create-project-idempotent.yml
|
||||
- 11698-ipa-failed-response.yml
|
||||
- 11702-xenserver_guest-cdrom-handling-fix.yml
|
||||
- 11717-fix-error-dnsttl.yml
|
||||
- 11721-xenserver-guest-codeqa.yml
|
||||
- 11728-opendj_backendprop-cmdrunner.yml
|
||||
- 11733-gem-cmd-runner.yml
|
||||
- 11734-jira-cloud-assignee-email-resolution.yml
|
||||
- 11738-run-command-locale-group3-batch1.yml
|
||||
- 11740-run-command-locale-group3-batch2.yml
|
||||
- 11741-run-command-locale-group3-batch3.yml
|
||||
- 11742-run-command-locale-nmcli.yml
|
||||
- 11748-flatpak-from-url.yml
|
||||
- 11750-pacemaker-wait-race-condition.yml
|
||||
- 11753-java-cert-proxy-auth.yml
|
||||
- 11754-mssql-script-params-substitution.yml
|
||||
- 11764-logrotate-fixes.yml
|
||||
- 11765-group4-locale.yml
|
||||
- 11767-group4-batch2-locale.yml
|
||||
- 11768-group5-batch1-locale.yml
|
||||
- 11771-incus-machinectl-run0-become-pty.yml
|
||||
- 11772-dconf-dbus-broker.yml
|
||||
- 11773-group5-batch2-locale.yml
|
||||
- 11774-group5-batch3-locale.yml
|
||||
- 11775-group5-batch4-locale.yml
|
||||
- 11776-group5-batch5-locale.yml
|
||||
- 11777-group5-batch6-locale.yml
|
||||
- 11778-group5-batch7-locale.yml
|
||||
- 11779-group5-batch8-locale.yml
|
||||
- 11780-group5-batch9-locale.yml
|
||||
- 11781-group5-batch10-locale.yml
|
||||
- 11782-group5-batch11-locale.yml
|
||||
- 11783-group5-batch12-locale.yml
|
||||
- 11784-group5-batch13-locale.yml
|
||||
- 11785-group5-batch14-locale.yml
|
||||
- 11786-group5-batch15-locale.yml
|
||||
- 11787-group5-batch16-locale.yml
|
||||
- 11811-lvm_pv-use-cmdrunner.yml
|
||||
- 11812-sefcontext-matchpathcon-cache-flush.yml
|
||||
- 11813-parted-unit-preserve-case.yml
|
||||
- 11817-consul-kv-ca-path.yml
|
||||
- 11823-lvol-lvm-version-regex.yml
|
||||
- 11824-locale-gen-gentoo.yml
|
||||
- 11825-iso-extract-leading-slash.yml
|
||||
- 11835-lvg-use-cmdrunner.yml
|
||||
- 11836-fixes.yml
|
||||
- 11837-iso-extract-umount-retry.yml
|
||||
- 11838-homebrew-cask-upgrade-latest.yml
|
||||
- 11839-homebrew-services-cleanup.yml
|
||||
- 11848-homebrew-tap-fixes.yml
|
||||
- 11849-homebrew-cask-brew-version.yml
|
||||
- 11850-homebrew-cask-sudo-password.yml
|
||||
- 11851-gitlab-project-members-ambiguous.yml
|
||||
- 11859-udm_user-param-name-fix.yml
|
||||
- 11860-udm_user-replace-crypt.yml
|
||||
- 11861-etcd3-lookup-https.yml
|
||||
- 11878-gitlab_project_variable-find_project.yml
|
||||
- 11879-convert-format-to-fstrings.yml
|
||||
- 11887-lvol-use-cmdrunner.yml
|
||||
- 11888-filesystem-use-cmdrunner.yml
|
||||
- 12.6.0.yml
|
||||
- 682-ipa-dnsrecord-solo.yml
|
||||
- 8852-snmp-facts-pysnmp7.yml
|
||||
- fix-nsupdate-gss-tsig.yml
|
||||
modules:
|
||||
- description: Manages snap interface connections.
|
||||
name: snap_connect
|
||||
namespace: ''
|
||||
release_date: '2026-04-20'
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- scaleway_image_info, scaleway_ip_info, scaleway_organization_info, scaleway_security_group_info, scaleway_server_info, scaleway_snapshot_info, scaleway_volume_info - fix ``NoneType`` error when the Scaleway API returns an empty or non-JSON response body (https://github.com/ansible-collections/community.general/issues/11361, https://github.com/ansible-collections/community.general/pull/11918).
|
||||
2
changelogs/fragments/11909-fix-favicon-url.yml
Normal file
2
changelogs/fragments/11909-fix-favicon-url.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- "mattermost, rocketchat, slack - update default ``icon_url`` to ansible favicon (https://github.com/ansible-collections/community.general/pull/11909)."
|
||||
@@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- crypttab - fix parsing of options whose value contains an equal sign (https://github.com/ansible-collections/community.general/issues/4963, https://github.com/ansible-collections/community.general/pull/11926).
|
||||
1
changelogs/fragments/12.6.1.yml
Normal file
1
changelogs/fragments/12.6.1.yml
Normal file
@@ -0,0 +1 @@
|
||||
release_summary: Regular bugfix release.
|
||||
@@ -8,6 +8,9 @@ sections:
|
||||
toctree:
|
||||
- filter_guide
|
||||
- test_guide
|
||||
- title: Deployment Guides
|
||||
toctree:
|
||||
- guide_ee
|
||||
- title: Technology Guides
|
||||
toctree:
|
||||
- guide_alicloud
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
import sys
|
||||
from io import StringIO
|
||||
|
||||
from ruamel.yaml import YAML
|
||||
from ruamel.yaml import YAML # type: ignore[import-not-found]
|
||||
|
||||
|
||||
def main() -> None:
|
||||
|
||||
114
docs/docsite/rst/guide_ee.rst
Normal file
114
docs/docsite/rst/guide_ee.rst
Normal file
@@ -0,0 +1,114 @@
|
||||
..
|
||||
Copyright (c) Ansible Project
|
||||
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
.. _ansible_collections.community.general.docsite.guide_ee:
|
||||
|
||||
Execution Environment Guide
|
||||
===========================
|
||||
|
||||
`Ansible Execution Environments <https://docs.ansible.com/projects/ansible/latest/getting_started_ee/index.html>`_
|
||||
(EEs) are container images that bundle ansible-core, collections, and their Python and system dependencies.
|
||||
They are the standard runtime for Red Hat Ansible Automation Platform and AWX, replacing the older virtualenv model.
|
||||
They can also be used outside of RHAAP and AWX by using `ansible-navigator <https://docs.ansible.com/projects/navigator/>`__, or by using ansible-runner directly.
|
||||
|
||||
What runs in the EE
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Only **controller-side plugins** run inside the EE. Their Python and system dependencies must be installed there.
|
||||
This includes: lookup plugins, inventory plugins, callback plugins, connection plugins, become plugins, and filter plugins.
|
||||
|
||||
Modules run on the managed nodes and are transferred there at runtime — their dependencies must be present on the
|
||||
target, not in the EE.
|
||||
|
||||
.. note::
|
||||
|
||||
Modules delegated to ``localhost`` (for example, those that interact with a remote API) are an exception:
|
||||
they run on the controller and their dependencies must therefore be available in the EE.
|
||||
|
||||
Why community.general does not provide EE metadata
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
``community.general`` ships dozens of controller-side plugins covering a very broad range of technologies.
|
||||
Bundling the dependencies for all of them into a single EE image would almost certainly create irreconcilable
|
||||
conflicts — both within the collection and with other collections or tools (such as ``ansible-lint``) that
|
||||
share the same image.
|
||||
|
||||
For that reason, ``community.general`` does **not** provide Python or system package dependency metadata.
|
||||
Users are expected to build purpose-built, minimal EEs containing only the dependencies
|
||||
required by the specific plugins they actually use.
|
||||
|
||||
Finding the dependencies you need
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Every plugin that has external dependencies documents them in its ``requirements`` field.
|
||||
You can inspect those with ``ansible-doc``:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
$ ansible-doc -t lookup community.general.some_lookup | grep -A 10 "REQUIREMENTS"
|
||||
|
||||
Or browse the plugin's documentation page on `docs.ansible.com <https://docs.ansible.com/ansible/latest/collections/community/general/>`_.
|
||||
|
||||
For example, a lookup plugin that wraps an external service might list:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
requirements:
|
||||
- some-python-library >= 1.2
|
||||
|
||||
An inventory plugin backed by a REST API might list:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
requirements:
|
||||
- requests
|
||||
- some-sdk
|
||||
|
||||
These are the packages you need to add to your EE.
|
||||
|
||||
Building a minimal EE with ansible-builder
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
`ansible-builder <https://docs.ansible.com/projects/builder/en/latest/>`_ is the standard tool for creating EEs.
|
||||
|
||||
Install it with:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
$ pip install ansible-builder
|
||||
|
||||
Create an ``execution-environment.yml`` **in your own project** — not inside ``community.general`` —
|
||||
that includes only the dependencies needed for the plugins you use:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
version: 3
|
||||
|
||||
dependencies:
|
||||
galaxy:
|
||||
collections:
|
||||
- name: community.general
|
||||
python:
|
||||
- some-python-library>=1.2
|
||||
- requests
|
||||
system:
|
||||
- libxml2-devel [platform:rpm]
|
||||
|
||||
images:
|
||||
base_image:
|
||||
name: ghcr.io/ansible/community-ee-base:latest
|
||||
|
||||
Then build the image:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
$ ansible-builder build -t my-custom-ee:latest
|
||||
|
||||
.. seealso::
|
||||
|
||||
- `ansible-builder documentation <https://docs.ansible.com/projects/builder/en/latest/>`_
|
||||
- `Building EEs with ansible-builder <https://ansible-builder.readthedocs.io/en/latest/definition/>`_
|
||||
- `Issue #2968 — original request for EE requirements support <https://github.com/ansible-collections/community.general/issues/2968>`_
|
||||
- `Issue #4512 — design discussion for EE support in community.general <https://github.com/ansible-collections/community.general/issues/4512>`_
|
||||
@@ -12,7 +12,7 @@ The inventory plugin :ansplugin:`community.general.iocage#inventory` gets the in
|
||||
|
||||
See:
|
||||
|
||||
* `iocage - A FreeBSD Jail Manager <https://iocage.readthedocs.io/en/latest>`_
|
||||
* `iocage - A FreeBSD Jail Manager <https://freebsd.github.io/iocage/>`_
|
||||
* `man iocage <https://man.freebsd.org/cgi/man.cgi?query=iocage>`_
|
||||
* `Jails and Containers <https://docs.freebsd.org/en/books/handbook/jails>`_
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ As root at the iocage host, create three VNET jails with a DHCP interface from t
|
||||
shell> iocage create --template ansible_client --name srv_3 bpf=1 dhcp=1 vnet=1
|
||||
srv_3 successfully created!
|
||||
|
||||
See: `Configuring a VNET Jail <https://iocage.readthedocs.io/en/latest/networking.html#configuring-a-vnet-jail>`_.
|
||||
See: `Configuring VNET <https://freebsd.github.io/iocage/networking.html#vimage-vnet>`_.
|
||||
|
||||
As admin at the controller, list the jails:
|
||||
|
||||
@@ -115,7 +115,7 @@ Optionally, create shared IP jails:
|
||||
| None | srv_3 | off | down | jail | 14.2-RELEASE-p3 | em0|10.1.0.103/24 | - | ansible_client | no |
|
||||
+------+-------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
|
||||
|
||||
See: `Configuring a Shared IP Jail <https://iocage.readthedocs.io/en/latest/networking.html#configuring-a-shared-ip-jail>`_
|
||||
See: `Configuring a Shared IP Jail <https://freebsd.github.io/iocage/networking.html#shared-ip>`_
|
||||
|
||||
If iocage needs environment variable(s), use the option :ansopt:`community.general.iocage#inventory:env`. For example,
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
namespace: community
|
||||
name: general
|
||||
version: 12.2.0
|
||||
version: 12.6.1
|
||||
readme: README.md
|
||||
authors:
|
||||
- Ansible (https://github.com/ansible)
|
||||
@@ -19,3 +19,5 @@ repository: https://github.com/ansible-collections/community.general
|
||||
documentation: https://docs.ansible.com/projects/ansible/latest/collections/community/general/
|
||||
homepage: https://github.com/ansible-collections/community.general
|
||||
issues: https://github.com/ansible-collections/community.general/issues
|
||||
build_ignore:
|
||||
- .nox
|
||||
|
||||
@@ -21,6 +21,7 @@ action_groups:
|
||||
keycloak:
|
||||
- keycloak_authentication
|
||||
- keycloak_authentication_required_actions
|
||||
- keycloak_authentication_v2
|
||||
- keycloak_authz_authorization_scope
|
||||
- keycloak_authz_custom_policy
|
||||
- keycloak_authz_permission
|
||||
@@ -40,6 +41,7 @@ action_groups:
|
||||
- keycloak_realm
|
||||
- keycloak_realm_key
|
||||
- keycloak_realm_keys_metadata_info
|
||||
- keycloak_realm_localization
|
||||
- keycloak_realm_rolemapping
|
||||
- keycloak_role
|
||||
- keycloak_user
|
||||
@@ -370,6 +372,26 @@ plugin_routing:
|
||||
tombstone:
|
||||
removal_version: 3.0.0
|
||||
warning_text: Use community.general.hpilo_info instead.
|
||||
aix_devices:
|
||||
deprecation:
|
||||
removal_version: 15.0.0
|
||||
warning_text: Use ibm.power_aix.devices instead. The C(ibm.power_aix) collection is actively maintained by IBM.
|
||||
aix_filesystem:
|
||||
deprecation:
|
||||
removal_version: 15.0.0
|
||||
warning_text: Use ibm.power_aix.filesystem instead. The C(ibm.power_aix) collection is actively maintained by IBM.
|
||||
aix_inittab:
|
||||
deprecation:
|
||||
removal_version: 15.0.0
|
||||
warning_text: Use ibm.power_aix.inittab instead. The C(ibm.power_aix) collection is actively maintained by IBM.
|
||||
aix_lvg:
|
||||
deprecation:
|
||||
removal_version: 15.0.0
|
||||
warning_text: Use ibm.power_aix.lvg instead. The C(ibm.power_aix) collection is actively maintained by IBM.
|
||||
aix_lvol:
|
||||
deprecation:
|
||||
removal_version: 15.0.0
|
||||
warning_text: Use ibm.power_aix.lvol instead. The C(ibm.power_aix) collection is actively maintained by IBM.
|
||||
idrac_firmware:
|
||||
redirect: dellemc.openmanage.idrac_firmware
|
||||
idrac_redfish_facts:
|
||||
@@ -378,6 +400,10 @@ plugin_routing:
|
||||
warning_text: Use community.general.idrac_redfish_info instead.
|
||||
idrac_server_config_profile:
|
||||
redirect: dellemc.openmanage.idrac_server_config_profile
|
||||
jboss:
|
||||
deprecation:
|
||||
removal_version: 14.0.0
|
||||
warning_text: Use role middleware_automation.wildfly.wildfly_app_deploy instead.
|
||||
jenkins_job_facts:
|
||||
tombstone:
|
||||
removal_version: 3.0.0
|
||||
|
||||
@@ -9,14 +9,14 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
import nox
|
||||
import nox # type: ignore[import-not-found]
|
||||
|
||||
# Whether the noxfile is running in CI:
|
||||
IN_CI = os.environ.get("CI") == "true"
|
||||
|
||||
|
||||
try:
|
||||
import antsibull_nox
|
||||
import antsibull_nox # type: ignore[import-not-found]
|
||||
except ImportError:
|
||||
print("You need to install antsibull-nox in the same Python environment as nox.")
|
||||
sys.exit(1)
|
||||
|
||||
@@ -7,10 +7,10 @@ from __future__ import annotations
|
||||
import time
|
||||
import typing as t
|
||||
|
||||
from ansible.plugins.action import ActionBase
|
||||
from ansible.errors import AnsibleActionFail, AnsibleConnectionFailure
|
||||
from ansible.utils.vars import merge_hash
|
||||
from ansible.plugins.action import ActionBase
|
||||
from ansible.utils.display import Display
|
||||
from ansible.utils.vars import merge_hash
|
||||
|
||||
display = Display()
|
||||
|
||||
|
||||
@@ -6,12 +6,11 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
import typing as t
|
||||
|
||||
from ansible.errors import AnsibleError, AnsibleConnectionFailure
|
||||
from ansible.module_utils.common.text.converters import to_native, to_text
|
||||
from ansible.errors import AnsibleConnectionFailure, AnsibleError
|
||||
from ansible.module_utils.common.collections import is_string
|
||||
from ansible.module_utils.common.text.converters import to_native, to_text
|
||||
from ansible.plugins.action import ActionBase
|
||||
from ansible.utils.display import Display
|
||||
|
||||
|
||||
@@ -82,9 +82,26 @@ options:
|
||||
- name: ansible_doas_prompt_l10n
|
||||
env:
|
||||
- name: ANSIBLE_DOAS_PROMPT_L10N
|
||||
allow_pipelining:
|
||||
description:
|
||||
- When set to V(true), do allow pipelining with ansible-core 2.19+.
|
||||
- This should only be used when doas is configured to not ask for a password (C(nopass)).
|
||||
type: boolean
|
||||
default: false
|
||||
version_added: 12.4.0
|
||||
ini:
|
||||
- section: doas_become_plugin
|
||||
key: allow_pipelining
|
||||
vars:
|
||||
- name: ansible_doas_allow_pipelining
|
||||
env:
|
||||
- name: ANSIBLE_DOAS_ALLOW_PIPELINING
|
||||
notes:
|
||||
- This become plugin does not work when connection pipelining is enabled. With ansible-core 2.19+, using it automatically
|
||||
disables pipelining. On ansible-core 2.18 and before, pipelining must explicitly be disabled by the user.
|
||||
- This become plugin does not work when connection pipelining is enabled
|
||||
and doas requests a password.
|
||||
With ansible-core 2.19+, using this plugin automatically disables pipelining,
|
||||
unless O(allow_pipelining=true) is explicitly set by the user.
|
||||
On ansible-core 2.18 and before, pipelining must explicitly be disabled by the user.
|
||||
"""
|
||||
|
||||
import re
|
||||
@@ -101,8 +118,11 @@ class BecomeModule(BecomeBase):
|
||||
missing = ("Authorization required",)
|
||||
|
||||
# See https://github.com/ansible-collections/community.general/issues/9977,
|
||||
# https://github.com/ansible/ansible/pull/78111
|
||||
pipelining = False
|
||||
# https://github.com/ansible/ansible/pull/78111,
|
||||
# https://github.com/ansible-collections/community.general/issues/11411
|
||||
@property
|
||||
def pipelining(self) -> bool: # type: ignore[override]
|
||||
return self.get_option("allow_pipelining")
|
||||
|
||||
def check_password_prompt(self, b_output):
|
||||
"""checks if the expected password prompt exists in b_output"""
|
||||
|
||||
@@ -92,9 +92,8 @@ EXAMPLES = r"""
|
||||
|
||||
from re import compile as re_compile
|
||||
|
||||
from ansible.plugins.become import BecomeBase
|
||||
from ansible.module_utils.common.text.converters import to_bytes
|
||||
|
||||
from ansible.plugins.become import BecomeBase
|
||||
|
||||
ansi_color_codes = re_compile(to_bytes(r"\x1B\[[0-9;]+m"))
|
||||
|
||||
@@ -125,7 +124,10 @@ class BecomeModule(BecomeBase):
|
||||
|
||||
flags = self.get_option("become_flags")
|
||||
user = self.get_option("become_user")
|
||||
return f"{become} -q shell {flags} {user}@ {self._build_success_command(cmd, shell)}"
|
||||
# SYSTEMD_COLORS=0 stops machinectl from appending ANSI reset
|
||||
# sequences (ESC[0m, ESC[J) after the child exits, which would
|
||||
# otherwise land after the module JSON and break result parsing.
|
||||
return f"SYSTEMD_COLORS=0 {become} -q shell {flags} {user}@ {self._build_success_command(cmd, shell)}"
|
||||
|
||||
def check_success(self, b_output):
|
||||
b_output = self.remove_ansi_codes(b_output)
|
||||
|
||||
@@ -59,6 +59,7 @@ notes:
|
||||
"""
|
||||
|
||||
from shlex import quote as shlex_quote
|
||||
|
||||
from ansible.plugins.become import BecomeBase
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
DOCUMENTATION = r"""
|
||||
name: run0
|
||||
short_description: Systemd's run0
|
||||
@@ -61,6 +60,8 @@ options:
|
||||
type: string
|
||||
notes:
|
||||
- This plugin only works when a C(polkit) rule is in place.
|
||||
- This become plugin does not work when connection pipelining is enabled. With ansible-core 2.19+, using it automatically
|
||||
disables pipelining. On ansible-core 2.18 and before, pipelining must explicitly be disabled by the user.
|
||||
"""
|
||||
|
||||
EXAMPLES = r"""
|
||||
@@ -78,8 +79,8 @@ EXAMPLES = r"""
|
||||
|
||||
from re import compile as re_compile
|
||||
|
||||
from ansible.plugins.become import BecomeBase
|
||||
from ansible.module_utils.common.text.converters import to_bytes
|
||||
from ansible.plugins.become import BecomeBase
|
||||
|
||||
ansi_color_codes = re_compile(to_bytes(r"\x1B\[[0-9;]+m"))
|
||||
|
||||
@@ -92,6 +93,10 @@ class BecomeModule(BecomeBase):
|
||||
success = ("==== AUTHENTICATION COMPLETE ====",)
|
||||
require_tty = True # see https://github.com/ansible-collections/community.general/issues/6932
|
||||
|
||||
# See https://github.com/ansible/ansible/issues/81254,
|
||||
# https://github.com/ansible/ansible/pull/78111
|
||||
pipelining = False
|
||||
|
||||
@staticmethod
|
||||
def remove_ansi_codes(line):
|
||||
return ansi_color_codes.sub(b"", line)
|
||||
@@ -106,7 +111,11 @@ class BecomeModule(BecomeBase):
|
||||
flags = self.get_option("become_flags")
|
||||
user = self.get_option("become_user")
|
||||
|
||||
return f"{become} --user={user} {flags} {self._build_success_command(cmd, shell)}"
|
||||
# SYSTEMD_COLORS=0 stops run0 from emitting terminal control
|
||||
# sequences (window title OSC, ANSI reset) around the child
|
||||
# command, which would otherwise corrupt the module JSON and
|
||||
# break result parsing.
|
||||
return f"SYSTEMD_COLORS=0 {become} --user={user} {flags} {self._build_success_command(cmd, shell)}"
|
||||
|
||||
def check_success(self, b_output):
|
||||
b_output = self.remove_ansi_codes(b_output)
|
||||
|
||||
4
plugins/cache/memcached.py
vendored
4
plugins/cache/memcached.py
vendored
@@ -49,11 +49,11 @@ options:
|
||||
import collections
|
||||
import os
|
||||
import time
|
||||
from multiprocessing import Lock
|
||||
from collections.abc import MutableSet
|
||||
from itertools import chain
|
||||
from multiprocessing import Lock
|
||||
|
||||
from ansible.errors import AnsibleError
|
||||
from collections.abc import MutableSet
|
||||
from ansible.plugins.cache import BaseCacheModule
|
||||
from ansible.utils.display import Display
|
||||
|
||||
|
||||
6
plugins/cache/redis.py
vendored
6
plugins/cache/redis.py
vendored
@@ -66,17 +66,17 @@ options:
|
||||
section: defaults
|
||||
"""
|
||||
|
||||
import json
|
||||
import re
|
||||
import time
|
||||
import json
|
||||
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.parsing.ajson import AnsibleJSONEncoder, AnsibleJSONDecoder
|
||||
from ansible.parsing.ajson import AnsibleJSONDecoder, AnsibleJSONEncoder
|
||||
from ansible.plugins.cache import BaseCacheModule
|
||||
from ansible.utils.display import Display
|
||||
|
||||
try:
|
||||
from redis import StrictRedis, VERSION
|
||||
from redis import VERSION, StrictRedis
|
||||
|
||||
HAS_REDIS = True
|
||||
except ImportError:
|
||||
|
||||
5
plugins/cache/yaml.py
vendored
5
plugins/cache/yaml.py
vendored
@@ -46,9 +46,8 @@ options:
|
||||
import os
|
||||
|
||||
import yaml
|
||||
|
||||
from ansible.parsing.yaml.loader import AnsibleLoader
|
||||
from ansible.parsing.yaml.dumper import AnsibleDumper
|
||||
from ansible.parsing.yaml.loader import AnsibleLoader
|
||||
from ansible.plugins.cache import BaseFileCacheModule
|
||||
|
||||
|
||||
@@ -58,7 +57,7 @@ class CacheModule(BaseFileCacheModule):
|
||||
"""
|
||||
|
||||
def _load(self, filepath):
|
||||
with open(os.path.abspath(filepath), "r", encoding="utf-8") as f:
|
||||
with open(os.path.abspath(filepath), encoding="utf-8") as f:
|
||||
return AnsibleLoader(f).get_single_data()
|
||||
|
||||
def _dump(self, value, filepath):
|
||||
|
||||
@@ -41,8 +41,8 @@ options:
|
||||
key: cur_mem_file
|
||||
"""
|
||||
|
||||
import time
|
||||
import threading
|
||||
import time
|
||||
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
|
||||
|
||||
@@ -23,9 +23,9 @@ requirements:
|
||||
"""
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible.playbook.task_include import TaskInclude
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
from ansible.utils.color import colorize, hostcolor
|
||||
from ansible.playbook.task_include import TaskInclude
|
||||
|
||||
|
||||
class CallbackModule(CallbackBase):
|
||||
@@ -157,6 +157,8 @@ class CallbackModule(CallbackBase):
|
||||
msg = f"changed: {self._host_counter}/{self._host_total} [{result._host.get_name()}]"
|
||||
color = C.COLOR_CHANGED
|
||||
else:
|
||||
if not self._plugin_options.get("display_ok_hosts", True):
|
||||
return
|
||||
if delegated_vars:
|
||||
msg = f"ok: {self._host_counter}/{self._host_total} [{result._host.get_name()} -> {delegated_vars['ansible_host']}]"
|
||||
else:
|
||||
|
||||
@@ -27,13 +27,13 @@ try:
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
import sys
|
||||
from collections.abc import MutableMapping, MutableSequence
|
||||
|
||||
from ansible.plugins.callback.default import CallbackModule as CallbackModule_default
|
||||
from ansible.utils.color import colorize, hostcolor
|
||||
from ansible.utils.display import Display
|
||||
|
||||
import sys
|
||||
|
||||
display = Display()
|
||||
|
||||
|
||||
|
||||
@@ -778,10 +778,11 @@ playbook.yml: >-
|
||||
|
||||
import sys
|
||||
from contextlib import contextmanager
|
||||
|
||||
from ansible.module_utils.common.text.converters import to_text
|
||||
from ansible.plugins.callback.default import CallbackModule as Default
|
||||
from ansible.template import Templar
|
||||
from ansible.vars.manager import VariableManager
|
||||
from ansible.plugins.callback.default import CallbackModule as Default
|
||||
from ansible.module_utils.common.text.converters import to_text
|
||||
|
||||
try:
|
||||
from ansible.template import trust_as_template # noqa: F401, pylint: disable=unused-import
|
||||
|
||||
@@ -81,7 +81,6 @@ import getpass
|
||||
import socket
|
||||
import time
|
||||
import uuid
|
||||
|
||||
from collections import OrderedDict
|
||||
from contextlib import closing
|
||||
from os.path import basename
|
||||
@@ -92,7 +91,7 @@ from ansible.plugins.callback import CallbackBase
|
||||
|
||||
ELASTIC_LIBRARY_IMPORT_ERROR: ImportError | None
|
||||
try:
|
||||
from elasticapm import Client, capture_span, trace_parent_from_string, instrument, label
|
||||
from elasticapm import Client, capture_span, instrument, label, trace_parent_from_string
|
||||
except ImportError as imp_exc:
|
||||
ELASTIC_LIBRARY_IMPORT_ERROR = imp_exc
|
||||
else:
|
||||
|
||||
@@ -27,16 +27,15 @@ options:
|
||||
key: log_folder
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import time
|
||||
import json
|
||||
|
||||
from ansible.utils.path import makedirs_safe
|
||||
from ansible.module_utils.common.text.converters import to_bytes
|
||||
from collections.abc import MutableMapping
|
||||
|
||||
from ansible.module_utils.common.text.converters import to_bytes
|
||||
from ansible.parsing.ajson import AnsibleJSONEncoder
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
|
||||
from ansible.utils.path import makedirs_safe
|
||||
|
||||
# NOTE: in Ansible 1.2 or later general logging is available without
|
||||
# this plugin, just set ANSIBLE_LOG_PATH as an environment variable
|
||||
|
||||
@@ -51,14 +51,13 @@ examples: |-
|
||||
shared_key = dZD0kCbKl3ehZG6LHFMuhtE0yHiFCmetzFMc2u+roXIUQuatqU924SsAAAAPemhjbGlAemhjbGktTUJQAQIDBA==
|
||||
"""
|
||||
|
||||
import base64
|
||||
import getpass
|
||||
import hashlib
|
||||
import hmac
|
||||
import base64
|
||||
import json
|
||||
import uuid
|
||||
import socket
|
||||
import getpass
|
||||
|
||||
import uuid
|
||||
from os.path import basename
|
||||
|
||||
from ansible.module_utils.ansible_release import __version__ as ansible_version
|
||||
|
||||
342
plugins/callback/loganalytics_ingestion.py
Normal file
342
plugins/callback/loganalytics_ingestion.py
Normal file
@@ -0,0 +1,342 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (c) Ansible project
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
DOCUMENTATION = """
|
||||
name: loganalytics_ingestion
|
||||
type: notification
|
||||
short_description: Posts task results to an Azure Log Analytics workspace using the new Logs Ingestion API
|
||||
author:
|
||||
- Wade Cline (@wtcline-intc) <wade.cline@intel.com>
|
||||
- Sriramoju Vishal Bharath (@vsh47) <sriramoju.vishal.bharath@intel.com>
|
||||
- Cyrus Li (@zhcli) <cyrus1006@gmail.com>
|
||||
description:
|
||||
- This callback plugin will post task results in JSON format to an Azure Log Analytics workspace using the new Logs Ingestion API.
|
||||
version_added: "12.4.0"
|
||||
requirements:
|
||||
- The callback plugin has been enabled.
|
||||
- An Azure Log Analytics workspace has been established.
|
||||
- A Data Collection Rule (DCR) and custom table are created.
|
||||
options:
|
||||
dce_url:
|
||||
description: URL of the Data Collection Endpoint (DCE) for Azure Logs Ingestion API.
|
||||
type: str
|
||||
required: true
|
||||
env:
|
||||
- name: ANSIBLE_LOGANALYTICS_DCE_URL
|
||||
ini:
|
||||
- section: callback_loganalytics
|
||||
key: dce_url
|
||||
dcr_id:
|
||||
description: Data Collection Rule (DCR) ID for the Azure Log Ingestion API.
|
||||
type: str
|
||||
required: true
|
||||
env:
|
||||
- name: ANSIBLE_LOGANALYTICS_DCR_ID
|
||||
ini:
|
||||
- section: callback_loganalytics
|
||||
key: dcr_id
|
||||
disable_attempts:
|
||||
description:
|
||||
- When O(disable_on_failure=true), number of plugin failures that must occur before the plugin is disabled.
|
||||
- This helps prevent outright plugin failure from a single, transient network issue.
|
||||
type: int
|
||||
default: 3
|
||||
env:
|
||||
- name: ANSIBLE_LOGANALYTICS_DISABLE_ATTEMPTS
|
||||
ini:
|
||||
- section: callback_loganalytics
|
||||
key: disable_attempts
|
||||
disable_on_failure:
|
||||
description: Stop trying to send data on plugin failure.
|
||||
type: bool
|
||||
default: true
|
||||
env:
|
||||
- name: ANSIBLE_LOGANALYTICS_DISABLE_ON_FAILURE
|
||||
ini:
|
||||
- section: callback_loganalytics
|
||||
key: disable_on_failure
|
||||
client_id:
|
||||
description: Client ID of the Azure App registration for OAuth2 authentication ("Modern Authentication").
|
||||
type: str
|
||||
required: true
|
||||
env:
|
||||
- name: ANSIBLE_LOGANALYTICS_CLIENT_ID
|
||||
ini:
|
||||
- section: callback_loganalytics
|
||||
key: client_id
|
||||
client_secret:
|
||||
description: Client Secret of the Azure App registration.
|
||||
type: str
|
||||
required: true
|
||||
env:
|
||||
- name: ANSIBLE_LOGANALYTICS_CLIENT_SECRET
|
||||
ini:
|
||||
- section: callback_loganalytics
|
||||
key: client_secret
|
||||
include_content:
|
||||
description: Send the content to the Azure Log Analytics workspace.
|
||||
type: bool
|
||||
default: false
|
||||
env:
|
||||
- name: ANSIBLE_LOGANALYTICS_INCLUDE_CONTENT
|
||||
ini:
|
||||
- section: callback_loganalytics
|
||||
key: include_content
|
||||
include_task_args:
|
||||
description: Send the task args to the Azure Log Analytics workspace.
|
||||
type: bool
|
||||
default: false
|
||||
env:
|
||||
- name: ANSIBLE_LOGANALYTICS_INCLUDE_TASK_ARGS
|
||||
ini:
|
||||
- section: callback_loganalytics
|
||||
key: include_task_args
|
||||
stream_name:
|
||||
description: The name of the stream used to send the logs to the Azure Log Analytics workspace.
|
||||
type: str
|
||||
required: true
|
||||
env:
|
||||
- name: ANSIBLE_LOGANALYTICS_STREAM_NAME
|
||||
ini:
|
||||
- section: callback_loganalytics
|
||||
key: stream_name
|
||||
tenant_id:
|
||||
description: Tenant ID for the Azure Active Directory.
|
||||
type: str
|
||||
required: true
|
||||
env:
|
||||
- name: ANSIBLE_LOGANALYTICS_TENANT_ID
|
||||
ini:
|
||||
- section: callback_loganalytics
|
||||
key: tenant_id
|
||||
timeout:
|
||||
description: Timeout for the HTTP requests to the Azure Log Analytics API.
|
||||
type: int
|
||||
default: 2
|
||||
env:
|
||||
- name: ANSIBLE_LOGANALYTICS_TIMEOUT
|
||||
ini:
|
||||
- section: callback_loganalytics
|
||||
key: timeout
|
||||
seealso:
|
||||
- name: Logs Ingestion API
|
||||
description: Overview of Logs Ingestion API in Azure Monitor
|
||||
link: https://learn.microsoft.com/en-us/azure/azure-monitor/logs/logs-ingestion-api-overview
|
||||
notes:
|
||||
- Triple verbosity logging (C(-vvv)) can be used to generate JSON sample data for creating the table schema in Azure Log Analytics.
|
||||
Search for the string C(Event Data:) in the output in order to locate the data sample.
|
||||
"""
|
||||
|
||||
EXAMPLES = """
|
||||
examples: |
|
||||
Enable the plugin in ansible.cfg:
|
||||
[defaults]
|
||||
callback_enabled = community.general.loganalytics_ingestion
|
||||
Set the environment variables:
|
||||
export ANSIBLE_LOGANALYTICS_DCE_URL=https://my-dce.ingest.monitor.azure.com
|
||||
export ANSIBLE_LOGANALYTICS_DCR_ID=dcr-xxxxxx
|
||||
export ANSIBLE_LOGANALYTICS_CLIENT_ID=xxxxxxxx
|
||||
export ANSIBLE_LOGANALYTICS_CLIENT_SECRET=xxxxxxxx
|
||||
export ANSIBLE_LOGANALYTICS_TENANT_ID=xxxxxxxx
|
||||
export ANSIBLE_LOGANALYTICS_STREAM_NAME=Custom-MyTable
|
||||
"""
|
||||
|
||||
import getpass
|
||||
import json
|
||||
import socket
|
||||
import uuid
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from os.path import basename
|
||||
from urllib.parse import urlencode
|
||||
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
from ansible.utils.display import Display
|
||||
|
||||
display = Display()
|
||||
|
||||
|
||||
class AzureLogAnalyticsIngestionSource:
|
||||
def __init__(
|
||||
self,
|
||||
dce_url,
|
||||
dcr_id,
|
||||
disable_attempts,
|
||||
disable_on_failure,
|
||||
client_id,
|
||||
client_secret,
|
||||
tenant_id,
|
||||
stream_name,
|
||||
include_task_args,
|
||||
include_content,
|
||||
timeout,
|
||||
fqcn,
|
||||
):
|
||||
self.dce_url = dce_url
|
||||
self.dcr_id = dcr_id
|
||||
self.disabled = False
|
||||
self.disable_attempts = disable_attempts
|
||||
self.disable_on_failure = disable_on_failure
|
||||
self.client_id = client_id
|
||||
self.client_secret = client_secret
|
||||
self.failures = 0
|
||||
self.tenant_id = tenant_id
|
||||
self.stream_name = stream_name
|
||||
self.include_task_args = include_task_args
|
||||
self.include_content = include_content
|
||||
self.token_expiration_time = None
|
||||
self.session = str(uuid.uuid4())
|
||||
self.host = socket.gethostname()
|
||||
self.user = getpass.getuser()
|
||||
self.timeout = timeout
|
||||
self.fqcn = fqcn
|
||||
|
||||
self.bearer_token = self.get_bearer_token()
|
||||
|
||||
# OAuth2 authentication method to get a Bearer token
|
||||
# This replaces the shared_key authentication mechanism
|
||||
def get_bearer_token(self):
|
||||
url = f"https://login.microsoftonline.com/{self.tenant_id}/oauth2/v2.0/token"
|
||||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||||
data = urlencode(
|
||||
{
|
||||
"grant_type": "client_credentials",
|
||||
"client_id": self.client_id,
|
||||
"client_secret": self.client_secret,
|
||||
# The scope value comes from https://learn.microsoft.com/en-us/azure/azure-monitor/logs/logs-ingestion-api-overview#headers
|
||||
# and https://learn.microsoft.com/en-us/entra/identity-platform/scopes-oidc#the-default-scope
|
||||
"scope": "https://monitor.azure.com/.default",
|
||||
}
|
||||
)
|
||||
response = open_url(url, data=data, force=True, headers=headers, method="POST", timeout=self.timeout)
|
||||
j = json.loads(response.read().decode("utf-8"))
|
||||
self.token_expiration_time = datetime.now() + timedelta(seconds=j.get("expires_in"))
|
||||
return j.get("access_token")
|
||||
|
||||
def is_token_valid(self):
|
||||
return datetime.now() + timedelta(seconds=10) < self.token_expiration_time
|
||||
|
||||
# Method to send event data to the Azure Logs Ingestion API
|
||||
# This replaces the legacy API call and now uses the Logs Ingestion API endpoint
|
||||
def send_event(self, event_data):
|
||||
if not self.is_token_valid():
|
||||
self.bearer_token = self.get_bearer_token()
|
||||
ingestion_url = (
|
||||
f"{self.dce_url}/dataCollectionRules/{self.dcr_id}/streams/{self.stream_name}?api-version=2023-01-01"
|
||||
)
|
||||
headers = {"Authorization": f"Bearer {self.bearer_token}", "Content-Type": "application/json"}
|
||||
open_url(ingestion_url, data=json.dumps(event_data), headers=headers, method="POST", timeout=self.timeout)
|
||||
|
||||
def _rfc1123date(self):
|
||||
return datetime.now(timezone.utc).strftime("%a, %d %b %Y %H:%M:%S GMT")
|
||||
|
||||
# This method wraps the private method with the appropriate error handling.
|
||||
def send_to_loganalytics(self, playbook_name, result, state):
|
||||
if self.disabled:
|
||||
return
|
||||
try:
|
||||
self._send_to_loganalytics(playbook_name, result, state)
|
||||
except Exception as e:
|
||||
display.warning(f"{self.fqcn} callback plugin failure: {e}.")
|
||||
if self.disable_on_failure:
|
||||
self.failures += 1
|
||||
if self.failures >= self.disable_attempts:
|
||||
display.warning(
|
||||
f"{self.fqcn} callback plugin failures exceed maximum of '{self.disable_attempts}'! Disabling plugin!"
|
||||
)
|
||||
self.disabled = True
|
||||
else:
|
||||
display.v(f"{self.fqcn} callback plugin failure {self.failures}/{self.disable_attempts}")
|
||||
|
||||
def _send_to_loganalytics(self, playbook_name, result, state):
|
||||
ansible_role = str(result._task._role) if result._task._role else None
|
||||
|
||||
# Include/Exclude task args
|
||||
if not self.include_task_args:
|
||||
result._task_fields.pop("args", None)
|
||||
|
||||
# Include/Exclude content
|
||||
if not self.include_content:
|
||||
result._result.pop("content", None)
|
||||
|
||||
# Build the event data
|
||||
event_data = [
|
||||
{
|
||||
"TimeGenerated": self._rfc1123date(),
|
||||
"Host": result._host.name,
|
||||
"User": self.user,
|
||||
"Playbook": playbook_name,
|
||||
"Role": ansible_role,
|
||||
"TaskName": result._task.get_name(),
|
||||
"Task": result._task_fields,
|
||||
"Action": result._task_fields["action"],
|
||||
"State": state,
|
||||
"Result": result._result,
|
||||
"Session": self.session,
|
||||
}
|
||||
]
|
||||
|
||||
# The data displayed here can be used as a sample file in order to create the table's schema.
|
||||
display.vvv(f"Event Data: {json.dumps(event_data)}")
|
||||
|
||||
self.send_event(event_data)
|
||||
|
||||
|
||||
class CallbackModule(CallbackBase):
|
||||
CALLBACK_VERSION = 2.0
|
||||
CALLBACK_TYPE = "notification"
|
||||
CALLBACK_NAME = "loganalytics_ingestion"
|
||||
CALLBACK_NEEDS_ENABLED = True
|
||||
|
||||
def __init__(self, display=None):
|
||||
super().__init__(display=display)
|
||||
self.start_datetimes = {}
|
||||
self.playbook_name = None
|
||||
self.azure_loganalytics = None
|
||||
self.fqcn = f"community.general.{self.CALLBACK_NAME}"
|
||||
|
||||
def set_options(self, task_keys=None, var_options=None, direct=None):
|
||||
super().set_options(task_keys=task_keys, var_options=var_options, direct=direct)
|
||||
|
||||
# Set options for the new Azure Logs Ingestion API configuration
|
||||
self.client_id = self.get_option("client_id")
|
||||
self.client_secret = self.get_option("client_secret")
|
||||
self.dce_url = self.get_option("dce_url")
|
||||
self.dcr_id = self.get_option("dcr_id")
|
||||
self.disable_attempts = self.get_option("disable_attempts")
|
||||
self.disable_on_failure = self.get_option("disable_on_failure")
|
||||
self.include_content = self.get_option("include_content")
|
||||
self.include_task_args = self.get_option("include_task_args")
|
||||
self.stream_name = self.get_option("stream_name")
|
||||
self.tenant_id = self.get_option("tenant_id")
|
||||
self.timeout = self.get_option("timeout")
|
||||
|
||||
# Initialize the AzureLogAnalyticsIngestionSource with the new settings
|
||||
self.azure_loganalytics = AzureLogAnalyticsIngestionSource(
|
||||
self.dce_url,
|
||||
self.dcr_id,
|
||||
self.disable_attempts,
|
||||
self.disable_on_failure,
|
||||
self.client_id,
|
||||
self.client_secret,
|
||||
self.tenant_id,
|
||||
self.stream_name,
|
||||
self.include_task_args,
|
||||
self.include_content,
|
||||
self.timeout,
|
||||
self.fqcn,
|
||||
)
|
||||
|
||||
def v2_playbook_on_start(self, playbook):
|
||||
self.playbook_name = basename(playbook._file_name)
|
||||
|
||||
# Build event data and send it to the Logs Ingestion API
|
||||
def v2_runner_on_failed(self, result, **kwargs):
|
||||
self.azure_loganalytics.send_to_loganalytics(self.playbook_name, result, "FAILED")
|
||||
|
||||
def v2_runner_on_ok(self, result, **kwargs):
|
||||
self.azure_loganalytics.send_to_loganalytics(self.playbook_name, result, "OK")
|
||||
@@ -55,12 +55,13 @@ options:
|
||||
default: ansible
|
||||
"""
|
||||
|
||||
import logging
|
||||
import json
|
||||
import logging
|
||||
import socket
|
||||
from uuid import getnode
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
|
||||
from ansible.parsing.ajson import AnsibleJSONEncoder
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
|
||||
try:
|
||||
from logdna import LogDNAHandler
|
||||
|
||||
@@ -96,8 +96,8 @@ examples: >-
|
||||
"""
|
||||
|
||||
import os
|
||||
import socket
|
||||
import random
|
||||
import socket
|
||||
import time
|
||||
import uuid
|
||||
|
||||
@@ -178,7 +178,7 @@ class PlainTextSocketAppender:
|
||||
while True:
|
||||
try:
|
||||
self._conn.send(to_bytes(multiline, errors="surrogate_or_strict"))
|
||||
except socket.error:
|
||||
except OSError:
|
||||
self.reopen_connection()
|
||||
continue
|
||||
break
|
||||
|
||||
@@ -94,12 +94,13 @@ ansible.cfg: |
|
||||
}
|
||||
"""
|
||||
|
||||
import os
|
||||
import json
|
||||
from ansible import context
|
||||
import logging
|
||||
import os
|
||||
import socket
|
||||
import uuid
|
||||
import logging
|
||||
|
||||
from ansible import context
|
||||
|
||||
try:
|
||||
import logstash
|
||||
|
||||
@@ -79,10 +79,10 @@ options:
|
||||
version_added: 8.2.0
|
||||
"""
|
||||
|
||||
import email.utils
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import email.utils
|
||||
import smtplib
|
||||
|
||||
from ansible.module_utils.common.text.converters import to_bytes
|
||||
|
||||
@@ -148,15 +148,15 @@ from ansible.plugins.callback import CallbackBase
|
||||
OTEL_LIBRARY_IMPORT_ERROR: ImportError | None
|
||||
try:
|
||||
from opentelemetry import trace
|
||||
from opentelemetry.trace import SpanKind
|
||||
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter as GRPCOTLPSpanExporter
|
||||
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter as HTTPOTLPSpanExporter
|
||||
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
|
||||
from opentelemetry.trace.status import Status, StatusCode
|
||||
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
|
||||
from opentelemetry.sdk.trace import TracerProvider
|
||||
from opentelemetry.sdk.trace.export import BatchSpanProcessor, SimpleSpanProcessor
|
||||
from opentelemetry.sdk.trace.export.in_memory_span_exporter import InMemorySpanExporter
|
||||
from opentelemetry.trace import SpanKind
|
||||
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
|
||||
from opentelemetry.trace.status import Status, StatusCode
|
||||
except ImportError as imp_exc:
|
||||
OTEL_LIBRARY_IMPORT_ERROR = imp_exc
|
||||
else:
|
||||
|
||||
@@ -22,7 +22,7 @@ ansible.cfg: |-
|
||||
callbacks_enabled=community.general.print_task
|
||||
"""
|
||||
|
||||
from yaml import load, dump
|
||||
from yaml import dump, load
|
||||
|
||||
try:
|
||||
from yaml import CSafeDumper as SafeDumper
|
||||
|
||||
@@ -18,9 +18,9 @@ description:
|
||||
- This plugin uses C(say) or C(espeak) to "speak" about play events.
|
||||
"""
|
||||
|
||||
import os
|
||||
import platform
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
from ansible.module_utils.common.process import get_bin_path
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
|
||||
@@ -39,9 +39,8 @@ EXAMPLES = r"""
|
||||
import difflib
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
from ansible.module_utils.common.text.converters import to_text
|
||||
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
|
||||
DONT_COLORIZE = False
|
||||
COLORS = {
|
||||
|
||||
@@ -83,11 +83,10 @@ examples: >-
|
||||
authtoken = f23blad6-5965-4537-bf69-5b5a545blabla88
|
||||
"""
|
||||
|
||||
import json
|
||||
import uuid
|
||||
import socket
|
||||
import getpass
|
||||
|
||||
import json
|
||||
import socket
|
||||
import uuid
|
||||
from os.path import basename
|
||||
|
||||
from ansible.module_utils.ansible_release import __version__ as ansible_version
|
||||
@@ -255,7 +254,7 @@ class CallbackModule(CallbackBase):
|
||||
self._runtime(result),
|
||||
)
|
||||
|
||||
def runner_on_async_failed(self, result, **kwargs):
|
||||
def v2_runner_on_async_failed(self, result, **kwargs):
|
||||
self.splunk.send_event(
|
||||
self.url,
|
||||
self.authtoken,
|
||||
|
||||
@@ -40,11 +40,10 @@ examples: |-
|
||||
url = https://endpoint1.collection.us2.sumologic.com/receiver/v1/http/R8moSv1d8EW9LAUFZJ6dbxCFxwLH6kfCdcBfddlfxCbLuL-BN5twcTpMk__pYy_cDmp==
|
||||
"""
|
||||
|
||||
import json
|
||||
import uuid
|
||||
import socket
|
||||
import getpass
|
||||
|
||||
import json
|
||||
import socket
|
||||
import uuid
|
||||
from os.path import basename
|
||||
|
||||
from ansible.module_utils.ansible_release import __version__ as ansible_version
|
||||
|
||||
@@ -56,7 +56,6 @@ options:
|
||||
|
||||
import logging
|
||||
import logging.handlers
|
||||
|
||||
import socket
|
||||
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
DOCUMENTATION = r"""
|
||||
name: timestamp
|
||||
type: stdout
|
||||
@@ -49,12 +48,13 @@ extends_documentation_fragment:
|
||||
"""
|
||||
|
||||
|
||||
import sys
|
||||
import types
|
||||
from datetime import datetime
|
||||
|
||||
from ansible.module_utils.common.text.converters import to_text
|
||||
from ansible.plugins.callback.default import CallbackModule as Default
|
||||
from ansible.utils.display import get_text_width
|
||||
from ansible.module_utils.common.text.converters import to_text
|
||||
from datetime import datetime
|
||||
import types
|
||||
import sys
|
||||
|
||||
# Store whether the zoneinfo module is available
|
||||
_ZONEINFO_AVAILABLE = sys.version_info >= (3, 9)
|
||||
@@ -89,7 +89,7 @@ def banner(self, msg, color=None, cows=True):
|
||||
msg = msg.strip()
|
||||
try:
|
||||
star_len = self.columns - get_text_width(msg) - timestamp_len
|
||||
except EnvironmentError:
|
||||
except OSError:
|
||||
star_len = self.columns - len(msg) - timestamp_len
|
||||
if star_len <= 3:
|
||||
star_len = 3
|
||||
|
||||
@@ -20,11 +20,12 @@ requirements:
|
||||
"""
|
||||
|
||||
from os.path import basename
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible import context
|
||||
from ansible.module_utils.common.text.converters import to_text
|
||||
from ansible.utils.color import colorize, hostcolor
|
||||
from ansible.plugins.callback.default import CallbackModule as CallbackModule_default
|
||||
from ansible.utils.color import colorize, hostcolor
|
||||
|
||||
|
||||
class CallbackModule(CallbackModule_default):
|
||||
|
||||
@@ -80,7 +80,7 @@ from ansible.errors import AnsibleError
|
||||
from ansible.module_utils.basic import is_executable
|
||||
from ansible.module_utils.common.process import get_bin_path
|
||||
from ansible.module_utils.common.text.converters import to_bytes
|
||||
from ansible.plugins.connection import ConnectionBase, BUFSIZE
|
||||
from ansible.plugins.connection import BUFSIZE, ConnectionBase
|
||||
from ansible.utils.display import Display
|
||||
|
||||
display = Display()
|
||||
@@ -200,7 +200,7 @@ class Connection(ConnectionBase):
|
||||
raise AnsibleError(f"failed to transfer file {in_path} to {out_path}") from e
|
||||
if p.returncode != 0:
|
||||
raise AnsibleError(f"failed to transfer file {in_path} to {out_path}:\n{stdout}\n{stderr}")
|
||||
except IOError as e:
|
||||
except OSError as e:
|
||||
raise AnsibleError(f"file or module does not exist at: {in_path}") from e
|
||||
|
||||
def fetch_file(self, in_path, out_path):
|
||||
|
||||
@@ -35,8 +35,8 @@ except ImportError:
|
||||
pass
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.plugins.connection import ConnectionBase
|
||||
|
||||
@@ -79,9 +79,9 @@ options:
|
||||
|
||||
import os
|
||||
import re
|
||||
from subprocess import call, Popen, PIPE
|
||||
from subprocess import PIPE, Popen, call
|
||||
|
||||
from ansible.errors import AnsibleError, AnsibleConnectionFailure, AnsibleFileNotFound
|
||||
from ansible.errors import AnsibleConnectionFailure, AnsibleError, AnsibleFileNotFound
|
||||
from ansible.module_utils.common.process import get_bin_path
|
||||
from ansible.module_utils.common.text.converters import to_bytes, to_text
|
||||
from ansible.plugins.connection import ConnectionBase
|
||||
@@ -104,11 +104,11 @@ class Connection(ConnectionBase):
|
||||
if getattr(self._shell, "_IS_WINDOWS", False):
|
||||
# Initializing regular expression patterns to match on a PowerShell or cmd command line.
|
||||
self.powershell_regex_pattern = re.compile(
|
||||
r"^(?P<executable>(\"?([a-z]:)?[a-z0-9 ()\\.]+)?powershell(\.exe)?\"?|(([a-z]:)?[a-z0-9()\\.]+)?powershell(\.exe)?)\s+.*(?P<command>-c(ommand)?)\s+", # noqa: E501
|
||||
r'^"?(?P<executable>(?:[a-z]:\\)?[a-z0-9 ()\\.]*powershell(?:\.exe)?)"?\s+(?P<args>.*)(?P<command>-c(?:ommand)?)\s+(?P<post_args>.*(\n.*)*)',
|
||||
re.IGNORECASE,
|
||||
)
|
||||
self.cmd_regex_pattern = re.compile(
|
||||
r"^(?P<executable>(\"?([a-z]:)?[a-z0-9 ()\\.]+)?cmd(\.exe)?\"?|(([a-z]:)?[a-z0-9()\\.]+)?cmd(\.exe)?)\s+.*(?P<command>/c)\s+",
|
||||
r'^"?(?P<executable>(?:[a-z]:\\)?[a-z0-9 ()\\.]*cmd(?:\.exe)?)"?\s+(?P<args>.*)(?P<command>/c)\s+(?P<post_args>.*)',
|
||||
re.IGNORECASE,
|
||||
)
|
||||
|
||||
@@ -131,41 +131,42 @@ class Connection(ConnectionBase):
|
||||
def _build_command(self, cmd) -> list[str]:
|
||||
"""build the command to execute on the incus host"""
|
||||
|
||||
# Force pseudo-terminal allocation if the active become plugin
|
||||
# requires one (e.g. community.general.machinectl), otherwise the
|
||||
# become helper runs without a controlling tty and silently fails.
|
||||
require_tty = self.become is not None and getattr(self.become, "require_tty", False)
|
||||
|
||||
exec_cmd: list[str] = [
|
||||
self._incus_cmd,
|
||||
"--project",
|
||||
self.get_option("project"),
|
||||
"exec",
|
||||
*(["-T"] if getattr(self._shell, "_IS_WINDOWS", False) else []),
|
||||
*(["-t"] if require_tty and not getattr(self._shell, "_IS_WINDOWS", False) else []),
|
||||
f"{self.get_option('remote')}:{self._instance()}",
|
||||
"--",
|
||||
]
|
||||
|
||||
if getattr(self._shell, "_IS_WINDOWS", False):
|
||||
if (
|
||||
(regex_match := self.powershell_regex_pattern.match(cmd))
|
||||
and (regex_pattern := self.powershell_regex_pattern)
|
||||
) or ((regex_match := self.cmd_regex_pattern.match(cmd)) and (regex_pattern := self.cmd_regex_pattern)):
|
||||
if regex_match := self.powershell_regex_pattern.match(cmd):
|
||||
regex_pattern = self.powershell_regex_pattern
|
||||
elif regex_match := self.cmd_regex_pattern.match(cmd):
|
||||
regex_pattern = self.cmd_regex_pattern
|
||||
|
||||
if regex_match:
|
||||
self._display.vvvvvv(
|
||||
f'Found keyword: "{regex_match.group("command")}" based on regex: {regex_pattern.pattern}',
|
||||
host=self._instance(),
|
||||
)
|
||||
|
||||
# Split the command on the argument -c(ommand) for PowerShell or /c for cmd.
|
||||
before_command_argument, after_command_argument = cmd.split(regex_match.group("command"), 1)
|
||||
|
||||
exec_cmd.extend(
|
||||
[
|
||||
# To avoid splitting on a space contained in the path, set the executable as the first argument.
|
||||
regex_match.group("executable").strip('"'),
|
||||
# Remove the executable path and split the rest by space.
|
||||
*(before_command_argument[len(regex_match.group("executable")) :].lstrip().split(" ")),
|
||||
# Set the command argument depending on cmd or powershell.
|
||||
regex_match.group("command"),
|
||||
# Add the rest of the command at the end.
|
||||
after_command_argument,
|
||||
]
|
||||
)
|
||||
# To avoid splitting on a space contained in the path, set the executable as the first argument.
|
||||
exec_cmd.append(regex_match.group("executable"))
|
||||
if args := regex_match.group("args"):
|
||||
exec_cmd.extend(args.strip().split(" "))
|
||||
# Set the command argument depending on cmd or powershell and the rest of it
|
||||
exec_cmd.append(regex_match.group("command"))
|
||||
if post_args := regex_match.group("post_args"):
|
||||
exec_cmd.append(post_args.strip())
|
||||
else:
|
||||
# For anything else using -EncodedCommand or else, just split on space.
|
||||
exec_cmd.extend(cmd.split(" "))
|
||||
|
||||
@@ -33,11 +33,12 @@ options:
|
||||
|
||||
import subprocess
|
||||
|
||||
from ansible_collections.community.general.plugins.connection.jail import Connection as Jail
|
||||
from ansible.module_utils.common.text.converters import to_native
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.module_utils.common.text.converters import to_native
|
||||
from ansible.utils.display import Display
|
||||
|
||||
from ansible_collections.community.general.plugins.connection.jail import Connection as Jail
|
||||
|
||||
display = Display()
|
||||
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ from shlex import quote as shlex_quote
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.module_utils.common.process import get_bin_path
|
||||
from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
|
||||
from ansible.plugins.connection import ConnectionBase, BUFSIZE
|
||||
from ansible.plugins.connection import BUFSIZE, ConnectionBase
|
||||
from ansible.utils.display import Display
|
||||
|
||||
display = Display()
|
||||
@@ -172,7 +172,7 @@ class Connection(ConnectionBase):
|
||||
raise AnsibleError(
|
||||
f"failed to transfer file {in_path} to {out_path}:\n{to_native(stdout)}\n{to_native(stderr)}"
|
||||
)
|
||||
except IOError as e:
|
||||
except OSError as e:
|
||||
raise AnsibleError(f"file or module does not exist at: {in_path}") from e
|
||||
|
||||
def fetch_file(self, in_path, out_path):
|
||||
|
||||
@@ -31,12 +31,12 @@ options:
|
||||
- name: ansible_lxc_executable
|
||||
"""
|
||||
|
||||
import errno
|
||||
import fcntl
|
||||
import os
|
||||
import select
|
||||
import shutil
|
||||
import traceback
|
||||
import select
|
||||
import fcntl
|
||||
import errno
|
||||
|
||||
HAS_LIBLXC = False
|
||||
try:
|
||||
@@ -94,7 +94,7 @@ class Connection(ConnectionBase):
|
||||
while len(read_fds) > 0 or len(write_fds) > 0:
|
||||
try:
|
||||
ready_reads, ready_writes, dummy = select.select(read_fds, write_fds, [])
|
||||
except select.error as e:
|
||||
except OSError as e:
|
||||
if e.args[0] == errno.EINTR:
|
||||
continue
|
||||
raise
|
||||
@@ -173,7 +173,7 @@ class Connection(ConnectionBase):
|
||||
raise errors.AnsibleFileNotFound(msg)
|
||||
try:
|
||||
src_file = open(in_path, "rb")
|
||||
except IOError as e:
|
||||
except OSError as e:
|
||||
traceback.print_exc()
|
||||
raise errors.AnsibleError(f"failed to open input file to {in_path}") from e
|
||||
try:
|
||||
@@ -184,7 +184,7 @@ class Connection(ConnectionBase):
|
||||
|
||||
try:
|
||||
self.container.attach_wait(write_file, None)
|
||||
except IOError as e:
|
||||
except OSError as e:
|
||||
traceback.print_exc()
|
||||
msg = f"failed to transfer file to {out_path}"
|
||||
raise errors.AnsibleError(msg) from e
|
||||
@@ -200,7 +200,7 @@ class Connection(ConnectionBase):
|
||||
|
||||
try:
|
||||
dst_file = open(out_path, "wb")
|
||||
except IOError as e:
|
||||
except OSError as e:
|
||||
traceback.print_exc()
|
||||
msg = f"failed to open output file {out_path}"
|
||||
raise errors.AnsibleError(msg) from e
|
||||
@@ -217,7 +217,7 @@ class Connection(ConnectionBase):
|
||||
|
||||
try:
|
||||
self.container.attach_wait(write_file, None)
|
||||
except IOError as e:
|
||||
except OSError as e:
|
||||
traceback.print_exc()
|
||||
msg = f"failed to transfer file from {in_path} to {out_path}"
|
||||
raise errors.AnsibleError(msg) from e
|
||||
|
||||
@@ -74,9 +74,9 @@ options:
|
||||
"""
|
||||
|
||||
import os
|
||||
from subprocess import Popen, PIPE
|
||||
from subprocess import PIPE, Popen
|
||||
|
||||
from ansible.errors import AnsibleError, AnsibleConnectionFailure, AnsibleFileNotFound
|
||||
from ansible.errors import AnsibleConnectionFailure, AnsibleError, AnsibleFileNotFound
|
||||
from ansible.module_utils.common.process import get_bin_path
|
||||
from ansible.module_utils.common.text.converters import to_bytes, to_text
|
||||
from ansible.plugins.connection import ConnectionBase
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
DOCUMENTATION = r"""
|
||||
name: qubes
|
||||
short_description: Interact with an existing QubesOS AppVM
|
||||
@@ -40,9 +39,9 @@ options:
|
||||
|
||||
import subprocess
|
||||
|
||||
from ansible.errors import AnsibleConnectionFailure
|
||||
from ansible.module_utils.common.text.converters import to_bytes
|
||||
from ansible.plugins.connection import ConnectionBase, ensure_connect
|
||||
from ansible.errors import AnsibleConnectionFailure
|
||||
from ansible.utils.display import Display
|
||||
|
||||
display = Display()
|
||||
|
||||
@@ -16,8 +16,8 @@ description:
|
||||
- This allows you to use existing Saltstack infrastructure to connect to targets.
|
||||
"""
|
||||
|
||||
import os
|
||||
import base64
|
||||
import os
|
||||
|
||||
from ansible import errors
|
||||
from ansible.plugins.connection import ConnectionBase
|
||||
|
||||
@@ -231,6 +231,18 @@ options:
|
||||
required: true
|
||||
vars:
|
||||
- name: wsl_distribution
|
||||
wsl_remote_ssh_shell_type:
|
||||
description:
|
||||
- The shell type expected in the SSH session (not inside the WSL session).
|
||||
- See also C(ansible_shell_type).
|
||||
type: string
|
||||
choices:
|
||||
- cmd
|
||||
- powershell
|
||||
default: cmd
|
||||
vars:
|
||||
- name: wsl_remote_ssh_shell_type
|
||||
version_added: 12.2.0
|
||||
wsl_user:
|
||||
description:
|
||||
- WSL distribution user.
|
||||
@@ -312,25 +324,25 @@ import io
|
||||
import os
|
||||
import pathlib
|
||||
import shlex
|
||||
import socket
|
||||
import tempfile
|
||||
import traceback
|
||||
import typing as t
|
||||
from binascii import hexlify
|
||||
from subprocess import list2cmdline
|
||||
|
||||
from ansible.errors import (
|
||||
AnsibleAuthenticationFailure,
|
||||
AnsibleConnectionFailure,
|
||||
AnsibleError,
|
||||
)
|
||||
from ansible_collections.community.general.plugins.module_utils._filelock import FileLock, LockTimeout
|
||||
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
|
||||
from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
|
||||
from ansible.playbook.play_context import PlayContext
|
||||
from ansible.plugins.connection import ConnectionBase
|
||||
from ansible.utils.display import Display
|
||||
from ansible.utils.path import makedirs_safe
|
||||
from binascii import hexlify
|
||||
from subprocess import list2cmdline
|
||||
|
||||
from ansible_collections.community.general.plugins.module_utils._filelock import FileLock, LockTimeout
|
||||
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
|
||||
|
||||
PARAMIKO_IMPORT_ERR: str | None
|
||||
try:
|
||||
@@ -475,7 +487,7 @@ class Connection(ConnectionBase):
|
||||
try:
|
||||
ssh.load_system_host_keys(ssh_known_hosts)
|
||||
break
|
||||
except IOError:
|
||||
except OSError:
|
||||
pass # file was not found, but not required to function
|
||||
except paramiko.hostkeys.InvalidHostKey as e:
|
||||
raise AnsibleConnectionFailure(f"Invalid host key: {to_text(e.line)}") from e
|
||||
@@ -578,18 +590,32 @@ class Connection(ConnectionBase):
|
||||
wsl_distribution = self.get_option("wsl_distribution")
|
||||
become = self.get_option("become")
|
||||
become_user = self.get_option("become_user")
|
||||
wsl_remote_ssh_shell_type = self.get_option("wsl_remote_ssh_shell_type")
|
||||
is_integration_test = os.getenv("_ANSIBLE_TEST_WSL_CONNECTION_PLUGIN_WAERI5TEPHEESHA2FAE8")
|
||||
if "%" in cmd:
|
||||
if wsl_remote_ssh_shell_type == "powershell":
|
||||
# there is no universal way to escape '%' here
|
||||
# if this is raised, add a workaround to allow the specific situation (if possible)
|
||||
raise AnsibleError("The command contains '%', cannot safely escape it for Powershell")
|
||||
else:
|
||||
cmd = cmd.replace("%", "^%")
|
||||
if become and become_user:
|
||||
wsl_user = become_user
|
||||
else:
|
||||
wsl_user = self.get_option("wsl_user")
|
||||
args = ["wsl.exe", "--distribution", wsl_distribution]
|
||||
args = ["wsl.exe"]
|
||||
if wsl_remote_ssh_shell_type == "powershell" and not is_integration_test:
|
||||
# Powershell stop-parsing token, treat the rest as arguments to the native command wsl.exe
|
||||
args.append("--%")
|
||||
args.extend(["--distribution", wsl_distribution])
|
||||
if wsl_user:
|
||||
args.extend(["--user", wsl_user])
|
||||
args.extend(["--"])
|
||||
args.extend(shlex.split(cmd))
|
||||
if os.getenv("_ANSIBLE_TEST_WSL_CONNECTION_PLUGIN_WAERI5TEPHEESHA2FAE8"):
|
||||
if is_integration_test:
|
||||
return shlex.join(args)
|
||||
return list2cmdline(args) # see https://github.com/python/cpython/blob/3.11/Lib/subprocess.py#L576
|
||||
else:
|
||||
return list2cmdline(args) # see https://github.com/python/cpython/blob/3.11/Lib/subprocess.py#L576
|
||||
|
||||
def exec_command(self, cmd: str, in_data: bytes | None = None, sudoable: bool = True) -> tuple[int, bytes, bytes]:
|
||||
"""run a command on inside a WSL distribution"""
|
||||
@@ -667,7 +693,7 @@ class Connection(ConnectionBase):
|
||||
elif in_data == b"":
|
||||
chan.shutdown_write()
|
||||
|
||||
except socket.timeout as e:
|
||||
except TimeoutError as e:
|
||||
raise AnsibleError(f"ssh timed out waiting for privilege escalation.\n{to_text(become_output)}") from e
|
||||
|
||||
stdout = b"".join(chan.makefile("rb", bufsize))
|
||||
|
||||
@@ -35,7 +35,7 @@ from shlex import quote as shlex_quote
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.module_utils.common.process import get_bin_path
|
||||
from ansible.module_utils.common.text.converters import to_bytes
|
||||
from ansible.plugins.connection import ConnectionBase, BUFSIZE
|
||||
from ansible.plugins.connection import BUFSIZE, ConnectionBase
|
||||
from ansible.utils.display import Display
|
||||
|
||||
display = Display()
|
||||
@@ -169,7 +169,7 @@ class Connection(ConnectionBase):
|
||||
raise AnsibleError(f"failed to transfer file {in_path} to {out_path}") from e
|
||||
if p.returncode != 0:
|
||||
raise AnsibleError(f"failed to transfer file {in_path} to {out_path}:\n{stdout}\n{stderr}")
|
||||
except IOError as e:
|
||||
except OSError as e:
|
||||
raise AnsibleError(f"file or module does not exist at: {in_path}") from e
|
||||
|
||||
def fetch_file(self, in_path, out_path):
|
||||
|
||||
30
plugins/doc_fragments/_icinga2_api.py
Normal file
30
plugins/doc_fragments/_icinga2_api.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# SPDX-FileCopyrightText: 2026 Christoph Fiehe <christoph.fiehe@gmail.com>
|
||||
|
||||
# Note that this doc fragment is **PRIVATE** to the collection. It can have breaking changes at any time.
|
||||
# Do not use this from other collections or standalone plugins/modules!
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
class ModuleDocFragment:
|
||||
# Use together with ansible.builtin.url and icinga2_argument_spec from
|
||||
# ansible_collections.community.general.plugins.module_utils._icinga2
|
||||
DOCUMENTATION = r"""
|
||||
options:
|
||||
url:
|
||||
description:
|
||||
- URL of the Icinga 2 REST API.
|
||||
type: str
|
||||
required: true
|
||||
ca_path:
|
||||
description:
|
||||
- CA certificates bundle to use to verify the Icinga 2 server certificate.
|
||||
type: path
|
||||
timeout:
|
||||
description:
|
||||
- How long to wait for the server to send data before giving up.
|
||||
type: int
|
||||
default: 10
|
||||
"""
|
||||
@@ -2,6 +2,8 @@
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
DOCUMENTATION = r"""
|
||||
name: accumulate
|
||||
short_description: Produce a list of accumulated sums of the input list contents
|
||||
@@ -41,8 +43,8 @@ EXAMPLES = r"""
|
||||
# Produces ['a', 'ab', 'abc']
|
||||
"""
|
||||
|
||||
from itertools import accumulate
|
||||
from collections.abc import Sequence
|
||||
from itertools import accumulate
|
||||
|
||||
from ansible.errors import AnsibleFilterError
|
||||
|
||||
|
||||
@@ -34,9 +34,10 @@ _value:
|
||||
type: dictionary
|
||||
"""
|
||||
|
||||
from ansible.errors import AnsibleFilterError
|
||||
from collections.abc import Sequence
|
||||
from collections import Counter
|
||||
from collections.abc import Sequence
|
||||
|
||||
from ansible.errors import AnsibleFilterError
|
||||
|
||||
|
||||
def counter(sequence):
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from ansible.errors import AnsibleFilterError
|
||||
from ansible.module_utils.common.text.converters import to_bytes
|
||||
from ansible.module_utils.common.collections import is_string
|
||||
from ansible.module_utils.common.text.converters import to_bytes
|
||||
|
||||
try:
|
||||
from zlib import crc32
|
||||
|
||||
@@ -80,11 +80,11 @@ _value:
|
||||
from ansible.errors import AnsibleFilterError
|
||||
|
||||
from ansible_collections.community.general.plugins.module_utils.csv import (
|
||||
CSVError,
|
||||
CustomDialectFailureError,
|
||||
DialectNotAvailableError,
|
||||
initialize_dialect,
|
||||
read_csv,
|
||||
CSVError,
|
||||
DialectNotAvailableError,
|
||||
CustomDialectFailureError,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,20 @@ options:
|
||||
description: A string containing an INI document.
|
||||
type: string
|
||||
required: true
|
||||
delimiters:
|
||||
description: A list of characters used as delimiters in the INI document.
|
||||
type: list
|
||||
elements: string
|
||||
default:
|
||||
- "="
|
||||
- ":"
|
||||
version_added: 12.4.0
|
||||
seealso:
|
||||
- plugin: community.general.to_ini
|
||||
plugin_type: filter
|
||||
- plugin: ansible.builtin.ini
|
||||
plugin_type: lookup
|
||||
- module: community.general.ini_file
|
||||
"""
|
||||
|
||||
EXAMPLES = r"""
|
||||
@@ -43,17 +57,21 @@ _value:
|
||||
"""
|
||||
|
||||
|
||||
from io import StringIO
|
||||
from configparser import ConfigParser
|
||||
from io import StringIO
|
||||
|
||||
from ansible.errors import AnsibleFilterError
|
||||
from ansible.module_utils.common.collections import is_sequence
|
||||
|
||||
|
||||
class IniParser(ConfigParser):
|
||||
"""Implements a configparser which is able to return a dict"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__(interpolation=None)
|
||||
def __init__(self, delimiters=None):
|
||||
if delimiters is None:
|
||||
super().__init__(interpolation=None)
|
||||
else:
|
||||
super().__init__(interpolation=None, delimiters=delimiters)
|
||||
self.optionxform = str
|
||||
|
||||
def as_dict(self):
|
||||
@@ -68,13 +86,21 @@ class IniParser(ConfigParser):
|
||||
return d
|
||||
|
||||
|
||||
def from_ini(obj):
|
||||
def from_ini(obj, delimiters=None):
|
||||
"""Read the given string as INI file and return a dict"""
|
||||
|
||||
if not isinstance(obj, str):
|
||||
raise AnsibleFilterError(f"from_ini requires a str, got {type(obj)}")
|
||||
if delimiters is not None:
|
||||
if not is_sequence(delimiters):
|
||||
raise AnsibleFilterError(f"from_ini's delimiters parameter must be a sequence, got {type(delimiters)}")
|
||||
delimiters = tuple(delimiters)
|
||||
if not all(isinstance(elt, str) for elt in delimiters):
|
||||
raise AnsibleFilterError(
|
||||
f"from_ini's delimiters parameter must be a sequence of strings, got {delimiters!r}"
|
||||
)
|
||||
|
||||
parser = IniParser()
|
||||
parser = IniParser(delimiters=delimiters)
|
||||
|
||||
try:
|
||||
parser.read_file(StringIO(obj))
|
||||
|
||||
@@ -52,9 +52,10 @@ _value:
|
||||
type: dictionary
|
||||
"""
|
||||
|
||||
from ansible.errors import AnsibleFilterError
|
||||
from collections.abc import Mapping, Sequence
|
||||
|
||||
from ansible.errors import AnsibleFilterError
|
||||
|
||||
|
||||
def groupby_as_dict(sequence, attribute):
|
||||
"""
|
||||
|
||||
@@ -8,7 +8,6 @@ from ansible.errors import (
|
||||
AnsibleError,
|
||||
AnsibleFilterError,
|
||||
)
|
||||
|
||||
from ansible.module_utils.common.collections import is_sequence
|
||||
|
||||
try:
|
||||
|
||||
@@ -74,9 +74,10 @@ _value:
|
||||
type: any
|
||||
"""
|
||||
|
||||
from ansible.errors import AnsibleError, AnsibleFilterError
|
||||
import importlib
|
||||
|
||||
from ansible.errors import AnsibleError, AnsibleFilterError
|
||||
|
||||
try:
|
||||
import jc
|
||||
|
||||
|
||||
@@ -6,11 +6,10 @@ from __future__ import annotations
|
||||
|
||||
import typing as t
|
||||
from json import loads
|
||||
|
||||
from ansible.errors import AnsibleFilterError
|
||||
|
||||
|
||||
if t.TYPE_CHECKING:
|
||||
from typing import Any
|
||||
from collections.abc import Callable
|
||||
|
||||
JSONPATCH_IMPORT_ERROR: ImportError | None
|
||||
@@ -31,7 +30,7 @@ OPERATIONS_NEEDING_VALUE = ["add", "replace", "test"]
|
||||
class FilterModule:
|
||||
"""Filter plugin."""
|
||||
|
||||
def check_json_object(self, filter_name: str, object_name: str, inp: Any):
|
||||
def check_json_object(self, filter_name: str, object_name: str, inp: t.Any):
|
||||
if isinstance(inp, (str, bytes, bytearray)):
|
||||
try:
|
||||
return loads(inp)
|
||||
@@ -64,9 +63,9 @@ class FilterModule:
|
||||
inp: str | list | dict | bytes | bytearray,
|
||||
op: str,
|
||||
path: str,
|
||||
value: Any = None,
|
||||
value: t.Any = None,
|
||||
**kwargs: dict,
|
||||
) -> Any:
|
||||
) -> t.Any:
|
||||
if not HAS_LIB:
|
||||
raise AnsibleFilterError(
|
||||
"You need to install 'jsonpatch' package prior to running 'json_patch' filter"
|
||||
@@ -110,7 +109,7 @@ class FilterModule:
|
||||
operations: list,
|
||||
/,
|
||||
fail_test: bool = False,
|
||||
) -> Any:
|
||||
) -> t.Any:
|
||||
if not HAS_LIB:
|
||||
raise AnsibleFilterError(
|
||||
"You need to install 'jsonpatch' package prior to running 'json_patch_recipe' filter"
|
||||
@@ -160,7 +159,7 @@ class FilterModule:
|
||||
|
||||
return result
|
||||
|
||||
def filters(self) -> dict[str, Callable[..., Any]]:
|
||||
def filters(self) -> dict[str, Callable[..., t.Any]]:
|
||||
"""Map filter plugin names to their functions.
|
||||
|
||||
Returns:
|
||||
|
||||
@@ -194,13 +194,13 @@ _value:
|
||||
elements: dictionary
|
||||
"""
|
||||
|
||||
from ansible.errors import AnsibleFilterError
|
||||
from collections.abc import Mapping, Sequence
|
||||
from ansible.utils.vars import merge_hash
|
||||
|
||||
from collections import defaultdict
|
||||
from collections.abc import Mapping, Sequence
|
||||
from operator import itemgetter
|
||||
|
||||
from ansible.errors import AnsibleFilterError
|
||||
from ansible.utils.vars import merge_hash
|
||||
|
||||
|
||||
def list_mergeby(x, y, index, recursive=False, list_merge="replace"):
|
||||
"""Merge 2 lists by attribute 'index'. The function 'merge_hash'
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
from ansible.errors import AnsibleFilterError
|
||||
|
||||
from ansible.errors import AnsibleFilterError
|
||||
|
||||
UNIT_FACTORS = {
|
||||
"ms": [],
|
||||
|
||||
@@ -16,6 +16,12 @@ options:
|
||||
description: The dictionary that should be converted to the INI format.
|
||||
type: dictionary
|
||||
required: true
|
||||
seealso:
|
||||
- plugin: ansible.builtin.ini
|
||||
plugin_type: lookup
|
||||
- module: community.general.ini_file
|
||||
- plugin: community.general.from_ini
|
||||
plugin_type: filter
|
||||
"""
|
||||
|
||||
EXAMPLES = r"""
|
||||
@@ -50,6 +56,7 @@ _value:
|
||||
from collections.abc import Mapping
|
||||
from configparser import ConfigParser
|
||||
from io import StringIO
|
||||
|
||||
from ansible.errors import AnsibleFilterError
|
||||
|
||||
|
||||
|
||||
50
plugins/filter/to_toml.py
Normal file
50
plugins/filter/to_toml.py
Normal file
@@ -0,0 +1,50 @@
|
||||
# Copyright (c) Contributors to the Ansible project
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import typing as t
|
||||
from collections.abc import Mapping
|
||||
|
||||
from ansible.module_utils.common.collections import is_sequence
|
||||
from ansible.module_utils.common.text.converters import to_text
|
||||
|
||||
TOMLKIT_IMPORT_ERROR: ImportError | None
|
||||
try:
|
||||
from tomlkit import dumps
|
||||
except ImportError as imp_exc:
|
||||
TOMLKIT_IMPORT_ERROR = imp_exc
|
||||
else:
|
||||
TOMLKIT_IMPORT_ERROR = None
|
||||
|
||||
from ansible.errors import AnsibleError, AnsibleFilterError
|
||||
|
||||
from ansible_collections.community.general.plugins.plugin_utils._tags import remove_all_tags
|
||||
|
||||
|
||||
def _stringify_keys(value: t.Any) -> t.Any:
|
||||
"""Recursively convert all keys to strings."""
|
||||
if isinstance(value, Mapping):
|
||||
return {to_text(k): _stringify_keys(v) for k, v in value.items()}
|
||||
if is_sequence(value):
|
||||
return [_stringify_keys(e) for e in value]
|
||||
return value
|
||||
|
||||
|
||||
def to_toml(value: t.Mapping, *, redact_sensitive_values: bool = False) -> str:
|
||||
"""Serialize input as TOML."""
|
||||
if TOMLKIT_IMPORT_ERROR:
|
||||
raise AnsibleError("tomlkit must be installed to use this plugin") from TOMLKIT_IMPORT_ERROR
|
||||
if not isinstance(value, Mapping):
|
||||
raise AnsibleFilterError("to_toml only accepts dictionaries.")
|
||||
return dumps(
|
||||
remove_all_tags(_stringify_keys(value), redact_sensitive_values=redact_sensitive_values),
|
||||
)
|
||||
|
||||
|
||||
class FilterModule:
|
||||
def filters(self):
|
||||
return {
|
||||
"to_toml": to_toml,
|
||||
}
|
||||
42
plugins/filter/to_toml.yml
Normal file
42
plugins/filter/to_toml.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
# Copyright (c) Contributors to the Ansible project
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
DOCUMENTATION:
|
||||
name: to_toml
|
||||
author:
|
||||
- Matt Williams (@milliams)
|
||||
version_added: 12.3.0
|
||||
short_description: Convert variable to TOML string
|
||||
description:
|
||||
- Converts an Ansible variable into a TOML string representation.
|
||||
- This filter functions as a wrapper to the L(Python TOML Kit library, https://pypi.org/project/tomlkit/)'s C(tomlkit.dumps) function.
|
||||
requirements:
|
||||
- tomlkit
|
||||
positional: _input
|
||||
options:
|
||||
_input:
|
||||
description:
|
||||
- A variable or expression that returns a data structure.
|
||||
type: dict
|
||||
required: true
|
||||
redact_sensitive_values:
|
||||
description:
|
||||
- If set to V(true), vaulted strings are replaced by V(<redacted>) instead of being decrypted.
|
||||
- With future ansible-core versions, this can extend to other strings tagged as sensitive.
|
||||
- B(Note) that with ansible-core 2.18 and before this might not yield the expected result
|
||||
since these versions of ansible-core strip the vault information away from strings that are
|
||||
part of more complex data structures specified in C(vars).
|
||||
type: bool
|
||||
default: false
|
||||
|
||||
EXAMPLES: |
|
||||
---
|
||||
# Dump variable in a template to create a TOML document
|
||||
value: "{{ my_config | community.general.to_toml }}"
|
||||
|
||||
RETURN:
|
||||
_value:
|
||||
description:
|
||||
- The TOML serialized string representing the variable structure inputted.
|
||||
type: string
|
||||
@@ -5,7 +5,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import typing as t
|
||||
from collections.abc import Mapping, Set
|
||||
|
||||
from yaml import dump
|
||||
|
||||
@@ -14,81 +13,7 @@ try:
|
||||
except ImportError:
|
||||
from yaml import SafeDumper # type: ignore
|
||||
|
||||
from ansible.module_utils.common.collections import is_sequence
|
||||
|
||||
try:
|
||||
# This is ansible-core 2.19+
|
||||
from ansible.utils.vars import transform_to_native_types
|
||||
from ansible.parsing.vault import VaultHelper, VaultLib
|
||||
|
||||
HAS_TRANSFORM_TO_NATIVE_TYPES = True
|
||||
except ImportError:
|
||||
HAS_TRANSFORM_TO_NATIVE_TYPES = False
|
||||
|
||||
from ansible.parsing.yaml.objects import AnsibleVaultEncryptedUnicode
|
||||
from ansible.utils.unsafe_proxy import AnsibleUnsafe
|
||||
|
||||
|
||||
def _to_native_types_compat(value: t.Any, *, redact_value: str | None) -> t.Any:
|
||||
"""Compatibility function for ansible-core 2.18 and before."""
|
||||
if value is None:
|
||||
return value
|
||||
if isinstance(value, AnsibleUnsafe):
|
||||
# This only works up to ansible-core 2.18:
|
||||
return _to_native_types_compat(value._strip_unsafe(), redact_value=redact_value) # type: ignore
|
||||
# But that's fine, since this code path isn't taken on ansible-core 2.19+ anyway.
|
||||
if isinstance(value, Mapping):
|
||||
return {
|
||||
_to_native_types_compat(key, redact_value=redact_value): _to_native_types_compat(
|
||||
val, redact_value=redact_value
|
||||
)
|
||||
for key, val in value.items()
|
||||
}
|
||||
if isinstance(value, Set):
|
||||
return {_to_native_types_compat(elt, redact_value=redact_value) for elt in value}
|
||||
if is_sequence(value):
|
||||
return [_to_native_types_compat(elt, redact_value=redact_value) for elt in value]
|
||||
if isinstance(value, AnsibleVaultEncryptedUnicode):
|
||||
if redact_value is not None:
|
||||
return redact_value
|
||||
# This only works up to ansible-core 2.18:
|
||||
return value.data
|
||||
# But that's fine, since this code path isn't taken on ansible-core 2.19+ anyway.
|
||||
if isinstance(value, bytes):
|
||||
return bytes(value)
|
||||
if isinstance(value, str):
|
||||
return str(value)
|
||||
|
||||
return value
|
||||
|
||||
|
||||
def _to_native_types(value: t.Any, *, redact: bool) -> t.Any:
|
||||
if isinstance(value, Mapping):
|
||||
return {_to_native_types(k, redact=redact): _to_native_types(v, redact=redact) for k, v in value.items()}
|
||||
if is_sequence(value):
|
||||
return [_to_native_types(e, redact=redact) for e in value]
|
||||
if redact:
|
||||
ciphertext = VaultHelper.get_ciphertext(value, with_tags=False)
|
||||
if ciphertext and VaultLib.is_encrypted(ciphertext):
|
||||
return "<redacted>"
|
||||
return transform_to_native_types(value, redact=redact)
|
||||
|
||||
|
||||
def remove_all_tags(value: t.Any, *, redact_sensitive_values: bool = False) -> t.Any:
|
||||
"""
|
||||
Remove all tags from all values in the input.
|
||||
|
||||
If ``redact_sensitive_values`` is ``True``, all sensitive values will be redacted.
|
||||
"""
|
||||
if HAS_TRANSFORM_TO_NATIVE_TYPES:
|
||||
return _to_native_types(value, redact=redact_sensitive_values)
|
||||
|
||||
return _to_native_types_compat( # type: ignore[unreachable]
|
||||
value,
|
||||
redact_value="<redacted>"
|
||||
if redact_sensitive_values
|
||||
else None, # same string as in ansible-core 2.19 by transform_to_native_types()
|
||||
)
|
||||
from ansible_collections.community.general.plugins.plugin_utils._tags import remove_all_tags
|
||||
|
||||
|
||||
def to_yaml(
|
||||
|
||||
@@ -197,7 +197,7 @@ class InventoryModule(BaseInventoryPlugin, Cacheable):
|
||||
data = self.cobbler.get_profiles(self.token)
|
||||
else:
|
||||
data = self.cobbler.get_profiles()
|
||||
except (socket.gaierror, socket.error, xmlrpc_client.ProtocolError):
|
||||
except (socket.gaierror, OSError, xmlrpc_client.ProtocolError):
|
||||
self._reload_cache()
|
||||
else:
|
||||
self._init_cache()
|
||||
@@ -221,7 +221,7 @@ class InventoryModule(BaseInventoryPlugin, Cacheable):
|
||||
data[i] = self.cobbler.get_system_as_rendered(host["name"], self.token)
|
||||
else:
|
||||
data[i] = self.cobbler.get_system_as_rendered(host["name"])
|
||||
except (socket.gaierror, socket.error, xmlrpc_client.ProtocolError):
|
||||
except (socket.gaierror, OSError, xmlrpc_client.ProtocolError):
|
||||
self._reload_cache()
|
||||
else:
|
||||
self._init_cache()
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
DOCUMENTATION = r"""
|
||||
name: gitlab_runners
|
||||
author:
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
DOCUMENTATION = r"""
|
||||
name: icinga2
|
||||
short_description: Icinga2 inventory source
|
||||
@@ -94,11 +93,12 @@ compose:
|
||||
"""
|
||||
|
||||
import json
|
||||
from http import HTTPStatus
|
||||
from urllib.error import HTTPError
|
||||
|
||||
from ansible.errors import AnsibleParserError
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
|
||||
|
||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||
|
||||
@@ -165,7 +165,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
|
||||
self.display.vvv(f"Error returned: {error_body}")
|
||||
except Exception:
|
||||
error_body = {"status": None}
|
||||
if e.code == 404 and error_body.get("status") == "No objects found.":
|
||||
if e.code == HTTPStatus.NOT_FOUND and error_body.get("status") == "No objects found.":
|
||||
raise AnsibleParserError(
|
||||
"Host filter returned no data. Please confirm your host_filter value is valid"
|
||||
) from e
|
||||
@@ -174,15 +174,15 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
|
||||
response_body = response.read()
|
||||
json_data = json.loads(response_body.decode("utf-8"))
|
||||
self.display.vvv(f"Returned Data: {json.dumps(json_data, indent=4, sort_keys=True)}")
|
||||
if 200 <= response.status <= 299:
|
||||
if HTTPStatus.OK <= response.status < HTTPStatus.MULTIPLE_CHOICES: # 2xx codes
|
||||
return json_data
|
||||
if response.status == 404 and json_data["status"] == "No objects found.":
|
||||
if response.status == HTTPStatus.NOT_FOUND and json_data["status"] == "No objects found.":
|
||||
raise AnsibleParserError(f"API returned no data -- Response: {response.status} - {json_data['status']}")
|
||||
if response.status == 401:
|
||||
if response.status == HTTPStatus.UNAUTHORIZED:
|
||||
raise AnsibleParserError(
|
||||
f"API was unable to complete query -- Response: {response.status} - {json_data['status']}"
|
||||
)
|
||||
if response.status == 500:
|
||||
if response.status == HTTPStatus.INTERNAL_SERVER_ERROR:
|
||||
raise AnsibleParserError(f"API Response - {json_data['status']} - {json_data['errors']}")
|
||||
raise AnsibleParserError(f"Unexpected data returned - {json_data['status']} - {json_data['errors']}")
|
||||
|
||||
|
||||
@@ -34,7 +34,8 @@ options:
|
||||
default: []
|
||||
host_domain:
|
||||
description:
|
||||
- Domain to append to the host FQDN.
|
||||
- Domain to append to the host.
|
||||
- This is also used when O(host_fqdn) is not set since community.general 12.5.0.
|
||||
type: string
|
||||
host_fqdn:
|
||||
description:
|
||||
@@ -83,11 +84,12 @@ remotes:
|
||||
- remote-2:default
|
||||
"""
|
||||
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
|
||||
from ansible.utils.display import Display
|
||||
from json import loads
|
||||
from subprocess import check_output
|
||||
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
|
||||
from ansible.utils.display import Display
|
||||
|
||||
display = Display()
|
||||
|
||||
|
||||
@@ -169,9 +171,9 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
|
||||
if self.get_option("host_fqdn"):
|
||||
host_name = f"{host_name}.{project}.{remote_name}"
|
||||
|
||||
domain = self.get_option("host_domain")
|
||||
if domain:
|
||||
host_name = f"{host_name}.{domain}"
|
||||
domain = self.get_option("host_domain")
|
||||
if domain:
|
||||
host_name = f"{host_name}.{domain}"
|
||||
|
||||
# Add some extra variables.
|
||||
host_vars = {}
|
||||
|
||||
@@ -170,13 +170,13 @@ groups:
|
||||
test: inventory_hostname.startswith('test')
|
||||
"""
|
||||
|
||||
import re
|
||||
import os
|
||||
from subprocess import Popen, PIPE
|
||||
import re
|
||||
from subprocess import PIPE, Popen
|
||||
|
||||
from ansible.errors import AnsibleError, AnsibleParserError
|
||||
from ansible.module_utils.common.text.converters import to_native, to_text
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, Constructable
|
||||
from ansible.utils.display import Display
|
||||
|
||||
display = Display()
|
||||
|
||||
@@ -125,15 +125,14 @@ compose:
|
||||
"""
|
||||
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, Constructable
|
||||
|
||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||
|
||||
|
||||
try:
|
||||
from linode_api4 import LinodeClient
|
||||
from linode_api4.objects.linode import Instance
|
||||
from linode_api4.errors import ApiError as LinodeApiError
|
||||
from linode_api4.objects.linode import Instance
|
||||
|
||||
HAS_LINODE = True
|
||||
except ImportError:
|
||||
@@ -203,7 +202,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
||||
ips += [instance.ips.ipv6.slaac, instance.ips.ipv6.link_local]
|
||||
ips += instance.ips.ipv6.pools
|
||||
|
||||
for ip_type in set(ip.type for ip in ips):
|
||||
for ip_type in {ip.type for ip in ips}:
|
||||
self.inventory.set_variable(
|
||||
hostname, ip_type, make_unsafe(self._ip_data([ip for ip in ips if ip.type == ip_type]))
|
||||
)
|
||||
|
||||
@@ -167,15 +167,16 @@ groupby:
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import time
|
||||
import os
|
||||
from urllib.parse import urlencode
|
||||
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin
|
||||
from ansible.module_utils.common.text.converters import to_native, to_text
|
||||
from ansible.module_utils.common.dict_transformations import dict_merge
|
||||
from ansible.errors import AnsibleError, AnsibleParserError
|
||||
from ansible.module_utils.common.dict_transformations import dict_merge
|
||||
from ansible.module_utils.common.text.converters import to_native, to_text
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin
|
||||
|
||||
from ansible_collections.community.general.plugins.module_utils.lxd import LXDClient, LXDClientException
|
||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||
|
||||
@@ -210,9 +211,9 @@ class InventoryModule(BaseInventoryPlugin):
|
||||
Returns:
|
||||
dict(json_data): json data"""
|
||||
try:
|
||||
with open(path, "r") as json_file:
|
||||
with open(path) as json_file:
|
||||
return json.load(json_file)
|
||||
except (IOError, json.decoder.JSONDecodeError) as err:
|
||||
except (OSError, json.decoder.JSONDecodeError) as err:
|
||||
raise AnsibleParserError(f"Could not load the test data from {to_native(path)}: {err}") from err
|
||||
|
||||
def save_json_data(self, path, file_name=None):
|
||||
@@ -242,7 +243,7 @@ class InventoryModule(BaseInventoryPlugin):
|
||||
cwd = os.path.abspath(os.path.dirname(__file__))
|
||||
with open(os.path.abspath(os.path.join(cwd, *path)), "w") as json_file:
|
||||
json.dump(self.data, json_file)
|
||||
except IOError as err:
|
||||
except OSError as err:
|
||||
raise AnsibleParserError(f"Could not save data: {err}") from err
|
||||
|
||||
def verify_file(self, path):
|
||||
|
||||
@@ -125,14 +125,13 @@ groups:
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
from subprocess import Popen, PIPE
|
||||
from subprocess import PIPE, Popen
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible.errors import AnsibleParserError
|
||||
from ansible.module_utils.common.text.converters import to_native, to_text
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
|
||||
from ansible.module_utils.common.process import get_bin_path
|
||||
from ansible.module_utils.common.text.converters import to_native, to_text
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, Constructable
|
||||
|
||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||
|
||||
|
||||
@@ -64,10 +64,10 @@ from sys import version as python_version
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.module_utils.ansible_release import __version__ as ansible_version
|
||||
from ansible.module_utils.common.text.converters import to_text
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin
|
||||
from ansible.module_utils.common.text.converters import to_text
|
||||
from ansible.module_utils.ansible_release import __version__ as ansible_version
|
||||
|
||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
DOCUMENTATION = r"""
|
||||
name: opennebula
|
||||
author:
|
||||
@@ -90,14 +89,14 @@ try:
|
||||
except ImportError:
|
||||
HAS_PYONE = False
|
||||
|
||||
import os
|
||||
from collections import namedtuple
|
||||
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
|
||||
|
||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||
|
||||
from collections import namedtuple
|
||||
import os
|
||||
|
||||
|
||||
class InventoryModule(BaseInventoryPlugin, Constructable):
|
||||
NAME = "community.general.opennebula"
|
||||
@@ -119,10 +118,10 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
|
||||
if authfile is None:
|
||||
authfile = os.path.join(os.environ.get("HOME"), ".one", "one_auth")
|
||||
try:
|
||||
with open(authfile, "r") as fp:
|
||||
with open(authfile) as fp:
|
||||
authstring = fp.read().rstrip()
|
||||
username, password = authstring.split(":")
|
||||
except (OSError, IOError) as e:
|
||||
except OSError as e:
|
||||
raise AnsibleError(f"Could not find or read ONE_AUTH file at '{authfile}'") from e
|
||||
except Exception as e:
|
||||
raise AnsibleError(f"Error occurs when reading ONE_AUTH file at '{authfile}'") from e
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
DOCUMENTATION = r"""
|
||||
name: scaleway
|
||||
author:
|
||||
@@ -118,8 +117,8 @@ variables:
|
||||
ansible_user: "'admin'"
|
||||
"""
|
||||
|
||||
import os
|
||||
import json
|
||||
import os
|
||||
|
||||
YAML_IMPORT_ERROR: ImportError | None
|
||||
try:
|
||||
@@ -129,14 +128,15 @@ except ImportError as exc:
|
||||
else:
|
||||
YAML_IMPORT_ERROR = None
|
||||
|
||||
import urllib.parse as urllib_parse
|
||||
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.module_utils.common.text.converters import to_text
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
|
||||
|
||||
from ansible_collections.community.general.plugins.module_utils.scaleway import SCALEWAY_LOCATION, parse_pagination_link
|
||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.module_utils.common.text.converters import to_text
|
||||
|
||||
import urllib.parse as urllib_parse
|
||||
|
||||
|
||||
def _fetch_information(token, url):
|
||||
|
||||
@@ -72,14 +72,13 @@ groups:
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from subprocess import Popen, PIPE
|
||||
from collections.abc import MutableMapping
|
||||
from subprocess import PIPE, Popen
|
||||
|
||||
from ansible.errors import AnsibleParserError
|
||||
from ansible.module_utils.common.text.converters import to_bytes, to_text
|
||||
from collections.abc import MutableMapping
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
|
||||
from ansible.module_utils.common.process import get_bin_path
|
||||
from ansible.module_utils.common.text.converters import to_bytes, to_text
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, Constructable
|
||||
|
||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ import ssl
|
||||
from time import sleep
|
||||
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, Constructable
|
||||
|
||||
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
|
||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
DOCUMENTATION = r"""
|
||||
name: binary_file
|
||||
author: Felix Fontein (@felixfontein)
|
||||
@@ -77,7 +79,6 @@ import base64
|
||||
|
||||
from ansible.errors import AnsibleLookupError
|
||||
from ansible.plugins.lookup import LookupBase
|
||||
|
||||
from ansible.utils.display import Display
|
||||
|
||||
display = Display()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user