mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-04-30 10:26:52 +00:00
Compare commits
94 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb6f4760ae | ||
|
|
ae041e56c6 | ||
|
|
b3fecf0b6f | ||
|
|
59e8eca4c8 | ||
|
|
e95a3b5215 | ||
|
|
235a851350 | ||
|
|
5584998e0e | ||
|
|
8b259f8bc1 | ||
|
|
24789f86fa | ||
|
|
ddbfbcb47e | ||
|
|
69563766ec | ||
|
|
4c7f64b121 | ||
|
|
1e397ace75 | ||
|
|
71349d7e1d | ||
|
|
19de563a1d | ||
|
|
e550a0f58f | ||
|
|
eaa1f7c841 | ||
|
|
7a653bff94 | ||
|
|
c8360e7d1a | ||
|
|
94d33854b3 | ||
|
|
3d088b68ec | ||
|
|
7b8fa38878 | ||
|
|
6bf1eead47 | ||
|
|
478100011b | ||
|
|
7ac342e237 | ||
|
|
e2573de08d | ||
|
|
4412bdba9b | ||
|
|
374270d242 | ||
|
|
4c1077b2a0 | ||
|
|
a4f4a25b16 | ||
|
|
17f5a5b575 | ||
|
|
0be6e61b31 | ||
|
|
36978d71e1 | ||
|
|
3cc62e3827 | ||
|
|
e5f290e885 | ||
|
|
003f9e498e | ||
|
|
700bb27d51 | ||
|
|
07c68cb7f1 | ||
|
|
e9f0fcac0d | ||
|
|
a2e198d8a7 | ||
|
|
9ccb6e029d | ||
|
|
adf0f41b4b | ||
|
|
63a8f1e89f | ||
|
|
76de353377 | ||
|
|
960ed5acfd | ||
|
|
f636201450 | ||
|
|
fb01bf6ff7 | ||
|
|
8569e7eb58 | ||
|
|
c100ecda2c | ||
|
|
f33f50cf2c | ||
|
|
452d6f2fa7 | ||
|
|
f3828ba9ca | ||
|
|
b4eb8e5e22 | ||
|
|
8c02531c56 | ||
|
|
41171a02b7 | ||
|
|
84a6f610f7 | ||
|
|
2f623b7398 | ||
|
|
4e73ae1a86 | ||
|
|
392f5b4702 | ||
|
|
d5d8e1d188 | ||
|
|
fbd0a80439 | ||
|
|
c55df29ec9 | ||
|
|
2405857338 | ||
|
|
1c6b9507bc | ||
|
|
9363356941 | ||
|
|
7b92d84878 | ||
|
|
c8fe77c359 | ||
|
|
d5465ff471 | ||
|
|
7cd8f6edff | ||
|
|
125cafb371 | ||
|
|
9e11cd0813 | ||
|
|
2b48825499 | ||
|
|
8196cacff8 | ||
|
|
bd4f1a3e5c | ||
|
|
cfee3284cd | ||
|
|
9c3e14701b | ||
|
|
cae0457e0e | ||
|
|
a9e892952d | ||
|
|
e8ff74f077 | ||
|
|
0478b0c5a1 | ||
|
|
4a642c247c | ||
|
|
8bffd757ce | ||
|
|
eb294ae86e | ||
|
|
cea886562a | ||
|
|
30c5de00e9 | ||
|
|
ae3236389e | ||
|
|
9717bac816 | ||
|
|
6b5b051c3d | ||
|
|
5d7ff825de | ||
|
|
f58ab1b642 | ||
|
|
f644720c74 | ||
|
|
7a0428d7e6 | ||
|
|
b3eadab36a | ||
|
|
17280ed73e |
@@ -29,14 +29,14 @@ schedules:
|
||||
always: true
|
||||
branches:
|
||||
include:
|
||||
- stable-11
|
||||
- stable-10
|
||||
- stable-9
|
||||
- cron: 0 11 * * 0
|
||||
displayName: Weekly (old stable branches)
|
||||
always: true
|
||||
branches:
|
||||
include:
|
||||
- stable-8
|
||||
- stable-9
|
||||
|
||||
variables:
|
||||
- name: checkoutPath
|
||||
@@ -51,7 +51,7 @@ variables:
|
||||
resources:
|
||||
containers:
|
||||
- container: default
|
||||
image: quay.io/ansible/azure-pipelines-test-container:6.0.0
|
||||
image: quay.io/ansible/azure-pipelines-test-container:7.0.0
|
||||
|
||||
pool: Standard
|
||||
|
||||
@@ -70,6 +70,19 @@ stages:
|
||||
- test: 2
|
||||
- test: 3
|
||||
- test: 4
|
||||
- stage: Sanity_2_19
|
||||
displayName: Sanity 2.19
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Test {0}
|
||||
testFormat: 2.19/sanity/{0}
|
||||
targets:
|
||||
- test: 1
|
||||
- test: 2
|
||||
- test: 3
|
||||
- test: 4
|
||||
- stage: Sanity_2_18
|
||||
displayName: Sanity 2.18
|
||||
dependsOn: []
|
||||
@@ -119,12 +132,24 @@ stages:
|
||||
nameFormat: Python {0}
|
||||
testFormat: devel/units/{0}/1
|
||||
targets:
|
||||
- test: 3.8
|
||||
- test: 3.9
|
||||
- test: '3.10'
|
||||
- test: '3.11'
|
||||
- test: '3.12'
|
||||
- test: '3.13'
|
||||
- test: '3.14'
|
||||
- stage: Units_2_19
|
||||
displayName: Units 2.19
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
nameFormat: Python {0}
|
||||
testFormat: 2.19/units/{0}/1
|
||||
targets:
|
||||
- test: 3.8
|
||||
- test: "3.11"
|
||||
- test: "3.13"
|
||||
- stage: Units_2_18
|
||||
displayName: Units 2.18
|
||||
dependsOn: []
|
||||
@@ -135,6 +160,7 @@ stages:
|
||||
testFormat: 2.18/units/{0}/1
|
||||
targets:
|
||||
- test: 3.8
|
||||
- test: "3.11"
|
||||
- test: "3.13"
|
||||
- stage: Units_2_17
|
||||
displayName: Units 2.17
|
||||
@@ -146,6 +172,7 @@ stages:
|
||||
testFormat: 2.17/units/{0}/1
|
||||
targets:
|
||||
- test: 3.7
|
||||
- test: "3.10"
|
||||
- test: "3.12"
|
||||
- stage: Units_2_16
|
||||
displayName: Units 2.16
|
||||
@@ -169,10 +196,10 @@ stages:
|
||||
parameters:
|
||||
testFormat: devel/{0}
|
||||
targets:
|
||||
- name: Alpine 3.21
|
||||
test: alpine/3.21
|
||||
# - name: Fedora 41
|
||||
# test: fedora/41
|
||||
- name: Alpine 3.22
|
||||
test: alpine/3.22
|
||||
# - name: Fedora 42
|
||||
# test: fedora/42
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu/22.04
|
||||
- name: Ubuntu 24.04
|
||||
@@ -189,16 +216,36 @@ stages:
|
||||
targets:
|
||||
- name: macOS 15.3
|
||||
test: macos/15.3
|
||||
- name: RHEL 9.5
|
||||
test: rhel/9.5
|
||||
- name: FreeBSD 14.2
|
||||
test: freebsd/14.2
|
||||
- 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
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- stage: Remote_2_19
|
||||
displayName: Remote 2.19
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: 2.19/{0}
|
||||
targets:
|
||||
- name: RHEL 9.5
|
||||
test: rhel/9.5
|
||||
- name: RHEL 10.0
|
||||
test: rhel/10.0
|
||||
- name: FreeBSD 14.2
|
||||
test: freebsd/14.2
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- stage: Remote_2_18
|
||||
displayName: Remote 2.18
|
||||
dependsOn: []
|
||||
@@ -225,8 +272,8 @@ stages:
|
||||
parameters:
|
||||
testFormat: 2.17/{0}
|
||||
targets:
|
||||
- name: FreeBSD 13.3
|
||||
test: freebsd/13.3
|
||||
- name: FreeBSD 13.5
|
||||
test: freebsd/13.5
|
||||
- name: RHEL 9.3
|
||||
test: rhel/9.3
|
||||
groups:
|
||||
@@ -265,10 +312,10 @@ stages:
|
||||
parameters:
|
||||
testFormat: devel/linux/{0}
|
||||
targets:
|
||||
- name: Fedora 41
|
||||
test: fedora41
|
||||
- name: Alpine 3.21
|
||||
test: alpine321
|
||||
- name: Fedora 42
|
||||
test: fedora42
|
||||
- name: Alpine 3.22
|
||||
test: alpine322
|
||||
- name: Ubuntu 22.04
|
||||
test: ubuntu2204
|
||||
- name: Ubuntu 24.04
|
||||
@@ -277,6 +324,22 @@ stages:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- stage: Docker_2_19
|
||||
displayName: Docker 2.19
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/matrix.yml
|
||||
parameters:
|
||||
testFormat: 2.19/linux/{0}
|
||||
targets:
|
||||
- name: Fedora 41
|
||||
test: fedora41
|
||||
- name: Alpine 3.21
|
||||
test: alpine321
|
||||
groups:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- stage: Docker_2_18
|
||||
displayName: Docker 2.18
|
||||
dependsOn: []
|
||||
@@ -365,8 +428,19 @@ stages:
|
||||
# nameFormat: Python {0}
|
||||
# testFormat: devel/generic/{0}/1
|
||||
# targets:
|
||||
# - test: '3.8'
|
||||
# - test: '3.11'
|
||||
# - test: '3.9'
|
||||
# - test: '3.12'
|
||||
# - test: '3.14'
|
||||
# - stage: Generic_2_19
|
||||
# displayName: Generic 2.19
|
||||
# dependsOn: []
|
||||
# jobs:
|
||||
# - template: templates/matrix.yml
|
||||
# parameters:
|
||||
# nameFormat: Python {0}
|
||||
# testFormat: 2.19/generic/{0}/1
|
||||
# targets:
|
||||
# - test: '3.9'
|
||||
# - test: '3.13'
|
||||
# - stage: Generic_2_18
|
||||
# displayName: Generic 2.18
|
||||
@@ -407,25 +481,30 @@ stages:
|
||||
condition: succeededOrFailed()
|
||||
dependsOn:
|
||||
- Sanity_devel
|
||||
- Sanity_2_19
|
||||
- Sanity_2_18
|
||||
- Sanity_2_17
|
||||
- Sanity_2_16
|
||||
- Units_devel
|
||||
- Units_2_19
|
||||
- Units_2_18
|
||||
- Units_2_17
|
||||
- Units_2_16
|
||||
- Remote_devel_extra_vms
|
||||
- Remote_devel
|
||||
- Remote_2_19
|
||||
- Remote_2_18
|
||||
- Remote_2_17
|
||||
- Remote_2_16
|
||||
- Docker_devel
|
||||
- Docker_2_19
|
||||
- Docker_2_18
|
||||
- Docker_2_17
|
||||
- Docker_2_16
|
||||
- Docker_community_devel
|
||||
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
|
||||
# - Generic_devel
|
||||
# - Generic_2_19
|
||||
# - Generic_2_18
|
||||
# - Generic_2_17
|
||||
# - Generic_2_16
|
||||
|
||||
@@ -50,11 +50,11 @@ jobs:
|
||||
parameters:
|
||||
jobs:
|
||||
- ${{ if eq(length(parameters.groups), 0) }}:
|
||||
- ${{ each target in parameters.targets }}:
|
||||
- name: ${{ format(parameters.nameFormat, coalesce(target.name, target.test)) }}
|
||||
test: ${{ format(parameters.testFormat, coalesce(target.test, target.name)) }}
|
||||
- ${{ if not(eq(length(parameters.groups), 0)) }}:
|
||||
- ${{ each group in parameters.groups }}:
|
||||
- ${{ each target in parameters.targets }}:
|
||||
- name: ${{ format(format(parameters.nameGroupFormat, parameters.nameFormat), coalesce(target.name, target.test), group) }}
|
||||
test: ${{ format(format(parameters.testGroupFormat, parameters.testFormat), coalesce(target.test, target.name), group) }}
|
||||
- name: ${{ format(parameters.nameFormat, coalesce(target.name, target.test)) }}
|
||||
test: ${{ format(parameters.testFormat, coalesce(target.test, target.name)) }}
|
||||
- ${{ if not(eq(length(parameters.groups), 0)) }}:
|
||||
- ${{ each group in parameters.groups }}:
|
||||
- ${{ each target in parameters.targets }}:
|
||||
- name: ${{ format(format(parameters.nameGroupFormat, parameters.nameFormat), coalesce(target.name, target.test), group) }}
|
||||
test: ${{ format(format(parameters.testGroupFormat, parameters.testFormat), coalesce(target.test, target.name), group) }}
|
||||
|
||||
@@ -14,37 +14,37 @@ parameters:
|
||||
|
||||
jobs:
|
||||
- ${{ each job in parameters.jobs }}:
|
||||
- job: test_${{ replace(replace(replace(job.test, '/', '_'), '.', '_'), '-', '_') }}
|
||||
displayName: ${{ job.name }}
|
||||
container: default
|
||||
workspace:
|
||||
clean: all
|
||||
steps:
|
||||
- checkout: self
|
||||
fetchDepth: $(fetchDepth)
|
||||
path: $(checkoutPath)
|
||||
- bash: .azure-pipelines/scripts/run-tests.sh "$(entryPoint)" "${{ job.test }}" "$(coverageBranches)"
|
||||
displayName: Run Tests
|
||||
- bash: .azure-pipelines/scripts/process-results.sh
|
||||
condition: succeededOrFailed()
|
||||
displayName: Process Results
|
||||
- bash: .azure-pipelines/scripts/aggregate-coverage.sh "$(Agent.TempDirectory)"
|
||||
condition: eq(variables.haveCoverageData, 'true')
|
||||
displayName: Aggregate Coverage Data
|
||||
- task: PublishTestResults@2
|
||||
condition: eq(variables.haveTestResults, 'true')
|
||||
inputs:
|
||||
testResultsFiles: "$(outputPath)/junit/*.xml"
|
||||
displayName: Publish Test Results
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: eq(variables.haveBotResults, 'true')
|
||||
displayName: Publish Bot Results
|
||||
inputs:
|
||||
targetPath: "$(outputPath)/bot/"
|
||||
artifactName: "Bot $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: eq(variables.haveCoverageData, 'true')
|
||||
displayName: Publish Coverage Data
|
||||
inputs:
|
||||
targetPath: "$(Agent.TempDirectory)/coverage/"
|
||||
artifactName: "Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
|
||||
- job: test_${{ replace(replace(replace(job.test, '/', '_'), '.', '_'), '-', '_') }}
|
||||
displayName: ${{ job.name }}
|
||||
container: default
|
||||
workspace:
|
||||
clean: all
|
||||
steps:
|
||||
- checkout: self
|
||||
fetchDepth: $(fetchDepth)
|
||||
path: $(checkoutPath)
|
||||
- bash: .azure-pipelines/scripts/run-tests.sh "$(entryPoint)" "${{ job.test }}" "$(coverageBranches)"
|
||||
displayName: Run Tests
|
||||
- bash: .azure-pipelines/scripts/process-results.sh
|
||||
condition: succeededOrFailed()
|
||||
displayName: Process Results
|
||||
- bash: .azure-pipelines/scripts/aggregate-coverage.sh "$(Agent.TempDirectory)"
|
||||
condition: eq(variables.haveCoverageData, 'true')
|
||||
displayName: Aggregate Coverage Data
|
||||
- task: PublishTestResults@2
|
||||
condition: eq(variables.haveTestResults, 'true')
|
||||
inputs:
|
||||
testResultsFiles: "$(outputPath)/junit/*.xml"
|
||||
displayName: Publish Test Results
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: eq(variables.haveBotResults, 'true')
|
||||
displayName: Publish Bot Results
|
||||
inputs:
|
||||
targetPath: "$(outputPath)/bot/"
|
||||
artifactName: "Bot $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: eq(variables.haveCoverageData, 'true')
|
||||
displayName: Publish Coverage Data
|
||||
inputs:
|
||||
targetPath: "$(Agent.TempDirectory)/coverage/"
|
||||
artifactName: "Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
|
||||
|
||||
9
.git-blame-ignore-revs
Normal file
9
.git-blame-ignore-revs
Normal file
@@ -0,0 +1,9 @@
|
||||
# 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
|
||||
|
||||
# YAML reformatting
|
||||
2b4882549908b5b1fafe5fa10efb47f613a71f94
|
||||
8196cacff8e83dc5d7fb88b43ef3cab5d3751c39
|
||||
bd4f1a3e5ca1af5afc53636c36767e81a4566978
|
||||
a9e892952deef6f91977d7032dd95237a9867509
|
||||
2
.github/workflows/ansible-test.yml
vendored
2
.github/workflows/ansible-test.yml
vendored
@@ -7,7 +7,7 @@
|
||||
# https://github.com/marketplace/actions/ansible-test
|
||||
|
||||
name: EOL CI
|
||||
on:
|
||||
"on":
|
||||
# Run EOL CI against all pushes (direct commits, also merged PRs), Pull Requests
|
||||
push:
|
||||
branches:
|
||||
|
||||
2
.github/workflows/codeql-analysis.yml
vendored
2
.github/workflows/codeql-analysis.yml
vendored
@@ -5,7 +5,7 @@
|
||||
|
||||
name: "Code scanning - action"
|
||||
|
||||
on:
|
||||
"on":
|
||||
schedule:
|
||||
- cron: '26 19 * * 1'
|
||||
workflow_dispatch:
|
||||
|
||||
14
.gitignore
vendored
14
.gitignore
vendored
@@ -383,6 +383,16 @@ cython_debug/
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
### Python Patch ###
|
||||
# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
|
||||
poetry.toml
|
||||
|
||||
# ruff
|
||||
.ruff_cache/
|
||||
|
||||
# LSP config files
|
||||
pyrightconfig.json
|
||||
|
||||
### Vim ###
|
||||
# Swap
|
||||
[._]*.s[a-v][a-z]
|
||||
@@ -482,6 +492,10 @@ tags
|
||||
# https://plugins.jetbrains.com/plugin/12206-codestream
|
||||
.idea/codestream.xml
|
||||
|
||||
# Azure Toolkit for IntelliJ plugin
|
||||
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
|
||||
.idea/**/azureSettings.xml
|
||||
|
||||
### Windows ###
|
||||
# Windows thumbnail cache files
|
||||
Thumbs.db
|
||||
|
||||
231
CHANGELOG.md
231
CHANGELOG.md
@@ -2,76 +2,87 @@
|
||||
|
||||
**Topics**
|
||||
|
||||
- <a href="#v10-7-0">v10\.7\.0</a>
|
||||
- <a href="#v10-7-3">v10\.7\.3</a>
|
||||
- <a href="#release-summary">Release Summary</a>
|
||||
- <a href="#bugfixes">Bugfixes</a>
|
||||
- <a href="#v10-7-2">v10\.7\.2</a>
|
||||
- <a href="#release-summary-1">Release Summary</a>
|
||||
- <a href="#bugfixes-1">Bugfixes</a>
|
||||
- <a href="#v10-7-1">v10\.7\.1</a>
|
||||
- <a href="#release-summary-2">Release Summary</a>
|
||||
- <a href="#minor-changes">Minor Changes</a>
|
||||
- <a href="#deprecated-features">Deprecated Features</a>
|
||||
- <a href="#bugfixes">Bugfixes</a>
|
||||
- <a href="#bugfixes-2">Bugfixes</a>
|
||||
- <a href="#v10-7-0">v10\.7\.0</a>
|
||||
- <a href="#release-summary-3">Release Summary</a>
|
||||
- <a href="#minor-changes-1">Minor Changes</a>
|
||||
- <a href="#deprecated-features-1">Deprecated Features</a>
|
||||
- <a href="#bugfixes-3">Bugfixes</a>
|
||||
- <a href="#new-plugins">New Plugins</a>
|
||||
- <a href="#callback">Callback</a>
|
||||
- <a href="#filter">Filter</a>
|
||||
- <a href="#new-modules">New Modules</a>
|
||||
- <a href="#v10-6-0">v10\.6\.0</a>
|
||||
- <a href="#release-summary-1">Release Summary</a>
|
||||
- <a href="#minor-changes-1">Minor Changes</a>
|
||||
- <a href="#deprecated-features-1">Deprecated Features</a>
|
||||
- <a href="#bugfixes-1">Bugfixes</a>
|
||||
- <a href="#release-summary-4">Release Summary</a>
|
||||
- <a href="#minor-changes-2">Minor Changes</a>
|
||||
- <a href="#deprecated-features-2">Deprecated Features</a>
|
||||
- <a href="#bugfixes-4">Bugfixes</a>
|
||||
- <a href="#known-issues">Known Issues</a>
|
||||
- <a href="#new-plugins-1">New Plugins</a>
|
||||
- <a href="#connection">Connection</a>
|
||||
- <a href="#v10-5-0">v10\.5\.0</a>
|
||||
- <a href="#release-summary-2">Release Summary</a>
|
||||
- <a href="#minor-changes-2">Minor Changes</a>
|
||||
- <a href="#bugfixes-2">Bugfixes</a>
|
||||
- <a href="#release-summary-5">Release Summary</a>
|
||||
- <a href="#minor-changes-3">Minor Changes</a>
|
||||
- <a href="#bugfixes-5">Bugfixes</a>
|
||||
- <a href="#new-modules-1">New Modules</a>
|
||||
- <a href="#v10-4-0">v10\.4\.0</a>
|
||||
- <a href="#release-summary-3">Release Summary</a>
|
||||
- <a href="#minor-changes-3">Minor Changes</a>
|
||||
- <a href="#deprecated-features-2">Deprecated Features</a>
|
||||
- <a href="#bugfixes-3">Bugfixes</a>
|
||||
- <a href="#release-summary-6">Release Summary</a>
|
||||
- <a href="#minor-changes-4">Minor Changes</a>
|
||||
- <a href="#deprecated-features-3">Deprecated Features</a>
|
||||
- <a href="#bugfixes-6">Bugfixes</a>
|
||||
- <a href="#new-modules-2">New Modules</a>
|
||||
- <a href="#v10-3-1">v10\.3\.1</a>
|
||||
- <a href="#release-summary-4">Release Summary</a>
|
||||
- <a href="#minor-changes-4">Minor Changes</a>
|
||||
- <a href="#bugfixes-4">Bugfixes</a>
|
||||
- <a href="#v10-3-0">v10\.3\.0</a>
|
||||
- <a href="#release-summary-5">Release Summary</a>
|
||||
- <a href="#release-summary-7">Release Summary</a>
|
||||
- <a href="#minor-changes-5">Minor Changes</a>
|
||||
- <a href="#deprecated-features-3">Deprecated Features</a>
|
||||
- <a href="#bugfixes-7">Bugfixes</a>
|
||||
- <a href="#v10-3-0">v10\.3\.0</a>
|
||||
- <a href="#release-summary-8">Release Summary</a>
|
||||
- <a href="#minor-changes-6">Minor Changes</a>
|
||||
- <a href="#deprecated-features-4">Deprecated Features</a>
|
||||
- <a href="#security-fixes">Security Fixes</a>
|
||||
- <a href="#bugfixes-5">Bugfixes</a>
|
||||
- <a href="#bugfixes-8">Bugfixes</a>
|
||||
- <a href="#new-plugins-2">New Plugins</a>
|
||||
- <a href="#connection-1">Connection</a>
|
||||
- <a href="#filter-1">Filter</a>
|
||||
- <a href="#lookup">Lookup</a>
|
||||
- <a href="#new-modules-3">New Modules</a>
|
||||
- <a href="#v10-2-0">v10\.2\.0</a>
|
||||
- <a href="#release-summary-6">Release Summary</a>
|
||||
- <a href="#minor-changes-6">Minor Changes</a>
|
||||
- <a href="#deprecated-features-4">Deprecated Features</a>
|
||||
- <a href="#release-summary-9">Release Summary</a>
|
||||
- <a href="#minor-changes-7">Minor Changes</a>
|
||||
- <a href="#deprecated-features-5">Deprecated Features</a>
|
||||
- <a href="#security-fixes-1">Security Fixes</a>
|
||||
- <a href="#bugfixes-6">Bugfixes</a>
|
||||
- <a href="#bugfixes-9">Bugfixes</a>
|
||||
- <a href="#new-plugins-3">New Plugins</a>
|
||||
- <a href="#inventory">Inventory</a>
|
||||
- <a href="#new-modules-4">New Modules</a>
|
||||
- <a href="#v10-1-0">v10\.1\.0</a>
|
||||
- <a href="#release-summary-7">Release Summary</a>
|
||||
- <a href="#minor-changes-7">Minor Changes</a>
|
||||
- <a href="#deprecated-features-5">Deprecated Features</a>
|
||||
- <a href="#bugfixes-7">Bugfixes</a>
|
||||
- <a href="#release-summary-10">Release Summary</a>
|
||||
- <a href="#minor-changes-8">Minor Changes</a>
|
||||
- <a href="#deprecated-features-6">Deprecated Features</a>
|
||||
- <a href="#bugfixes-10">Bugfixes</a>
|
||||
- <a href="#new-plugins-4">New Plugins</a>
|
||||
- <a href="#filter-2">Filter</a>
|
||||
- <a href="#new-modules-5">New Modules</a>
|
||||
- <a href="#v10-0-1">v10\.0\.1</a>
|
||||
- <a href="#release-summary-8">Release Summary</a>
|
||||
- <a href="#bugfixes-8">Bugfixes</a>
|
||||
- <a href="#release-summary-11">Release Summary</a>
|
||||
- <a href="#bugfixes-11">Bugfixes</a>
|
||||
- <a href="#v10-0-0">v10\.0\.0</a>
|
||||
- <a href="#release-summary-9">Release Summary</a>
|
||||
- <a href="#minor-changes-8">Minor Changes</a>
|
||||
- <a href="#release-summary-12">Release Summary</a>
|
||||
- <a href="#minor-changes-9">Minor Changes</a>
|
||||
- <a href="#breaking-changes--porting-guide">Breaking Changes / Porting Guide</a>
|
||||
- <a href="#deprecated-features-6">Deprecated Features</a>
|
||||
- <a href="#deprecated-features-7">Deprecated Features</a>
|
||||
- <a href="#removed-features-previously-deprecated">Removed Features \(previously deprecated\)</a>
|
||||
- <a href="#bugfixes-9">Bugfixes</a>
|
||||
- <a href="#bugfixes-12">Bugfixes</a>
|
||||
- <a href="#known-issues-1">Known Issues</a>
|
||||
- <a href="#new-plugins-5">New Plugins</a>
|
||||
- <a href="#filter-3">Filter</a>
|
||||
@@ -79,10 +90,90 @@
|
||||
- <a href="#new-modules-6">New Modules</a>
|
||||
This changelog describes changes after version 9\.0\.0\.
|
||||
|
||||
<a id="v10-7-3"></a>
|
||||
## v10\.7\.3
|
||||
|
||||
<a id="release-summary"></a>
|
||||
### Release Summary
|
||||
|
||||
Regular bugfix release\.
|
||||
|
||||
<a id="bugfixes"></a>
|
||||
### Bugfixes
|
||||
|
||||
* apache2\_module \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\.
|
||||
* apk \- fix check for empty/whitespace\-only package names \([https\://github\.com/ansible\-collections/community\.general/pull/10532](https\://github\.com/ansible\-collections/community\.general/pull/10532)\)\.
|
||||
* apk \- handle empty name strings properly \([https\://github\.com/ansible\-collections/community\.general/issues/10441](https\://github\.com/ansible\-collections/community\.general/issues/10441)\, [https\://github\.com/ansible\-collections/community\.general/pull/10442](https\://github\.com/ansible\-collections/community\.general/pull/10442)\)\.
|
||||
* capabilities \- using invalid path \(symlink/directory/\.\.\.\) returned unrelated and incoherent error messages \([https\://github\.com/ansible\-collections/community\.general/issues/5649](https\://github\.com/ansible\-collections/community\.general/issues/5649)\, [https\://github\.com/ansible\-collections/community\.general/pull/10455](https\://github\.com/ansible\-collections/community\.general/pull/10455)\)\.
|
||||
* cronvar \- fix crash on missing <code>cron\_file</code> parent directories \([https\://github\.com/ansible\-collections/community\.general/issues/10460](https\://github\.com/ansible\-collections/community\.general/issues/10460)\, [https\://github\.com/ansible\-collections/community\.general/pull/10461](https\://github\.com/ansible\-collections/community\.general/pull/10461)\)\.
|
||||
* cronvar \- handle empty strings on <code>value</code> properly \([https\://github\.com/ansible\-collections/community\.general/issues/10439](https\://github\.com/ansible\-collections/community\.general/issues/10439)\, [https\://github\.com/ansible\-collections/community\.general/pull/10445](https\://github\.com/ansible\-collections/community\.general/pull/10445)\)\.
|
||||
* doas become plugin \- disable pipelining on ansible\-core 2\.19\+\. The plugin does not work with pipelining\, and since ansible\-core 2\.19 become plugins can indicate that they do not work with pipelining \([https\://github\.com/ansible\-collections/community\.general/issues/9977](https\://github\.com/ansible\-collections/community\.general/issues/9977)\, [https\://github\.com/ansible\-collections/community\.general/pull/10537](https\://github\.com/ansible\-collections/community\.general/pull/10537)\)\.
|
||||
* htpasswd \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\.
|
||||
* irc \- pass hostname to <code>wrap\_socket\(\)</code> if <code>use\_tls\=true</code> and <code>validate\_certs\=true</code> \([https\://github\.com/ansible\-collections/community\.general/issues/10472](https\://github\.com/ansible\-collections/community\.general/issues/10472)\, [https\://github\.com/ansible\-collections/community\.general/pull/10491](https\://github\.com/ansible\-collections/community\.general/pull/10491)\)\.
|
||||
* json\_query filter plugin \- make compatible with lazy evaluation list and dictionary types of ansible\-core 2\.19 \([https\://github\.com/ansible\-collections/community\.general/pull/10539](https\://github\.com/ansible\-collections/community\.general/pull/10539)\)\.
|
||||
* listen\_port\_facts \- avoid crash when required commands are missing \([https\://github\.com/ansible\-collections/community\.general/issues/10457](https\://github\.com/ansible\-collections/community\.general/issues/10457)\, [https\://github\.com/ansible\-collections/community\.general/pull/10458](https\://github\.com/ansible\-collections/community\.general/pull/10458)\)\.
|
||||
* machinectl become plugin \- disable pipelining on ansible\-core 2\.19\+\. The plugin does not work with pipelining\, and since ansible\-core 2\.19 become plugins can indicate that they do not work with pipelining \([https\://github\.com/ansible\-collections/community\.general/pull/10537](https\://github\.com/ansible\-collections/community\.general/pull/10537)\)\.
|
||||
* merge\_variables lookup plugin \- avoid deprecated functionality from ansible\-core 2\.19 \([https\://github\.com/ansible\-collections/community\.general/pull/10566](https\://github\.com/ansible\-collections/community\.general/pull/10566)\)\.
|
||||
* proxmox inventory plugin \- avoid using deprecated option when templating options \([https\://github\.com/ansible\-collections/community\.proxmox/pull/108](https\://github\.com/ansible\-collections/community\.proxmox/pull/108)\, [https\://github\.com/ansible\-collections/community\.general/pull/10553](https\://github\.com/ansible\-collections/community\.general/pull/10553)\)\.
|
||||
* proxmox\_pct\_remote connection plugin \- avoid deprecated ansible\-core paramiko import helper\, import paramiko directly instead \([https\://github\.com/ansible\-collections/community\.proxmox/issues/146](https\://github\.com/ansible\-collections/community\.proxmox/issues/146)\, [https\://github\.com/ansible\-collections/community\.proxmox/pull/151](https\://github\.com/ansible\-collections/community\.proxmox/pull/151)\, [https\://github\.com/ansible\-collections/community\.general/pull/10553](https\://github\.com/ansible\-collections/community\.general/pull/10553)\)\.
|
||||
* syspatch \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\.
|
||||
* sysrc \- use <code>shlex</code> to improve parsing of <code>sysrc \-e \-a</code> output \([https\://github\.com/ansible\-collections/community\.general/issues/10394](https\://github\.com/ansible\-collections/community\.general/issues/10394)\, [https\://github\.com/ansible\-collections/community\.general/pull/10400](https\://github\.com/ansible\-collections/community\.general/pull/10400)\)\.
|
||||
* sysupgrade \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\.
|
||||
* wsl connection plugin \- avoid deprecated ansible\-core paramiko import helper\, import paramiko directly instead \([https\://github\.com/ansible\-collections/community\.general/issues/10515](https\://github\.com/ansible\-collections/community\.general/issues/10515)\, [https\://github\.com/ansible\-collections/community\.general/pull/10531](https\://github\.com/ansible\-collections/community\.general/pull/10531)\)\.
|
||||
* zypper\_repository \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\.
|
||||
|
||||
<a id="v10-7-2"></a>
|
||||
## v10\.7\.2
|
||||
|
||||
<a id="release-summary-1"></a>
|
||||
### Release Summary
|
||||
|
||||
Regular bugfix release\.
|
||||
|
||||
<a id="bugfixes-1"></a>
|
||||
### Bugfixes
|
||||
|
||||
* dependent lookup plugin \- avoid deprecated ansible\-core 2\.19 functionality \([https\://github\.com/ansible\-collections/community\.general/pull/10359](https\://github\.com/ansible\-collections/community\.general/pull/10359)\)\.
|
||||
* github\_release \- support multiple types of GitHub tokens\; no longer failing when <code>ghs\_</code> token type is provided \([https\://github\.com/ansible\-collections/community\.general/issues/10338](https\://github\.com/ansible\-collections/community\.general/issues/10338)\, [https\://github\.com/ansible\-collections/community\.general/pull/10339](https\://github\.com/ansible\-collections/community\.general/pull/10339)\)\.
|
||||
* icinga2 inventory plugin \- avoid using deprecated option when templating options \([https\://github\.com/ansible\-collections/community\.general/pull/10271](https\://github\.com/ansible\-collections/community\.general/pull/10271)\)\.
|
||||
* incus connection plugin \- fix error handling to return more useful Ansible errors to the user \([https\://github\.com/ansible\-collections/community\.general/issues/10344](https\://github\.com/ansible\-collections/community\.general/issues/10344)\, [https\://github\.com/ansible\-collections/community\.general/pull/10349](https\://github\.com/ansible\-collections/community\.general/pull/10349)\)\.
|
||||
* linode inventory plugin \- avoid using deprecated option when templating options \([https\://github\.com/ansible\-collections/community\.general/pull/10271](https\://github\.com/ansible\-collections/community\.general/pull/10271)\)\.
|
||||
* logstash callback plugin \- remove reference to Python 2 library \([https\://github\.com/ansible\-collections/community\.general/pull/10345](https\://github\.com/ansible\-collections/community\.general/pull/10345)\)\.
|
||||
|
||||
<a id="v10-7-1"></a>
|
||||
## v10\.7\.1
|
||||
|
||||
<a id="release-summary-2"></a>
|
||||
### Release Summary
|
||||
|
||||
Regular bugfix release\.
|
||||
|
||||
<a id="minor-changes"></a>
|
||||
### Minor Changes
|
||||
|
||||
* git\_config \- remove redundant <code>required\=False</code> from <code>argument\_spec</code> \([https\://github\.com/ansible\-collections/community\.general/pull/10177](https\://github\.com/ansible\-collections/community\.general/pull/10177)\)\.
|
||||
* proxmox\_snap \- correctly handle proxmox\_snap timeout parameter \([https\://github\.com/ansible\-collections/community\.proxmox/issues/73](https\://github\.com/ansible\-collections/community\.proxmox/issues/73)\, [https\://github\.com/ansible\-collections/community\.proxmox/issues/95](https\://github\.com/ansible\-collections/community\.proxmox/issues/95)\, [https\://github\.com/ansible\-collections/community\.general/pull/10176](https\://github\.com/ansible\-collections/community\.general/pull/10176)\)\.
|
||||
|
||||
<a id="deprecated-features"></a>
|
||||
### Deprecated Features
|
||||
|
||||
* yaml callback plugin \- the YAML callback plugin was deprecated for removal in community\.general 13\.0\.0\. Since it needs to use ansible\-core internals since ansible\-core 2\.19 that are changing a lot\, we will remove this plugin already from community\.general 12\.0\.0 to ease the maintenance burden \([https\://github\.com/ansible\-collections/community\.general/pull/10213](https\://github\.com/ansible\-collections/community\.general/pull/10213)\)\.
|
||||
|
||||
<a id="bugfixes-2"></a>
|
||||
### Bugfixes
|
||||
|
||||
* cobbler\_system \- update minimum version number to avoid wrong comparisons that happen in some cases using LooseVersion class which results in TypeError \([https\://github\.com/ansible\-collections/community\.general/issues/8506](https\://github\.com/ansible\-collections/community\.general/issues/8506)\, [https\://github\.com/ansible\-collections/community\.general/pull/10145](https\://github\.com/ansible\-collections/community\.general/pull/10145)\, [https\://github\.com/ansible\-collections/community\.general/pull/10178](https\://github\.com/ansible\-collections/community\.general/pull/10178)\)\.
|
||||
* gitlab\_group\_access\_token\, gitlab\_project\_access\_token \- fix handling of group and project access tokens for changes in GitLab 17\.10 \([https\://github\.com/ansible\-collections/community\.general/pull/10196](https\://github\.com/ansible\-collections/community\.general/pull/10196)\)\.
|
||||
* keycloak \- update more than 10 sub\-groups \([https\://github\.com/ansible\-collections/community\.general/issues/9690](https\://github\.com/ansible\-collections/community\.general/issues/9690)\, [https\://github\.com/ansible\-collections/community\.general/pull/9692](https\://github\.com/ansible\-collections/community\.general/pull/9692)\)\.
|
||||
* yaml callback plugin \- adjust to latest changes in ansible\-core devel \([https\://github\.com/ansible\-collections/community\.general/pull/10212](https\://github\.com/ansible\-collections/community\.general/pull/10212)\)\.
|
||||
* yaml callback plugin \- when using ansible\-core 2\.19\.0b2 or newer\, uses a new utility provided by ansible\-core\. This allows us to remove all hacks and vendored code that was part of the plugin for ansible\-core versions with Data Tagging so far \([https\://github\.com/ansible\-collections/community\.general/pull/10242](https\://github\.com/ansible\-collections/community\.general/pull/10242)\)\.
|
||||
* zypper\_repository \- make compatible with Python 3\.12\+ \([https\://github\.com/ansible\-collections/community\.general/issues/10222](https\://github\.com/ansible\-collections/community\.general/issues/10222)\, [https\://github\.com/ansible\-collections/community\.general/pull/10223](https\://github\.com/ansible\-collections/community\.general/pull/10223)\)\.
|
||||
* zypper\_repository \- use <code>metalink</code> attribute to identify repositories without <code>\<url/\></code> element \([https\://github\.com/ansible\-collections/community\.general/issues/10224](https\://github\.com/ansible\-collections/community\.general/issues/10224)\, [https\://github\.com/ansible\-collections/community\.general/pull/10225](https\://github\.com/ansible\-collections/community\.general/pull/10225)\)\.
|
||||
|
||||
<a id="v10-7-0"></a>
|
||||
## v10\.7\.0
|
||||
|
||||
<a id="release-summary"></a>
|
||||
<a id="release-summary-3"></a>
|
||||
### Release Summary
|
||||
|
||||
Bugfix and feature release\.
|
||||
@@ -90,7 +181,7 @@ Note that this is the final minor 10\.x\.0 release\.
|
||||
The next release with new features will be 11\.0\.0\.
|
||||
From now on\, there will only be bugfix 10\.7\.x releases for the community\.general 10 release train\.
|
||||
|
||||
<a id="minor-changes"></a>
|
||||
<a id="minor-changes-1"></a>
|
||||
### Minor Changes
|
||||
|
||||
* cobbler inventory plugin \- add <code>connection\_timeout</code> option to specify the connection timeout to the cobbler server \([https\://github\.com/ansible\-collections/community\.general/pull/11063](https\://github\.com/ansible\-collections/community\.general/pull/11063)\)\.
|
||||
@@ -100,13 +191,13 @@ From now on\, there will only be bugfix 10\.7\.x releases for the community\.gen
|
||||
* pipx module\_utils \- filtering application list by name now happens in the modules \([https\://github\.com/ansible\-collections/community\.general/pull/10031](https\://github\.com/ansible\-collections/community\.general/pull/10031)\)\.
|
||||
* pipx\_info \- filtering application list by name now happens in the module \([https\://github\.com/ansible\-collections/community\.general/pull/10031](https\://github\.com/ansible\-collections/community\.general/pull/10031)\)\.
|
||||
|
||||
<a id="deprecated-features"></a>
|
||||
<a id="deprecated-features-1"></a>
|
||||
### Deprecated Features
|
||||
|
||||
* The proxmox content \(modules and plugins\) is being moved to the [new collection community\.proxmox](https\://github\.com/ansible\-collections/community\.proxmox)\. In community\.general 11\.0\.0\, these modules and plugins will be replaced by deprecated redirections to community\.proxmox\. You need to explicitly install community\.proxmox\, for example with <code>ansible\-galaxy collection install community\.proxmox</code>\. We suggest to update your roles and playbooks to use the new FQCNs as soon as possible to avoid getting deprecation messages \([https\://github\.com/ansible\-collections/community\.general/pull/10109](https\://github\.com/ansible\-collections/community\.general/pull/10109)\)\.
|
||||
* pipx module\_utils \- function <code>make\_process\_list\(\)</code> is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10031](https\://github\.com/ansible\-collections/community\.general/pull/10031)\)\.
|
||||
|
||||
<a id="bugfixes"></a>
|
||||
<a id="bugfixes-3"></a>
|
||||
### Bugfixes
|
||||
|
||||
* cobbler\_system \- fix bug with Cobbler \>\= 3\.4\.0 caused by giving more than 2 positional arguments to <code>CobblerXMLRPCInterface\.get\_system\_handle\(\)</code> \([https\://github\.com/ansible\-collections/community\.general/issues/8506](https\://github\.com/ansible\-collections/community\.general/issues/8506)\, [https\://github\.com/ansible\-collections/community\.general/pull/10145](https\://github\.com/ansible\-collections/community\.general/pull/10145)\)\.
|
||||
@@ -138,12 +229,12 @@ From now on\, there will only be bugfix 10\.7\.x releases for the community\.gen
|
||||
<a id="v10-6-0"></a>
|
||||
## v10\.6\.0
|
||||
|
||||
<a id="release-summary-1"></a>
|
||||
<a id="release-summary-4"></a>
|
||||
### Release Summary
|
||||
|
||||
Regular bugfix and feature release\.
|
||||
|
||||
<a id="minor-changes-1"></a>
|
||||
<a id="minor-changes-2"></a>
|
||||
### Minor Changes
|
||||
|
||||
* apache2\_module \- added workaround for new PHP module name\, from <code>php7\_module</code> to <code>php\_module</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9951](https\://github\.com/ansible\-collections/community\.general/pull/9951)\)\.
|
||||
@@ -176,13 +267,13 @@ Regular bugfix and feature release\.
|
||||
* xcc\_redfish\_command \- add <code>validate\_certs</code>\, <code>ca\_path</code>\, and <code>ciphers</code> options to configure TLS/SSL \([https\://github\.com/ansible\-collections/community\.general/issues/3686](https\://github\.com/ansible\-collections/community\.general/issues/3686)\, [https\://github\.com/ansible\-collections/community\.general/pull/9964](https\://github\.com/ansible\-collections/community\.general/pull/9964)\)\.
|
||||
* zypper \- adds <code>skip\_post\_errors</code> that allows to skip RPM post\-install errors \(Zypper return code 107\) \([https\://github\.com/ansible\-collections/community\.general/issues/9972](https\://github\.com/ansible\-collections/community\.general/issues/9972)\)\.
|
||||
|
||||
<a id="deprecated-features-1"></a>
|
||||
<a id="deprecated-features-2"></a>
|
||||
### Deprecated Features
|
||||
|
||||
* manifold lookup plugin \- plugin is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10028](https\://github\.com/ansible\-collections/community\.general/pull/10028)\)\.
|
||||
* stackpath\_compute inventory plugin \- plugin is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10026](https\://github\.com/ansible\-collections/community\.general/pull/10026)\)\.
|
||||
|
||||
<a id="bugfixes-1"></a>
|
||||
<a id="bugfixes-4"></a>
|
||||
### Bugfixes
|
||||
|
||||
* dependent look plugin \- make compatible with ansible\-core\'s Data Tagging feature \([https\://github\.com/ansible\-collections/community\.general/pull/9833](https\://github\.com/ansible\-collections/community\.general/pull/9833)\)\.
|
||||
@@ -215,12 +306,12 @@ Regular bugfix and feature release\.
|
||||
<a id="v10-5-0"></a>
|
||||
## v10\.5\.0
|
||||
|
||||
<a id="release-summary-2"></a>
|
||||
<a id="release-summary-5"></a>
|
||||
### Release Summary
|
||||
|
||||
Regular bugfix and feature release\.
|
||||
|
||||
<a id="minor-changes-2"></a>
|
||||
<a id="minor-changes-3"></a>
|
||||
### Minor Changes
|
||||
|
||||
* CmdRunner module utils \- the convenience method <code>cmd\_runner\_fmt\.as\_fixed\(\)</code> now accepts multiple arguments as a list \([https\://github\.com/ansible\-collections/community\.general/pull/9893](https\://github\.com/ansible\-collections/community\.general/pull/9893)\)\.
|
||||
@@ -237,7 +328,7 @@ Regular bugfix and feature release\.
|
||||
* systemd\_info \- extend support to timer units \([https\://github\.com/ansible\-collections/community\.general/pull/9891](https\://github\.com/ansible\-collections/community\.general/pull/9891)\)\.
|
||||
* vmadm \- add new options <code>flexible\_disk\_size</code> and <code>owner\_uuid</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9892](https\://github\.com/ansible\-collections/community\.general/pull/9892)\)\.
|
||||
|
||||
<a id="bugfixes-2"></a>
|
||||
<a id="bugfixes-5"></a>
|
||||
### Bugfixes
|
||||
|
||||
* cloudlare\_dns \- handle exhausted response stream in case of HTTP errors to show nice error message to the user \([https\://github\.com/ansible\-collections/community\.general/issues/9782](https\://github\.com/ansible\-collections/community\.general/issues/9782)\, [https\://github\.com/ansible\-collections/community\.general/pull/9818](https\://github\.com/ansible\-collections/community\.general/pull/9818)\)\.
|
||||
@@ -257,12 +348,12 @@ Regular bugfix and feature release\.
|
||||
<a id="v10-4-0"></a>
|
||||
## v10\.4\.0
|
||||
|
||||
<a id="release-summary-3"></a>
|
||||
<a id="release-summary-6"></a>
|
||||
### Release Summary
|
||||
|
||||
Regular bugfix and feature release\.
|
||||
|
||||
<a id="minor-changes-3"></a>
|
||||
<a id="minor-changes-4"></a>
|
||||
### Minor Changes
|
||||
|
||||
* bitwarden lookup plugin \- add new option <code>collection\_name</code> to filter results by collection name\, and new option <code>result\_count</code> to validate number of results \([https\://github\.com/ansible\-collections/community\.general/pull/9728](https\://github\.com/ansible\-collections/community\.general/pull/9728)\)\.
|
||||
@@ -278,7 +369,7 @@ Regular bugfix and feature release\.
|
||||
* ssh\_config \- add <code>other\_options</code> option \([https\://github\.com/ansible\-collections/community\.general/issues/8053](https\://github\.com/ansible\-collections/community\.general/issues/8053)\, [https\://github\.com/ansible\-collections/community\.general/pull/9684](https\://github\.com/ansible\-collections/community\.general/pull/9684)\)\.
|
||||
* xen\_orchestra inventory plugin \- add <code>use\_vm\_uuid</code> and <code>use\_host\_uuid</code> boolean options to allow switching over to using VM/Xen name labels instead of UUIDs as item names \([https\://github\.com/ansible\-collections/community\.general/pull/9787](https\://github\.com/ansible\-collections/community\.general/pull/9787)\)\.
|
||||
|
||||
<a id="deprecated-features-2"></a>
|
||||
<a id="deprecated-features-3"></a>
|
||||
### Deprecated Features
|
||||
|
||||
* profitbricks \- module is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9733](https\://github\.com/ansible\-collections/community\.general/pull/9733)\)\.
|
||||
@@ -287,7 +378,7 @@ Regular bugfix and feature release\.
|
||||
* profitbricks\_volume \- module is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9733](https\://github\.com/ansible\-collections/community\.general/pull/9733)\)\.
|
||||
* profitbricks\_volume\_attachments \- module is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9733](https\://github\.com/ansible\-collections/community\.general/pull/9733)\)\.
|
||||
|
||||
<a id="bugfixes-3"></a>
|
||||
<a id="bugfixes-6"></a>
|
||||
### Bugfixes
|
||||
|
||||
* apache2\_mod\_proxy \- make compatible with Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9762](https\://github\.com/ansible\-collections/community\.general/pull/9762)\)\.
|
||||
@@ -315,17 +406,17 @@ Regular bugfix and feature release\.
|
||||
<a id="v10-3-1"></a>
|
||||
## v10\.3\.1
|
||||
|
||||
<a id="release-summary-4"></a>
|
||||
<a id="release-summary-7"></a>
|
||||
### Release Summary
|
||||
|
||||
Bugfix release\.
|
||||
|
||||
<a id="minor-changes-4"></a>
|
||||
<a id="minor-changes-5"></a>
|
||||
### Minor Changes
|
||||
|
||||
* onepassword\_ssh\_key \- refactor to move code to lookup class \([https\://github\.com/ansible\-collections/community\.general/pull/9633](https\://github\.com/ansible\-collections/community\.general/pull/9633)\)\.
|
||||
|
||||
<a id="bugfixes-4"></a>
|
||||
<a id="bugfixes-7"></a>
|
||||
### Bugfixes
|
||||
|
||||
* cloudflare\_dns \- fix crash when deleting a DNS record or when updating a record with <code>solo\=true</code> \([https\://github\.com/ansible\-collections/community\.general/issues/9652](https\://github\.com/ansible\-collections/community\.general/issues/9652)\, [https\://github\.com/ansible\-collections/community\.general/pull/9649](https\://github\.com/ansible\-collections/community\.general/pull/9649)\)\.
|
||||
@@ -339,12 +430,12 @@ Bugfix release\.
|
||||
<a id="v10-3-0"></a>
|
||||
## v10\.3\.0
|
||||
|
||||
<a id="release-summary-5"></a>
|
||||
<a id="release-summary-8"></a>
|
||||
### Release Summary
|
||||
|
||||
Regular bugfix and feature release\.
|
||||
|
||||
<a id="minor-changes-5"></a>
|
||||
<a id="minor-changes-6"></a>
|
||||
### Minor Changes
|
||||
|
||||
* MH module utils \- delegate <code>debug</code> to the underlying <code>AnsibleModule</code> instance or issues a warning if an attribute already exists with that name \([https\://github\.com/ansible\-collections/community\.general/pull/9577](https\://github\.com/ansible\-collections/community\.general/pull/9577)\)\.
|
||||
@@ -467,7 +558,7 @@ Regular bugfix and feature release\.
|
||||
* yaml callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\.
|
||||
* zone connection plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\.
|
||||
|
||||
<a id="deprecated-features-3"></a>
|
||||
<a id="deprecated-features-4"></a>
|
||||
### Deprecated Features
|
||||
|
||||
* MH module utils \- attribute <code>debug</code> definition in subclasses of MH is now deprecated\, as that name will become a delegation to <code>AnsibleModule</code> in community\.general 12\.0\.0\, and any such attribute will be overridden by that delegation in that version \([https\://github\.com/ansible\-collections/community\.general/pull/9577](https\://github\.com/ansible\-collections/community\.general/pull/9577)\)\.
|
||||
@@ -478,7 +569,7 @@ Regular bugfix and feature release\.
|
||||
|
||||
* keycloak\_client \- Sanitize <code>saml\.encryption\.private\.key</code> so it does not show in the logs \([https\://github\.com/ansible\-collections/community\.general/pull/9621](https\://github\.com/ansible\-collections/community\.general/pull/9621)\)\.
|
||||
|
||||
<a id="bugfixes-5"></a>
|
||||
<a id="bugfixes-8"></a>
|
||||
### Bugfixes
|
||||
|
||||
* homebrew \- fix incorrect handling of homebrew modules when a tap is requested \([https\://github\.com/ansible\-collections/community\.general/pull/9546](https\://github\.com/ansible\-collections/community\.general/pull/9546)\, [https\://github\.com/ansible\-collections/community\.general/issues/9533](https\://github\.com/ansible\-collections/community\.general/issues/9533)\)\.
|
||||
@@ -522,12 +613,12 @@ Regular bugfix and feature release\.
|
||||
<a id="v10-2-0"></a>
|
||||
## v10\.2\.0
|
||||
|
||||
<a id="release-summary-6"></a>
|
||||
<a id="release-summary-9"></a>
|
||||
### Release Summary
|
||||
|
||||
Regular bugfix and feature release\.
|
||||
|
||||
<a id="minor-changes-6"></a>
|
||||
<a id="minor-changes-7"></a>
|
||||
### Minor Changes
|
||||
|
||||
* bitwarden lookup plugin \- use f\-strings instead of interpolations or <code>format</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\.
|
||||
@@ -658,7 +749,7 @@ Regular bugfix and feature release\.
|
||||
* zypper \- add <code>quiet</code> option \([https\://github\.com/ansible\-collections/community\.general/pull/9270](https\://github\.com/ansible\-collections/community\.general/pull/9270)\)\.
|
||||
* zypper \- add <code>simple\_errors</code> option \([https\://github\.com/ansible\-collections/community\.general/pull/9270](https\://github\.com/ansible\-collections/community\.general/pull/9270)\)\.
|
||||
|
||||
<a id="deprecated-features-4"></a>
|
||||
<a id="deprecated-features-5"></a>
|
||||
### Deprecated Features
|
||||
|
||||
* atomic\_container \- module is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9487](https\://github\.com/ansible\-collections/community\.general/pull/9487)\)\.
|
||||
@@ -681,7 +772,7 @@ Regular bugfix and feature release\.
|
||||
|
||||
* keycloak\_authentication \- API calls did not properly set the <code>priority</code> during update resulting in incorrectly sorted authentication flows\. This apparently only affects Keycloak 25 or newer \([https\://github\.com/ansible\-collections/community\.general/pull/9263](https\://github\.com/ansible\-collections/community\.general/pull/9263)\)\.
|
||||
|
||||
<a id="bugfixes-6"></a>
|
||||
<a id="bugfixes-9"></a>
|
||||
### Bugfixes
|
||||
|
||||
* dig lookup plugin \- correctly handle <code>NoNameserver</code> exception \([https\://github\.com/ansible\-collections/community\.general/pull/9363](https\://github\.com/ansible\-collections/community\.general/pull/9363)\, [https\://github\.com/ansible\-collections/community\.general/issues/9362](https\://github\.com/ansible\-collections/community\.general/issues/9362)\)\.
|
||||
@@ -712,12 +803,12 @@ Regular bugfix and feature release\.
|
||||
<a id="v10-1-0"></a>
|
||||
## v10\.1\.0
|
||||
|
||||
<a id="release-summary-7"></a>
|
||||
<a id="release-summary-10"></a>
|
||||
### Release Summary
|
||||
|
||||
Regular bugfix and feature release\.
|
||||
|
||||
<a id="minor-changes-7"></a>
|
||||
<a id="minor-changes-8"></a>
|
||||
### Minor Changes
|
||||
|
||||
* alternatives \- add <code>family</code> parameter that allows to utilize the <code>\-\-family</code> option available in RedHat version of update\-alternatives \([https\://github\.com/ansible\-collections/community\.general/issues/5060](https\://github\.com/ansible\-collections/community\.general/issues/5060)\, [https\://github\.com/ansible\-collections/community\.general/pull/9096](https\://github\.com/ansible\-collections/community\.general/pull/9096)\)\.
|
||||
@@ -738,13 +829,13 @@ Regular bugfix and feature release\.
|
||||
* scaleway\_lb \- minor simplification in the code \([https\://github\.com/ansible\-collections/community\.general/pull/9189](https\://github\.com/ansible\-collections/community\.general/pull/9189)\)\.
|
||||
* ssh\_config \- add <code>dynamicforward</code> option \([https\://github\.com/ansible\-collections/community\.general/pull/9192](https\://github\.com/ansible\-collections/community\.general/pull/9192)\)\.
|
||||
|
||||
<a id="deprecated-features-5"></a>
|
||||
<a id="deprecated-features-6"></a>
|
||||
### Deprecated Features
|
||||
|
||||
* opkg \- deprecate value <code>\"\"</code> for parameter <code>force</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9172](https\://github\.com/ansible\-collections/community\.general/pull/9172)\)\.
|
||||
* redfish\_utils module utils \- deprecate method <code>RedfishUtils\.\_init\_session\(\)</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9190](https\://github\.com/ansible\-collections/community\.general/pull/9190)\)\.
|
||||
|
||||
<a id="bugfixes-7"></a>
|
||||
<a id="bugfixes-10"></a>
|
||||
### Bugfixes
|
||||
|
||||
* dnf\_config\_manager \- fix hanging when prompting to import GPG keys \([https\://github\.com/ansible\-collections/community\.general/pull/9124](https\://github\.com/ansible\-collections/community\.general/pull/9124)\, [https\://github\.com/ansible\-collections/community\.general/issues/8830](https\://github\.com/ansible\-collections/community\.general/issues/8830)\)\.
|
||||
@@ -773,12 +864,12 @@ Regular bugfix and feature release\.
|
||||
<a id="v10-0-1"></a>
|
||||
## v10\.0\.1
|
||||
|
||||
<a id="release-summary-8"></a>
|
||||
<a id="release-summary-11"></a>
|
||||
### Release Summary
|
||||
|
||||
Bugfix release for inclusion in Ansible 11\.0\.0rc1\.
|
||||
|
||||
<a id="bugfixes-8"></a>
|
||||
<a id="bugfixes-11"></a>
|
||||
### Bugfixes
|
||||
|
||||
* keycloak\_client \- fix diff by removing code that turns the attributes dict which contains additional settings into a list \([https\://github\.com/ansible\-collections/community\.general/pull/9077](https\://github\.com/ansible\-collections/community\.general/pull/9077)\)\.
|
||||
@@ -788,12 +879,12 @@ Bugfix release for inclusion in Ansible 11\.0\.0rc1\.
|
||||
<a id="v10-0-0"></a>
|
||||
## v10\.0\.0
|
||||
|
||||
<a id="release-summary-9"></a>
|
||||
<a id="release-summary-12"></a>
|
||||
### Release Summary
|
||||
|
||||
This is release 10\.0\.0 of <code>community\.general</code>\, released on 2024\-11\-04\.
|
||||
|
||||
<a id="minor-changes-8"></a>
|
||||
<a id="minor-changes-9"></a>
|
||||
### Minor Changes
|
||||
|
||||
* CmdRunner module util \- argument formats can be specified as plain functions without calling <code>cmd\_runner\_fmt\.as\_func\(\)</code> \([https\://github\.com/ansible\-collections/community\.general/pull/8479](https\://github\.com/ansible\-collections/community\.general/pull/8479)\)\.
|
||||
@@ -998,7 +1089,7 @@ This is release 10\.0\.0 of <code>community\.general</code>\, released on 2024\-
|
||||
* irc \- the defaults of <code>use\_tls</code> and <code>validate\_certs</code> changed from <code>false</code> to <code>true</code> \([https\://github\.com/ansible\-collections/community\.general/pull/8918](https\://github\.com/ansible\-collections/community\.general/pull/8918)\)\.
|
||||
* rhsm\_repository \- the states <code>present</code> and <code>absent</code> have been removed\. Use <code>enabled</code> and <code>disabled</code> instead \([https\://github\.com/ansible\-collections/community\.general/pull/8918](https\://github\.com/ansible\-collections/community\.general/pull/8918)\)\.
|
||||
|
||||
<a id="deprecated-features-6"></a>
|
||||
<a id="deprecated-features-7"></a>
|
||||
### Deprecated Features
|
||||
|
||||
* CmdRunner module util \- setting the value of the <code>ignore\_none</code> parameter within a <code>CmdRunner</code> context is deprecated and that feature should be removed in community\.general 12\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/8479](https\://github\.com/ansible\-collections/community\.general/pull/8479)\)\.
|
||||
@@ -1023,7 +1114,7 @@ This is release 10\.0\.0 of <code>community\.general</code>\, released on 2024\-
|
||||
* proxmox\_kvm \- removed the <code>proxmox\_default\_behavior</code> option\. Explicitly specify the old default values if you were using <code>proxmox\_default\_behavior\=compatibility</code>\, otherwise simply remove it \([https\://github\.com/ansible\-collections/community\.general/pull/8918](https\://github\.com/ansible\-collections/community\.general/pull/8918)\)\.
|
||||
* redhat\_subscriptions \- removed the <code>pool</code> option\. Use <code>pool\_ids</code> instead \([https\://github\.com/ansible\-collections/community\.general/pull/8918](https\://github\.com/ansible\-collections/community\.general/pull/8918)\)\.
|
||||
|
||||
<a id="bugfixes-9"></a>
|
||||
<a id="bugfixes-12"></a>
|
||||
### Bugfixes
|
||||
|
||||
* bitwarden lookup plugin \- fix <code>KeyError</code> in <code>search\_field</code> \([https\://github\.com/ansible\-collections/community\.general/issues/8549](https\://github\.com/ansible\-collections/community\.general/issues/8549)\, [https\://github\.com/ansible\-collections/community\.general/pull/8557](https\://github\.com/ansible\-collections/community\.general/pull/8557)\)\.
|
||||
|
||||
@@ -6,6 +6,86 @@ Community General Release Notes
|
||||
|
||||
This changelog describes changes after version 9.0.0.
|
||||
|
||||
v10.7.3
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
Regular bugfix release.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- apache2_module - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459).
|
||||
- apk - fix check for empty/whitespace-only package names (https://github.com/ansible-collections/community.general/pull/10532).
|
||||
- apk - handle empty name strings properly (https://github.com/ansible-collections/community.general/issues/10441, https://github.com/ansible-collections/community.general/pull/10442).
|
||||
- capabilities - using invalid path (symlink/directory/...) returned unrelated and incoherent error messages (https://github.com/ansible-collections/community.general/issues/5649, https://github.com/ansible-collections/community.general/pull/10455).
|
||||
- cronvar - fix crash on missing ``cron_file`` parent directories (https://github.com/ansible-collections/community.general/issues/10460, https://github.com/ansible-collections/community.general/pull/10461).
|
||||
- cronvar - handle empty strings on ``value`` properly (https://github.com/ansible-collections/community.general/issues/10439, https://github.com/ansible-collections/community.general/pull/10445).
|
||||
- doas become plugin - disable pipelining on ansible-core 2.19+. The plugin does not work with pipelining, and since ansible-core 2.19 become plugins can indicate that they do not work with pipelining (https://github.com/ansible-collections/community.general/issues/9977, https://github.com/ansible-collections/community.general/pull/10537).
|
||||
- htpasswd - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459).
|
||||
- irc - pass hostname to ``wrap_socket()`` if ``use_tls=true`` and ``validate_certs=true`` (https://github.com/ansible-collections/community.general/issues/10472, https://github.com/ansible-collections/community.general/pull/10491).
|
||||
- json_query filter plugin - make compatible with lazy evaluation list and dictionary types of ansible-core 2.19 (https://github.com/ansible-collections/community.general/pull/10539).
|
||||
- listen_port_facts - avoid crash when required commands are missing (https://github.com/ansible-collections/community.general/issues/10457, https://github.com/ansible-collections/community.general/pull/10458).
|
||||
- machinectl become plugin - disable pipelining on ansible-core 2.19+. The plugin does not work with pipelining, and since ansible-core 2.19 become plugins can indicate that they do not work with pipelining (https://github.com/ansible-collections/community.general/pull/10537).
|
||||
- merge_variables lookup plugin - avoid deprecated functionality from ansible-core 2.19 (https://github.com/ansible-collections/community.general/pull/10566).
|
||||
- proxmox inventory plugin - avoid using deprecated option when templating options (https://github.com/ansible-collections/community.proxmox/pull/108, https://github.com/ansible-collections/community.general/pull/10553).
|
||||
- proxmox_pct_remote connection plugin - avoid deprecated ansible-core paramiko import helper, import paramiko directly instead (https://github.com/ansible-collections/community.proxmox/issues/146, https://github.com/ansible-collections/community.proxmox/pull/151, https://github.com/ansible-collections/community.general/pull/10553).
|
||||
- syspatch - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459).
|
||||
- sysrc - use ``shlex`` to improve parsing of ``sysrc -e -a`` output (https://github.com/ansible-collections/community.general/issues/10394, https://github.com/ansible-collections/community.general/pull/10400).
|
||||
- sysupgrade - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459).
|
||||
- wsl connection plugin - avoid deprecated ansible-core paramiko import helper, import paramiko directly instead (https://github.com/ansible-collections/community.general/issues/10515, https://github.com/ansible-collections/community.general/pull/10531).
|
||||
- zypper_repository - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459).
|
||||
|
||||
v10.7.2
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
Regular bugfix release.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- dependent lookup plugin - avoid deprecated ansible-core 2.19 functionality (https://github.com/ansible-collections/community.general/pull/10359).
|
||||
- github_release - support multiple types of GitHub tokens; no longer failing when ``ghs_`` token type is provided (https://github.com/ansible-collections/community.general/issues/10338, https://github.com/ansible-collections/community.general/pull/10339).
|
||||
- icinga2 inventory plugin - avoid using deprecated option when templating options (https://github.com/ansible-collections/community.general/pull/10271).
|
||||
- incus connection plugin - fix error handling to return more useful Ansible errors to the user (https://github.com/ansible-collections/community.general/issues/10344, https://github.com/ansible-collections/community.general/pull/10349).
|
||||
- linode inventory plugin - avoid using deprecated option when templating options (https://github.com/ansible-collections/community.general/pull/10271).
|
||||
- logstash callback plugin - remove reference to Python 2 library (https://github.com/ansible-collections/community.general/pull/10345).
|
||||
|
||||
v10.7.1
|
||||
=======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
Regular bugfix release.
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- git_config - remove redundant ``required=False`` from ``argument_spec`` (https://github.com/ansible-collections/community.general/pull/10177).
|
||||
- proxmox_snap - correctly handle proxmox_snap timeout parameter (https://github.com/ansible-collections/community.proxmox/issues/73, https://github.com/ansible-collections/community.proxmox/issues/95, https://github.com/ansible-collections/community.general/pull/10176).
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- yaml callback plugin - the YAML callback plugin was deprecated for removal in community.general 13.0.0. Since it needs to use ansible-core internals since ansible-core 2.19 that are changing a lot, we will remove this plugin already from community.general 12.0.0 to ease the maintenance burden (https://github.com/ansible-collections/community.general/pull/10213).
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- cobbler_system - update minimum version number to avoid wrong comparisons that happen in some cases using LooseVersion class which results in TypeError (https://github.com/ansible-collections/community.general/issues/8506, https://github.com/ansible-collections/community.general/pull/10145, https://github.com/ansible-collections/community.general/pull/10178).
|
||||
- gitlab_group_access_token, gitlab_project_access_token - fix handling of group and project access tokens for changes in GitLab 17.10 (https://github.com/ansible-collections/community.general/pull/10196).
|
||||
- keycloak - update more than 10 sub-groups (https://github.com/ansible-collections/community.general/issues/9690, https://github.com/ansible-collections/community.general/pull/9692).
|
||||
- yaml callback plugin - adjust to latest changes in ansible-core devel (https://github.com/ansible-collections/community.general/pull/10212).
|
||||
- yaml callback plugin - when using ansible-core 2.19.0b2 or newer, uses a new utility provided by ansible-core. This allows us to remove all hacks and vendored code that was part of the plugin for ansible-core versions with Data Tagging so far (https://github.com/ansible-collections/community.general/pull/10242).
|
||||
- zypper_repository - make compatible with Python 3.12+ (https://github.com/ansible-collections/community.general/issues/10222, https://github.com/ansible-collections/community.general/pull/10223).
|
||||
- zypper_repository - use ``metalink`` attribute to identify repositories without ``<url/>`` element (https://github.com/ansible-collections/community.general/issues/10224, https://github.com/ansible-collections/community.general/pull/10225).
|
||||
|
||||
v10.7.0
|
||||
=======
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ nox -Re ansible-test-sanity-devel -- plugins/modules/system/pids.py tests/integr
|
||||
nox -R
|
||||
```
|
||||
|
||||
If you replace `-Re` with `-e`, respectively. leave `-R` away, then the virtual environments will be re-created. The `-R` re-uses them (if they already exist).
|
||||
If you replace `-Re` with `-e`, respectively. If you leave `-R` away, then the virtual environments will be re-created. The `-R` re-uses them (if they already exist).
|
||||
|
||||
### Unit tests
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ For more information about communication, see the [Ansible communication guide](
|
||||
|
||||
## Tested with Ansible
|
||||
|
||||
Tested with the current ansible-core 2.15, ansible-core 2.16, ansible-core 2.17, ansible-core 2.18 releases and the current development version of ansible-core. Ansible-core versions before 2.15.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
|
||||
Tested with the current ansible-core 2.15, ansible-core 2.16, ansible-core 2.17, ansible-core 2.18, ansible-core 2.19 releases and the current development version of ansible-core. Ansible-core versions before 2.15.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
|
||||
|
||||
## External requirements
|
||||
|
||||
|
||||
@@ -1886,3 +1886,137 @@ releases:
|
||||
name: to_prettytable
|
||||
namespace: null
|
||||
release_date: '2025-05-19'
|
||||
10.7.1:
|
||||
changes:
|
||||
bugfixes:
|
||||
- cobbler_system - update minimum version number to avoid wrong comparisons
|
||||
that happen in some cases using LooseVersion class which results in TypeError
|
||||
(https://github.com/ansible-collections/community.general/issues/8506, https://github.com/ansible-collections/community.general/pull/10145,
|
||||
https://github.com/ansible-collections/community.general/pull/10178).
|
||||
- gitlab_group_access_token, gitlab_project_access_token - fix handling of
|
||||
group and project access tokens for changes in GitLab 17.10 (https://github.com/ansible-collections/community.general/pull/10196).
|
||||
- keycloak - update more than 10 sub-groups (https://github.com/ansible-collections/community.general/issues/9690,
|
||||
https://github.com/ansible-collections/community.general/pull/9692).
|
||||
- yaml callback plugin - adjust to latest changes in ansible-core devel (https://github.com/ansible-collections/community.general/pull/10212).
|
||||
- yaml callback plugin - when using ansible-core 2.19.0b2 or newer, uses a
|
||||
new utility provided by ansible-core. This allows us to remove all hacks
|
||||
and vendored code that was part of the plugin for ansible-core versions
|
||||
with Data Tagging so far (https://github.com/ansible-collections/community.general/pull/10242).
|
||||
- zypper_repository - make compatible with Python 3.12+ (https://github.com/ansible-collections/community.general/issues/10222,
|
||||
https://github.com/ansible-collections/community.general/pull/10223).
|
||||
- zypper_repository - use ``metalink`` attribute to identify repositories
|
||||
without ``<url/>`` element (https://github.com/ansible-collections/community.general/issues/10224,
|
||||
https://github.com/ansible-collections/community.general/pull/10225).
|
||||
deprecated_features:
|
||||
- yaml callback plugin - the YAML callback plugin was deprecated for removal
|
||||
in community.general 13.0.0. Since it needs to use ansible-core internals
|
||||
since ansible-core 2.19 that are changing a lot, we will remove this plugin
|
||||
already from community.general 12.0.0 to ease the maintenance burden (https://github.com/ansible-collections/community.general/pull/10213).
|
||||
minor_changes:
|
||||
- git_config - remove redundant ``required=False`` from ``argument_spec``
|
||||
(https://github.com/ansible-collections/community.general/pull/10177).
|
||||
- proxmox_snap - correctly handle proxmox_snap timeout parameter (https://github.com/ansible-collections/community.proxmox/issues/73,
|
||||
https://github.com/ansible-collections/community.proxmox/issues/95, https://github.com/ansible-collections/community.general/pull/10176).
|
||||
release_summary: Regular bugfix release.
|
||||
fragments:
|
||||
- 10.7.1.yml
|
||||
- 10176-fix-proxmox_snap_timeout.yml
|
||||
- 10177-git-config-required.yml
|
||||
- 10178-update-minimum-version-number-to-avoid-wrong-comparisons-cobbler-xmlrpc.yml
|
||||
- 10196-fix-gitlab-access-tokens.yml
|
||||
- 10212-yaml.yml
|
||||
- 10213-yaml-deprecation.yml
|
||||
- 10222-zypper_repository-readfp.yml
|
||||
- 10224-zypper_repository-metalink.yml
|
||||
- 10242-yaml.yml
|
||||
- 9692-update-more-than-10-keycloak-sub-groups.yml
|
||||
release_date: '2025-06-16'
|
||||
10.7.2:
|
||||
changes:
|
||||
bugfixes:
|
||||
- dependent lookup plugin - avoid deprecated ansible-core 2.19 functionality
|
||||
(https://github.com/ansible-collections/community.general/pull/10359).
|
||||
- github_release - support multiple types of GitHub tokens; no longer failing
|
||||
when ``ghs_`` token type is provided (https://github.com/ansible-collections/community.general/issues/10338,
|
||||
https://github.com/ansible-collections/community.general/pull/10339).
|
||||
- icinga2 inventory plugin - avoid using deprecated option when templating
|
||||
options (https://github.com/ansible-collections/community.general/pull/10271).
|
||||
- incus connection plugin - fix error handling to return more useful Ansible
|
||||
errors to the user (https://github.com/ansible-collections/community.general/issues/10344,
|
||||
https://github.com/ansible-collections/community.general/pull/10349).
|
||||
- linode inventory plugin - avoid using deprecated option when templating
|
||||
options (https://github.com/ansible-collections/community.general/pull/10271).
|
||||
- logstash callback plugin - remove reference to Python 2 library (https://github.com/ansible-collections/community.general/pull/10345).
|
||||
release_summary: Regular bugfix release.
|
||||
fragments:
|
||||
- 10.7.2.yml
|
||||
- 10271--disable_lookups.yml
|
||||
- 10339-github_app_access_token.yml
|
||||
- 10349-incus_connection-error-handling.yml
|
||||
- 10359-dependent.yml
|
||||
- logstash.yml
|
||||
release_date: '2025-07-14'
|
||||
10.7.3:
|
||||
changes:
|
||||
bugfixes:
|
||||
- apache2_module - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459).
|
||||
- apk - fix check for empty/whitespace-only package names (https://github.com/ansible-collections/community.general/pull/10532).
|
||||
- apk - handle empty name strings properly (https://github.com/ansible-collections/community.general/issues/10441,
|
||||
https://github.com/ansible-collections/community.general/pull/10442).
|
||||
- capabilities - using invalid path (symlink/directory/...) returned unrelated
|
||||
and incoherent error messages (https://github.com/ansible-collections/community.general/issues/5649,
|
||||
https://github.com/ansible-collections/community.general/pull/10455).
|
||||
- cronvar - fix crash on missing ``cron_file`` parent directories (https://github.com/ansible-collections/community.general/issues/10460,
|
||||
https://github.com/ansible-collections/community.general/pull/10461).
|
||||
- cronvar - handle empty strings on ``value`` properly (https://github.com/ansible-collections/community.general/issues/10439,
|
||||
https://github.com/ansible-collections/community.general/pull/10445).
|
||||
- doas become plugin - disable pipelining on ansible-core 2.19+. The plugin
|
||||
does not work with pipelining, and since ansible-core 2.19 become plugins
|
||||
can indicate that they do not work with pipelining (https://github.com/ansible-collections/community.general/issues/9977,
|
||||
https://github.com/ansible-collections/community.general/pull/10537).
|
||||
- htpasswd - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459).
|
||||
- irc - pass hostname to ``wrap_socket()`` if ``use_tls=true`` and ``validate_certs=true``
|
||||
(https://github.com/ansible-collections/community.general/issues/10472,
|
||||
https://github.com/ansible-collections/community.general/pull/10491).
|
||||
- json_query filter plugin - make compatible with lazy evaluation list and
|
||||
dictionary types of ansible-core 2.19 (https://github.com/ansible-collections/community.general/pull/10539).
|
||||
- listen_port_facts - avoid crash when required commands are missing (https://github.com/ansible-collections/community.general/issues/10457,
|
||||
https://github.com/ansible-collections/community.general/pull/10458).
|
||||
- machinectl become plugin - disable pipelining on ansible-core 2.19+. The
|
||||
plugin does not work with pipelining, and since ansible-core 2.19 become
|
||||
plugins can indicate that they do not work with pipelining (https://github.com/ansible-collections/community.general/pull/10537).
|
||||
- merge_variables lookup plugin - avoid deprecated functionality from ansible-core
|
||||
2.19 (https://github.com/ansible-collections/community.general/pull/10566).
|
||||
- proxmox inventory plugin - avoid using deprecated option when templating
|
||||
options (https://github.com/ansible-collections/community.proxmox/pull/108,
|
||||
https://github.com/ansible-collections/community.general/pull/10553).
|
||||
- proxmox_pct_remote connection plugin - avoid deprecated ansible-core paramiko
|
||||
import helper, import paramiko directly instead (https://github.com/ansible-collections/community.proxmox/issues/146,
|
||||
https://github.com/ansible-collections/community.proxmox/pull/151, https://github.com/ansible-collections/community.general/pull/10553).
|
||||
- syspatch - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459).
|
||||
- sysrc - use ``shlex`` to improve parsing of ``sysrc -e -a`` output (https://github.com/ansible-collections/community.general/issues/10394,
|
||||
https://github.com/ansible-collections/community.general/pull/10400).
|
||||
- sysupgrade - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459).
|
||||
- wsl connection plugin - avoid deprecated ansible-core paramiko import helper,
|
||||
import paramiko directly instead (https://github.com/ansible-collections/community.general/issues/10515,
|
||||
https://github.com/ansible-collections/community.general/pull/10531).
|
||||
- zypper_repository - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459).
|
||||
release_summary: Regular bugfix release.
|
||||
fragments:
|
||||
- 10.7.3.yml
|
||||
- 10400-sysrc.yml
|
||||
- 10442-apk-fix-empty-names.yml
|
||||
- 10445-cronvar-reject-empty-values.yml
|
||||
- 10455-capabilities-improve-error-detection.yml
|
||||
- 10458-listen_port_facts-prevent-type-error.yml
|
||||
- 10459-deprecations.yml
|
||||
- 10461-cronvar-non-existent-dir-crash-fix.yml
|
||||
- 10491-irc.yml
|
||||
- 10531-wsl-paramiko.yml
|
||||
- 10532-apk.yml
|
||||
- 10539-json_query.yml
|
||||
- 10566-merge_variables.yml
|
||||
- 108--disable_lookups.yml
|
||||
- 151-connection-paramiko.yml
|
||||
- become-pipelining.yml
|
||||
release_date: '2025-08-11'
|
||||
|
||||
@@ -7,9 +7,9 @@ changelog_filename_template: ../CHANGELOG.rst
|
||||
changelog_filename_version_depth: 0
|
||||
changes_file: changelog.yaml
|
||||
changes_format: combined
|
||||
ignore_other_fragment_extensions: true
|
||||
keep_fragments: false
|
||||
mention_ancestor: true
|
||||
flatmap: true
|
||||
new_plugins_after_name: removed_features
|
||||
notesdir: fragments
|
||||
output_formats:
|
||||
@@ -40,3 +40,4 @@ use_fqcn: true
|
||||
add_plugin_period: true
|
||||
changelog_nice_yaml: true
|
||||
changelog_sort: version
|
||||
vcs: auto
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
community.general Filter Guide
|
||||
==============================
|
||||
|
||||
The :ref:`community.general collection <plugins_in_community.general>` offers several useful filter plugins.
|
||||
The :anscollection:`community.general collection <community.general#collection>` offers several useful filter plugins.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
@@ -26,8 +26,8 @@ You can use the :ansplugin:`community.general.dict_kv filter <community.general.
|
||||
type: host
|
||||
database: all
|
||||
myservers:
|
||||
- server1
|
||||
- server2
|
||||
- server1
|
||||
- server2
|
||||
|
||||
This produces:
|
||||
|
||||
|
||||
@@ -17,50 +17,50 @@ Consider this data structure:
|
||||
.. code-block:: yaml+jinja
|
||||
|
||||
{
|
||||
"domain_definition": {
|
||||
"domain": {
|
||||
"cluster": [
|
||||
{
|
||||
"name": "cluster1"
|
||||
},
|
||||
{
|
||||
"name": "cluster2"
|
||||
}
|
||||
],
|
||||
"server": [
|
||||
{
|
||||
"name": "server11",
|
||||
"cluster": "cluster1",
|
||||
"port": "8080"
|
||||
},
|
||||
{
|
||||
"name": "server12",
|
||||
"cluster": "cluster1",
|
||||
"port": "8090"
|
||||
},
|
||||
{
|
||||
"name": "server21",
|
||||
"cluster": "cluster2",
|
||||
"port": "9080"
|
||||
},
|
||||
{
|
||||
"name": "server22",
|
||||
"cluster": "cluster2",
|
||||
"port": "9090"
|
||||
}
|
||||
],
|
||||
"library": [
|
||||
{
|
||||
"name": "lib1",
|
||||
"target": "cluster1"
|
||||
},
|
||||
{
|
||||
"name": "lib2",
|
||||
"target": "cluster2"
|
||||
}
|
||||
]
|
||||
"domain_definition": {
|
||||
"domain": {
|
||||
"cluster": [
|
||||
{
|
||||
"name": "cluster1"
|
||||
},
|
||||
{
|
||||
"name": "cluster2"
|
||||
}
|
||||
],
|
||||
"server": [
|
||||
{
|
||||
"name": "server11",
|
||||
"cluster": "cluster1",
|
||||
"port": "8080"
|
||||
},
|
||||
{
|
||||
"name": "server12",
|
||||
"cluster": "cluster1",
|
||||
"port": "8090"
|
||||
},
|
||||
{
|
||||
"name": "server21",
|
||||
"cluster": "cluster2",
|
||||
"port": "9080"
|
||||
},
|
||||
{
|
||||
"name": "server22",
|
||||
"cluster": "cluster2",
|
||||
"port": "9090"
|
||||
}
|
||||
],
|
||||
"library": [
|
||||
{
|
||||
"name": "lib1",
|
||||
"target": "cluster1"
|
||||
},
|
||||
{
|
||||
"name": "lib2",
|
||||
"target": "cluster2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
To extract all clusters from this structure, you can use the following query:
|
||||
|
||||
@@ -78,17 +78,17 @@ If you do not specify a ``count_tag``, the task creates the number of instances
|
||||
tasks:
|
||||
- name: Create a set of instances
|
||||
community.general.ali_instance:
|
||||
instance_type: ecs.n4.small
|
||||
image_id: "{{ ami_id }}"
|
||||
instance_name: "My-new-instance"
|
||||
instance_tags:
|
||||
Name: NewECS
|
||||
Version: 0.0.1
|
||||
count: 5
|
||||
count_tag:
|
||||
Name: NewECS
|
||||
allocate_public_ip: true
|
||||
max_bandwidth_out: 50
|
||||
instance_type: ecs.n4.small
|
||||
image_id: "{{ ami_id }}"
|
||||
instance_name: "My-new-instance"
|
||||
instance_tags:
|
||||
Name: NewECS
|
||||
Version: 0.0.1
|
||||
count: 5
|
||||
count_tag:
|
||||
Name: NewECS
|
||||
allocate_public_ip: true
|
||||
max_bandwidth_out: 50
|
||||
register: create_instance
|
||||
|
||||
In the example playbook above, data about the instances created by this playbook is saved in the variable defined by the ``register`` keyword in the task.
|
||||
|
||||
@@ -67,16 +67,16 @@ The following code block is a simple playbook that creates one `Type 0 <https://
|
||||
hosts: localhost
|
||||
tasks:
|
||||
|
||||
- community.general.packet_sshkey:
|
||||
key_file: ./id_rsa.pub
|
||||
label: tutorial key
|
||||
- community.general.packet_sshkey:
|
||||
key_file: ./id_rsa.pub
|
||||
label: tutorial key
|
||||
|
||||
- community.general.packet_device:
|
||||
project_id: <your_project_id>
|
||||
hostnames: myserver
|
||||
operating_system: ubuntu_16_04
|
||||
plan: baremetal_0
|
||||
facility: sjc1
|
||||
- community.general.packet_device:
|
||||
project_id: <your_project_id>
|
||||
hostnames: myserver
|
||||
operating_system: ubuntu_16_04
|
||||
plan: baremetal_0
|
||||
facility: sjc1
|
||||
|
||||
After running ``ansible-playbook playbook_create.yml``, you should have a server provisioned on Packet. You can verify through a CLI or in the `Packet portal <https://app.packet.net/portal#/projects/list/table>`__.
|
||||
|
||||
@@ -110,10 +110,10 @@ If your playbook acts on existing Packet devices, you can only pass the ``hostna
|
||||
hosts: localhost
|
||||
tasks:
|
||||
|
||||
- community.general.packet_device:
|
||||
project_id: <your_project_id>
|
||||
hostnames: myserver
|
||||
state: rebooted
|
||||
- community.general.packet_device:
|
||||
project_id: <your_project_id>
|
||||
hostnames: myserver
|
||||
state: rebooted
|
||||
|
||||
You can also identify specific Packet devices with the ``device_ids`` parameter. The device's UUID can be found in the `Packet Portal <https://app.packet.net/portal>`_ or by using a `CLI <https://www.packet.net/developers/integrations/>`_. The following playbook removes a Packet device using the ``device_ids`` field:
|
||||
|
||||
@@ -125,10 +125,10 @@ You can also identify specific Packet devices with the ``device_ids`` parameter.
|
||||
hosts: localhost
|
||||
tasks:
|
||||
|
||||
- community.general.packet_device:
|
||||
project_id: <your_project_id>
|
||||
device_ids: <myserver_device_id>
|
||||
state: absent
|
||||
- community.general.packet_device:
|
||||
project_id: <your_project_id>
|
||||
device_ids: <myserver_device_id>
|
||||
state: absent
|
||||
|
||||
|
||||
More Complex Playbooks
|
||||
@@ -153,43 +153,43 @@ The following playbook will create an SSH key, 3 Packet servers, and then wait u
|
||||
hosts: localhost
|
||||
tasks:
|
||||
|
||||
- community.general.packet_sshkey:
|
||||
key_file: ./id_rsa.pub
|
||||
label: new
|
||||
- community.general.packet_sshkey:
|
||||
key_file: ./id_rsa.pub
|
||||
label: new
|
||||
|
||||
- community.general.packet_device:
|
||||
hostnames: [coreos-one, coreos-two, coreos-three]
|
||||
operating_system: coreos_beta
|
||||
plan: baremetal_0
|
||||
facility: ewr1
|
||||
project_id: <your_project_id>
|
||||
wait_for_public_IPv: 4
|
||||
user_data: |
|
||||
#cloud-config
|
||||
coreos:
|
||||
etcd2:
|
||||
discovery: https://discovery.etcd.io/<token>
|
||||
advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
|
||||
initial-advertise-peer-urls: http://$private_ipv4:2380
|
||||
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
|
||||
listen-peer-urls: http://$private_ipv4:2380
|
||||
fleet:
|
||||
public-ip: $private_ipv4
|
||||
units:
|
||||
- name: etcd2.service
|
||||
command: start
|
||||
- name: fleet.service
|
||||
command: start
|
||||
register: newhosts
|
||||
- community.general.packet_device:
|
||||
hostnames: [coreos-one, coreos-two, coreos-three]
|
||||
operating_system: coreos_beta
|
||||
plan: baremetal_0
|
||||
facility: ewr1
|
||||
project_id: <your_project_id>
|
||||
wait_for_public_IPv: 4
|
||||
user_data: |
|
||||
# cloud-config
|
||||
coreos:
|
||||
etcd2:
|
||||
discovery: https://discovery.etcd.io/<token>
|
||||
advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
|
||||
initial-advertise-peer-urls: http://$private_ipv4:2380
|
||||
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
|
||||
listen-peer-urls: http://$private_ipv4:2380
|
||||
fleet:
|
||||
public-ip: $private_ipv4
|
||||
units:
|
||||
- name: etcd2.service
|
||||
command: start
|
||||
- name: fleet.service
|
||||
command: start
|
||||
register: newhosts
|
||||
|
||||
- name: wait for ssh
|
||||
ansible.builtin.wait_for:
|
||||
delay: 1
|
||||
host: "{{ item.public_ipv4 }}"
|
||||
port: 22
|
||||
state: started
|
||||
timeout: 500
|
||||
loop: "{{ newhosts.results[0].devices }}"
|
||||
- name: wait for ssh
|
||||
ansible.builtin.wait_for:
|
||||
delay: 1
|
||||
host: "{{ item.public_ipv4 }}"
|
||||
port: 22
|
||||
state: started
|
||||
timeout: 500
|
||||
loop: "{{ newhosts.results[0].devices }}"
|
||||
|
||||
|
||||
As with most Ansible modules, the default states of the Packet modules are idempotent, meaning the resources in your project will remain the same after re-runs of a playbook. Thus, we can keep the ``packet_sshkey`` module call in our playbook. If the public key is already in your Packet account, the call will have no effect.
|
||||
|
||||
@@ -51,7 +51,7 @@ And by the time the module is about to exit:
|
||||
|
||||
That makes the return value of the module:
|
||||
|
||||
.. code-block:: javascript
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"abc": 123,
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
community.general Test (Plugin) Guide
|
||||
=====================================
|
||||
|
||||
The :ref:`community.general collection <plugins_in_community.general>` offers currently one test plugin.
|
||||
The :anscollection:`community.general collection <community.general#collection>` offers currently one test plugin.
|
||||
|
||||
.. contents:: Topics
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
namespace: community
|
||||
name: general
|
||||
version: 10.7.0
|
||||
version: 10.7.3
|
||||
readme: README.md
|
||||
authors:
|
||||
- Ansible (https://github.com/ansible)
|
||||
|
||||
@@ -86,7 +86,7 @@ plugin_routing:
|
||||
= yes' option.
|
||||
yaml:
|
||||
deprecation:
|
||||
removal_version: 13.0.0
|
||||
removal_version: 12.0.0
|
||||
warning_text: >-
|
||||
The plugin has been superseded by the the option `result_format=yaml` in callback plugin ansible.builtin.default from ansible-core 2.13 onwards.
|
||||
connection:
|
||||
|
||||
@@ -83,6 +83,9 @@ options:
|
||||
- name: ansible_doas_prompt_l10n
|
||||
env:
|
||||
- name: ANSIBLE_DOAS_PROMPT_L10N
|
||||
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.
|
||||
"""
|
||||
|
||||
import re
|
||||
@@ -99,6 +102,10 @@ class BecomeModule(BecomeBase):
|
||||
fail = ('Permission denied',)
|
||||
missing = ('Authorization required',)
|
||||
|
||||
# See https://github.com/ansible-collections/community.general/issues/9977,
|
||||
# https://github.com/ansible/ansible/pull/78111
|
||||
pipelining = False
|
||||
|
||||
def check_password_prompt(self, b_output):
|
||||
''' checks if the expected password prompt exists in b_output '''
|
||||
|
||||
|
||||
@@ -75,6 +75,8 @@ notes:
|
||||
of machinectl. This rule must alter the prompt behaviour to ask directly for the user credentials, if the user is allowed
|
||||
to perform the action (take a look at the examples section). If such a rule is not present the plugin only work if it
|
||||
is used in context with the root user, because then no further prompt will be shown by machinectl.
|
||||
- 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"""
|
||||
@@ -107,6 +109,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)
|
||||
|
||||
@@ -127,9 +127,7 @@ class CallbackModule(CallbackBase):
|
||||
|
||||
if not HAS_LOGSTASH:
|
||||
self.disabled = True
|
||||
self._display.warning("The required python-logstash/python3-logstash is not installed. "
|
||||
"pip install python-logstash for Python 2"
|
||||
"pip install python3-logstash for Python 3")
|
||||
self._display.warning("The required python3-logstash is not installed.")
|
||||
|
||||
self.start_time = now()
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ name: yaml
|
||||
type: stdout
|
||||
short_description: YAML-ized Ansible screen output
|
||||
deprecated:
|
||||
removed_in: 13.0.0
|
||||
removed_in: 12.0.0
|
||||
why: Starting in ansible-core 2.13, the P(ansible.builtin.default#callback) callback has support for printing output in
|
||||
YAML format.
|
||||
alternative: Use O(ansible.builtin.default#callback:result_format=yaml).
|
||||
@@ -37,9 +37,9 @@ import yaml
|
||||
import json
|
||||
import re
|
||||
import string
|
||||
from collections.abc import Mapping, Sequence
|
||||
|
||||
from ansible.module_utils.common.text.converters import to_text
|
||||
from ansible.parsing.yaml.dumper import AnsibleDumper
|
||||
from ansible.plugins.callback import strip_internal_keys, module_response_deepcopy
|
||||
from ansible.plugins.callback.default import CallbackModule as Default
|
||||
|
||||
@@ -53,77 +53,77 @@ def should_use_block(value):
|
||||
return False
|
||||
|
||||
|
||||
def adjust_str_value_for_block(value):
|
||||
# we care more about readable than accuracy, so...
|
||||
# ...no trailing space
|
||||
value = value.rstrip()
|
||||
# ...and non-printable characters
|
||||
value = ''.join(x for x in value if x in string.printable or ord(x) >= 0xA0)
|
||||
# ...tabs prevent blocks from expanding
|
||||
value = value.expandtabs()
|
||||
# ...and odd bits of whitespace
|
||||
value = re.sub(r'[\x0b\x0c\r]', '', value)
|
||||
# ...as does trailing space
|
||||
value = re.sub(r' +\n', '\n', value)
|
||||
return value
|
||||
|
||||
|
||||
def create_string_node(tag, value, style, default_style):
|
||||
if style is None:
|
||||
if should_use_block(value):
|
||||
style = '|'
|
||||
value = adjust_str_value_for_block(value)
|
||||
else:
|
||||
style = default_style
|
||||
return yaml.representer.ScalarNode(tag, value, style=style)
|
||||
|
||||
|
||||
try:
|
||||
from ansible.module_utils.common.yaml import HAS_LIBYAML
|
||||
# import below was added in https://github.com/ansible/ansible/pull/85039,
|
||||
# first contained in ansible-core 2.19.0b2:
|
||||
from ansible.utils.vars import transform_to_native_types
|
||||
|
||||
if HAS_LIBYAML:
|
||||
from yaml.cyaml import CSafeDumper as SafeDumper
|
||||
else:
|
||||
from yaml import SafeDumper
|
||||
|
||||
class MyDumper(SafeDumper):
|
||||
def represent_scalar(self, tag, value, style=None):
|
||||
"""Uses block style for multi-line strings"""
|
||||
node = create_string_node(tag, value, style, self.default_style)
|
||||
if self.alias_key is not None:
|
||||
self.represented_objects[self.alias_key] = node
|
||||
return node
|
||||
|
||||
except ImportError:
|
||||
# In case transform_to_native_types cannot be imported, we either have ansible-core 2.19.0b1
|
||||
# (or some random commit from the devel or stable-2.19 branch after merging the DT changes
|
||||
# and before transform_to_native_types was added), or we have a version without the DT changes.
|
||||
|
||||
# Here we simply assume we have a version without the DT changes, and thus can continue as
|
||||
# with ansible-core 2.18 and before.
|
||||
|
||||
transform_to_native_types = None
|
||||
|
||||
from ansible.parsing.yaml.dumper import AnsibleDumper
|
||||
|
||||
class MyDumper(AnsibleDumper): # pylint: disable=inherit-non-class
|
||||
def represent_scalar(self, tag, value, style=None):
|
||||
"""Uses block style for multi-line strings"""
|
||||
if style is None:
|
||||
if should_use_block(value):
|
||||
style = '|'
|
||||
# we care more about readable than accuracy, so...
|
||||
# ...no trailing space
|
||||
value = value.rstrip()
|
||||
# ...and non-printable characters
|
||||
value = ''.join(x for x in value if x in string.printable or ord(x) >= 0xA0)
|
||||
# ...tabs prevent blocks from expanding
|
||||
value = value.expandtabs()
|
||||
# ...and odd bits of whitespace
|
||||
value = re.sub(r'[\x0b\x0c\r]', '', value)
|
||||
# ...as does trailing space
|
||||
value = re.sub(r' +\n', '\n', value)
|
||||
else:
|
||||
style = self.default_style
|
||||
node = yaml.representer.ScalarNode(tag, value, style=style)
|
||||
node = create_string_node(tag, value, style, self.default_style)
|
||||
if self.alias_key is not None:
|
||||
self.represented_objects[self.alias_key] = node
|
||||
return node
|
||||
except: # noqa: E722, pylint: disable=bare-except
|
||||
# This happens with Data Tagging, see https://github.com/ansible/ansible/issues/84781
|
||||
# Until there is a better solution we'll resort to using ansible-core internals.
|
||||
from ansible._internal._yaml import _dumper
|
||||
import typing as t
|
||||
|
||||
class MyDumper(_dumper._BaseDumper):
|
||||
# This code is mostly taken from ansible._internal._yaml._dumper
|
||||
@classmethod
|
||||
def _register_representers(cls) -> None:
|
||||
cls.add_multi_representer(_dumper.AnsibleTaggedObject, cls.represent_ansible_tagged_object)
|
||||
cls.add_multi_representer(_dumper.Tripwire, cls.represent_tripwire)
|
||||
cls.add_multi_representer(_dumper.c.Mapping, _dumper.SafeRepresenter.represent_dict)
|
||||
cls.add_multi_representer(_dumper.c.Sequence, _dumper.SafeRepresenter.represent_list)
|
||||
|
||||
def represent_ansible_tagged_object(self, data):
|
||||
if ciphertext := _dumper.VaultHelper.get_ciphertext(data, with_tags=False):
|
||||
return self.represent_scalar('!vault', ciphertext, style='|')
|
||||
|
||||
return self.represent_data(_dumper.AnsibleTagHelper.as_native_type(data)) # automatically decrypts encrypted strings
|
||||
|
||||
def represent_tripwire(self, data: _dumper.Tripwire) -> t.NoReturn:
|
||||
data.trip()
|
||||
|
||||
# The following function is the same as in the try/except
|
||||
def represent_scalar(self, tag, value, style=None):
|
||||
"""Uses block style for multi-line strings"""
|
||||
if style is None:
|
||||
if should_use_block(value):
|
||||
style = '|'
|
||||
# we care more about readable than accuracy, so...
|
||||
# ...no trailing space
|
||||
value = value.rstrip()
|
||||
# ...and non-printable characters
|
||||
value = ''.join(x for x in value if x in string.printable or ord(x) >= 0xA0)
|
||||
# ...tabs prevent blocks from expanding
|
||||
value = value.expandtabs()
|
||||
# ...and odd bits of whitespace
|
||||
value = re.sub(r'[\x0b\x0c\r]', '', value)
|
||||
# ...as does trailing space
|
||||
value = re.sub(r' +\n', '\n', value)
|
||||
else:
|
||||
style = self.default_style
|
||||
node = yaml.representer.ScalarNode(tag, value, style=style)
|
||||
if self.alias_key is not None:
|
||||
self.represented_objects[self.alias_key] = node
|
||||
return node
|
||||
def transform_recursively(value, transform):
|
||||
if isinstance(value, Mapping):
|
||||
return {transform(k): transform(v) for k, v in value.items()}
|
||||
if isinstance(value, Sequence) and not isinstance(value, (str, bytes)):
|
||||
return [transform(e) for e in value]
|
||||
return transform(value)
|
||||
|
||||
|
||||
class CallbackModule(Default):
|
||||
@@ -180,6 +180,8 @@ class CallbackModule(Default):
|
||||
|
||||
if abridged_result:
|
||||
dumped += '\n'
|
||||
if transform_to_native_types is not None:
|
||||
abridged_result = transform_recursively(abridged_result, lambda v: transform_to_native_types(v, redact=False))
|
||||
dumped += to_text(yaml.dump(abridged_result, allow_unicode=True, width=1000, Dumper=MyDumper, default_flow_style=False))
|
||||
|
||||
# indent by a couple of spaces
|
||||
|
||||
@@ -155,11 +155,35 @@ class Connection(ConnectionBase):
|
||||
stdout = to_text(stdout)
|
||||
stderr = to_text(stderr)
|
||||
|
||||
if stderr == "Error: Instance is not running.\n":
|
||||
raise AnsibleConnectionFailure(f"instance not running: {self._instance()}")
|
||||
if stderr.startswith("Error: ") and stderr.rstrip().endswith(
|
||||
": Instance is not running"
|
||||
):
|
||||
raise AnsibleConnectionFailure(
|
||||
f"instance not running: {self._instance()} (remote={self.get_option('remote')}, project={self.get_option('project')})"
|
||||
)
|
||||
|
||||
if stderr == "Error: Instance not found\n":
|
||||
raise AnsibleConnectionFailure(f"instance not found: {self._instance()}")
|
||||
if stderr.startswith("Error: ") and stderr.rstrip().endswith(
|
||||
": Instance not found"
|
||||
):
|
||||
raise AnsibleConnectionFailure(
|
||||
f"instance not found: {self._instance()} (remote={self.get_option('remote')}, project={self.get_option('project')})"
|
||||
)
|
||||
|
||||
if (
|
||||
stderr.startswith("Error: ")
|
||||
and ": User does not have permission " in stderr
|
||||
):
|
||||
raise AnsibleConnectionFailure(
|
||||
f"instance access denied: {self._instance()} (remote={self.get_option('remote')}, project={self.get_option('project')})"
|
||||
)
|
||||
|
||||
if (
|
||||
stderr.startswith("Error: ")
|
||||
and ": User does not have entitlement " in stderr
|
||||
):
|
||||
raise AnsibleConnectionFailure(
|
||||
f"instance access denied: {self._instance()} (remote={self.get_option('remote')}, project={self.get_option('project')})"
|
||||
)
|
||||
|
||||
return process.returncode, stdout, stderr
|
||||
|
||||
|
||||
@@ -398,6 +398,7 @@ import os
|
||||
import pathlib
|
||||
import socket
|
||||
import tempfile
|
||||
import traceback
|
||||
import typing as t
|
||||
|
||||
from ansible.errors import (
|
||||
@@ -406,14 +407,20 @@ from ansible.errors import (
|
||||
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.module_utils.compat.paramiko import PARAMIKO_IMPORT_ERR, paramiko
|
||||
from ansible.module_utils.compat.version import LooseVersion
|
||||
from ansible.plugins.connection import ConnectionBase
|
||||
from ansible.utils.display import Display
|
||||
from ansible.utils.path import makedirs_safe
|
||||
from binascii import hexlify
|
||||
|
||||
try:
|
||||
import paramiko
|
||||
PARAMIKO_IMPORT_ERR = None
|
||||
except ImportError:
|
||||
paramiko = None
|
||||
PARAMIKO_IMPORT_ERR = traceback.format_exc()
|
||||
|
||||
|
||||
display = Display()
|
||||
|
||||
@@ -513,7 +520,7 @@ class Connection(ConnectionBase):
|
||||
def _connect(self) -> Connection:
|
||||
""" activates the connection object """
|
||||
|
||||
if paramiko is None:
|
||||
if PARAMIKO_IMPORT_ERR is not None:
|
||||
raise AnsibleError(f'paramiko is not installed: {to_native(PARAMIKO_IMPORT_ERR)}')
|
||||
|
||||
port = self.get_option('port')
|
||||
|
||||
@@ -99,7 +99,7 @@ options:
|
||||
section: paramiko_connection
|
||||
type: boolean
|
||||
look_for_keys:
|
||||
default: True
|
||||
default: true
|
||||
description: "Set to V(false) to disable searching for private key files in C(~/.ssh/)."
|
||||
env:
|
||||
- name: ANSIBLE_PARAMIKO_LOOK_FOR_KEYS
|
||||
@@ -119,7 +119,7 @@ options:
|
||||
vars:
|
||||
- name: ansible_paramiko_proxy_command
|
||||
record_host_keys:
|
||||
default: True
|
||||
default: true
|
||||
description: "Save the host keys to a file."
|
||||
env:
|
||||
- name: ANSIBLE_PARAMIKO_RECORD_HOST_KEYS
|
||||
@@ -147,7 +147,7 @@ options:
|
||||
use_persistent_connections:
|
||||
description: "Toggles the use of persistence for connections."
|
||||
type: boolean
|
||||
default: False
|
||||
default: false
|
||||
env:
|
||||
- name: ANSIBLE_USE_PERSISTENT_CONNECTIONS
|
||||
ini:
|
||||
@@ -315,6 +315,7 @@ import pathlib
|
||||
import shlex
|
||||
import socket
|
||||
import tempfile
|
||||
import traceback
|
||||
import typing as t
|
||||
|
||||
from ansible.errors import (
|
||||
@@ -323,9 +324,8 @@ from ansible.errors import (
|
||||
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.module_utils.compat.paramiko import PARAMIKO_IMPORT_ERR, paramiko
|
||||
from ansible.module_utils.compat.version import LooseVersion
|
||||
from ansible.playbook.play_context import PlayContext
|
||||
from ansible.plugins.connection import ConnectionBase
|
||||
from ansible.utils.display import Display
|
||||
@@ -333,8 +333,15 @@ from ansible.utils.path import makedirs_safe
|
||||
from binascii import hexlify
|
||||
from subprocess import list2cmdline
|
||||
|
||||
try:
|
||||
import paramiko
|
||||
PARAMIKO_IMPORT_ERR = None
|
||||
except ImportError:
|
||||
paramiko = None
|
||||
PARAMIKO_IMPORT_ERR = traceback.format_exc()
|
||||
|
||||
if t.TYPE_CHECKING and paramiko:
|
||||
|
||||
if t.TYPE_CHECKING and PARAMIKO_IMPORT_ERR is None:
|
||||
from paramiko import MissingHostKeyPolicy
|
||||
from paramiko.client import SSHClient
|
||||
from paramiko.pkey import PKey
|
||||
@@ -437,7 +444,7 @@ class Connection(ConnectionBase):
|
||||
def _connect(self) -> Connection:
|
||||
""" activates the connection object """
|
||||
|
||||
if paramiko is None:
|
||||
if PARAMIKO_IMPORT_ERR is not None:
|
||||
raise AnsibleError(f'paramiko is not installed: {to_native(PARAMIKO_IMPORT_ERR)}')
|
||||
|
||||
port = self.get_option('port')
|
||||
|
||||
@@ -32,14 +32,14 @@ attributes:
|
||||
INFO_MODULE = r'''
|
||||
options: {}
|
||||
attributes:
|
||||
check_mode:
|
||||
support: full
|
||||
details:
|
||||
- This action does not modify state.
|
||||
diff_mode:
|
||||
support: N/A
|
||||
details:
|
||||
- This action does not modify state.
|
||||
check_mode:
|
||||
support: full
|
||||
details:
|
||||
- This action does not modify state.
|
||||
diff_mode:
|
||||
support: N/A
|
||||
details:
|
||||
- This action does not modify state.
|
||||
'''
|
||||
|
||||
CONN = r"""
|
||||
@@ -64,16 +64,16 @@ attributes:
|
||||
FACTS_MODULE = r'''
|
||||
options: {}
|
||||
attributes:
|
||||
check_mode:
|
||||
support: full
|
||||
details:
|
||||
- This action does not modify state.
|
||||
diff_mode:
|
||||
support: N/A
|
||||
details:
|
||||
- This action does not modify state.
|
||||
facts:
|
||||
support: full
|
||||
check_mode:
|
||||
support: full
|
||||
details:
|
||||
- This action does not modify state.
|
||||
diff_mode:
|
||||
support: N/A
|
||||
details:
|
||||
- This action does not modify state.
|
||||
facts:
|
||||
support: full
|
||||
'''
|
||||
|
||||
FILES = r"""
|
||||
|
||||
@@ -13,21 +13,21 @@ class ModuleDocFragment(object):
|
||||
# Documentation fragment for VNX (emc_vnx)
|
||||
EMC_VNX = r'''
|
||||
options:
|
||||
sp_address:
|
||||
description:
|
||||
- Address of the SP of target/secondary storage.
|
||||
type: str
|
||||
required: true
|
||||
sp_user:
|
||||
description:
|
||||
- Username for accessing SP.
|
||||
type: str
|
||||
default: sysadmin
|
||||
sp_password:
|
||||
description:
|
||||
- password for accessing SP.
|
||||
type: str
|
||||
default: sysadmin
|
||||
sp_address:
|
||||
description:
|
||||
- Address of the SP of target/secondary storage.
|
||||
type: str
|
||||
required: true
|
||||
sp_user:
|
||||
description:
|
||||
- Username for accessing SP.
|
||||
type: str
|
||||
default: sysadmin
|
||||
sp_password:
|
||||
description:
|
||||
- password for accessing SP.
|
||||
type: str
|
||||
default: sysadmin
|
||||
requirements:
|
||||
- An EMC VNX Storage device.
|
||||
- storops (0.5.10 or greater). Install using C(pip install storops).
|
||||
|
||||
@@ -74,3 +74,11 @@ options:
|
||||
type: int
|
||||
default: 10
|
||||
"""
|
||||
|
||||
CONNECTION_NOTES = r"""
|
||||
options: {}
|
||||
notes:
|
||||
- This module uses JSON-RPC over HTTP(S) to communicate with the FreeIPA server.
|
||||
If you need to enroll the managed node into FreeIPA realm, you might want to consider using the collection
|
||||
L(freeipa.ansible_freeipa, https://galaxy.ansible.com/ui/repo/published/freeipa/ansible_freeipa/), but that will require shell access to the managed node.
|
||||
"""
|
||||
|
||||
@@ -64,7 +64,7 @@ EXAMPLES: |
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ input | community.general.json_patch('add', '/1', {'baz': 'qux'}) }}"
|
||||
vars:
|
||||
input: ["foo": { "one": 1 }, "bar": { "two": 2 }]
|
||||
input: ["foo": { "one": 1 }, "bar": { "two": 2 }]
|
||||
# => [{"foo": {"one": 1}}, {"baz": "qux"}, {"bar": {"two": 2}}]
|
||||
|
||||
- name: Insert a new key into a dictionary
|
||||
|
||||
@@ -124,10 +124,17 @@ def json_query(data, expr):
|
||||
'json_query filter')
|
||||
|
||||
# Hack to handle Ansible Unsafe text, AnsibleMapping and AnsibleSequence
|
||||
# See issue: https://github.com/ansible-collections/community.general/issues/320
|
||||
jmespath.functions.REVERSE_TYPES_MAP['string'] = jmespath.functions.REVERSE_TYPES_MAP['string'] + ('AnsibleUnicode', 'AnsibleUnsafeText', )
|
||||
jmespath.functions.REVERSE_TYPES_MAP['array'] = jmespath.functions.REVERSE_TYPES_MAP['array'] + ('AnsibleSequence', )
|
||||
jmespath.functions.REVERSE_TYPES_MAP['object'] = jmespath.functions.REVERSE_TYPES_MAP['object'] + ('AnsibleMapping', )
|
||||
# See issues https://github.com/ansible-collections/community.general/issues/320
|
||||
# and https://github.com/ansible/ansible/issues/85600.
|
||||
jmespath.functions.REVERSE_TYPES_MAP['string'] = jmespath.functions.REVERSE_TYPES_MAP['string'] + (
|
||||
'AnsibleUnicode', 'AnsibleUnsafeText', '_AnsibleTaggedStr',
|
||||
)
|
||||
jmespath.functions.REVERSE_TYPES_MAP['array'] = jmespath.functions.REVERSE_TYPES_MAP['array'] + (
|
||||
'AnsibleSequence', '_AnsibleLazyTemplateList',
|
||||
)
|
||||
jmespath.functions.REVERSE_TYPES_MAP['object'] = jmespath.functions.REVERSE_TYPES_MAP['object'] + (
|
||||
'AnsibleMapping', '_AnsibleLazyTemplateDict',
|
||||
)
|
||||
try:
|
||||
return jmespath.search(expr, data)
|
||||
except jmespath.exceptions.JMESPathError as e:
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
|
||||
DOCUMENTATION = '''
|
||||
DOCUMENTATION = r"""
|
||||
name: to_prettytable
|
||||
short_description: Format a list of dictionaries as an ASCII table
|
||||
version_added: "10.7.0"
|
||||
@@ -37,9 +37,9 @@ options:
|
||||
For example, V({'name': 'left', 'id': 'right'}) will align the C(name) column to the left
|
||||
and the C(id) column to the right.
|
||||
type: dictionary
|
||||
'''
|
||||
"""
|
||||
|
||||
EXAMPLES = '''
|
||||
EXAMPLES = r"""
|
||||
---
|
||||
- name: Set a list of users
|
||||
ansible.builtin.set_fact:
|
||||
@@ -104,13 +104,13 @@ EXAMPLES = '''
|
||||
column_alignments={'name': 'center', 'age': 'right', 'role': 'left'}
|
||||
)
|
||||
}}
|
||||
'''
|
||||
"""
|
||||
|
||||
RETURN = '''
|
||||
RETURN = r"""
|
||||
_value:
|
||||
description: The formatted ASCII table.
|
||||
type: string
|
||||
'''
|
||||
"""
|
||||
|
||||
try:
|
||||
import prettytable
|
||||
|
||||
@@ -5,127 +5,127 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
from __future__ import annotations
|
||||
|
||||
DOCUMENTATION = '''
|
||||
author: Orion Poplawski (@opoplawski)
|
||||
name: cobbler
|
||||
short_description: Cobbler inventory source
|
||||
version_added: 1.0.0
|
||||
DOCUMENTATION = r"""
|
||||
author: Orion Poplawski (@opoplawski)
|
||||
name: cobbler
|
||||
short_description: Cobbler inventory source
|
||||
version_added: 1.0.0
|
||||
description:
|
||||
- Get inventory hosts from the cobbler service.
|
||||
- "Uses a configuration file as an inventory source, it must end in C(.cobbler.yml) or C(.cobbler.yaml) and have a C(plugin: cobbler) entry."
|
||||
- Adds the primary IP addresses to C(cobbler_ipv4_address) and C(cobbler_ipv6_address) host variables if defined in Cobbler. The primary IP address is
|
||||
defined as the management interface if defined, or the interface who's DNS name matches the hostname of the system, or else the first interface found.
|
||||
extends_documentation_fragment:
|
||||
- inventory_cache
|
||||
options:
|
||||
plugin:
|
||||
description: The name of this plugin, it should always be set to V(community.general.cobbler) for this plugin to recognize it as its own.
|
||||
type: string
|
||||
required: true
|
||||
choices: ['cobbler', 'community.general.cobbler']
|
||||
url:
|
||||
description: URL to cobbler.
|
||||
type: string
|
||||
default: 'http://cobbler/cobbler_api'
|
||||
env:
|
||||
- name: COBBLER_SERVER
|
||||
user:
|
||||
description: Cobbler authentication user.
|
||||
type: string
|
||||
required: false
|
||||
env:
|
||||
- name: COBBLER_USER
|
||||
password:
|
||||
description: Cobbler authentication password.
|
||||
type: string
|
||||
required: false
|
||||
env:
|
||||
- name: COBBLER_PASSWORD
|
||||
cache_fallback:
|
||||
description: Fallback to cached results if connection to cobbler fails.
|
||||
type: boolean
|
||||
default: false
|
||||
connection_timeout:
|
||||
description: Timeout to connect to cobbler server.
|
||||
type: int
|
||||
required: false
|
||||
version_added: 10.7.0
|
||||
exclude_mgmt_classes:
|
||||
description: Management classes to exclude from inventory.
|
||||
type: list
|
||||
default: []
|
||||
elements: str
|
||||
version_added: 7.4.0
|
||||
exclude_profiles:
|
||||
description:
|
||||
- Get inventory hosts from the cobbler service.
|
||||
- "Uses a configuration file as an inventory source, it must end in C(.cobbler.yml) or C(.cobbler.yaml) and have a C(plugin: cobbler) entry."
|
||||
- Adds the primary IP addresses to C(cobbler_ipv4_address) and C(cobbler_ipv6_address) host variables if defined in Cobbler. The primary IP address is
|
||||
defined as the management interface if defined, or the interface who's DNS name matches the hostname of the system, or else the first interface found.
|
||||
extends_documentation_fragment:
|
||||
- inventory_cache
|
||||
options:
|
||||
plugin:
|
||||
description: The name of this plugin, it should always be set to V(community.general.cobbler) for this plugin to recognize it as its own.
|
||||
type: string
|
||||
required: true
|
||||
choices: [ 'cobbler', 'community.general.cobbler' ]
|
||||
url:
|
||||
description: URL to cobbler.
|
||||
type: string
|
||||
default: 'http://cobbler/cobbler_api'
|
||||
env:
|
||||
- name: COBBLER_SERVER
|
||||
user:
|
||||
description: Cobbler authentication user.
|
||||
type: string
|
||||
required: false
|
||||
env:
|
||||
- name: COBBLER_USER
|
||||
password:
|
||||
description: Cobbler authentication password.
|
||||
type: string
|
||||
required: false
|
||||
env:
|
||||
- name: COBBLER_PASSWORD
|
||||
cache_fallback:
|
||||
description: Fallback to cached results if connection to cobbler fails.
|
||||
type: boolean
|
||||
default: false
|
||||
connection_timeout:
|
||||
description: Timeout to connect to cobbler server.
|
||||
type: int
|
||||
required: false
|
||||
version_added: 10.7.0
|
||||
exclude_mgmt_classes:
|
||||
description: Management classes to exclude from inventory.
|
||||
type: list
|
||||
default: []
|
||||
elements: str
|
||||
version_added: 7.4.0
|
||||
exclude_profiles:
|
||||
description:
|
||||
- Profiles to exclude from inventory.
|
||||
- Ignored if O(include_profiles) is specified.
|
||||
type: list
|
||||
default: []
|
||||
elements: str
|
||||
include_mgmt_classes:
|
||||
description: Management classes to include from inventory.
|
||||
type: list
|
||||
default: []
|
||||
elements: str
|
||||
version_added: 7.4.0
|
||||
include_profiles:
|
||||
description:
|
||||
- Profiles to include from inventory.
|
||||
- If specified, all other profiles will be excluded.
|
||||
- O(exclude_profiles) is ignored if O(include_profiles) is specified.
|
||||
type: list
|
||||
default: []
|
||||
elements: str
|
||||
version_added: 4.4.0
|
||||
inventory_hostname:
|
||||
description:
|
||||
- What to use for the ansible inventory hostname.
|
||||
- By default the networking hostname is used if defined, otherwise the DNS name of the management or first non-static interface.
|
||||
- If set to V(system), the cobbler system name is used.
|
||||
type: str
|
||||
choices: [ 'hostname', 'system' ]
|
||||
default: hostname
|
||||
version_added: 7.1.0
|
||||
group_by:
|
||||
description: Keys to group hosts by.
|
||||
type: list
|
||||
elements: string
|
||||
default: [ 'mgmt_classes', 'owners', 'status' ]
|
||||
group:
|
||||
description: Group to place all hosts into.
|
||||
default: cobbler
|
||||
group_prefix:
|
||||
description: Prefix to apply to cobbler groups.
|
||||
default: cobbler_
|
||||
want_facts:
|
||||
description: Toggle, if V(true) the plugin will retrieve all host facts from the server.
|
||||
type: boolean
|
||||
default: true
|
||||
want_ip_addresses:
|
||||
description:
|
||||
- Toggle, if V(true) the plugin will add a C(cobbler_ipv4_addresses) and C(cobbler_ipv6_addresses) dictionary to the defined O(group) mapping
|
||||
interface DNS names to IP addresses.
|
||||
type: boolean
|
||||
default: true
|
||||
version_added: 7.1.0
|
||||
facts_level:
|
||||
description:
|
||||
- "Set to V(normal) to gather only system-level variables."
|
||||
- "Set to V(as_rendered) to gather all variables as rolled up by Cobbler."
|
||||
type: string
|
||||
choices: [ 'normal', 'as_rendered' ]
|
||||
default: normal
|
||||
version_added: 10.7.0
|
||||
'''
|
||||
- Profiles to exclude from inventory.
|
||||
- Ignored if O(include_profiles) is specified.
|
||||
type: list
|
||||
default: []
|
||||
elements: str
|
||||
include_mgmt_classes:
|
||||
description: Management classes to include from inventory.
|
||||
type: list
|
||||
default: []
|
||||
elements: str
|
||||
version_added: 7.4.0
|
||||
include_profiles:
|
||||
description:
|
||||
- Profiles to include from inventory.
|
||||
- If specified, all other profiles will be excluded.
|
||||
- O(exclude_profiles) is ignored if O(include_profiles) is specified.
|
||||
type: list
|
||||
default: []
|
||||
elements: str
|
||||
version_added: 4.4.0
|
||||
inventory_hostname:
|
||||
description:
|
||||
- What to use for the ansible inventory hostname.
|
||||
- By default the networking hostname is used if defined, otherwise the DNS name of the management or first non-static interface.
|
||||
- If set to V(system), the cobbler system name is used.
|
||||
type: str
|
||||
choices: ['hostname', 'system']
|
||||
default: hostname
|
||||
version_added: 7.1.0
|
||||
group_by:
|
||||
description: Keys to group hosts by.
|
||||
type: list
|
||||
elements: string
|
||||
default: ['mgmt_classes', 'owners', 'status']
|
||||
group:
|
||||
description: Group to place all hosts into.
|
||||
default: cobbler
|
||||
group_prefix:
|
||||
description: Prefix to apply to cobbler groups.
|
||||
default: cobbler_
|
||||
want_facts:
|
||||
description: Toggle, if V(true) the plugin will retrieve all host facts from the server.
|
||||
type: boolean
|
||||
default: true
|
||||
want_ip_addresses:
|
||||
description:
|
||||
- Toggle, if V(true) the plugin will add a C(cobbler_ipv4_addresses) and C(cobbler_ipv6_addresses) dictionary to the defined O(group) mapping
|
||||
interface DNS names to IP addresses.
|
||||
type: boolean
|
||||
default: true
|
||||
version_added: 7.1.0
|
||||
facts_level:
|
||||
description:
|
||||
- "Set to V(normal) to gather only system-level variables."
|
||||
- "Set to V(as_rendered) to gather all variables as rolled up by Cobbler."
|
||||
type: string
|
||||
choices: ['normal', 'as_rendered']
|
||||
default: normal
|
||||
version_added: 10.7.0
|
||||
"""
|
||||
|
||||
EXAMPLES = '''
|
||||
EXAMPLES = r"""
|
||||
# my.cobbler.yml
|
||||
plugin: community.general.cobbler
|
||||
url: http://cobbler/cobbler_api
|
||||
user: ansible-tester
|
||||
password: secure
|
||||
'''
|
||||
"""
|
||||
|
||||
import socket
|
||||
|
||||
|
||||
@@ -7,56 +7,56 @@
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
DOCUMENTATION = '''
|
||||
name: gitlab_runners
|
||||
author:
|
||||
- Stefan Heitmüller (@morph027) <stefan.heitmueller@gmx.com>
|
||||
short_description: Ansible dynamic inventory plugin for GitLab runners.
|
||||
requirements:
|
||||
- python-gitlab > 1.8.0
|
||||
extends_documentation_fragment:
|
||||
- constructed
|
||||
description:
|
||||
- Reads inventories from the GitLab API.
|
||||
- Uses a YAML configuration file gitlab_runners.[yml|yaml].
|
||||
options:
|
||||
plugin:
|
||||
description: The name of this plugin, it should always be set to 'gitlab_runners' for this plugin to recognize it as its own.
|
||||
type: str
|
||||
required: true
|
||||
choices:
|
||||
- gitlab_runners
|
||||
- community.general.gitlab_runners
|
||||
server_url:
|
||||
description: The URL of the GitLab server, with protocol (i.e. http or https).
|
||||
env:
|
||||
- name: GITLAB_SERVER_URL
|
||||
version_added: 1.0.0
|
||||
type: str
|
||||
required: true
|
||||
api_token:
|
||||
description: GitLab token for logging in.
|
||||
env:
|
||||
- name: GITLAB_API_TOKEN
|
||||
version_added: 1.0.0
|
||||
type: str
|
||||
aliases:
|
||||
- private_token
|
||||
- access_token
|
||||
filter:
|
||||
description: filter runners from GitLab API
|
||||
env:
|
||||
- name: GITLAB_FILTER
|
||||
version_added: 1.0.0
|
||||
type: str
|
||||
choices: ['active', 'paused', 'online', 'specific', 'shared']
|
||||
verbose_output:
|
||||
description: Toggle to (not) include all available nodes metadata
|
||||
type: bool
|
||||
default: true
|
||||
'''
|
||||
DOCUMENTATION = r"""
|
||||
name: gitlab_runners
|
||||
author:
|
||||
- Stefan Heitmüller (@morph027) <stefan.heitmueller@gmx.com>
|
||||
short_description: Ansible dynamic inventory plugin for GitLab runners.
|
||||
requirements:
|
||||
- python-gitlab > 1.8.0
|
||||
extends_documentation_fragment:
|
||||
- constructed
|
||||
description:
|
||||
- Reads inventories from the GitLab API.
|
||||
- Uses a YAML configuration file gitlab_runners.[yml|yaml].
|
||||
options:
|
||||
plugin:
|
||||
description: The name of this plugin, it should always be set to 'gitlab_runners' for this plugin to recognize it as its own.
|
||||
type: str
|
||||
required: true
|
||||
choices:
|
||||
- gitlab_runners
|
||||
- community.general.gitlab_runners
|
||||
server_url:
|
||||
description: The URL of the GitLab server, with protocol (i.e. http or https).
|
||||
env:
|
||||
- name: GITLAB_SERVER_URL
|
||||
version_added: 1.0.0
|
||||
type: str
|
||||
required: true
|
||||
api_token:
|
||||
description: GitLab token for logging in.
|
||||
env:
|
||||
- name: GITLAB_API_TOKEN
|
||||
version_added: 1.0.0
|
||||
type: str
|
||||
aliases:
|
||||
- private_token
|
||||
- access_token
|
||||
filter:
|
||||
description: filter runners from GitLab API
|
||||
env:
|
||||
- name: GITLAB_FILTER
|
||||
version_added: 1.0.0
|
||||
type: str
|
||||
choices: ['active', 'paused', 'online', 'specific', 'shared']
|
||||
verbose_output:
|
||||
description: Toggle to (not) include all available nodes metadata
|
||||
type: bool
|
||||
default: true
|
||||
"""
|
||||
|
||||
EXAMPLES = '''
|
||||
EXAMPLES = r"""
|
||||
---
|
||||
# gitlab_runners.yml
|
||||
plugin: community.general.gitlab_runners
|
||||
@@ -79,7 +79,7 @@ keyed_groups:
|
||||
# hint: labels containing special characters will be converted to safe names
|
||||
- key: 'tag_list'
|
||||
prefix: tag
|
||||
'''
|
||||
"""
|
||||
|
||||
from ansible.errors import AnsibleError, AnsibleParserError
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
|
||||
|
||||
@@ -6,71 +6,71 @@
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
DOCUMENTATION = '''
|
||||
name: icinga2
|
||||
short_description: Icinga2 inventory source
|
||||
version_added: 3.7.0
|
||||
author:
|
||||
- Cliff Hults (@BongoEADGC6) <cliff.hults@gmail.com>
|
||||
DOCUMENTATION = r"""
|
||||
name: icinga2
|
||||
short_description: Icinga2 inventory source
|
||||
version_added: 3.7.0
|
||||
author:
|
||||
- Cliff Hults (@BongoEADGC6) <cliff.hults@gmail.com>
|
||||
description:
|
||||
- Get inventory hosts from the Icinga2 API.
|
||||
- "Uses a configuration file as an inventory source, it must end in
|
||||
C(.icinga2.yml) or C(.icinga2.yaml)."
|
||||
extends_documentation_fragment:
|
||||
- constructed
|
||||
options:
|
||||
strict:
|
||||
version_added: 4.4.0
|
||||
compose:
|
||||
version_added: 4.4.0
|
||||
groups:
|
||||
version_added: 4.4.0
|
||||
keyed_groups:
|
||||
version_added: 4.4.0
|
||||
plugin:
|
||||
description: Name of the plugin.
|
||||
required: true
|
||||
type: string
|
||||
choices: ['community.general.icinga2']
|
||||
url:
|
||||
description: Root URL of Icinga2 API.
|
||||
type: string
|
||||
required: true
|
||||
user:
|
||||
description: Username to query the API.
|
||||
type: string
|
||||
required: true
|
||||
password:
|
||||
description: Password to query the API.
|
||||
type: string
|
||||
required: true
|
||||
host_filter:
|
||||
description:
|
||||
- Get inventory hosts from the Icinga2 API.
|
||||
- "Uses a configuration file as an inventory source, it must end in
|
||||
C(.icinga2.yml) or C(.icinga2.yaml)."
|
||||
extends_documentation_fragment:
|
||||
- constructed
|
||||
options:
|
||||
strict:
|
||||
version_added: 4.4.0
|
||||
compose:
|
||||
version_added: 4.4.0
|
||||
groups:
|
||||
version_added: 4.4.0
|
||||
keyed_groups:
|
||||
version_added: 4.4.0
|
||||
plugin:
|
||||
description: Name of the plugin.
|
||||
required: true
|
||||
type: string
|
||||
choices: ['community.general.icinga2']
|
||||
url:
|
||||
description: Root URL of Icinga2 API.
|
||||
type: string
|
||||
required: true
|
||||
user:
|
||||
description: Username to query the API.
|
||||
type: string
|
||||
required: true
|
||||
password:
|
||||
description: Password to query the API.
|
||||
type: string
|
||||
required: true
|
||||
host_filter:
|
||||
description:
|
||||
- An Icinga2 API valid host filter. Leave blank for no filtering
|
||||
type: string
|
||||
required: false
|
||||
validate_certs:
|
||||
description: Enables or disables SSL certificate verification.
|
||||
type: boolean
|
||||
default: true
|
||||
inventory_attr:
|
||||
description:
|
||||
- Allows the override of the inventory name based on different attributes.
|
||||
- This allows for changing the way limits are used.
|
||||
- The current default, V(address), is sometimes not unique or present. We recommend to use V(name) instead.
|
||||
type: string
|
||||
default: address
|
||||
choices: ['name', 'display_name', 'address']
|
||||
version_added: 4.2.0
|
||||
group_by_hostgroups:
|
||||
description:
|
||||
- Uses Icinga2 hostgroups as groups.
|
||||
type: boolean
|
||||
default: true
|
||||
version_added: 8.4.0
|
||||
'''
|
||||
- An Icinga2 API valid host filter. Leave blank for no filtering
|
||||
type: string
|
||||
required: false
|
||||
validate_certs:
|
||||
description: Enables or disables SSL certificate verification.
|
||||
type: boolean
|
||||
default: true
|
||||
inventory_attr:
|
||||
description:
|
||||
- Allows the override of the inventory name based on different attributes.
|
||||
- This allows for changing the way limits are used.
|
||||
- The current default, V(address), is sometimes not unique or present. We recommend to use V(name) instead.
|
||||
type: string
|
||||
default: address
|
||||
choices: ['name', 'display_name', 'address']
|
||||
version_added: 4.2.0
|
||||
group_by_hostgroups:
|
||||
description:
|
||||
- Uses Icinga2 hostgroups as groups.
|
||||
type: boolean
|
||||
default: true
|
||||
version_added: 8.4.0
|
||||
"""
|
||||
|
||||
EXAMPLES = r'''
|
||||
EXAMPLES = r"""
|
||||
# my.icinga2.yml
|
||||
plugin: community.general.icinga2
|
||||
url: http://localhost:5665
|
||||
@@ -93,7 +93,7 @@ compose:
|
||||
# set 'ansible_user' and 'ansible_port' from icinga2 host vars
|
||||
ansible_user: icinga2_attributes.vars.ansible_user
|
||||
ansible_port: icinga2_attributes.vars.ansible_port | default(22)
|
||||
'''
|
||||
"""
|
||||
|
||||
import json
|
||||
|
||||
@@ -291,11 +291,11 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
|
||||
self.group_by_hostgroups = self.get_option('group_by_hostgroups')
|
||||
|
||||
if self.templar.is_template(self.icinga2_url):
|
||||
self.icinga2_url = self.templar.template(variable=self.icinga2_url, disable_lookups=False)
|
||||
self.icinga2_url = self.templar.template(variable=self.icinga2_url)
|
||||
if self.templar.is_template(self.icinga2_user):
|
||||
self.icinga2_user = self.templar.template(variable=self.icinga2_user, disable_lookups=False)
|
||||
self.icinga2_user = self.templar.template(variable=self.icinga2_user)
|
||||
if self.templar.is_template(self.icinga2_password):
|
||||
self.icinga2_password = self.templar.template(variable=self.icinga2_password, disable_lookups=False)
|
||||
self.icinga2_password = self.templar.template(variable=self.icinga2_password)
|
||||
|
||||
self.icinga2_url = f"{self.icinga2_url.rstrip('/')}/v1"
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
DOCUMENTATION = r"""
|
||||
name: iocage
|
||||
short_description: iocage inventory source
|
||||
version_added: 10.2.0
|
||||
@@ -96,9 +96,9 @@ notes:
|
||||
expects to find the O(hooks_results) items in the path
|
||||
C(/iocage/iocage/jails/<name>/root). If you mount the C(poolname) to a
|
||||
different path the easiest remedy is to create a symlink.
|
||||
'''
|
||||
"""
|
||||
|
||||
EXAMPLES = r'''
|
||||
EXAMPLES = r"""
|
||||
---
|
||||
# file name must end with iocage.yaml or iocage.yml
|
||||
plugin: community.general.iocage
|
||||
@@ -168,7 +168,7 @@ compose:
|
||||
ansible_host: iocage_hooks.0
|
||||
groups:
|
||||
test: inventory_hostname.startswith('test')
|
||||
'''
|
||||
"""
|
||||
|
||||
import re
|
||||
import os
|
||||
|
||||
@@ -5,79 +5,79 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
name: linode
|
||||
author:
|
||||
- Luke Murphy (@decentral1se)
|
||||
short_description: Ansible dynamic inventory plugin for Linode.
|
||||
requirements:
|
||||
- linode_api4 >= 2.0.0
|
||||
description:
|
||||
- Reads inventories from the Linode API v4.
|
||||
- Uses a YAML configuration file that ends with linode.(yml|yaml).
|
||||
- Linode labels are used by default as the hostnames.
|
||||
- The default inventory groups are built from groups (deprecated by
|
||||
Linode) and not tags.
|
||||
extends_documentation_fragment:
|
||||
- constructed
|
||||
- inventory_cache
|
||||
options:
|
||||
cache:
|
||||
version_added: 4.5.0
|
||||
cache_plugin:
|
||||
version_added: 4.5.0
|
||||
cache_timeout:
|
||||
version_added: 4.5.0
|
||||
cache_connection:
|
||||
version_added: 4.5.0
|
||||
cache_prefix:
|
||||
version_added: 4.5.0
|
||||
plugin:
|
||||
description: Marks this as an instance of the 'linode' plugin.
|
||||
type: string
|
||||
required: true
|
||||
choices: ['linode', 'community.general.linode']
|
||||
ip_style:
|
||||
description: Populate hostvars with all information available from the Linode APIv4.
|
||||
type: string
|
||||
default: plain
|
||||
choices:
|
||||
- plain
|
||||
- api
|
||||
version_added: 3.6.0
|
||||
access_token:
|
||||
description: The Linode account personal access token.
|
||||
type: string
|
||||
required: true
|
||||
env:
|
||||
- name: LINODE_ACCESS_TOKEN
|
||||
regions:
|
||||
description: Populate inventory with instances in this region.
|
||||
default: []
|
||||
type: list
|
||||
elements: string
|
||||
tags:
|
||||
description: Populate inventory only with instances which have at least one of the tags listed here.
|
||||
default: []
|
||||
type: list
|
||||
elements: string
|
||||
version_added: 2.0.0
|
||||
types:
|
||||
description: Populate inventory with instances with this type.
|
||||
default: []
|
||||
type: list
|
||||
elements: string
|
||||
strict:
|
||||
version_added: 2.0.0
|
||||
compose:
|
||||
version_added: 2.0.0
|
||||
groups:
|
||||
version_added: 2.0.0
|
||||
keyed_groups:
|
||||
version_added: 2.0.0
|
||||
'''
|
||||
DOCUMENTATION = r"""
|
||||
name: linode
|
||||
author:
|
||||
- Luke Murphy (@decentral1se)
|
||||
short_description: Ansible dynamic inventory plugin for Linode.
|
||||
requirements:
|
||||
- linode_api4 >= 2.0.0
|
||||
description:
|
||||
- Reads inventories from the Linode API v4.
|
||||
- Uses a YAML configuration file that ends with linode.(yml|yaml).
|
||||
- Linode labels are used by default as the hostnames.
|
||||
- The default inventory groups are built from groups (deprecated by
|
||||
Linode) and not tags.
|
||||
extends_documentation_fragment:
|
||||
- constructed
|
||||
- inventory_cache
|
||||
options:
|
||||
cache:
|
||||
version_added: 4.5.0
|
||||
cache_plugin:
|
||||
version_added: 4.5.0
|
||||
cache_timeout:
|
||||
version_added: 4.5.0
|
||||
cache_connection:
|
||||
version_added: 4.5.0
|
||||
cache_prefix:
|
||||
version_added: 4.5.0
|
||||
plugin:
|
||||
description: Marks this as an instance of the 'linode' plugin.
|
||||
type: string
|
||||
required: true
|
||||
choices: ['linode', 'community.general.linode']
|
||||
ip_style:
|
||||
description: Populate hostvars with all information available from the Linode APIv4.
|
||||
type: string
|
||||
default: plain
|
||||
choices:
|
||||
- plain
|
||||
- api
|
||||
version_added: 3.6.0
|
||||
access_token:
|
||||
description: The Linode account personal access token.
|
||||
type: string
|
||||
required: true
|
||||
env:
|
||||
- name: LINODE_ACCESS_TOKEN
|
||||
regions:
|
||||
description: Populate inventory with instances in this region.
|
||||
default: []
|
||||
type: list
|
||||
elements: string
|
||||
tags:
|
||||
description: Populate inventory only with instances which have at least one of the tags listed here.
|
||||
default: []
|
||||
type: list
|
||||
elements: string
|
||||
version_added: 2.0.0
|
||||
types:
|
||||
description: Populate inventory with instances with this type.
|
||||
default: []
|
||||
type: list
|
||||
elements: string
|
||||
strict:
|
||||
version_added: 2.0.0
|
||||
compose:
|
||||
version_added: 2.0.0
|
||||
groups:
|
||||
version_added: 2.0.0
|
||||
keyed_groups:
|
||||
version_added: 2.0.0
|
||||
"""
|
||||
|
||||
EXAMPLES = r'''
|
||||
EXAMPLES = r"""
|
||||
---
|
||||
# Minimal example. `LINODE_ACCESS_TOKEN` is exposed in environment.
|
||||
plugin: community.general.linode
|
||||
@@ -124,7 +124,7 @@ access_token: foobar
|
||||
ip_style: api
|
||||
compose:
|
||||
ansible_host: "ipv4 | community.general.json_query('[?public==`false`].address') | first"
|
||||
'''
|
||||
"""
|
||||
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
|
||||
@@ -150,7 +150,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
||||
|
||||
access_token = self.get_option('access_token')
|
||||
if self.templar.is_template(access_token):
|
||||
access_token = self.templar.template(variable=access_token, disable_lookups=False)
|
||||
access_token = self.templar.template(variable=access_token)
|
||||
|
||||
if access_token is None:
|
||||
raise AnsibleError((
|
||||
|
||||
@@ -5,108 +5,108 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
name: lxd
|
||||
short_description: Returns Ansible inventory from lxd host
|
||||
DOCUMENTATION = r"""
|
||||
name: lxd
|
||||
short_description: Returns Ansible inventory from lxd host
|
||||
description:
|
||||
- Get inventory from the lxd.
|
||||
- Uses a YAML configuration file that ends with 'lxd.(yml|yaml)'.
|
||||
version_added: "3.0.0"
|
||||
author: "Frank Dornheim (@conloos)"
|
||||
requirements:
|
||||
- ipaddress
|
||||
- lxd >= 4.0
|
||||
options:
|
||||
plugin:
|
||||
description: Token that ensures this is a source file for the 'lxd' plugin.
|
||||
type: string
|
||||
required: true
|
||||
choices: ['community.general.lxd']
|
||||
url:
|
||||
description:
|
||||
- Get inventory from the lxd.
|
||||
- Uses a YAML configuration file that ends with 'lxd.(yml|yaml)'.
|
||||
version_added: "3.0.0"
|
||||
author: "Frank Dornheim (@conloos)"
|
||||
requirements:
|
||||
- ipaddress
|
||||
- lxd >= 4.0
|
||||
options:
|
||||
plugin:
|
||||
description: Token that ensures this is a source file for the 'lxd' plugin.
|
||||
type: string
|
||||
required: true
|
||||
choices: [ 'community.general.lxd' ]
|
||||
url:
|
||||
description:
|
||||
- The unix domain socket path or the https URL for the lxd server.
|
||||
- Sockets in filesystem have to start with C(unix:).
|
||||
- Mostly C(unix:/var/lib/lxd/unix.socket) or C(unix:/var/snap/lxd/common/lxd/unix.socket).
|
||||
type: string
|
||||
default: unix:/var/snap/lxd/common/lxd/unix.socket
|
||||
client_key:
|
||||
description:
|
||||
- The client certificate key file path.
|
||||
aliases: [ key_file ]
|
||||
default: $HOME/.config/lxc/client.key
|
||||
type: path
|
||||
client_cert:
|
||||
description:
|
||||
- The client certificate file path.
|
||||
aliases: [ cert_file ]
|
||||
default: $HOME/.config/lxc/client.crt
|
||||
type: path
|
||||
server_cert:
|
||||
description:
|
||||
- The server certificate file path.
|
||||
type: path
|
||||
version_added: 8.0.0
|
||||
server_check_hostname:
|
||||
description:
|
||||
- This option controls if the server's hostname is checked as part of the HTTPS connection verification.
|
||||
This can be useful to disable, if for example, the server certificate provided (see O(server_cert) option)
|
||||
does not cover a name matching the one used to communicate with the server. Such mismatch is common as LXD
|
||||
generates self-signed server certificates by default.
|
||||
type: bool
|
||||
default: true
|
||||
version_added: 8.0.0
|
||||
trust_password:
|
||||
description:
|
||||
- The client trusted password.
|
||||
- You need to set this password on the lxd server before
|
||||
running this module using the following command
|
||||
C(lxc config set core.trust_password <some random password>)
|
||||
See U(https://documentation.ubuntu.com/lxd/en/latest/authentication/#adding-client-certificates-using-a-trust-password).
|
||||
- If O(trust_password) is set, this module send a request for authentication before sending any requests.
|
||||
type: str
|
||||
state:
|
||||
description: Filter the instance according to the current status.
|
||||
type: str
|
||||
default: none
|
||||
choices: [ 'STOPPED', 'STARTING', 'RUNNING', 'none' ]
|
||||
project:
|
||||
description: Filter the instance according to the given project.
|
||||
type: str
|
||||
default: default
|
||||
version_added: 6.2.0
|
||||
type_filter:
|
||||
description:
|
||||
- Filter the instances by type V(virtual-machine), V(container) or V(both).
|
||||
- The first version of the inventory only supported containers.
|
||||
type: str
|
||||
default: container
|
||||
choices: [ 'virtual-machine', 'container', 'both' ]
|
||||
version_added: 4.2.0
|
||||
prefered_instance_network_interface:
|
||||
description:
|
||||
- If an instance has multiple network interfaces, select which one is the preferred as pattern.
|
||||
- Combined with the first number that can be found e.g. 'eth' + 0.
|
||||
- The option has been renamed from O(prefered_container_network_interface) to O(prefered_instance_network_interface)
|
||||
in community.general 3.8.0. The old name still works as an alias.
|
||||
type: str
|
||||
default: eth
|
||||
aliases:
|
||||
- prefered_container_network_interface
|
||||
prefered_instance_network_family:
|
||||
description:
|
||||
- If an instance has multiple network interfaces, which one is the preferred by family.
|
||||
- Specify V(inet) for IPv4 and V(inet6) for IPv6.
|
||||
type: str
|
||||
default: inet
|
||||
choices: [ 'inet', 'inet6' ]
|
||||
groupby:
|
||||
description:
|
||||
- Create groups by the following keywords C(location), C(network_range), C(os), C(pattern), C(profile), C(release), C(type), C(vlanid).
|
||||
- See example for syntax.
|
||||
type: dict
|
||||
'''
|
||||
- The unix domain socket path or the https URL for the lxd server.
|
||||
- Sockets in filesystem have to start with C(unix:).
|
||||
- Mostly C(unix:/var/lib/lxd/unix.socket) or C(unix:/var/snap/lxd/common/lxd/unix.socket).
|
||||
type: string
|
||||
default: unix:/var/snap/lxd/common/lxd/unix.socket
|
||||
client_key:
|
||||
description:
|
||||
- The client certificate key file path.
|
||||
aliases: [key_file]
|
||||
default: $HOME/.config/lxc/client.key
|
||||
type: path
|
||||
client_cert:
|
||||
description:
|
||||
- The client certificate file path.
|
||||
aliases: [cert_file]
|
||||
default: $HOME/.config/lxc/client.crt
|
||||
type: path
|
||||
server_cert:
|
||||
description:
|
||||
- The server certificate file path.
|
||||
type: path
|
||||
version_added: 8.0.0
|
||||
server_check_hostname:
|
||||
description:
|
||||
- This option controls if the server's hostname is checked as part of the HTTPS connection verification.
|
||||
This can be useful to disable, if for example, the server certificate provided (see O(server_cert) option)
|
||||
does not cover a name matching the one used to communicate with the server. Such mismatch is common as LXD
|
||||
generates self-signed server certificates by default.
|
||||
type: bool
|
||||
default: true
|
||||
version_added: 8.0.0
|
||||
trust_password:
|
||||
description:
|
||||
- The client trusted password.
|
||||
- You need to set this password on the lxd server before
|
||||
running this module using the following command
|
||||
C(lxc config set core.trust_password <some random password>)
|
||||
See U(https://documentation.ubuntu.com/lxd/en/latest/authentication/#adding-client-certificates-using-a-trust-password).
|
||||
- If O(trust_password) is set, this module send a request for authentication before sending any requests.
|
||||
type: str
|
||||
state:
|
||||
description: Filter the instance according to the current status.
|
||||
type: str
|
||||
default: none
|
||||
choices: ['STOPPED', 'STARTING', 'RUNNING', 'none']
|
||||
project:
|
||||
description: Filter the instance according to the given project.
|
||||
type: str
|
||||
default: default
|
||||
version_added: 6.2.0
|
||||
type_filter:
|
||||
description:
|
||||
- Filter the instances by type V(virtual-machine), V(container) or V(both).
|
||||
- The first version of the inventory only supported containers.
|
||||
type: str
|
||||
default: container
|
||||
choices: ['virtual-machine', 'container', 'both']
|
||||
version_added: 4.2.0
|
||||
prefered_instance_network_interface:
|
||||
description:
|
||||
- If an instance has multiple network interfaces, select which one is the preferred as pattern.
|
||||
- Combined with the first number that can be found e.g. 'eth' + 0.
|
||||
- The option has been renamed from O(prefered_container_network_interface) to O(prefered_instance_network_interface)
|
||||
in community.general 3.8.0. The old name still works as an alias.
|
||||
type: str
|
||||
default: eth
|
||||
aliases:
|
||||
- prefered_container_network_interface
|
||||
prefered_instance_network_family:
|
||||
description:
|
||||
- If an instance has multiple network interfaces, which one is the preferred by family.
|
||||
- Specify V(inet) for IPv4 and V(inet6) for IPv6.
|
||||
type: str
|
||||
default: inet
|
||||
choices: ['inet', 'inet6']
|
||||
groupby:
|
||||
description:
|
||||
- Create groups by the following keywords C(location), C(network_range), C(os), C(pattern), C(profile), C(release), C(type), C(vlanid).
|
||||
- See example for syntax.
|
||||
type: dict
|
||||
"""
|
||||
|
||||
EXAMPLES = '''
|
||||
EXAMPLES = r"""
|
||||
---
|
||||
# simple lxd.yml
|
||||
plugin: community.general.lxd
|
||||
@@ -165,7 +165,7 @@ groupby:
|
||||
projectInternals:
|
||||
type: project
|
||||
attribute: internals
|
||||
'''
|
||||
"""
|
||||
|
||||
import json
|
||||
import re
|
||||
|
||||
@@ -5,102 +5,102 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
DOCUMENTATION = '''
|
||||
author: Unknown (!UNKNOWN)
|
||||
name: nmap
|
||||
short_description: Uses nmap to find hosts to target
|
||||
DOCUMENTATION = r"""
|
||||
author: Unknown (!UNKNOWN)
|
||||
name: nmap
|
||||
short_description: Uses nmap to find hosts to target
|
||||
description:
|
||||
- Uses a YAML configuration file with a valid YAML extension.
|
||||
extends_documentation_fragment:
|
||||
- constructed
|
||||
- inventory_cache
|
||||
requirements:
|
||||
- nmap CLI installed
|
||||
options:
|
||||
plugin:
|
||||
description: token that ensures this is a source file for the 'nmap' plugin.
|
||||
type: string
|
||||
required: true
|
||||
choices: ['nmap', 'community.general.nmap']
|
||||
sudo:
|
||||
description: Set to V(true) to execute a C(sudo nmap) plugin scan.
|
||||
version_added: 4.8.0
|
||||
default: false
|
||||
type: boolean
|
||||
address:
|
||||
description: Network IP or range of IPs to scan, you can use a simple range (10.2.2.15-25) or CIDR notation.
|
||||
type: string
|
||||
required: true
|
||||
env:
|
||||
- name: ANSIBLE_NMAP_ADDRESS
|
||||
version_added: 6.6.0
|
||||
exclude:
|
||||
description:
|
||||
- Uses a YAML configuration file with a valid YAML extension.
|
||||
extends_documentation_fragment:
|
||||
- constructed
|
||||
- inventory_cache
|
||||
requirements:
|
||||
- nmap CLI installed
|
||||
options:
|
||||
plugin:
|
||||
description: token that ensures this is a source file for the 'nmap' plugin.
|
||||
type: string
|
||||
required: true
|
||||
choices: ['nmap', 'community.general.nmap']
|
||||
sudo:
|
||||
description: Set to V(true) to execute a C(sudo nmap) plugin scan.
|
||||
version_added: 4.8.0
|
||||
default: false
|
||||
type: boolean
|
||||
address:
|
||||
description: Network IP or range of IPs to scan, you can use a simple range (10.2.2.15-25) or CIDR notation.
|
||||
type: string
|
||||
required: true
|
||||
env:
|
||||
- name: ANSIBLE_NMAP_ADDRESS
|
||||
version_added: 6.6.0
|
||||
exclude:
|
||||
description:
|
||||
- List of addresses to exclude.
|
||||
- For example V(10.2.2.15-25) or V(10.2.2.15,10.2.2.16).
|
||||
type: list
|
||||
elements: string
|
||||
env:
|
||||
- name: ANSIBLE_NMAP_EXCLUDE
|
||||
version_added: 6.6.0
|
||||
port:
|
||||
description:
|
||||
- Only scan specific port or port range (C(-p)).
|
||||
- For example, you could pass V(22) for a single port, V(1-65535) for a range of ports,
|
||||
or V(U:53,137,T:21-25,139,8080,S:9) to check port 53 with UDP, ports 21-25 with TCP, port 9 with SCTP, and ports 137, 139, and 8080 with all.
|
||||
type: string
|
||||
version_added: 6.5.0
|
||||
ports:
|
||||
description: Enable/disable scanning ports.
|
||||
type: boolean
|
||||
default: true
|
||||
ipv4:
|
||||
description: use IPv4 type addresses
|
||||
type: boolean
|
||||
default: true
|
||||
ipv6:
|
||||
description: use IPv6 type addresses
|
||||
type: boolean
|
||||
default: true
|
||||
udp_scan:
|
||||
description:
|
||||
- Scan via UDP.
|
||||
- Depending on your system you might need O(sudo=true) for this to work.
|
||||
type: boolean
|
||||
default: false
|
||||
version_added: 6.1.0
|
||||
icmp_timestamp:
|
||||
description:
|
||||
- Scan via ICMP Timestamp (C(-PP)).
|
||||
- Depending on your system you might need O(sudo=true) for this to work.
|
||||
type: boolean
|
||||
default: false
|
||||
version_added: 6.1.0
|
||||
open:
|
||||
description: Only scan for open (or possibly open) ports.
|
||||
type: boolean
|
||||
default: false
|
||||
version_added: 6.5.0
|
||||
dns_resolve:
|
||||
description: Whether to always (V(true)) or never (V(false)) do DNS resolution.
|
||||
type: boolean
|
||||
default: false
|
||||
version_added: 6.1.0
|
||||
dns_servers:
|
||||
description: Specify which DNS servers to use for name resolution.
|
||||
type: list
|
||||
elements: string
|
||||
version_added: 10.5.0
|
||||
use_arp_ping:
|
||||
description: Whether to always (V(true)) use the quick ARP ping or (V(false)) a slower but more reliable method.
|
||||
type: boolean
|
||||
default: true
|
||||
version_added: 7.4.0
|
||||
notes:
|
||||
- At least one of O(ipv4) or O(ipv6) is required to be V(true); both can be V(true), but they cannot both be V(false).
|
||||
- 'TODO: add OS fingerprinting'
|
||||
'''
|
||||
EXAMPLES = '''
|
||||
- List of addresses to exclude.
|
||||
- For example V(10.2.2.15-25) or V(10.2.2.15,10.2.2.16).
|
||||
type: list
|
||||
elements: string
|
||||
env:
|
||||
- name: ANSIBLE_NMAP_EXCLUDE
|
||||
version_added: 6.6.0
|
||||
port:
|
||||
description:
|
||||
- Only scan specific port or port range (C(-p)).
|
||||
- For example, you could pass V(22) for a single port, V(1-65535) for a range of ports,
|
||||
or V(U:53,137,T:21-25,139,8080,S:9) to check port 53 with UDP, ports 21-25 with TCP, port 9 with SCTP, and ports 137, 139, and 8080 with all.
|
||||
type: string
|
||||
version_added: 6.5.0
|
||||
ports:
|
||||
description: Enable/disable scanning ports.
|
||||
type: boolean
|
||||
default: true
|
||||
ipv4:
|
||||
description: use IPv4 type addresses
|
||||
type: boolean
|
||||
default: true
|
||||
ipv6:
|
||||
description: use IPv6 type addresses
|
||||
type: boolean
|
||||
default: true
|
||||
udp_scan:
|
||||
description:
|
||||
- Scan via UDP.
|
||||
- Depending on your system you might need O(sudo=true) for this to work.
|
||||
type: boolean
|
||||
default: false
|
||||
version_added: 6.1.0
|
||||
icmp_timestamp:
|
||||
description:
|
||||
- Scan via ICMP Timestamp (C(-PP)).
|
||||
- Depending on your system you might need O(sudo=true) for this to work.
|
||||
type: boolean
|
||||
default: false
|
||||
version_added: 6.1.0
|
||||
open:
|
||||
description: Only scan for open (or possibly open) ports.
|
||||
type: boolean
|
||||
default: false
|
||||
version_added: 6.5.0
|
||||
dns_resolve:
|
||||
description: Whether to always (V(true)) or never (V(false)) do DNS resolution.
|
||||
type: boolean
|
||||
default: false
|
||||
version_added: 6.1.0
|
||||
dns_servers:
|
||||
description: Specify which DNS servers to use for name resolution.
|
||||
type: list
|
||||
elements: string
|
||||
version_added: 10.5.0
|
||||
use_arp_ping:
|
||||
description: Whether to always (V(true)) use the quick ARP ping or (V(false)) a slower but more reliable method.
|
||||
type: boolean
|
||||
default: true
|
||||
version_added: 7.4.0
|
||||
notes:
|
||||
- At least one of O(ipv4) or O(ipv6) is required to be V(true); both can be V(true), but they cannot both be V(false).
|
||||
- 'TODO: add OS fingerprinting'
|
||||
"""
|
||||
EXAMPLES = r"""
|
||||
---
|
||||
# inventory.config file in YAML format
|
||||
plugin: community.general.nmap
|
||||
@@ -122,7 +122,7 @@ exclude: 192.168.0.1, web.example.com
|
||||
port: 22, 443
|
||||
groups:
|
||||
web_servers: "ports | selectattr('port', 'equalto', '443')"
|
||||
'''
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
@@ -5,49 +5,49 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
name: online
|
||||
author:
|
||||
- Remy Leone (@remyleone)
|
||||
short_description: Scaleway (previously Online SAS or Online.net) inventory source
|
||||
description:
|
||||
- Get inventory hosts from Scaleway (previously Online SAS or Online.net).
|
||||
options:
|
||||
plugin:
|
||||
description: token that ensures this is a source file for the 'online' plugin.
|
||||
type: string
|
||||
required: true
|
||||
choices: ['online', 'community.general.online']
|
||||
oauth_token:
|
||||
required: true
|
||||
description: Online OAuth token.
|
||||
type: string
|
||||
env:
|
||||
# in order of precedence
|
||||
- name: ONLINE_TOKEN
|
||||
- name: ONLINE_API_KEY
|
||||
- name: ONLINE_OAUTH_TOKEN
|
||||
hostnames:
|
||||
description: List of preference about what to use as an hostname.
|
||||
type: list
|
||||
elements: string
|
||||
default:
|
||||
- public_ipv4
|
||||
choices:
|
||||
- public_ipv4
|
||||
- private_ipv4
|
||||
- hostname
|
||||
groups:
|
||||
description: List of groups.
|
||||
type: list
|
||||
elements: string
|
||||
choices:
|
||||
- location
|
||||
- offer
|
||||
- rpn
|
||||
'''
|
||||
DOCUMENTATION = r"""
|
||||
name: online
|
||||
author:
|
||||
- Remy Leone (@remyleone)
|
||||
short_description: Scaleway (previously Online SAS or Online.net) inventory source
|
||||
description:
|
||||
- Get inventory hosts from Scaleway (previously Online SAS or Online.net).
|
||||
options:
|
||||
plugin:
|
||||
description: token that ensures this is a source file for the 'online' plugin.
|
||||
type: string
|
||||
required: true
|
||||
choices: ['online', 'community.general.online']
|
||||
oauth_token:
|
||||
required: true
|
||||
description: Online OAuth token.
|
||||
type: string
|
||||
env:
|
||||
# in order of precedence
|
||||
- name: ONLINE_TOKEN
|
||||
- name: ONLINE_API_KEY
|
||||
- name: ONLINE_OAUTH_TOKEN
|
||||
hostnames:
|
||||
description: List of preference about what to use as an hostname.
|
||||
type: list
|
||||
elements: string
|
||||
default:
|
||||
- public_ipv4
|
||||
choices:
|
||||
- public_ipv4
|
||||
- private_ipv4
|
||||
- hostname
|
||||
groups:
|
||||
description: List of groups.
|
||||
type: list
|
||||
elements: string
|
||||
choices:
|
||||
- location
|
||||
- offer
|
||||
- rpn
|
||||
"""
|
||||
|
||||
EXAMPLES = r'''
|
||||
EXAMPLES = r"""
|
||||
# online_inventory.yml file in YAML format
|
||||
# Example command line: ansible-inventory --list -i online_inventory.yml
|
||||
|
||||
@@ -58,7 +58,7 @@ groups:
|
||||
- location
|
||||
- offer
|
||||
- rpn
|
||||
'''
|
||||
"""
|
||||
|
||||
import json
|
||||
from sys import version as python_version
|
||||
|
||||
@@ -6,77 +6,77 @@
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
name: opennebula
|
||||
author:
|
||||
- Kristian Feldsam (@feldsam)
|
||||
short_description: OpenNebula inventory source
|
||||
version_added: "3.8.0"
|
||||
extends_documentation_fragment:
|
||||
- constructed
|
||||
DOCUMENTATION = r"""
|
||||
name: opennebula
|
||||
author:
|
||||
- Kristian Feldsam (@feldsam)
|
||||
short_description: OpenNebula inventory source
|
||||
version_added: "3.8.0"
|
||||
extends_documentation_fragment:
|
||||
- constructed
|
||||
description:
|
||||
- Get inventory hosts from OpenNebula cloud.
|
||||
- Uses an YAML configuration file ending with either C(opennebula.yml) or C(opennebula.yaml)
|
||||
to set parameter values.
|
||||
- Uses O(api_authfile), C(~/.one/one_auth), or E(ONE_AUTH) pointing to a OpenNebula credentials file.
|
||||
options:
|
||||
plugin:
|
||||
description: Token that ensures this is a source file for the 'opennebula' plugin.
|
||||
type: string
|
||||
required: true
|
||||
choices: [community.general.opennebula]
|
||||
api_url:
|
||||
description:
|
||||
- Get inventory hosts from OpenNebula cloud.
|
||||
- Uses an YAML configuration file ending with either C(opennebula.yml) or C(opennebula.yaml)
|
||||
to set parameter values.
|
||||
- Uses O(api_authfile), C(~/.one/one_auth), or E(ONE_AUTH) pointing to a OpenNebula credentials file.
|
||||
options:
|
||||
plugin:
|
||||
description: Token that ensures this is a source file for the 'opennebula' plugin.
|
||||
type: string
|
||||
required: true
|
||||
choices: [ community.general.opennebula ]
|
||||
api_url:
|
||||
description:
|
||||
- URL of the OpenNebula RPC server.
|
||||
- It is recommended to use HTTPS so that the username/password are not
|
||||
transferred over the network unencrypted.
|
||||
- If not set then the value of the E(ONE_URL) environment variable is used.
|
||||
env:
|
||||
- name: ONE_URL
|
||||
required: true
|
||||
type: string
|
||||
api_username:
|
||||
description:
|
||||
- Name of the user to login into the OpenNebula RPC server. If not set
|
||||
then the value of the E(ONE_USERNAME) environment variable is used.
|
||||
env:
|
||||
- name: ONE_USERNAME
|
||||
type: string
|
||||
api_password:
|
||||
description:
|
||||
- Password or a token of the user to login into OpenNebula RPC server.
|
||||
- If not set, the value of the E(ONE_PASSWORD) environment variable is used.
|
||||
env:
|
||||
- name: ONE_PASSWORD
|
||||
required: false
|
||||
type: string
|
||||
api_authfile:
|
||||
description:
|
||||
- If both O(api_username) or O(api_password) are not set, then it will try
|
||||
authenticate with ONE auth file. Default path is C(~/.one/one_auth).
|
||||
- Set environment variable E(ONE_AUTH) to override this path.
|
||||
env:
|
||||
- name: ONE_AUTH
|
||||
required: false
|
||||
type: string
|
||||
hostname:
|
||||
description: Field to match the hostname. Note V(v4_first_ip) corresponds to the first IPv4 found on VM.
|
||||
type: string
|
||||
default: v4_first_ip
|
||||
choices:
|
||||
- v4_first_ip
|
||||
- v6_first_ip
|
||||
- name
|
||||
filter_by_label:
|
||||
description: Only return servers filtered by this label.
|
||||
type: string
|
||||
group_by_labels:
|
||||
description: Create host groups by vm labels
|
||||
type: bool
|
||||
default: true
|
||||
'''
|
||||
- URL of the OpenNebula RPC server.
|
||||
- It is recommended to use HTTPS so that the username/password are not
|
||||
transferred over the network unencrypted.
|
||||
- If not set then the value of the E(ONE_URL) environment variable is used.
|
||||
env:
|
||||
- name: ONE_URL
|
||||
required: true
|
||||
type: string
|
||||
api_username:
|
||||
description:
|
||||
- Name of the user to login into the OpenNebula RPC server. If not set
|
||||
then the value of the E(ONE_USERNAME) environment variable is used.
|
||||
env:
|
||||
- name: ONE_USERNAME
|
||||
type: string
|
||||
api_password:
|
||||
description:
|
||||
- Password or a token of the user to login into OpenNebula RPC server.
|
||||
- If not set, the value of the E(ONE_PASSWORD) environment variable is used.
|
||||
env:
|
||||
- name: ONE_PASSWORD
|
||||
required: false
|
||||
type: string
|
||||
api_authfile:
|
||||
description:
|
||||
- If both O(api_username) or O(api_password) are not set, then it will try
|
||||
authenticate with ONE auth file. Default path is C(~/.one/one_auth).
|
||||
- Set environment variable E(ONE_AUTH) to override this path.
|
||||
env:
|
||||
- name: ONE_AUTH
|
||||
required: false
|
||||
type: string
|
||||
hostname:
|
||||
description: Field to match the hostname. Note V(v4_first_ip) corresponds to the first IPv4 found on VM.
|
||||
type: string
|
||||
default: v4_first_ip
|
||||
choices:
|
||||
- v4_first_ip
|
||||
- v6_first_ip
|
||||
- name
|
||||
filter_by_label:
|
||||
description: Only return servers filtered by this label.
|
||||
type: string
|
||||
group_by_labels:
|
||||
description: Create host groups by vm labels
|
||||
type: bool
|
||||
default: true
|
||||
"""
|
||||
|
||||
EXAMPLES = r'''
|
||||
EXAMPLES = r"""
|
||||
# inventory_opennebula.yml file in YAML format
|
||||
# Example command line: ansible-inventory --list -i inventory_opennebula.yml
|
||||
|
||||
@@ -84,7 +84,7 @@ EXAMPLES = r'''
|
||||
plugin: community.general.opennebula
|
||||
api_url: https://opennebula:2633/RPC2
|
||||
filter_by_label: Cache
|
||||
'''
|
||||
"""
|
||||
|
||||
try:
|
||||
import pyone
|
||||
|
||||
@@ -687,7 +687,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
||||
for o in ('url', 'user', 'password', 'token_id', 'token_secret'):
|
||||
v = self.get_option(o)
|
||||
if self.templar.is_template(v):
|
||||
v = self.templar.template(v, disable_lookups=False)
|
||||
v = self.templar.template(v)
|
||||
setattr(self, f'proxmox_{o}', v)
|
||||
|
||||
# some more cleanup and validation
|
||||
|
||||
@@ -6,73 +6,73 @@
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
name: scaleway
|
||||
author:
|
||||
- Remy Leone (@remyleone)
|
||||
short_description: Scaleway inventory source
|
||||
DOCUMENTATION = r"""
|
||||
name: scaleway
|
||||
author:
|
||||
- Remy Leone (@remyleone)
|
||||
short_description: Scaleway inventory source
|
||||
description:
|
||||
- Get inventory hosts from Scaleway.
|
||||
requirements:
|
||||
- PyYAML
|
||||
options:
|
||||
plugin:
|
||||
description: Token that ensures this is a source file for the 'scaleway' plugin.
|
||||
required: true
|
||||
type: string
|
||||
choices: ['scaleway', 'community.general.scaleway']
|
||||
regions:
|
||||
description: Filter results on a specific Scaleway region.
|
||||
type: list
|
||||
elements: string
|
||||
default:
|
||||
- ams1
|
||||
- par1
|
||||
- par2
|
||||
- waw1
|
||||
tags:
|
||||
description: Filter results on a specific tag.
|
||||
type: list
|
||||
elements: string
|
||||
scw_profile:
|
||||
description:
|
||||
- Get inventory hosts from Scaleway.
|
||||
requirements:
|
||||
- PyYAML
|
||||
options:
|
||||
plugin:
|
||||
description: Token that ensures this is a source file for the 'scaleway' plugin.
|
||||
required: true
|
||||
type: string
|
||||
choices: ['scaleway', 'community.general.scaleway']
|
||||
regions:
|
||||
description: Filter results on a specific Scaleway region.
|
||||
type: list
|
||||
elements: string
|
||||
default:
|
||||
- ams1
|
||||
- par1
|
||||
- par2
|
||||
- waw1
|
||||
tags:
|
||||
description: Filter results on a specific tag.
|
||||
type: list
|
||||
elements: string
|
||||
scw_profile:
|
||||
description:
|
||||
- The config profile to use in config file.
|
||||
- By default uses the one specified as C(active_profile) in the config file, or falls back to V(default) if that is not defined.
|
||||
type: string
|
||||
version_added: 4.4.0
|
||||
oauth_token:
|
||||
description:
|
||||
- Scaleway OAuth token.
|
||||
- If not explicitly defined or in environment variables, it will try to lookup in the scaleway-cli configuration file
|
||||
(C($SCW_CONFIG_PATH), C($XDG_CONFIG_HOME/scw/config.yaml), or C(~/.config/scw/config.yaml)).
|
||||
- More details on L(how to generate token, https://www.scaleway.com/en/docs/generate-api-keys/).
|
||||
type: string
|
||||
env:
|
||||
# in order of precedence
|
||||
- name: SCW_TOKEN
|
||||
- name: SCW_API_KEY
|
||||
- name: SCW_OAUTH_TOKEN
|
||||
hostnames:
|
||||
description: List of preference about what to use as an hostname.
|
||||
type: list
|
||||
elements: string
|
||||
default:
|
||||
- public_ipv4
|
||||
choices:
|
||||
- public_ipv4
|
||||
- private_ipv4
|
||||
- public_ipv6
|
||||
- hostname
|
||||
- id
|
||||
variables:
|
||||
description: 'Set individual variables: keys are variable names and
|
||||
values are templates. Any value returned by the
|
||||
L(Scaleway API, https://developer.scaleway.com/#servers-server-get)
|
||||
can be used.'
|
||||
type: dict
|
||||
'''
|
||||
- The config profile to use in config file.
|
||||
- By default uses the one specified as C(active_profile) in the config file, or falls back to V(default) if that is not defined.
|
||||
type: string
|
||||
version_added: 4.4.0
|
||||
oauth_token:
|
||||
description:
|
||||
- Scaleway OAuth token.
|
||||
- If not explicitly defined or in environment variables, it will try to lookup in the scaleway-cli configuration file
|
||||
(C($SCW_CONFIG_PATH), C($XDG_CONFIG_HOME/scw/config.yaml), or C(~/.config/scw/config.yaml)).
|
||||
- More details on L(how to generate token, https://www.scaleway.com/en/docs/generate-api-keys/).
|
||||
type: string
|
||||
env:
|
||||
# in order of precedence
|
||||
- name: SCW_TOKEN
|
||||
- name: SCW_API_KEY
|
||||
- name: SCW_OAUTH_TOKEN
|
||||
hostnames:
|
||||
description: List of preference about what to use as an hostname.
|
||||
type: list
|
||||
elements: string
|
||||
default:
|
||||
- public_ipv4
|
||||
choices:
|
||||
- public_ipv4
|
||||
- private_ipv4
|
||||
- public_ipv6
|
||||
- hostname
|
||||
- id
|
||||
variables:
|
||||
description: 'Set individual variables: keys are variable names and
|
||||
values are templates. Any value returned by the
|
||||
L(Scaleway API, https://developer.scaleway.com/#servers-server-get)
|
||||
can be used.'
|
||||
type: dict
|
||||
"""
|
||||
|
||||
EXAMPLES = r'''
|
||||
EXAMPLES = r"""
|
||||
# scaleway_inventory.yml file in YAML format
|
||||
# Example command line: ansible-inventory --list -i scaleway_inventory.yml
|
||||
|
||||
@@ -110,7 +110,7 @@ variables:
|
||||
ansible_host: public_ip.address
|
||||
ansible_connection: "'ssh'"
|
||||
ansible_user: "'admin'"
|
||||
'''
|
||||
"""
|
||||
|
||||
import os
|
||||
import json
|
||||
|
||||
@@ -5,56 +5,56 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
DOCUMENTATION = '''
|
||||
author: Unknown (!UNKNOWN)
|
||||
name: virtualbox
|
||||
short_description: virtualbox inventory source
|
||||
DOCUMENTATION = r"""
|
||||
author: Unknown (!UNKNOWN)
|
||||
name: virtualbox
|
||||
short_description: virtualbox inventory source
|
||||
description:
|
||||
- Get inventory hosts from the local virtualbox installation.
|
||||
- Uses a YAML configuration file that ends with virtualbox.(yml|yaml) or vbox.(yml|yaml).
|
||||
- The inventory_hostname is always the 'Name' of the virtualbox instance.
|
||||
- Groups can be assigned to the VMs using C(VBoxManage). Multiple groups can be assigned by using V(/) as a delimeter.
|
||||
- A separate parameter, O(enable_advanced_group_parsing) is exposed to change grouping behaviour. See the parameter documentation for details.
|
||||
extends_documentation_fragment:
|
||||
- constructed
|
||||
- inventory_cache
|
||||
options:
|
||||
plugin:
|
||||
description: token that ensures this is a source file for the 'virtualbox' plugin
|
||||
type: string
|
||||
required: true
|
||||
choices: ['virtualbox', 'community.general.virtualbox']
|
||||
running_only:
|
||||
description: toggles showing all vms vs only those currently running
|
||||
type: boolean
|
||||
default: false
|
||||
settings_password_file:
|
||||
description: provide a file containing the settings password (equivalent to --settingspwfile)
|
||||
type: string
|
||||
network_info_path:
|
||||
description: property path to query for network information (ansible_host)
|
||||
type: string
|
||||
default: "/VirtualBox/GuestInfo/Net/0/V4/IP"
|
||||
query:
|
||||
description: create vars from virtualbox properties
|
||||
type: dictionary
|
||||
default: {}
|
||||
enable_advanced_group_parsing:
|
||||
description:
|
||||
- Get inventory hosts from the local virtualbox installation.
|
||||
- Uses a YAML configuration file that ends with virtualbox.(yml|yaml) or vbox.(yml|yaml).
|
||||
- The inventory_hostname is always the 'Name' of the virtualbox instance.
|
||||
- Groups can be assigned to the VMs using C(VBoxManage). Multiple groups can be assigned by using V(/) as a delimeter.
|
||||
- A separate parameter, O(enable_advanced_group_parsing) is exposed to change grouping behaviour. See the parameter documentation for details.
|
||||
extends_documentation_fragment:
|
||||
- constructed
|
||||
- inventory_cache
|
||||
options:
|
||||
plugin:
|
||||
description: token that ensures this is a source file for the 'virtualbox' plugin
|
||||
type: string
|
||||
required: true
|
||||
choices: ['virtualbox', 'community.general.virtualbox']
|
||||
running_only:
|
||||
description: toggles showing all vms vs only those currently running
|
||||
type: boolean
|
||||
default: false
|
||||
settings_password_file:
|
||||
description: provide a file containing the settings password (equivalent to --settingspwfile)
|
||||
type: string
|
||||
network_info_path:
|
||||
description: property path to query for network information (ansible_host)
|
||||
type: string
|
||||
default: "/VirtualBox/GuestInfo/Net/0/V4/IP"
|
||||
query:
|
||||
description: create vars from virtualbox properties
|
||||
type: dictionary
|
||||
default: {}
|
||||
enable_advanced_group_parsing:
|
||||
description:
|
||||
- The default group parsing rule (when this setting is set to V(false)) is to split the VirtualBox VM's group based on the V(/) character and
|
||||
assign the resulting list elements as an Ansible Group.
|
||||
- Setting O(enable_advanced_group_parsing=true) changes this behaviour to match VirtualBox's interpretation of groups according to
|
||||
U(https://www.virtualbox.org/manual/UserManual.html#gui-vmgroups).
|
||||
Groups are now split using the V(,) character, and the V(/) character indicates nested groups.
|
||||
- When enabled, a VM that's been configured using V(VBoxManage modifyvm "vm01" --groups "/TestGroup/TestGroup2,/TestGroup3") will result in
|
||||
the group C(TestGroup2) being a child group of C(TestGroup); and
|
||||
the VM being a part of C(TestGroup2) and C(TestGroup3).
|
||||
default: false
|
||||
type: bool
|
||||
version_added: 9.2.0
|
||||
'''
|
||||
- The default group parsing rule (when this setting is set to V(false)) is to split the VirtualBox VM's group based on the V(/) character and
|
||||
assign the resulting list elements as an Ansible Group.
|
||||
- Setting O(enable_advanced_group_parsing=true) changes this behaviour to match VirtualBox's interpretation of groups according to
|
||||
U(https://www.virtualbox.org/manual/UserManual.html#gui-vmgroups).
|
||||
Groups are now split using the V(,) character, and the V(/) character indicates nested groups.
|
||||
- When enabled, a VM that's been configured using V(VBoxManage modifyvm "vm01" --groups "/TestGroup/TestGroup2,/TestGroup3") will result in
|
||||
the group C(TestGroup2) being a child group of C(TestGroup); and
|
||||
the VM being a part of C(TestGroup2) and C(TestGroup3).
|
||||
default: false
|
||||
type: bool
|
||||
version_added: 9.2.0
|
||||
"""
|
||||
|
||||
EXAMPLES = '''
|
||||
EXAMPLES = r"""
|
||||
---
|
||||
# file must be named vbox.yaml or vbox.yml
|
||||
plugin: community.general.virtualbox
|
||||
@@ -69,7 +69,7 @@ compose:
|
||||
plugin: community.general.virtualbox
|
||||
groups:
|
||||
container: "'minis' in (inventory_hostname)"
|
||||
'''
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
|
||||
@@ -207,7 +207,10 @@ class LookupModule(LookupBase):
|
||||
|
||||
result = []
|
||||
if len(terms) > 0:
|
||||
templar = Templar(loader=self._templar._loader)
|
||||
if HAS_DATATAGGING:
|
||||
templar = self._templar.copy_with_new_env(available_variables={})
|
||||
else:
|
||||
templar = Templar(loader=self._templar._loader)
|
||||
data = []
|
||||
vars_so_far = set()
|
||||
for index, term in enumerate(terms):
|
||||
|
||||
@@ -39,8 +39,30 @@ options:
|
||||
- V(CAA) has been added in community.general 6.3.0.
|
||||
type: str
|
||||
default: 'A'
|
||||
choices: [A, ALL, AAAA, CAA, CNAME, DNAME, DNSKEY, DS, HINFO, LOC, MX, NAPTR, NS, NSEC3PARAM, PTR, RP, RRSIG, SOA, SPF,
|
||||
SRV, SSHFP, TLSA, TXT]
|
||||
choices:
|
||||
- A
|
||||
- ALL
|
||||
- AAAA
|
||||
- CAA
|
||||
- CNAME
|
||||
- DNAME
|
||||
- DNSKEY
|
||||
- DS
|
||||
- HINFO
|
||||
- LOC
|
||||
- MX
|
||||
- NAPTR
|
||||
- NS
|
||||
- NSEC3PARAM
|
||||
- PTR
|
||||
- RP
|
||||
- RRSIG
|
||||
- SOA
|
||||
- SPF
|
||||
- SRV
|
||||
- SSHFP
|
||||
- TLSA
|
||||
- TXT
|
||||
flat:
|
||||
description: If 0 each record is returned as a dictionary, otherwise a string.
|
||||
type: int
|
||||
|
||||
@@ -194,8 +194,8 @@ class LookupModule(LookupBase):
|
||||
result = initial_value
|
||||
|
||||
for var_name in var_merge_names:
|
||||
with self._templar.set_temporary_context(available_variables=variables): # tmp. switch renderer to context of current variables
|
||||
var_value = self._templar.template(variables[var_name]) # Render jinja2 templates
|
||||
temp_templar = self._templar.copy_with_new_env(available_variables=variables) # tmp. switch renderer to context of current variables
|
||||
var_value = temp_templar.template(variables[var_name]) # Render jinja2 templates
|
||||
var_type = _verify_and_get_type(var_value)
|
||||
|
||||
if prev_var_type is None:
|
||||
|
||||
@@ -1551,7 +1551,7 @@ class KeycloakAPI(object):
|
||||
if parent['subGroupCount'] == 0:
|
||||
group_children = []
|
||||
else:
|
||||
group_children_url = URL_GROUP_CHILDREN.format(url=self.baseurl, realm=realm, groupid=parent['id'])
|
||||
group_children_url = URL_GROUP_CHILDREN.format(url=self.baseurl, realm=realm, groupid=parent['id']) + "?max=" + str(parent['subGroupCount'])
|
||||
group_children = self._request_and_deserialize(group_children_url, method="GET")
|
||||
subgroups = group_children
|
||||
else:
|
||||
|
||||
@@ -165,16 +165,6 @@ EXAMPLES = r"""
|
||||
state: absent
|
||||
"""
|
||||
|
||||
RETURN = r"""
|
||||
changed:
|
||||
description: Return changed for aix_filesystems actions as true or false.
|
||||
returned: always
|
||||
type: bool
|
||||
msg:
|
||||
description: Return message regarding the action.
|
||||
returned: always
|
||||
type: str
|
||||
"""
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible_collections.community.general.plugins.module_utils._mount import ismount
|
||||
|
||||
@@ -112,16 +112,6 @@ name:
|
||||
returned: always
|
||||
type: str
|
||||
sample: startmyservice
|
||||
msg:
|
||||
description: Action done with the C(inittab) entry.
|
||||
returned: changed
|
||||
type: str
|
||||
sample: changed inittab entry startmyservice
|
||||
changed:
|
||||
description: Whether the C(inittab) changed or not.
|
||||
returned: always
|
||||
type: bool
|
||||
sample: true
|
||||
"""
|
||||
|
||||
# Import necessary libraries
|
||||
|
||||
@@ -41,8 +41,8 @@ options:
|
||||
description:
|
||||
- (IPv4|IPv6|FQDN) of the balancer member to get or to set attributes to. Port number is autodetected and should not
|
||||
be specified here.
|
||||
- If undefined, the M(community.general.apache2_mod_proxy) module will return a members list of dictionaries of all the current
|
||||
balancer pool members' attributes.
|
||||
- If undefined, the M(community.general.apache2_mod_proxy) module returns a members list of dictionaries of all the
|
||||
current balancer pool members' attributes.
|
||||
state:
|
||||
type: list
|
||||
elements: str
|
||||
@@ -117,18 +117,19 @@ member:
|
||||
type: dict
|
||||
returned: success
|
||||
sample:
|
||||
{"attributes":
|
||||
{"Busy": "0",
|
||||
"Elected": "42",
|
||||
"Factor": "1",
|
||||
"From": "136K",
|
||||
"Load": "0",
|
||||
"Route": null,
|
||||
"RouteRedir": null,
|
||||
"Set": "0",
|
||||
"Status": "Init Ok ",
|
||||
"To": " 47K",
|
||||
"Worker URL": null
|
||||
{
|
||||
"attributes": {
|
||||
"Busy": "0",
|
||||
"Elected": "42",
|
||||
"Factor": "1",
|
||||
"From": "136K",
|
||||
"Load": "0",
|
||||
"Route": null,
|
||||
"RouteRedir": null,
|
||||
"Set": "0",
|
||||
"Status": "Init Ok ",
|
||||
"To": " 47K",
|
||||
"Worker URL": null
|
||||
},
|
||||
"balancer_url": "http://10.10.0.2/balancer-manager/",
|
||||
"host": "10.10.0.20",
|
||||
@@ -137,10 +138,10 @@ member:
|
||||
"port": 8080,
|
||||
"protocol": "http",
|
||||
"status": {
|
||||
"disabled": false,
|
||||
"drained": false,
|
||||
"hot_standby": false,
|
||||
"ignore_errors": false
|
||||
"disabled": false,
|
||||
"drained": false,
|
||||
"hot_standby": false,
|
||||
"ignore_errors": false
|
||||
}
|
||||
}
|
||||
members:
|
||||
@@ -149,7 +150,9 @@ members:
|
||||
returned: success
|
||||
type: list
|
||||
sample:
|
||||
[{"attributes": {
|
||||
[
|
||||
{
|
||||
"attributes": {
|
||||
"Busy": "0",
|
||||
"Elected": "42",
|
||||
"Factor": "1",
|
||||
@@ -161,21 +164,22 @@ members:
|
||||
"Status": "Init Ok ",
|
||||
"To": " 47K",
|
||||
"Worker URL": null
|
||||
},
|
||||
"balancer_url": "http://10.10.0.2/balancer-manager/",
|
||||
"host": "10.10.0.20",
|
||||
"management_url": "http://10.10.0.2/lb/?b=mywsbalancer&w=http://10.10.0.20:8080/ws&nonce=8925436c-79c6-4841-8936-e7d13b79239b",
|
||||
"path": "/ws",
|
||||
"port": 8080,
|
||||
"protocol": "http",
|
||||
"status": {
|
||||
},
|
||||
"balancer_url": "http://10.10.0.2/balancer-manager/",
|
||||
"host": "10.10.0.20",
|
||||
"management_url": "http://10.10.0.2/lb/?b=mywsbalancer&w=http://10.10.0.20:8080/ws&nonce=8925436c-79c6-4841-8936-e7d13b79239b",
|
||||
"path": "/ws",
|
||||
"port": 8080,
|
||||
"protocol": "http",
|
||||
"status": {
|
||||
"disabled": false,
|
||||
"drained": false,
|
||||
"hot_standby": false,
|
||||
"ignore_errors": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{"attributes": {
|
||||
{
|
||||
"attributes": {
|
||||
"Busy": "0",
|
||||
"Elected": "42",
|
||||
"Factor": "1",
|
||||
@@ -187,18 +191,19 @@ members:
|
||||
"Status": "Init Ok ",
|
||||
"To": " 47K",
|
||||
"Worker URL": null
|
||||
},
|
||||
"balancer_url": "http://10.10.0.2/balancer-manager/",
|
||||
"host": "10.10.0.21",
|
||||
"management_url": "http://10.10.0.2/lb/?b=mywsbalancer&w=http://10.10.0.21:8080/ws&nonce=8925436c-79c6-4841-8936-e7d13b79239b",
|
||||
"path": "/ws",
|
||||
"port": 8080,
|
||||
"protocol": "http",
|
||||
"status": {
|
||||
},
|
||||
"balancer_url": "http://10.10.0.2/balancer-manager/",
|
||||
"host": "10.10.0.21",
|
||||
"management_url": "http://10.10.0.2/lb/?b=mywsbalancer&w=http://10.10.0.21:8080/ws&nonce=8925436c-79c6-4841-8936-e7d13b79239b",
|
||||
"path": "/ws",
|
||||
"port": 8080,
|
||||
"protocol": "http",
|
||||
"status": {
|
||||
"disabled": false,
|
||||
"drained": false,
|
||||
"hot_standby": false,
|
||||
"ignore_errors": false}
|
||||
"ignore_errors": false
|
||||
}
|
||||
}
|
||||
]
|
||||
"""
|
||||
|
||||
@@ -113,22 +113,6 @@ result:
|
||||
description: Message about action taken.
|
||||
returned: always
|
||||
type: str
|
||||
warnings:
|
||||
description: List of warning messages.
|
||||
returned: when needed
|
||||
type: list
|
||||
rc:
|
||||
description: Return code of underlying command.
|
||||
returned: failed
|
||||
type: int
|
||||
stdout:
|
||||
description: The stdout of underlying command.
|
||||
returned: failed
|
||||
type: str
|
||||
stderr:
|
||||
description: The stderr of underlying command.
|
||||
returned: failed
|
||||
type: str
|
||||
"""
|
||||
|
||||
import re
|
||||
@@ -164,12 +148,12 @@ def _module_is_enabled(module):
|
||||
if module.params['ignore_configcheck']:
|
||||
if 'AH00534' in stderr and 'mpm_' in module.params['name']:
|
||||
if module.params['warn_mpm_absent']:
|
||||
module.warnings.append(
|
||||
module.warn(
|
||||
"No MPM module loaded! apache2 reload AND other module actions"
|
||||
" will fail if no MPM module is loaded immediately."
|
||||
)
|
||||
else:
|
||||
module.warnings.append(error_msg)
|
||||
module.warn(error_msg)
|
||||
return False
|
||||
else:
|
||||
module.fail_json(msg=error_msg)
|
||||
@@ -224,9 +208,7 @@ def _set_state(module, state):
|
||||
|
||||
if _module_is_enabled(module) != want_enabled:
|
||||
if module.check_mode:
|
||||
module.exit_json(changed=True,
|
||||
result=success_msg,
|
||||
warnings=module.warnings)
|
||||
module.exit_json(changed=True, result=success_msg)
|
||||
|
||||
a2mod_binary_path = module.get_bin_path(a2mod_binary)
|
||||
if a2mod_binary_path is None:
|
||||
@@ -241,9 +223,7 @@ def _set_state(module, state):
|
||||
result, stdout, stderr = module.run_command(a2mod_binary_cmd + [name])
|
||||
|
||||
if _module_is_enabled(module) == want_enabled:
|
||||
module.exit_json(changed=True,
|
||||
result=success_msg,
|
||||
warnings=module.warnings)
|
||||
module.exit_json(changed=True, result=success_msg)
|
||||
else:
|
||||
msg = (
|
||||
'Failed to set module {name} to {state}:\n'
|
||||
@@ -261,9 +241,7 @@ def _set_state(module, state):
|
||||
stdout=stdout,
|
||||
stderr=stderr)
|
||||
else:
|
||||
module.exit_json(changed=False,
|
||||
result=success_msg,
|
||||
warnings=module.warnings)
|
||||
module.exit_json(changed=False, result=success_msg)
|
||||
|
||||
|
||||
def main():
|
||||
@@ -279,8 +257,6 @@ def main():
|
||||
supports_check_mode=True,
|
||||
)
|
||||
|
||||
module.warnings = []
|
||||
|
||||
name = module.params['name']
|
||||
if name == 'cgi' and _run_threaded(module):
|
||||
module.fail_json(msg="Your MPM seems to be threaded. No automatic actions on module cgi possible.")
|
||||
|
||||
@@ -351,6 +351,9 @@ def main():
|
||||
|
||||
p = module.params
|
||||
|
||||
if p['name'] and any(not name.strip() for name in p['name']):
|
||||
module.fail_json(msg="Package name(s) cannot be empty or whitespace-only")
|
||||
|
||||
if p['no_cache']:
|
||||
APK_PATH = "%s --no-cache" % (APK_PATH, )
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ module: campfire
|
||||
short_description: Send a message to Campfire
|
||||
description:
|
||||
- Send a message to Campfire.
|
||||
- Messages with newlines will result in a "Paste" message being sent.
|
||||
- Messages with newlines result in a "Paste" message being sent.
|
||||
extends_documentation_fragment:
|
||||
- community.general.attributes
|
||||
attributes:
|
||||
@@ -48,10 +48,51 @@ options:
|
||||
description:
|
||||
- Send a notification sound before the message.
|
||||
required: false
|
||||
choices: ["56k", "bell", "bezos", "bueller", "clowntown", "cottoneyejoe", "crickets", "dadgummit", "dangerzone", "danielsan",
|
||||
"deeper", "drama", "greatjob", "greyjoy", "guarantee", "heygirl", "horn", "horror", "inconceivable", "live", "loggins",
|
||||
"makeitso", "noooo", "nyan", "ohmy", "ohyeah", "pushit", "rimshot", "rollout", "rumble", "sax", "secret", "sexyback",
|
||||
"story", "tada", "tmyk", "trololo", "trombone", "unix", "vuvuzela", "what", "whoomp", "yeah", "yodel"]
|
||||
choices:
|
||||
- 56k
|
||||
- bell
|
||||
- bezos
|
||||
- bueller
|
||||
- clowntown
|
||||
- cottoneyejoe
|
||||
- crickets
|
||||
- dadgummit
|
||||
- dangerzone
|
||||
- danielsan
|
||||
- deeper
|
||||
- drama
|
||||
- greatjob
|
||||
- greyjoy
|
||||
- guarantee
|
||||
- heygirl
|
||||
- horn
|
||||
- horror
|
||||
- inconceivable
|
||||
- live
|
||||
- loggins
|
||||
- makeitso
|
||||
- noooo
|
||||
- nyan
|
||||
- ohmy
|
||||
- ohyeah
|
||||
- pushit
|
||||
- rimshot
|
||||
- rollout
|
||||
- rumble
|
||||
- sax
|
||||
- secret
|
||||
- sexyback
|
||||
- story
|
||||
- tada
|
||||
- tmyk
|
||||
- trololo
|
||||
- trombone
|
||||
- unix
|
||||
- vuvuzela
|
||||
- what
|
||||
- whoomp
|
||||
- yeah
|
||||
- yodel
|
||||
|
||||
# informational: requirements for nodes
|
||||
requirements: []
|
||||
|
||||
@@ -40,10 +40,10 @@ options:
|
||||
choices: [absent, present]
|
||||
default: present
|
||||
notes:
|
||||
- The capabilities system will automatically transform operators and flags into the effective set, so for example, C(cap_foo=ep)
|
||||
will probably become C(cap_foo+ep).
|
||||
- This module does not attempt to determine the final operator and flags to compare, so you will want to ensure that your
|
||||
capabilities argument matches the final capabilities.
|
||||
- The capabilities system automatically transforms operators and flags into the effective set, so for example, C(cap_foo=ep)
|
||||
probably becomes C(cap_foo+ep).
|
||||
- This module does not attempt to determine the final operator and flags to compare, so you want to ensure that your capabilities
|
||||
argument matches the final capabilities.
|
||||
author:
|
||||
- Nate Coraor (@natefoo)
|
||||
"""
|
||||
@@ -123,6 +123,8 @@ class CapabilitiesModule(object):
|
||||
if ' =' in stdout:
|
||||
# process output of an older version of libcap
|
||||
caps = stdout.split(' =')[1].strip().split()
|
||||
elif stdout.strip().endswith(")"): # '/foo (Error Message)'
|
||||
self.module.fail_json(msg="Unable to get capabilities of %s" % path, stdout=stdout.strip(), stderr=stderr)
|
||||
else:
|
||||
# otherwise, we have a newer version here
|
||||
# see original commit message of cap/v0.2.40-18-g177cd41 in libcap.git
|
||||
|
||||
@@ -28,7 +28,7 @@ options:
|
||||
executable:
|
||||
description:
|
||||
- Path to the C(cargo) installed in the system.
|
||||
- If not specified, the module will look C(cargo) in E(PATH).
|
||||
- If not specified, the module looks for C(cargo) in E(PATH).
|
||||
type: path
|
||||
version_added: 7.5.0
|
||||
name:
|
||||
@@ -39,11 +39,11 @@ options:
|
||||
required: true
|
||||
path:
|
||||
description: The base path where to install the Rust packages. Cargo automatically appends V(/bin). In other words, V(/usr/local)
|
||||
will become V(/usr/local/bin).
|
||||
becomes V(/usr/local/bin).
|
||||
type: path
|
||||
version:
|
||||
description: The version to install. If O(name) contains multiple values, the module will try to install all of them in
|
||||
this version.
|
||||
description: The version to install. If O(name) contains multiple values, the module tries to install all of them in this
|
||||
version.
|
||||
type: str
|
||||
required: false
|
||||
locked:
|
||||
|
||||
@@ -89,14 +89,6 @@ EXAMPLES = r"""
|
||||
api_secret: "{{ api_secret }}"
|
||||
"""
|
||||
|
||||
RETURN = r"""
|
||||
changed:
|
||||
description: Whether the API accepted the message.
|
||||
returned: always
|
||||
type: bool
|
||||
sample: true
|
||||
"""
|
||||
|
||||
|
||||
import json
|
||||
|
||||
|
||||
@@ -50,38 +50,41 @@ cloud_init_data_facts:
|
||||
description: Facts of result and status.
|
||||
returned: success
|
||||
type: dict
|
||||
sample: '{
|
||||
"status": {
|
||||
sample:
|
||||
{
|
||||
"status": {
|
||||
"v1": {
|
||||
"datasource": "DataSourceCloudStack",
|
||||
"errors": []
|
||||
},
|
||||
"result": {
|
||||
"v1": {
|
||||
"datasource": "DataSourceCloudStack",
|
||||
"init": {
|
||||
"errors": [],
|
||||
"finished": 1522066377.0185432,
|
||||
"start": 1522066375.2648022
|
||||
},
|
||||
"init-local": {
|
||||
"errors": [],
|
||||
"finished": 1522066373.70919,
|
||||
"start": 1522066373.4726632
|
||||
},
|
||||
"modules-config": {
|
||||
"errors": [],
|
||||
"finished": 1522066380.9097016,
|
||||
"start": 1522066379.0011985
|
||||
},
|
||||
"modules-final": {
|
||||
"errors": [],
|
||||
"finished": 1522066383.56594,
|
||||
"start": 1522066382.3449218
|
||||
},
|
||||
"stage": null
|
||||
"datasource": "DataSourceCloudStack",
|
||||
"errors": []
|
||||
}
|
||||
}'
|
||||
},
|
||||
"result": {
|
||||
"v1": {
|
||||
"datasource": "DataSourceCloudStack",
|
||||
"init": {
|
||||
"errors": [],
|
||||
"finished": 1522066377.0185432,
|
||||
"start": 1522066375.2648022
|
||||
},
|
||||
"init-local": {
|
||||
"errors": [],
|
||||
"finished": 1522066373.70919,
|
||||
"start": 1522066373.4726632
|
||||
},
|
||||
"modules-config": {
|
||||
"errors": [],
|
||||
"finished": 1522066380.9097016,
|
||||
"start": 1522066379.0011985
|
||||
},
|
||||
"modules-final": {
|
||||
"errors": [],
|
||||
"finished": 1522066383.56594,
|
||||
"start": 1522066382.3449218
|
||||
},
|
||||
"stage": null
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
@@ -127,7 +127,7 @@ options:
|
||||
description:
|
||||
- Whether the record should be the only one for that record type and record name.
|
||||
- Only use with O(state=present).
|
||||
- This will delete all other records with the same record name and type.
|
||||
- This deletes all other records with the same record name and type.
|
||||
type: bool
|
||||
state:
|
||||
description:
|
||||
@@ -157,6 +157,7 @@ options:
|
||||
- The type of DNS record to create. Required if O(state=present).
|
||||
- Support for V(SPF) has been removed from community.general 9.0.0 since that record type is no longer supported by
|
||||
CloudFlare.
|
||||
- Support for V(PTR) has been added in community.general 11.1.0.
|
||||
type: str
|
||||
choices: [A, AAAA, CNAME, DS, MX, NS, SRV, SSHFP, TLSA, CAA, TXT]
|
||||
value:
|
||||
@@ -345,8 +346,16 @@ record:
|
||||
description: Additional record data.
|
||||
returned: success, if type is SRV, DS, SSHFP TLSA or CAA
|
||||
type: dict
|
||||
sample: {name: "jabber", port: 8080, priority: 10, proto: "_tcp", service: "_xmpp", target: "jabberhost.sample.com",
|
||||
weight: 5}
|
||||
sample:
|
||||
{
|
||||
"name": "jabber",
|
||||
"port": 8080,
|
||||
"priority": 10,
|
||||
"proto": "_tcp",
|
||||
"service": "_xmpp",
|
||||
"target": "jabberhost.sample.com",
|
||||
"weight": 5
|
||||
}
|
||||
id:
|
||||
description: The record ID.
|
||||
returned: success
|
||||
@@ -361,7 +370,7 @@ record:
|
||||
description: Extra Cloudflare-specific information about the record.
|
||||
returned: success
|
||||
type: dict
|
||||
sample: {auto_added: false}
|
||||
sample: {"auto_added": false}
|
||||
modified_on:
|
||||
description: Record modification date.
|
||||
returned: success
|
||||
@@ -392,7 +401,7 @@ record:
|
||||
returned: success
|
||||
type: list
|
||||
elements: str
|
||||
sample: ['production', 'app']
|
||||
sample: ["production", "app"]
|
||||
version_added: 10.1.0
|
||||
tags_modified_on:
|
||||
description: When the record tags were last modified. Omitted if there are no tags.
|
||||
|
||||
@@ -42,12 +42,12 @@ options:
|
||||
type: str
|
||||
use_ssl:
|
||||
description:
|
||||
- If V(false), an HTTP connection will be used instead of the default HTTPS connection.
|
||||
- If V(false), an HTTP connection is used instead of the default HTTPS connection.
|
||||
type: bool
|
||||
default: true
|
||||
validate_certs:
|
||||
description:
|
||||
- If V(false), SSL certificates will not be validated.
|
||||
- If V(false), SSL certificates are not validated.
|
||||
- This should only set to V(false) when used on personally controlled sites using self-signed certificates.
|
||||
type: bool
|
||||
default: true
|
||||
|
||||
@@ -42,12 +42,12 @@ options:
|
||||
type: str
|
||||
use_ssl:
|
||||
description:
|
||||
- If V(false), an HTTP connection will be used instead of the default HTTPS connection.
|
||||
- If V(false), an HTTP connection is used instead of the default HTTPS connection.
|
||||
type: bool
|
||||
default: true
|
||||
validate_certs:
|
||||
description:
|
||||
- If V(false), SSL certificates will not be validated.
|
||||
- If V(false), SSL certificates are not validated.
|
||||
- This should only set to V(false) when used on personally controlled sites using self-signed certificates.
|
||||
type: bool
|
||||
default: true
|
||||
@@ -163,7 +163,6 @@ from ansible_collections.community.general.plugins.module_utils.datetime import
|
||||
)
|
||||
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
|
||||
|
||||
|
||||
IFPROPS_MAPPING = dict(
|
||||
bondingopts='bonding_opts',
|
||||
bridgeopts='bridge_opts',
|
||||
@@ -280,8 +279,8 @@ def main():
|
||||
|
||||
if system:
|
||||
# Update existing entry
|
||||
system_id = None
|
||||
if LooseVersion(str(conn.version())) >= LooseVersion('3.4.0'):
|
||||
system_id = ''
|
||||
if LooseVersion(str(conn.version())) >= LooseVersion('3.4'):
|
||||
system_id = conn.get_system_handle(name)
|
||||
else:
|
||||
system_id = conn.get_system_handle(name, token)
|
||||
|
||||
@@ -17,7 +17,7 @@ author:
|
||||
short_description: Dependency Manager for PHP
|
||||
description:
|
||||
- Composer is a tool for dependency management in PHP. It allows you to declare the dependent libraries your project needs
|
||||
and it will install them in your project for you.
|
||||
and it installs them in your project for you.
|
||||
extends_documentation_fragment:
|
||||
- community.general.attributes
|
||||
attributes:
|
||||
@@ -45,7 +45,7 @@ options:
|
||||
type: path
|
||||
description:
|
||||
- Directory of your project (see C(--working-dir)). This is required when the command is not run globally.
|
||||
- Will be ignored if O(global_command=true).
|
||||
- This is ignored if O(global_command=true).
|
||||
global_command:
|
||||
description:
|
||||
- Runs the specified command globally.
|
||||
|
||||
@@ -21,8 +21,8 @@ description:
|
||||
name and ID respectively by appending V(service:) Node level checks require a O(check_name) and optionally a O(check_id).
|
||||
- Currently, there is no complete way to retrieve the script, interval or TTL metadata for a registered check. Without this
|
||||
metadata it is not possible to tell if the data supplied with ansible represents a change to a check. As a result this
|
||||
does not attempt to determine changes and will always report a changed occurred. An API method is planned to supply this
|
||||
metadata so at that stage change management will be added.
|
||||
does not attempt to determine changes and it always reports a changed occurred. An API method is planned to supply this
|
||||
metadata so at that stage change management is to be added.
|
||||
- See U(http://consul.io) for more details.
|
||||
requirements:
|
||||
- python-consul
|
||||
@@ -83,25 +83,25 @@ options:
|
||||
service_address:
|
||||
type: str
|
||||
description:
|
||||
- The address to advertise that the service will be listening on. This value will be passed as the C(address) parameter
|
||||
to Consul's C(/v1/agent/service/register) API method, so refer to the Consul API documentation for further details.
|
||||
- The address to advertise that the service is listening on. This value is passed as the C(address) parameter to Consul's
|
||||
C(/v1/agent/service/register) API method, so refer to the Consul API documentation for further details.
|
||||
tags:
|
||||
type: list
|
||||
elements: str
|
||||
description:
|
||||
- Tags that will be attached to the service registration.
|
||||
- Tags that are attached to the service registration.
|
||||
script:
|
||||
type: str
|
||||
description:
|
||||
- The script/command that will be run periodically to check the health of the service.
|
||||
- The script/command that is run periodically to check the health of the service.
|
||||
- Requires O(interval) to be provided.
|
||||
- Mutually exclusive with O(ttl), O(tcp) and O(http).
|
||||
interval:
|
||||
type: str
|
||||
description:
|
||||
- The interval at which the service check will be run. This is a number with a V(s) or V(m) suffix to signify the units
|
||||
of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) will be used by default, for example
|
||||
V(10) will be V(10s).
|
||||
- The interval at which the service check is run. This is a number with a V(s) or V(m) suffix to signify the units of
|
||||
seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) is used by default, for example V(10)
|
||||
is V(10s).
|
||||
- Required if one of the parameters O(script), O(http), or O(tcp) is specified.
|
||||
check_id:
|
||||
type: str
|
||||
@@ -122,25 +122,25 @@ options:
|
||||
ttl:
|
||||
type: str
|
||||
description:
|
||||
- Checks can be registered with a TTL instead of a O(script) and O(interval) this means that the service will check
|
||||
in with the agent before the TTL expires. If it does not the check will be considered failed. Required if registering
|
||||
a check and the script an interval are missing Similar to the interval this is a number with a V(s) or V(m) suffix
|
||||
to signify the units of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) will be used
|
||||
by default, for example V(10) will be V(10s).
|
||||
- Checks can be registered with a TTL instead of a O(script) and O(interval) this means that the service checks in with
|
||||
the agent before the TTL expires. If it does not the check is considered failed. Required if registering a check and
|
||||
the script an interval are missing Similar to the interval this is a number with a V(s) or V(m) suffix to signify
|
||||
the units of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) is used by default, for
|
||||
example V(10) is equivalent to V(10s).
|
||||
- Mutually exclusive with O(script), O(tcp) and O(http).
|
||||
tcp:
|
||||
type: str
|
||||
description:
|
||||
- Checks can be registered with a TCP port. This means that Consul will check if the connection attempt to that port
|
||||
is successful (that is, the port is currently accepting connections). The format is V(host:port), for example V(localhost:80).
|
||||
- Checks can be registered with a TCP port. This means that Consul checks if the connection attempt to that port is
|
||||
successful (that is, the port is currently accepting connections). The format is V(host:port), for example V(localhost:80).
|
||||
- Requires O(interval) to be provided.
|
||||
- Mutually exclusive with O(script), O(ttl) and O(http).
|
||||
version_added: '1.3.0'
|
||||
http:
|
||||
type: str
|
||||
description:
|
||||
- Checks can be registered with an HTTP endpoint. This means that Consul will check that the http endpoint returns a
|
||||
successful HTTP status.
|
||||
- Checks can be registered with an HTTP endpoint. This means that Consul checks that the http endpoint returns a successful
|
||||
HTTP status.
|
||||
- Requires O(interval) to be provided.
|
||||
- Mutually exclusive with O(script), O(ttl) and O(tcp).
|
||||
timeout:
|
||||
@@ -148,7 +148,7 @@ options:
|
||||
description:
|
||||
- A custom HTTP check timeout. The Consul default is 10 seconds. Similar to the interval this is a number with a V(s)
|
||||
or V(m) suffix to signify the units of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s)
|
||||
will be used by default, for example V(10) will be V(10s).
|
||||
is used by default, for example V(10) is equivalent to V(10s).
|
||||
token:
|
||||
type: str
|
||||
description:
|
||||
|
||||
@@ -50,7 +50,7 @@ RETURN = r"""
|
||||
result:
|
||||
description:
|
||||
- The bootstrap result as returned by the Consul HTTP API.
|
||||
- B(Note:) If O(bootstrap_secret) has been specified the C(SecretID) and C(ID) will not contain the secret but C(VALUE_SPECIFIED_IN_NO_LOG_PARAMETER).
|
||||
- B(Note:) If O(bootstrap_secret) has been specified the C(SecretID) and C(ID) do not contain the secret but C(VALUE_SPECIFIED_IN_NO_LOG_PARAMETER).
|
||||
If you pass O(bootstrap_secret), make sure your playbook/role does not depend on this return value!
|
||||
returned: changed
|
||||
type: dict
|
||||
|
||||
@@ -17,9 +17,9 @@ description:
|
||||
- Allows the addition, modification and deletion of checks in a Consul cluster using the agent. For more details on using
|
||||
and configuring Checks, see U(https://developer.hashicorp.com/consul/api-docs/agent/check).
|
||||
- Currently, there is no complete way to retrieve the script, interval or TTL metadata for a registered check. Without this
|
||||
metadata it is not possible to tell if the data supplied with ansible represents a change to a check. As a result this
|
||||
does not attempt to determine changes and will always report a changed occurred. An API method is planned to supply this
|
||||
metadata so at that stage change management will be added.
|
||||
metadata it is not possible to tell if the data supplied with ansible represents a change to a check. As a result, the
|
||||
module does not attempt to determine changes and it always reports a changed occurred. An API method is planned to supply
|
||||
this metadata so at that stage change management is to be added.
|
||||
author:
|
||||
- Michael Ilg (@Ilgmi)
|
||||
extends_documentation_fragment:
|
||||
@@ -36,8 +36,8 @@ attributes:
|
||||
diff_mode:
|
||||
support: partial
|
||||
details:
|
||||
- In check mode the diff will show the object as it is defined in the module options and not the object structure of
|
||||
the Consul API.
|
||||
- In check mode the diff shows the object as it is defined in the module options and not the object structure of the
|
||||
Consul API.
|
||||
options:
|
||||
state:
|
||||
description:
|
||||
@@ -52,13 +52,13 @@ options:
|
||||
id:
|
||||
description:
|
||||
- Specifies a unique ID for this check on the node. This defaults to the O(name) parameter, but it may be necessary
|
||||
to provide an ID for uniqueness. This value will return in the response as "CheckId".
|
||||
to provide an ID for uniqueness. This value is returned in the response as V(CheckId).
|
||||
type: str
|
||||
interval:
|
||||
description:
|
||||
- The interval at which the service check will be run. This is a number with a V(s) or V(m) suffix to signify the units
|
||||
of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) will be used by default, for example
|
||||
V(10) will be V(10s).
|
||||
- The interval at which the service check is run. This is a number with a V(s) or V(m) suffix to signify the units of
|
||||
seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) is used by default, for example V(10)
|
||||
is equivalent to V(10s).
|
||||
- Required if one of the parameters O(args), O(http), or O(tcp) is specified.
|
||||
type: str
|
||||
notes:
|
||||
@@ -74,11 +74,11 @@ options:
|
||||
elements: str
|
||||
ttl:
|
||||
description:
|
||||
- Checks can be registered with a TTL instead of a O(args) and O(interval) this means that the service will check in
|
||||
with the agent before the TTL expires. If it does not the check will be considered failed. Required if registering
|
||||
a check and the script an interval are missing Similar to the interval this is a number with a V(s) or V(m) suffix
|
||||
to signify the units of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) will be used
|
||||
by default, for example V(10) will be V(10s).
|
||||
- Checks can be registered with a TTL instead of a O(args) and O(interval) this means that the service checks in with
|
||||
the agent before the TTL expires. If it does not the check is considered failed. Required if registering a check and
|
||||
the script an interval are missing Similar to the interval this is a number with a V(s) or V(m) suffix to signify
|
||||
the units of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) is used by default, for
|
||||
example V(10) is equivalent to V(10s).
|
||||
- Mutually exclusive with O(args), O(tcp) and O(http).
|
||||
type: str
|
||||
tcp:
|
||||
@@ -91,8 +91,8 @@ options:
|
||||
version_added: '1.3.0'
|
||||
http:
|
||||
description:
|
||||
- Checks can be registered with an HTTP endpoint. This means that Consul will check that the http endpoint returns a
|
||||
successful HTTP status.
|
||||
- Checks can be registered with an HTTP endpoint. This means that Consul checks that the HTTP endpoint returns a successful
|
||||
HTTP status.
|
||||
- Requires O(interval) to be provided.
|
||||
- Mutually exclusive with O(args), O(ttl) and O(tcp).
|
||||
type: str
|
||||
@@ -100,7 +100,7 @@ options:
|
||||
description:
|
||||
- A custom HTTP check timeout. The Consul default is 10 seconds. Similar to the interval this is a number with a V(s)
|
||||
or V(m) suffix to signify the units of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s)
|
||||
will be used by default, for example V(10) will be V(10s).
|
||||
is used by default, for example V(10) is equivalent to V(10s).
|
||||
type: str
|
||||
service_id:
|
||||
description:
|
||||
|
||||
@@ -31,7 +31,7 @@ attributes:
|
||||
diff_mode:
|
||||
support: partial
|
||||
details:
|
||||
- In check mode the diff will miss operational attributes.
|
||||
- In check mode the diff misses operational attributes.
|
||||
options:
|
||||
state:
|
||||
description:
|
||||
@@ -50,13 +50,13 @@ options:
|
||||
type: str
|
||||
tags:
|
||||
description:
|
||||
- Tags that will be attached to the service registration.
|
||||
- Tags that are attached to the service registration.
|
||||
type: list
|
||||
elements: str
|
||||
address:
|
||||
description:
|
||||
- The address to advertise that the service will be listening on. This value will be passed as the C(address) parameter
|
||||
to Consul's C(/v1/agent/service/register) API method, so refer to the Consul API documentation for further details.
|
||||
- The address to advertise that the service listens on. This value is passed as the C(address) parameter to Consul's
|
||||
C(/v1/agent/service/register) API method, so refer to the Consul API documentation for further details.
|
||||
type: str
|
||||
meta:
|
||||
description:
|
||||
|
||||
@@ -29,7 +29,7 @@ attributes:
|
||||
diff_mode:
|
||||
support: partial
|
||||
details:
|
||||
- In check mode the diff will miss operational attributes.
|
||||
- In check mode the diff misses operational attributes.
|
||||
options:
|
||||
state:
|
||||
description:
|
||||
@@ -71,7 +71,7 @@ options:
|
||||
config:
|
||||
description:
|
||||
- The raw configuration to use for the chosen auth method.
|
||||
- Contents will vary depending upon the type chosen.
|
||||
- Contents vary depending upon the O(type) chosen.
|
||||
- Required when the auth method is created.
|
||||
type: dict
|
||||
"""
|
||||
|
||||
@@ -29,7 +29,7 @@ attributes:
|
||||
diff_mode:
|
||||
support: partial
|
||||
details:
|
||||
- In check mode the diff will miss operational attributes.
|
||||
- In check mode the diff misses operational attributes.
|
||||
options:
|
||||
state:
|
||||
description:
|
||||
|
||||
@@ -36,12 +36,12 @@ options:
|
||||
state:
|
||||
description:
|
||||
- The action to take with the supplied key and value. If the state is V(present) and O(value) is set, the key contents
|
||||
will be set to the value supplied and C(changed) will be set to V(true) only if the value was different to the current
|
||||
contents. If the state is V(present) and O(value) is not set, the existing value associated to the key will be returned.
|
||||
The state V(absent) will remove the key/value pair, again C(changed) will be set to V(true) only if the key actually
|
||||
existed prior to the removal. An attempt can be made to obtain or free the lock associated with a key/value pair with
|
||||
the states V(acquire) or V(release) respectively. A valid session must be supplied to make the attempt C(changed)
|
||||
will be V(true) if the attempt is successful, V(false) otherwise.
|
||||
is set to the value supplied and C(changed) is set to V(true) only if the value was different to the current contents.
|
||||
If the state is V(present) and O(value) is not set, the existing value associated to the key is returned. The state
|
||||
V(absent) is used to remove the key/value pair, again C(changed) is set to V(true) only if the key actually existed
|
||||
prior to the removal. An attempt can be made to obtain or free the lock associated with a key/value pair with the
|
||||
states V(acquire) or V(release) respectively. A valid session must be supplied to make the attempt C(changed) is V(true)
|
||||
if the attempt is successful, V(false) otherwise.
|
||||
type: str
|
||||
choices: [absent, acquire, present, release]
|
||||
default: present
|
||||
@@ -73,9 +73,8 @@ options:
|
||||
type: str
|
||||
cas:
|
||||
description:
|
||||
- Used when acquiring a lock with a session. If the O(cas) is V(0), then Consul will only put the key if it does not
|
||||
already exist. If the O(cas) value is non-zero, then the key is only set if the index matches the ModifyIndex of that
|
||||
key.
|
||||
- Used when acquiring a lock with a session. If the O(cas) is V(0), then Consul only puts the key if it does not already
|
||||
exist. If the O(cas) value is non-zero, then the key is only set if the index matches the ModifyIndex of that key.
|
||||
type: str
|
||||
flags:
|
||||
description:
|
||||
@@ -103,8 +102,7 @@ options:
|
||||
default: true
|
||||
datacenter:
|
||||
description:
|
||||
- The name of the datacenter to query. If unspecified, the query will default to the datacenter of the Consul agent
|
||||
on O(host).
|
||||
- The name of the datacenter to query. If unspecified, the query defaults to the datacenter of the Consul agent on O(host).
|
||||
type: str
|
||||
version_added: 10.0.0
|
||||
"""
|
||||
|
||||
@@ -31,7 +31,7 @@ attributes:
|
||||
support: partial
|
||||
version_added: 8.3.0
|
||||
details:
|
||||
- In check mode the diff will miss operational attributes.
|
||||
- In check mode the diff misses operational attributes.
|
||||
action_group:
|
||||
version_added: 8.3.0
|
||||
options:
|
||||
|
||||
@@ -29,7 +29,7 @@ attributes:
|
||||
diff_mode:
|
||||
support: partial
|
||||
details:
|
||||
- In check mode the diff will miss operational attributes.
|
||||
- In check mode the diff misses operational attributes.
|
||||
version_added: 8.3.0
|
||||
action_group:
|
||||
version_added: 8.3.0
|
||||
@@ -48,15 +48,15 @@ options:
|
||||
description:
|
||||
description:
|
||||
- Description of the role.
|
||||
- If not specified, the assigned description will not be changed.
|
||||
- If not specified, the assigned description is not changed.
|
||||
type: str
|
||||
policies:
|
||||
type: list
|
||||
elements: dict
|
||||
description:
|
||||
- List of policies to attach to the role. Each policy is a dict.
|
||||
- If the parameter is left blank, any policies currently assigned will not be changed.
|
||||
- Any empty array (V([])) will clear any policies previously set.
|
||||
- If the parameter is left blank, any policies currently assigned are not changed.
|
||||
- Any empty array (V([])) clears any policies previously set.
|
||||
suboptions:
|
||||
name:
|
||||
description:
|
||||
@@ -90,8 +90,8 @@ options:
|
||||
elements: dict
|
||||
description:
|
||||
- List of service identities to attach to the role.
|
||||
- If not specified, any service identities currently assigned will not be changed.
|
||||
- If the parameter is an empty array (V([])), any node identities assigned will be unassigned.
|
||||
- If not specified, any service identities currently assigned are not changed.
|
||||
- If the parameter is an empty array (V([])), any node identities assigned are unassigned.
|
||||
suboptions:
|
||||
service_name:
|
||||
description:
|
||||
@@ -106,9 +106,9 @@ options:
|
||||
- name
|
||||
datacenters:
|
||||
description:
|
||||
- The datacenters the policies will be effective.
|
||||
- This will result in effective policy only being valid in this datacenter.
|
||||
- If an empty array (V([])) is specified, the policies will valid in all datacenters.
|
||||
- The datacenters where the policies are effective.
|
||||
- This results in effective policy only being valid in this datacenter.
|
||||
- If an empty array (V([])) is specified, the policies are valid in all datacenters.
|
||||
- Including those which do not yet exist but may in the future.
|
||||
type: list
|
||||
elements: str
|
||||
@@ -117,8 +117,8 @@ options:
|
||||
elements: dict
|
||||
description:
|
||||
- List of node identities to attach to the role.
|
||||
- If not specified, any node identities currently assigned will not be changed.
|
||||
- If the parameter is an empty array (V([])), any node identities assigned will be unassigned.
|
||||
- If not specified, any node identities currently assigned are not changed.
|
||||
- If the parameter is an empty array (V([])), any node identities assigned are unassigned.
|
||||
suboptions:
|
||||
node_name:
|
||||
description:
|
||||
@@ -134,7 +134,7 @@ options:
|
||||
datacenter:
|
||||
description:
|
||||
- The nodes datacenter.
|
||||
- This will result in effective policy only being valid in this datacenter.
|
||||
- This results in effective policy only being valid in this datacenter.
|
||||
type: str
|
||||
required: true
|
||||
"""
|
||||
@@ -182,17 +182,20 @@ role:
|
||||
returned: success
|
||||
type: dict
|
||||
sample:
|
||||
{
|
||||
"CreateIndex": 39,
|
||||
"Description": "",
|
||||
"Hash": "Trt0QJtxVEfvTTIcdTUbIJRr6Dsi6E4EcwSFxx9tCYM=",
|
||||
"ID": "9a300b8d-48db-b720-8544-a37c0f5dafb5",
|
||||
"ModifyIndex": 39,
|
||||
"Name": "foo-role",
|
||||
"Policies": [
|
||||
{"ID": "b1a00172-d7a1-0e66-a12e-7a4045c4b774", "Name": "foo-access"}
|
||||
]
|
||||
}
|
||||
{
|
||||
"CreateIndex": 39,
|
||||
"Description": "",
|
||||
"Hash": "Trt0QJtxVEfvTTIcdTUbIJRr6Dsi6E4EcwSFxx9tCYM=",
|
||||
"ID": "9a300b8d-48db-b720-8544-a37c0f5dafb5",
|
||||
"ModifyIndex": 39,
|
||||
"Name": "foo-role",
|
||||
"Policies": [
|
||||
{
|
||||
"ID": "b1a00172-d7a1-0e66-a12e-7a4045c4b774",
|
||||
"Name": "foo-access"
|
||||
}
|
||||
]
|
||||
}
|
||||
operation:
|
||||
description: The operation performed on the role.
|
||||
returned: changed
|
||||
|
||||
@@ -57,7 +57,7 @@ options:
|
||||
default: 15
|
||||
node:
|
||||
description:
|
||||
- The name of the node that with which the session will be associated. By default this is the name of the agent.
|
||||
- The name of the node that with which the session is associated. By default this is the name of the agent.
|
||||
type: str
|
||||
datacenter:
|
||||
description:
|
||||
@@ -65,8 +65,8 @@ options:
|
||||
type: str
|
||||
checks:
|
||||
description:
|
||||
- Checks that will be used to verify the session health. If all the checks fail, the session will be invalidated and
|
||||
any locks associated with the session will be release and can be acquired once the associated lock delay has expired.
|
||||
- Checks that are used to verify the session health. If all the checks fail, the session is invalidated and any locks
|
||||
associated with the session are released and can be acquired once the associated lock delay has expired.
|
||||
type: list
|
||||
elements: str
|
||||
behavior:
|
||||
|
||||
@@ -29,7 +29,7 @@ attributes:
|
||||
diff_mode:
|
||||
support: partial
|
||||
details:
|
||||
- In check mode the diff will miss operational attributes.
|
||||
- In check mode the diff misses operational attributes.
|
||||
action_group:
|
||||
version_added: 8.3.0
|
||||
options:
|
||||
@@ -41,11 +41,11 @@ options:
|
||||
type: str
|
||||
accessor_id:
|
||||
description:
|
||||
- Specifies a UUID to use as the token's Accessor ID. If not specified a UUID will be generated for this field.
|
||||
- Specifies a UUID to use as the token's Accessor ID. If not specified a UUID is generated for this field.
|
||||
type: str
|
||||
secret_id:
|
||||
description:
|
||||
- Specifies a UUID to use as the token's Secret ID. If not specified a UUID will be generated for this field.
|
||||
- Specifies a UUID to use as the token's Secret ID. If not specified a UUID is generated for this field.
|
||||
type: str
|
||||
description:
|
||||
description:
|
||||
@@ -56,8 +56,8 @@ options:
|
||||
elements: dict
|
||||
description:
|
||||
- List of policies to attach to the token. Each policy is a dict.
|
||||
- If the parameter is left blank, any policies currently assigned will not be changed.
|
||||
- Any empty array (V([])) will clear any policies previously set.
|
||||
- If the parameter is left blank, any policies currently assigned are not changed.
|
||||
- Any empty array (V([])) clears any policies previously set.
|
||||
suboptions:
|
||||
name:
|
||||
description:
|
||||
@@ -74,8 +74,8 @@ options:
|
||||
elements: dict
|
||||
description:
|
||||
- List of roles to attach to the token. Each role is a dict.
|
||||
- If the parameter is left blank, any roles currently assigned will not be changed.
|
||||
- Any empty array (V([])) will clear any roles previously set.
|
||||
- If the parameter is left blank, any roles currently assigned are not changed.
|
||||
- Any empty array (V([])) clears any roles previously set.
|
||||
suboptions:
|
||||
name:
|
||||
description:
|
||||
@@ -108,8 +108,8 @@ options:
|
||||
elements: dict
|
||||
description:
|
||||
- List of service identities to attach to the token.
|
||||
- If not specified, any service identities currently assigned will not be changed.
|
||||
- If the parameter is an empty array (V([])), any node identities assigned will be unassigned.
|
||||
- If not specified, any service identities currently assigned are not changed.
|
||||
- If the parameter is an empty array (V([])), any node identities assigned are unassigned.
|
||||
suboptions:
|
||||
service_name:
|
||||
description:
|
||||
@@ -120,8 +120,8 @@ options:
|
||||
required: true
|
||||
datacenters:
|
||||
description:
|
||||
- The datacenters the token will be effective.
|
||||
- If an empty array (V([])) is specified, the token will valid in all datacenters.
|
||||
- The datacenters where the token is effective.
|
||||
- If an empty array (V([])) is specified, the token is valid in all datacenters.
|
||||
- Including those which do not yet exist but may in the future.
|
||||
type: list
|
||||
elements: str
|
||||
@@ -130,8 +130,8 @@ options:
|
||||
elements: dict
|
||||
description:
|
||||
- List of node identities to attach to the token.
|
||||
- If not specified, any node identities currently assigned will not be changed.
|
||||
- If the parameter is an empty array (V([])), any node identities assigned will be unassigned.
|
||||
- If not specified, any node identities currently assigned are not changed.
|
||||
- If the parameter is an empty array (V([])), any node identities assigned are unassigned.
|
||||
suboptions:
|
||||
node_name:
|
||||
description:
|
||||
@@ -143,7 +143,7 @@ options:
|
||||
datacenter:
|
||||
description:
|
||||
- The nodes datacenter.
|
||||
- This will result in effective token only being valid in this datacenter.
|
||||
- This results in effective token only being valid in this datacenter.
|
||||
type: str
|
||||
required: true
|
||||
local:
|
||||
@@ -152,7 +152,7 @@ options:
|
||||
type: bool
|
||||
expiration_ttl:
|
||||
description:
|
||||
- This is a convenience field and if set will initialize the C(expiration_time). Can be specified in the form of V(60s)
|
||||
- This is a convenience field and if set it initializes the C(expiration_time). Can be specified in the form of V(60s)
|
||||
or V(5m) (that is, 60 seconds or 5 minutes, respectively). Ingored when the token is updated!
|
||||
type: str
|
||||
"""
|
||||
|
||||
@@ -59,16 +59,18 @@ options:
|
||||
install_recommendations:
|
||||
description:
|
||||
- If V(true), installs dependencies declared as recommends per META spec.
|
||||
- If V(false), it ensures the dependencies declared as recommends are not installed, overriding any decision made earlier in E(PERL_CPANM_OPT).
|
||||
- If parameter is not set, C(cpanm) will use its existing defaults.
|
||||
- If V(false), it ensures the dependencies declared as recommends are not installed, overriding any decision made earlier
|
||||
in E(PERL_CPANM_OPT).
|
||||
- If parameter is not set, C(cpanm) uses its existing defaults.
|
||||
- When these dependencies fail to install, cpanm continues the installation, since they are just recommendation.
|
||||
type: bool
|
||||
version_added: 10.3.0
|
||||
install_suggestions:
|
||||
description:
|
||||
- If V(true), installs dependencies declared as suggests per META spec.
|
||||
- If V(false), it ensures the dependencies declared as suggests are not installed, overriding any decision made earlier in E(PERL_CPANM_OPT).
|
||||
- If parameter is not set, C(cpanm) will use its existing defaults.
|
||||
- If V(false), it ensures the dependencies declared as suggests are not installed, overriding any decision made earlier
|
||||
in E(PERL_CPANM_OPT).
|
||||
- If parameter is not set, C(cpanm) uses its existing defaults.
|
||||
- When these dependencies fail to install, cpanm continues the installation, since they are just suggestion.
|
||||
type: bool
|
||||
version_added: 10.3.0
|
||||
@@ -97,14 +99,13 @@ options:
|
||||
notes:
|
||||
- Please note that U(http://search.cpan.org/dist/App-cpanminus/bin/cpanm, cpanm) must be installed on the remote host.
|
||||
- 'This module now comes with a choice of execution O(mode): V(compatibility) or V(new).'
|
||||
- 'O(mode=compatibility): When using V(compatibility) mode, the module will keep backward compatibility. This was the default
|
||||
- 'O(mode=compatibility): When using V(compatibility) mode, the module keeps backward compatibility. This was the default
|
||||
mode before community.general 9.0.0. O(name) must be either a module name or a distribution file. If the perl module given
|
||||
by O(name) is installed (at the exact O(version) when specified), then nothing happens. Otherwise, it will be installed
|
||||
using the C(cpanm) executable. O(name) cannot be an URL, or a git URL. C(cpanm) version specifiers do not work in this
|
||||
mode.'
|
||||
- 'O(mode=new): When using V(new) mode, the module will behave differently. The O(name) parameter may refer to a module
|
||||
name, a distribution file, a HTTP URL or a git repository URL as described in C(cpanminus) documentation. C(cpanm) version
|
||||
specifiers are recognized. This is the default mode from community.general 9.0.0 onwards.'
|
||||
by O(name) is installed (at the exact O(version) when specified), then nothing happens. Otherwise, it is installed using
|
||||
the C(cpanm) executable. O(name) cannot be an URL, or a git URL. C(cpanm) version specifiers do not work in this mode.'
|
||||
- 'O(mode=new): When using V(new) mode, the module behaves differently. The O(name) parameter may refer to a module name,
|
||||
a distribution file, a HTTP URL or a git repository URL as described in C(cpanminus) documentation. C(cpanm) version specifiers
|
||||
are recognized. This is the default mode from community.general 9.0.0 onwards.'
|
||||
seealso:
|
||||
- name: C(cpanm) command manual page
|
||||
description: Manual page for the command.
|
||||
|
||||
@@ -43,12 +43,12 @@ options:
|
||||
type: str
|
||||
insertafter:
|
||||
description:
|
||||
- If specified, the variable will be inserted after the variable specified.
|
||||
- If specified, the variable is inserted after the variable specified.
|
||||
- Used with O(state=present).
|
||||
type: str
|
||||
insertbefore:
|
||||
description:
|
||||
- Used with O(state=present). If specified, the variable will be inserted just before the variable specified.
|
||||
- Used with O(state=present). If specified, the variable is inserted just before the variable specified.
|
||||
type: str
|
||||
state:
|
||||
description:
|
||||
@@ -135,6 +135,9 @@ class CronVar(object):
|
||||
self.cron_file = cron_file
|
||||
else:
|
||||
self.cron_file = os.path.join('/etc/cron.d', cron_file)
|
||||
parent_dir = os.path.dirname(self.cron_file)
|
||||
if parent_dir and not os.path.isdir(parent_dir):
|
||||
module.fail_json(msg="Parent directory '{}' does not exist for cron_file: '{}'".format(parent_dir, cron_file))
|
||||
else:
|
||||
self.cron_file = None
|
||||
|
||||
@@ -393,6 +396,8 @@ def main():
|
||||
old_value = cronvar.find_variable(name)
|
||||
|
||||
if ensure_present:
|
||||
if value == "" and old_value != "":
|
||||
value = '""'
|
||||
if old_value is None:
|
||||
cronvar.add_variable(name, value, insertbefore, insertafter)
|
||||
changed = True
|
||||
|
||||
@@ -24,14 +24,14 @@ options:
|
||||
name:
|
||||
description:
|
||||
- Name of the encrypted block device as it appears in the C(/etc/crypttab) file, or optionally prefixed with V(/dev/mapper/),
|
||||
as it appears in the filesystem. V(/dev/mapper/) will be stripped from O(name).
|
||||
as it appears in the filesystem. V(/dev/mapper/) is stripped from O(name).
|
||||
type: str
|
||||
required: true
|
||||
state:
|
||||
description:
|
||||
- Use V(present) to add a line to C(/etc/crypttab) or update its definition if already present.
|
||||
- Use V(absent) to remove a line with matching O(name).
|
||||
- Use V(opts_present) to add options to those already present; options with different values will be updated.
|
||||
- Use V(opts_present) to add options to those already present; options with different values are updated.
|
||||
- Use V(opts_absent) to remove options from the existing set.
|
||||
type: str
|
||||
required: true
|
||||
@@ -73,6 +73,14 @@ EXAMPLES = r"""
|
||||
opts: discard
|
||||
loop: '{{ ansible_mounts }}'
|
||||
when: "'/dev/mapper/luks-' in item.device"
|
||||
|
||||
- name: Add entry to /etc/crypttab for luks-home with password file
|
||||
community.general.crypttab:
|
||||
name: luks-home
|
||||
backing_device: UUID=123e4567-e89b-12d3-a456-426614174000
|
||||
password: /root/keys/luks-home.key
|
||||
opts: discard,cipher=aes-cbc-essiv:sha256
|
||||
state: present
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
@@ -126,30 +126,31 @@ RETURN = r"""
|
||||
# Returns the downtime JSON dictionary from the API response under the C(downtime) key.
|
||||
# See https://docs.datadoghq.com/api/v1/downtimes/#schedule-a-downtime for more details.
|
||||
downtime:
|
||||
description: The downtime returned by the API.
|
||||
type: dict
|
||||
returned: always
|
||||
sample: {
|
||||
"active": true,
|
||||
"canceled": null,
|
||||
"creator_id": 1445416,
|
||||
"disabled": false,
|
||||
"downtime_type": 2,
|
||||
"end": null,
|
||||
"id": 1055751000,
|
||||
"message": "Downtime for foo:bar",
|
||||
"monitor_id": null,
|
||||
"monitor_tags": [
|
||||
"foo:bar"
|
||||
],
|
||||
"parent_id": null,
|
||||
"recurrence": null,
|
||||
"scope": [
|
||||
"test"
|
||||
],
|
||||
"start": 1607015009,
|
||||
"timezone": "UTC",
|
||||
"updater_id": null
|
||||
description: The downtime returned by the API.
|
||||
type: dict
|
||||
returned: always
|
||||
sample:
|
||||
{
|
||||
"active": true,
|
||||
"canceled": null,
|
||||
"creator_id": 1445416,
|
||||
"disabled": false,
|
||||
"downtime_type": 2,
|
||||
"end": null,
|
||||
"id": 1055751000,
|
||||
"message": "Downtime for foo:bar",
|
||||
"monitor_id": null,
|
||||
"monitor_tags": [
|
||||
"foo:bar"
|
||||
],
|
||||
"parent_id": null,
|
||||
"recurrence": null,
|
||||
"scope": [
|
||||
"test"
|
||||
],
|
||||
"start": 1607015009,
|
||||
"timezone": "UTC",
|
||||
"updater_id": null
|
||||
}
|
||||
"""
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ __metaclass__ = type
|
||||
|
||||
DOCUMENTATION = r"""
|
||||
module: datadog_event
|
||||
short_description: Posts events to Datadog service
|
||||
short_description: Posts events to Datadog service
|
||||
description:
|
||||
- Allows to post events to Datadog (www.datadoghq.com) service.
|
||||
- Uses http://docs.datadoghq.com/api/#events API.
|
||||
@@ -89,8 +89,8 @@ options:
|
||||
- An arbitrary string to use for aggregation.
|
||||
validate_certs:
|
||||
description:
|
||||
- If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using
|
||||
self-signed certificates.
|
||||
- If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed
|
||||
certificates.
|
||||
type: bool
|
||||
default: true
|
||||
"""
|
||||
|
||||
@@ -92,26 +92,26 @@ options:
|
||||
type: dict
|
||||
description:
|
||||
- Dictionary of scopes to silence, with timestamps or None.
|
||||
- Each scope will be muted until the given POSIX timestamp or forever if the value is None.
|
||||
- Each scope is muted until the given POSIX timestamp or forever if the value is V(None).
|
||||
notify_no_data:
|
||||
description:
|
||||
- Whether this monitor will notify when data stops reporting.
|
||||
- Whether this monitor notifies when data stops reporting.
|
||||
type: bool
|
||||
default: false
|
||||
no_data_timeframe:
|
||||
description:
|
||||
- The number of minutes before a monitor will notify when data stops reporting.
|
||||
- The number of minutes before a monitor notifies when data stops reporting.
|
||||
- Must be at least 2x the monitor timeframe for metric alerts or 2 minutes for service checks.
|
||||
- If not specified, it defaults to 2x timeframe for metric, 2 minutes for service.
|
||||
type: str
|
||||
timeout_h:
|
||||
description:
|
||||
- The number of hours of the monitor not reporting data before it will automatically resolve from a triggered state.
|
||||
- The number of hours of the monitor not reporting data before it automatically resolves from a triggered state.
|
||||
type: str
|
||||
renotify_interval:
|
||||
description:
|
||||
- The number of minutes after the last notification before a monitor will re-notify on the current status.
|
||||
- It will only re-notify if it is not resolved.
|
||||
- The number of minutes after the last notification before a monitor re-notifies on the current status.
|
||||
- It only re-notifies if it is not resolved.
|
||||
type: str
|
||||
escalation_message:
|
||||
description:
|
||||
@@ -120,7 +120,7 @@ options:
|
||||
type: str
|
||||
notify_audit:
|
||||
description:
|
||||
- Whether tagged users will be notified on changes to this monitor.
|
||||
- Whether tagged users are notified on changes to this monitor.
|
||||
type: bool
|
||||
default: false
|
||||
thresholds:
|
||||
@@ -138,7 +138,7 @@ options:
|
||||
require_full_window:
|
||||
description:
|
||||
- Whether this monitor needs a full window of data before it gets evaluated.
|
||||
- We highly recommend you set this to False for sparse metrics, otherwise some evaluations will be skipped.
|
||||
- We highly recommend you set this to V(false) for sparse metrics, otherwise some evaluations are skipped.
|
||||
type: bool
|
||||
new_host_delay:
|
||||
description:
|
||||
@@ -153,7 +153,7 @@ options:
|
||||
id:
|
||||
description:
|
||||
- The ID of the alert.
|
||||
- If set, will be used instead of the name to locate the alert.
|
||||
- If set, it is used instead of O(name) to locate the alert.
|
||||
type: str
|
||||
include_tags:
|
||||
description:
|
||||
|
||||
@@ -17,10 +17,10 @@ short_description: Modify and read dconf database
|
||||
description:
|
||||
- This module allows modifications and reading of C(dconf) database. The module is implemented as a wrapper around C(dconf)
|
||||
tool. Please see the dconf(1) man page for more details.
|
||||
- Since C(dconf) requires a running D-Bus session to change values, the module will try to detect an existing session and
|
||||
reuse it, or run the tool using C(dbus-run-session).
|
||||
- Since C(dconf) requires a running D-Bus session to change values, the module tries to detect an existing session and reuse
|
||||
it, or run the tool using C(dbus-run-session).
|
||||
requirements:
|
||||
- Optionally the C(gi.repository) Python library (usually included in the OS on hosts which have C(dconf)); this will become
|
||||
- Optionally the C(gi.repository) Python library (usually included in the OS on hosts which have C(dconf)); this is to become
|
||||
a non-optional requirement in a future major release of community.general.
|
||||
notes:
|
||||
- This module depends on C(psutil) Python library (version 4.0.0 and upwards), C(dconf), C(dbus-send), and C(dbus-run-session)
|
||||
@@ -28,7 +28,7 @@ notes:
|
||||
- This module uses the C(gi.repository) Python library when available for accurate comparison of values in C(dconf) to values
|
||||
specified in Ansible code. C(gi.repository) is likely to be present on most systems which have C(dconf) but may not be
|
||||
present everywhere. When it is missing, a simple string comparison between values is used, and there may be false positives,
|
||||
that is, Ansible may think that a value is being changed when it is not. This fallback will be removed in a future version
|
||||
that is, Ansible may think that a value is being changed when it is not. This fallback is to be removed in a future version
|
||||
of this module, at which point the module will stop working on hosts without C(gi.repository).
|
||||
- Detection of existing, running D-Bus session, required to change settings using C(dconf), is not 100% reliable due to
|
||||
implementation details of D-Bus daemon itself. This might lead to running applications not picking-up changes on-the-fly
|
||||
|
||||
@@ -33,13 +33,12 @@ options:
|
||||
required: true
|
||||
dest:
|
||||
description:
|
||||
- The file name of the destination file where the compressed file will be decompressed.
|
||||
- If the destination file exists, it will be truncated and overwritten.
|
||||
- If not specified, the destination filename will be derived from O(src) by removing the compression format extension.
|
||||
For example, if O(src) is V(/path/to/file.txt.gz) and O(format) is V(gz), O(dest) will be V(/path/to/file.txt). If
|
||||
the O(src) file does not have an extension for the current O(format), the O(dest) filename will be made by appending
|
||||
C(_decompressed) to the O(src) filename. For instance, if O(src) is V(/path/to/file.myextension), the (dest) filename
|
||||
will be V(/path/to/file.myextension_decompressed).
|
||||
- The file name of the destination file where the compressed file is decompressed.
|
||||
- If the destination file exists, it is truncated and overwritten.
|
||||
- If not specified, the destination filename is derived from O(src) by removing the compression format extension. For
|
||||
example, when O(src) is V(/path/to/file.txt.gz) and O(format) is V(gz), O(dest) is V(/path/to/file.txt). If the O(src)
|
||||
file does not have an extension for the current O(format), the O(dest) filename is made by appending C(_decompressed)
|
||||
to the O(src) filename. For instance, when O(src) is V(/path/to/file.myextension), the (dest) filename is V(/path/to/file.myextension_decompressed).
|
||||
type: path
|
||||
format:
|
||||
description:
|
||||
|
||||
@@ -18,8 +18,8 @@ short_description: Manages some of the steps common in deploying projects
|
||||
description:
|
||||
- The Deploy Helper manages some of the steps common in deploying software. It creates a folder structure, manages a symlink
|
||||
for the current release and cleans up old releases.
|
||||
- Running it with the O(state=query) or O(state=present) will return the C(deploy_helper) fact. C(project_path), whatever
|
||||
you set in the O(path) parameter, C(current_path), the path to the symlink that points to the active release, C(releases_path),
|
||||
- Running it with the O(state=query) or O(state=present) returns the C(deploy_helper) fact. C(project_path), whatever you
|
||||
set in the O(path) parameter, C(current_path), the path to the symlink that points to the active release, C(releases_path),
|
||||
the path to the folder to keep releases in, C(shared_path), the path to the folder to keep shared resources in, C(unfinished_filename),
|
||||
the file to check for to recognize unfinished builds, C(previous_release), the release the 'current' symlink is pointing
|
||||
to, C(previous_release_path), the full path to the 'current' symlink target, C(new_release), either the O(release) parameter
|
||||
@@ -41,12 +41,12 @@ options:
|
||||
type: str
|
||||
description:
|
||||
- The state of the project.
|
||||
- V(query) will only gather facts.
|
||||
- V(present) will create the project C(root) folder, and in it the C(releases) and C(shared) folders.
|
||||
- V(finalize) will remove the unfinished_filename file, create a symlink to the newly deployed release and optionally
|
||||
clean old releases.
|
||||
- V(clean) will remove failed & old releases.
|
||||
- V(absent) will remove the project folder (synonymous to the M(ansible.builtin.file) module with O(state=absent)).
|
||||
- V(query) gathers facts.
|
||||
- V(present) creates the project C(root) folder, and in it the C(releases) and C(shared) folders.
|
||||
- V(finalize) removes the unfinished_filename file, creates a symlink to the newly deployed release and optionally cleans
|
||||
old releases.
|
||||
- V(clean) removes failed & old releases.
|
||||
- V(absent) removes the project folder (synonymous to the M(ansible.builtin.file) module with O(state=absent)).
|
||||
choices: [present, finalize, absent, clean, query]
|
||||
default: present
|
||||
|
||||
@@ -59,15 +59,15 @@ options:
|
||||
releases_path:
|
||||
type: str
|
||||
description:
|
||||
- The name of the folder that will hold the releases. This can be relative to O(path) or absolute. Returned in the C(deploy_helper.releases_path)
|
||||
- The name of the folder that holds the releases. This can be relative to O(path) or absolute. Returned in the C(deploy_helper.releases_path)
|
||||
fact.
|
||||
default: releases
|
||||
|
||||
shared_path:
|
||||
type: path
|
||||
description:
|
||||
- The name of the folder that will hold the shared resources. This can be relative to O(path) or absolute. If this is
|
||||
set to an empty string, no shared folder will be created. Returned in the C(deploy_helper.shared_path) fact.
|
||||
- The name of the folder that holds the shared resources. This can be relative to O(path) or absolute. If this is set
|
||||
to an empty string, no shared folder is created. Returned in the C(deploy_helper.shared_path) fact.
|
||||
default: shared
|
||||
|
||||
current_path:
|
||||
@@ -81,8 +81,8 @@ options:
|
||||
type: str
|
||||
description:
|
||||
- The name of the file that indicates a deploy has not finished. All folders in the O(releases_path) that contain this
|
||||
file will be deleted on O(state=finalize) with O(clean=true), or O(state=clean). This file is automatically deleted
|
||||
from the C(new_release_path) during O(state=finalize).
|
||||
file are deleted on O(state=finalize) with O(clean=true), or O(state=clean). This file is automatically deleted from
|
||||
the C(new_release_path) during O(state=finalize).
|
||||
default: DEPLOY_UNFINISHED
|
||||
|
||||
clean:
|
||||
@@ -95,16 +95,16 @@ options:
|
||||
type: int
|
||||
description:
|
||||
- The number of old releases to keep when cleaning. Used in O(state=finalize) and O(state=clean). Any unfinished builds
|
||||
will be deleted first, so only correct releases will count. The current version will not count.
|
||||
are deleted first, so only correct releases count. The current version does not count.
|
||||
default: 5
|
||||
|
||||
notes:
|
||||
- Facts are only returned for O(state=query) and O(state=present). If you use both, you should pass any overridden parameters
|
||||
to both calls, otherwise the second call will overwrite the facts of the first one.
|
||||
to both calls, otherwise the second call overwrites the facts of the first one.
|
||||
- When using O(state=clean), the releases are ordered by I(creation date). You should be able to switch to a new naming
|
||||
strategy without problems.
|
||||
- Because of the default behaviour of generating the C(new_release) fact, this module will not be idempotent unless you
|
||||
pass your own release name with O(release). Due to the nature of deploying software, this should not be much of a problem.
|
||||
- Because of the default behaviour of generating the C(new_release) fact, this module is not idempotent unless you pass
|
||||
your own release name with O(release). Due to the nature of deploying software, this should not be much of a problem.
|
||||
extends_documentation_fragment:
|
||||
- ansible.builtin.files
|
||||
- community.general.attributes
|
||||
|
||||
@@ -56,8 +56,7 @@ options:
|
||||
state:
|
||||
description:
|
||||
- The desired state for the target VLAN.
|
||||
- V(readonly) ensures that the state is only ever read, not modified (the module will fail if the resource does not
|
||||
exist).
|
||||
- V(readonly) ensures that the state is only ever read, not modified (the module fails if the resource does not exist).
|
||||
choices: [present, absent, readonly]
|
||||
default: present
|
||||
type: str
|
||||
@@ -65,7 +64,7 @@ options:
|
||||
description:
|
||||
- Permit expansion of the target VLAN's network if the module parameters specify a larger network than the VLAN currently
|
||||
possesses.
|
||||
- If V(false), the module will fail under these conditions.
|
||||
- If V(false), the module fails under these conditions.
|
||||
- This is intended to prevent accidental expansion of a VLAN's network (since this operation is not reversible).
|
||||
type: bool
|
||||
default: false
|
||||
|
||||
@@ -22,7 +22,7 @@ options:
|
||||
database:
|
||||
description:
|
||||
- Specify databases to run checks against.
|
||||
- If not specified, Django will not run database tests.
|
||||
- If not specified, Django does not run database tests.
|
||||
type: list
|
||||
elements: str
|
||||
deploy:
|
||||
@@ -32,7 +32,7 @@ options:
|
||||
default: false
|
||||
fail_level:
|
||||
description:
|
||||
- Message level that will trigger failure.
|
||||
- Message level that triggers failure.
|
||||
- Default is the Django default value. Check the documentation for the version being used.
|
||||
type: str
|
||||
choices: [CRITICAL, ERROR, WARNING, INFO, DEBUG]
|
||||
@@ -49,7 +49,7 @@ options:
|
||||
elements: str
|
||||
notes:
|
||||
- The outcome of the module is found in the common return values RV(ignore:stdout), RV(ignore:stderr), RV(ignore:rc).
|
||||
- The module will fail if RV(ignore:rc) is not zero.
|
||||
- The module fails if RV(ignore:rc) is not zero.
|
||||
attributes:
|
||||
check_mode:
|
||||
support: full
|
||||
|
||||
@@ -15,7 +15,7 @@ module: django_manage
|
||||
short_description: Manages a Django application
|
||||
description:
|
||||
- Manages a Django application using the C(manage.py) application frontend to C(django-admin). With the O(virtualenv) parameter,
|
||||
all management commands will be executed by the given C(virtualenv) installation.
|
||||
all management commands are executed by the given C(virtualenv) installation.
|
||||
extends_documentation_fragment:
|
||||
- community.general.attributes
|
||||
attributes:
|
||||
@@ -34,8 +34,8 @@ options:
|
||||
- V(loaddata) - Searches for and loads the contents of the named O(fixtures) into the database.
|
||||
- V(migrate) - Synchronizes the database state with models and migrations.
|
||||
- V(test) - Runs tests for all installed apps.
|
||||
- Other commands can be entered, but will fail if they are unknown to Django. Other commands that may prompt for user
|
||||
input should be run with the C(--noinput) flag.
|
||||
- Custom commands can be entered, but they fail unless they are known to Django. Custom commands that may prompt for
|
||||
user input should be run with the C(--noinput) flag.
|
||||
- Support for the values V(cleanup), V(syncdb), V(validate) was removed in community.general 9.0.0. See note about supported
|
||||
versions of Django.
|
||||
type: str
|
||||
@@ -62,7 +62,7 @@ options:
|
||||
virtualenv:
|
||||
description:
|
||||
- An optional path to a C(virtualenv) installation to use while running the manage application.
|
||||
- The virtual environment must exist, otherwise the module will fail.
|
||||
- The virtual environment must exist, otherwise the module fails.
|
||||
type: path
|
||||
aliases: [virtual_env]
|
||||
apps:
|
||||
@@ -78,7 +78,7 @@ options:
|
||||
clear:
|
||||
description:
|
||||
- Clear the existing files before trying to copy or link the original file.
|
||||
- Used only with the V(collectstatic) command. The C(--noinput) argument will be added automatically.
|
||||
- Used only with the V(collectstatic) command. The C(--noinput) argument is added automatically.
|
||||
required: false
|
||||
default: false
|
||||
type: bool
|
||||
@@ -101,18 +101,18 @@ options:
|
||||
required: false
|
||||
skip:
|
||||
description:
|
||||
- Will skip over out-of-order missing migrations, you can only use this parameter with V(migrate) command.
|
||||
- Skips over out-of-order missing migrations, you can only use this parameter with V(migrate) command.
|
||||
required: false
|
||||
type: bool
|
||||
merge:
|
||||
description:
|
||||
- Will run out-of-order or missing migrations as they are not rollback migrations, you can only use this parameter with
|
||||
- Runs out-of-order or missing migrations as they are not rollback migrations, you can only use this parameter with
|
||||
V(migrate) command.
|
||||
required: false
|
||||
type: bool
|
||||
link:
|
||||
description:
|
||||
- Will create links to the files instead of copying them, you can only use this parameter with V(collectstatic) command.
|
||||
- Creates links to the files instead of copying them, you can only use this parameter with V(collectstatic) command.
|
||||
required: false
|
||||
type: bool
|
||||
testrunner:
|
||||
@@ -134,7 +134,7 @@ notes:
|
||||
module allows for free-form commands, not verifying the version of Django being used, it is B(strongly recommended) to
|
||||
use a more recent version of the framework.'
|
||||
- Please notice that Django 4.1 requires Python 3.8 or greater.
|
||||
- This module will not create a virtualenv if the O(virtualenv) parameter is specified and a virtual environment does not
|
||||
- This module does not create a virtualenv if the O(virtualenv) parameter is specified and a virtual environment does not
|
||||
already exist at the given location. This behavior changed in community.general version 9.0.0.
|
||||
- The recommended way to create a virtual environment in Ansible is by using M(ansible.builtin.pip).
|
||||
- This module assumes English error messages for the V(createcachetable) command to detect table existence, unfortunately.
|
||||
|
||||
@@ -39,6 +39,8 @@ options:
|
||||
required: false
|
||||
type: str
|
||||
choices: [enabled, disabled]
|
||||
notes:
|
||||
- Does not work with C(dnf5).
|
||||
seealso:
|
||||
- module: ansible.builtin.dnf
|
||||
- module: ansible.builtin.yum_repository
|
||||
@@ -118,7 +120,7 @@ changed_repos:
|
||||
returned: success
|
||||
type: list
|
||||
elements: str
|
||||
sample: ['crb']
|
||||
sample: ["crb"]
|
||||
"""
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
@@ -22,9 +22,9 @@ attributes:
|
||||
support: partial
|
||||
details:
|
||||
- The logics of the C(versionlock) plugin for corner cases could be confusing, so please take in account that this module
|
||||
will do its best to give a C(check_mode) prediction on what is going to happen. In case of doubt, check the documentation
|
||||
does its best to give a C(check_mode) prediction on what is going to happen. In case of doubt, check the documentation
|
||||
of the plugin.
|
||||
- Sometimes the module could predict changes in C(check_mode) that will not be such because C(versionlock) concludes
|
||||
- Sometimes the module could predict changes in C(check_mode) that are not fulfilled because C(versionlock) concludes
|
||||
that there is already a entry in C(locklist) that already matches.
|
||||
diff_mode:
|
||||
support: none
|
||||
@@ -47,12 +47,12 @@ options:
|
||||
state:
|
||||
description:
|
||||
- Whether to add (V(present) or V(excluded)) to or remove (V(absent) or V(clean)) from the C(locklist).
|
||||
- V(present) will add a package name spec to the C(locklist). If there is a installed package that matches, then only
|
||||
that version will be added. Otherwise, all available package versions will be added.
|
||||
- V(excluded) will add a package name spec as excluded to the C(locklist). It means that packages represented by the
|
||||
package name spec will be excluded from transaction operations. All available package versions will be added.
|
||||
- V(absent) will delete entries in the C(locklist) that match the package name spec.
|
||||
- V(clean) will delete all entries in the C(locklist). This option is mutually exclusive with O(name).
|
||||
- V(present) adds a package name spec to the C(locklist). If there is a installed package that matches, then only that
|
||||
version is added. Otherwise, all available package versions are added.
|
||||
- V(excluded) adds a package name spec as excluded to the C(locklist). It means that packages represented by the package
|
||||
name spec are excluded from transaction operations. All available package versions are added.
|
||||
- V(absent) deletes entries in the C(locklist) that match the package name spec.
|
||||
- V(clean) deletes all entries in the C(locklist). This option is mutually exclusive with O(name).
|
||||
choices: ['absent', 'clean', 'excluded', 'present']
|
||||
type: str
|
||||
default: present
|
||||
@@ -60,6 +60,7 @@ notes:
|
||||
- In an ideal world, the C(versionlock) plugin would have a dry-run option to know for sure what is going to happen. So
|
||||
far we have to work with a best guess as close as possible to the behaviour inferred from its code.
|
||||
- For most of cases where you want to lock and unlock specific versions of a package, this works fairly well.
|
||||
- Does not work with C(dnf5).
|
||||
requirements:
|
||||
- dnf
|
||||
- dnf-plugin-versionlock
|
||||
@@ -82,12 +83,12 @@ EXAMPLES = r"""
|
||||
|
||||
- name: Remove lock from nginx to be updated again
|
||||
community.general.dnf_versionlock:
|
||||
package: nginx
|
||||
name: nginx
|
||||
state: absent
|
||||
|
||||
- name: Exclude bind 32:9.11 from installs or updates
|
||||
community.general.dnf_versionlock:
|
||||
package: bind-32:9.11*
|
||||
name: bind-32:9.11*
|
||||
state: excluded
|
||||
|
||||
- name: Keep bash package in major version 4
|
||||
@@ -107,25 +108,25 @@ locklist_pre:
|
||||
returned: success
|
||||
type: list
|
||||
elements: str
|
||||
sample: ['bash-0:4.4.20-1.el8_4.*', '!bind-32:9.11.26-4.el8_4.*']
|
||||
sample: ["bash-0:4.4.20-1.el8_4.*", "!bind-32:9.11.26-4.el8_4.*"]
|
||||
locklist_post:
|
||||
description: Locklist after module execution.
|
||||
returned: success and (not check mode or state is clean)
|
||||
type: list
|
||||
elements: str
|
||||
sample: ['bash-0:4.4.20-1.el8_4.*']
|
||||
sample: ["bash-0:4.4.20-1.el8_4.*"]
|
||||
specs_toadd:
|
||||
description: Package name specs meant to be added by versionlock.
|
||||
returned: success
|
||||
type: list
|
||||
elements: str
|
||||
sample: ['bash']
|
||||
sample: ["bash"]
|
||||
specs_todelete:
|
||||
description: Package name specs meant to be deleted by versionlock.
|
||||
returned: success
|
||||
type: list
|
||||
elements: str
|
||||
sample: ['bind']
|
||||
sample: ["bind"]
|
||||
"""
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
@@ -25,8 +25,8 @@ attributes:
|
||||
options:
|
||||
account_email:
|
||||
description:
|
||||
- Account email. If omitted, the environment variables E(DNSIMPLE_EMAIL) and E(DNSIMPLE_API_TOKEN) will be looked for.
|
||||
- 'If those variables are not found, a C(.dnsimple) file will be looked for, see: U(https://github.com/mikemaccana/dnsimple-python#getting-started).'
|
||||
- Account email. If omitted, the environment variables E(DNSIMPLE_EMAIL) and E(DNSIMPLE_API_TOKEN) are looked for.
|
||||
- 'If those variables are not found, a C(.dnsimple) file is looked for, see: U(https://github.com/mikemaccana/dnsimple-python#getting-started).'
|
||||
- C(.dnsimple) config files are only supported in dnsimple-python<2.0.0.
|
||||
type: str
|
||||
account_api_token:
|
||||
@@ -36,12 +36,12 @@ options:
|
||||
domain:
|
||||
description:
|
||||
- Domain to work with. Can be the domain name (for example V(mydomain.com)) or the numeric ID of the domain in DNSimple.
|
||||
- If omitted, a list of domains will be returned.
|
||||
- If domain is present but the domain does not exist, it will be created.
|
||||
- If omitted, a list of domains is returned.
|
||||
- If domain is present but the domain does not exist, it is created.
|
||||
type: str
|
||||
record:
|
||||
description:
|
||||
- Record to add, if blank a record for the domain will be created, supports the wildcard (*).
|
||||
- Record to add, if blank a record for the domain is created, supports the wildcard (*).
|
||||
type: str
|
||||
record_ids:
|
||||
description:
|
||||
@@ -51,8 +51,23 @@ options:
|
||||
type:
|
||||
description:
|
||||
- The type of DNS record to create.
|
||||
choices: ['A', 'ALIAS', 'CNAME', 'MX', 'SPF', 'URL', 'TXT', 'NS', 'SRV', 'NAPTR', 'PTR', 'AAAA', 'SSHFP', 'HINFO', 'POOL',
|
||||
'CAA']
|
||||
choices:
|
||||
- A
|
||||
- ALIAS
|
||||
- CNAME
|
||||
- MX
|
||||
- SPF
|
||||
- URL
|
||||
- TXT
|
||||
- NS
|
||||
- SRV
|
||||
- NAPTR
|
||||
- PTR
|
||||
- AAAA
|
||||
- SSHFP
|
||||
- HINFO
|
||||
- POOL
|
||||
- CAA
|
||||
type: str
|
||||
ttl:
|
||||
description:
|
||||
@@ -151,7 +166,7 @@ EXAMPLES = r"""
|
||||
delegate_to: localhost
|
||||
"""
|
||||
|
||||
RETURN = r"""# """
|
||||
RETURN = r"""#"""
|
||||
|
||||
import traceback
|
||||
import re
|
||||
|
||||
@@ -26,8 +26,8 @@ options:
|
||||
name:
|
||||
description:
|
||||
- The domain name to retrieve info from.
|
||||
- Will return all associated records for this domain if specified.
|
||||
- If not specified, will return all domains associated with the account ID.
|
||||
- Returns all associated records for this domain if specified.
|
||||
- If not specified, returns all domains associated with the account ID.
|
||||
type: str
|
||||
|
||||
account_id:
|
||||
@@ -43,7 +43,7 @@ options:
|
||||
record:
|
||||
description:
|
||||
- The record to find.
|
||||
- If specified, only this record will be returned instead of all records.
|
||||
- If specified, only this record is returned instead of all records.
|
||||
required: false
|
||||
type: str
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ options:
|
||||
|
||||
record_name:
|
||||
description:
|
||||
- Record name to get/create/delete/update. If record_name is not specified; all records for the domain will be returned
|
||||
- Record name to get/create/delete/update. If O(record_name) is not specified; all records for the domain are returned
|
||||
in "result" regardless of the state argument.
|
||||
type: str
|
||||
|
||||
@@ -64,8 +64,8 @@ options:
|
||||
description:
|
||||
- 'Record value. HTTPRED: <redirection URL>, MX: <priority> <target name>, NS: <name server>, PTR: <target name>, SRV:
|
||||
<priority> <weight> <port> <target name>, TXT: <text value>".'
|
||||
- If record_value is not specified; no changes will be made and the record will be returned in 'result' (in other words,
|
||||
this module can be used to fetch a record's current ID, type, and ttl).
|
||||
- If O(record_value) is not specified; no changes are made and the record is returned in RV(ignore:result) (in other
|
||||
words, this module can be used to fetch a record's current ID, type, and TTL).
|
||||
type: str
|
||||
|
||||
record_ttl:
|
||||
@@ -83,8 +83,8 @@ options:
|
||||
|
||||
validate_certs:
|
||||
description:
|
||||
- If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using
|
||||
self-signed certificates.
|
||||
- If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed
|
||||
certificates.
|
||||
type: bool
|
||||
default: true
|
||||
|
||||
@@ -128,7 +128,7 @@ options:
|
||||
|
||||
contactList:
|
||||
description:
|
||||
- Name or ID of the contact list that the monitor will notify.
|
||||
- Name or ID of the contact list that the monitor notifies.
|
||||
- The default V('') means the Account Owner.
|
||||
type: str
|
||||
|
||||
@@ -195,7 +195,7 @@ notes:
|
||||
- Only A records can have a O(monitor) or O(failover).
|
||||
- To add failover, the O(failover), O(autoFailover), O(port), O(protocol), O(ip1), and O(ip2) options are required.
|
||||
- To add monitor, the O(monitor), O(port), O(protocol), O(maxEmails), O(systemDescription), and O(ip1) options are required.
|
||||
- The monitor and the failover will share O(port), O(protocol), and O(ip1) options.
|
||||
- The options O(monitor) and O(failover) share O(port), O(protocol), and O(ip1) options.
|
||||
requirements: [hashlib, hmac]
|
||||
author: "Brice Burgess (@briceburg)"
|
||||
"""
|
||||
|
||||
@@ -17,8 +17,8 @@ author:
|
||||
- quidame (@quidame)
|
||||
description:
|
||||
- A diversion is for C(dpkg) the knowledge that only a given package (or the local administrator) is allowed to install
|
||||
a file at a given location. Other packages shipping their own version of this file will be forced to O(divert) it, that
|
||||
is to install it at another location. It allows one to keep changes in a file provided by a debian package by preventing
|
||||
a file at a given location. Other packages shipping their own version of this file are forced to O(divert) it, that is
|
||||
to install it at another location. It allows one to keep changes in a file provided by a debian package by preventing
|
||||
it being overwritten on package upgrade.
|
||||
- This module manages diversions of debian packages files using the C(dpkg-divert) commandline tool. It can either create
|
||||
or remove a diversion for a given file, but also update an existing diversion to modify its O(holder) and/or its O(divert)
|
||||
@@ -54,7 +54,7 @@ options:
|
||||
type: str
|
||||
divert:
|
||||
description:
|
||||
- The location where the versions of file will be diverted.
|
||||
- The location where the versions of file are diverted.
|
||||
- Default is to add suffix C(.distrib) to the file path.
|
||||
- This parameter is ignored when O(state=absent).
|
||||
type: path
|
||||
@@ -70,7 +70,7 @@ options:
|
||||
force:
|
||||
description:
|
||||
- When O(rename=true) and O(force=true), renaming is performed even if the target of the renaming exists, in other words
|
||||
the existing contents of the file at this location will be lost.
|
||||
the existing contents of the file at this location are lost.
|
||||
- This parameter is ignored when O(rename=false).
|
||||
type: bool
|
||||
default: false
|
||||
@@ -132,7 +132,13 @@ diversion:
|
||||
state:
|
||||
description: The state of the diversion.
|
||||
type: str
|
||||
sample: {"divert": "/etc/foobarrc.distrib", "holder": "LOCAL", "path": "/etc/foobarrc", "state": "present"}
|
||||
sample:
|
||||
{
|
||||
"divert": "/etc/foobarrc.distrib",
|
||||
"holder": "LOCAL",
|
||||
"path": "/etc/foobarrc",
|
||||
"state": "present"
|
||||
}
|
||||
"""
|
||||
|
||||
|
||||
|
||||
@@ -33,8 +33,8 @@ options:
|
||||
- An optional O(virtualenv) directory path to install into. If the O(virtualenv) does not exist, it is created automatically.
|
||||
virtualenv_site_packages:
|
||||
description:
|
||||
- Whether the virtual environment will inherit packages from the global site-packages directory. Note that if this setting
|
||||
is changed on an already existing virtual environment it will not have any effect, the environment must be deleted
|
||||
- Whether the virtual environment inherits packages from the global site-packages directory. Note that this setting
|
||||
has no effect on an already existing virtual environment, so if you want to change it, the environment must be deleted
|
||||
and newly created.
|
||||
type: bool
|
||||
default: false
|
||||
@@ -74,6 +74,12 @@ EXAMPLES = r"""
|
||||
community.general.easy_install:
|
||||
name: bottle
|
||||
virtualenv: /webapps/myapp/venv
|
||||
|
||||
- name: Install a python package using pyvenv as the virtualenv tool
|
||||
community.general.easy_install:
|
||||
name: package_name
|
||||
virtualenv: /opt/myenv
|
||||
virtualenv_command: pyvenv
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
@@ -66,7 +66,7 @@ options:
|
||||
type: bool
|
||||
plugin_bin:
|
||||
description:
|
||||
- Location of the plugin binary. If this file is not found, the default plugin binaries will be used.
|
||||
- Location of the plugin binary. If this file is not found, the default plugin binaries are used.
|
||||
type: path
|
||||
plugin_dir:
|
||||
description:
|
||||
@@ -83,7 +83,7 @@ options:
|
||||
type: str
|
||||
version:
|
||||
description:
|
||||
- Version of the plugin to be installed. If plugin exists with previous version, it will NOT be updated.
|
||||
- Version of the plugin to be installed. If plugin exists with previous version, it is NOT updated.
|
||||
type: str
|
||||
"""
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ EXAMPLES = r"""
|
||||
|
||||
RETURN = r"""
|
||||
hluid:
|
||||
description: LUNID that hosts attached to the storage group will see.
|
||||
description: LUNID visible to hosts attached to the storage group.
|
||||
type: int
|
||||
returned: success
|
||||
"""
|
||||
|
||||
@@ -64,10 +64,10 @@ options:
|
||||
description:
|
||||
- If V(true), if the block device and filesystem size differ, grow the filesystem into the space.
|
||||
- Supported for C(bcachefs), C(btrfs), C(ext2), C(ext3), C(ext4), C(ext4dev), C(f2fs), C(lvm), C(xfs), C(ufs) and C(vfat)
|
||||
filesystems. Attempts to resize other filesystem types will fail.
|
||||
- XFS Will only grow if mounted. Currently, the module is based on commands from C(util-linux) package to perform operations,
|
||||
filesystems. Attempts to resize other filesystem types fail.
|
||||
- XFS only grows if mounted. Currently, the module is based on commands from C(util-linux) package to perform operations,
|
||||
so resizing of XFS is not supported on FreeBSD systems.
|
||||
- VFAT will likely fail if C(fatresize < 1.04).
|
||||
- VFAT is likely to fail if C(fatresize < 1.04).
|
||||
- Mutually exclusive with O(uuid).
|
||||
type: bool
|
||||
default: false
|
||||
@@ -82,7 +82,7 @@ options:
|
||||
- See xfs_admin(8) (C(xfs)), tune2fs(8) (C(ext2), C(ext3), C(ext4), C(ext4dev)) for possible values.
|
||||
- For O(fstype=lvm) the value is ignored, it resets the PV UUID if set.
|
||||
- Supported for O(fstype) being one of C(bcachefs), C(ext2), C(ext3), C(ext4), C(ext4dev), C(lvm), or C(xfs).
|
||||
- This is B(not idempotent). Specifying this option will always result in a change.
|
||||
- This is B(not idempotent). Specifying this option always results in a change.
|
||||
- Mutually exclusive with O(resizefs).
|
||||
type: str
|
||||
version_added: 7.1.0
|
||||
|
||||
@@ -27,7 +27,7 @@ attributes:
|
||||
check_mode:
|
||||
support: partial
|
||||
details:
|
||||
- If O(state=latest), the module will always return C(changed=true).
|
||||
- If O(state=latest), the module always returns RV(ignore:changed=true).
|
||||
diff_mode:
|
||||
support: none
|
||||
options:
|
||||
@@ -53,7 +53,7 @@ options:
|
||||
- When supplying a reverse DNS name, you can use the O(remote) option to specify on what remote to look for the flatpak.
|
||||
An example for a reverse DNS name is C(org.gnome.gedit).
|
||||
- When used with O(state=absent) or O(state=latest), it is recommended to specify the name in the reverse DNS format.
|
||||
- When supplying a URL with O(state=absent) or O(state=latest), the module will try to match the installed flatpak based
|
||||
- When supplying a URL with O(state=absent) or O(state=latest), the module tries to match the installed flatpak based
|
||||
on the name of the flatpakref to remove or update it. However, there is no guarantee that the names of the flatpakref
|
||||
file and the reverse DNS name of the installed flatpak do match.
|
||||
type: list
|
||||
@@ -107,6 +107,12 @@ EXAMPLES = r"""
|
||||
state: present
|
||||
remote: gnome
|
||||
|
||||
- name: Install GIMP using custom flatpak binary path
|
||||
community.general.flatpak:
|
||||
name: org.gimp.GIMP
|
||||
state: present
|
||||
executable: /usr/local/bin/flatpak-dev
|
||||
|
||||
- name: Install multiple packages
|
||||
community.general.flatpak:
|
||||
name:
|
||||
@@ -165,26 +171,6 @@ command:
|
||||
returned: When a flatpak command has been executed
|
||||
type: str
|
||||
sample: "/usr/bin/flatpak install --user --nontinteractive flathub org.gnome.Calculator"
|
||||
msg:
|
||||
description: Module error message.
|
||||
returned: failure
|
||||
type: str
|
||||
sample: "Executable '/usr/local/bin/flatpak' was not found on the system."
|
||||
rc:
|
||||
description: Return code from flatpak binary.
|
||||
returned: When a flatpak command has been executed
|
||||
type: int
|
||||
sample: 0
|
||||
stderr:
|
||||
description: Error output from flatpak binary.
|
||||
returned: When a flatpak command has been executed
|
||||
type: str
|
||||
sample: "error: Error searching remote flathub: Can't find ref org.gnome.KDE"
|
||||
stdout:
|
||||
description: Output from flatpak binary.
|
||||
returned: When a flatpak command has been executed
|
||||
type: str
|
||||
sample: "org.gnome.Calendar/x86_64/stable\tcurrent\norg.gnome.gitg/x86_64/stable\tcurrent\n"
|
||||
"""
|
||||
|
||||
from ansible.module_utils.six.moves.urllib.parse import urlparse
|
||||
|
||||
@@ -17,7 +17,7 @@ description:
|
||||
- Allows users to add or remove flatpak remotes.
|
||||
- The flatpak remotes concept is comparable to what is called repositories in other packaging formats.
|
||||
- Currently, remote addition is only supported using C(flatpakrepo) file URLs.
|
||||
- Existing remotes will not be updated.
|
||||
- Existing remotes are not updated.
|
||||
- See the M(community.general.flatpak) module for managing flatpaks.
|
||||
author:
|
||||
- John Kwiatkoski (@JayKayy)
|
||||
@@ -56,8 +56,8 @@ options:
|
||||
name:
|
||||
description:
|
||||
- The desired name for the flatpak remote to be registered under on the managed host.
|
||||
- When used with O(state=present), the remote will be added to the managed host under the specified O(name).
|
||||
- When used with O(state=absent) the remote with that name will be removed.
|
||||
- When used with O(state=present), the remote is added to the managed host under the specified O(name).
|
||||
- When used with O(state=absent) the remote with that name is removed.
|
||||
type: str
|
||||
required: true
|
||||
state:
|
||||
@@ -112,26 +112,6 @@ command:
|
||||
returned: When a flatpak command has been executed
|
||||
type: str
|
||||
sample: "/usr/bin/flatpak remote-add --system flatpak-test https://dl.flathub.org/repo/flathub.flatpakrepo"
|
||||
msg:
|
||||
description: Module error message.
|
||||
returned: failure
|
||||
type: str
|
||||
sample: "Executable '/usr/local/bin/flatpak' was not found on the system."
|
||||
rc:
|
||||
description: Return code from flatpak binary.
|
||||
returned: When a flatpak command has been executed
|
||||
type: int
|
||||
sample: 0
|
||||
stderr:
|
||||
description: Error output from flatpak binary.
|
||||
returned: When a flatpak command has been executed
|
||||
type: str
|
||||
sample: "error: GPG verification enabled, but no summary found (check that the configured URL in remote config is correct)\n"
|
||||
stdout:
|
||||
description: Output from flatpak binary.
|
||||
returned: When a flatpak command has been executed
|
||||
type: str
|
||||
sample: "flathub\tFlathub\thttps://dl.flathub.org/repo/\t1\t\n"
|
||||
"""
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user