mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-05-11 20:12:18 +00:00
Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
96464f1ea8 | ||
|
|
fe4858d556 | ||
|
|
07e8a76f2d | ||
|
|
0488b79f0f | ||
|
|
4fa6465f3e | ||
|
|
e1b341d9be | ||
|
|
8feb564b4d | ||
|
|
42832bc9d2 | ||
|
|
19b2efd0dd | ||
|
|
1c3bf95b74 | ||
|
|
018c92429b | ||
|
|
9267e03538 | ||
|
|
eb3ab99709 | ||
|
|
a1ac6b99dc | ||
|
|
4ad57fdb6c | ||
|
|
ee9939c54f | ||
|
|
c1549db1bb | ||
|
|
c6bd8ab453 | ||
|
|
6299f242a2 | ||
|
|
cd55f596ab | ||
|
|
00bbf16cff | ||
|
|
31fd4058f1 | ||
|
|
5c748bd4e9 | ||
|
|
1c295560ba | ||
|
|
615d3d8bd0 | ||
|
|
4854d7fbd9 | ||
|
|
baa59f388c | ||
|
|
e071ae73b6 | ||
|
|
00cb40094a | ||
|
|
ef829b8a56 | ||
|
|
d86a652c36 | ||
|
|
a4242f0131 | ||
|
|
d75e9a0fa3 | ||
|
|
5044cfc030 | ||
|
|
ddd7e79a12 | ||
|
|
edc979ff11 | ||
|
|
37c1f911cb | ||
|
|
80a5bf623a | ||
|
|
8f653558f6 | ||
|
|
1c0734dd4e | ||
|
|
e6d138dbf0 | ||
|
|
eed4ebb0af | ||
|
|
d3031fcbd3 |
7
.ansible-lint-ignore
Normal file
7
.ansible-lint-ignore
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# https://docs.ansible.com/ansible-lint/docs/rules/
|
||||||
|
# no-changed-when is not requried for examples
|
||||||
|
plugins/connection/kubectl.py no-changed-when
|
||||||
|
# false positive result
|
||||||
|
plugins/connection/kubectl.py var-naming[no-reserved]
|
||||||
|
# stable-3 branch support ansible-core>=2.14.0
|
||||||
|
meta/runtime.yml meta-runtime[unsupported-version]
|
||||||
@@ -2,5 +2,7 @@
|
|||||||
profile: production
|
profile: production
|
||||||
|
|
||||||
exclude_paths:
|
exclude_paths:
|
||||||
|
- .ansible/
|
||||||
- tests/integration
|
- tests/integration
|
||||||
|
- tests/unit
|
||||||
- tests/sanity
|
- tests/sanity
|
||||||
60
.github/stale.yml
vendored
60
.github/stale.yml
vendored
@@ -1,60 +0,0 @@
|
|||||||
---
|
|
||||||
# Configuration for probot-stale - https://github.com/probot/stale
|
|
||||||
|
|
||||||
# Number of days of inactivity before an Issue or Pull Request becomes stale
|
|
||||||
daysUntilStale: 90
|
|
||||||
|
|
||||||
# Number of days of inactivity before an Issue or Pull Request with the stale
|
|
||||||
# label is closed. Set to false to disable. If disabled, issues still need to be
|
|
||||||
# closed manually, but will remain marked as stale.
|
|
||||||
daysUntilClose: 30
|
|
||||||
|
|
||||||
# Only issues or pull requests with all of these labels are check if stale.
|
|
||||||
# Defaults to `[]` (disabled)
|
|
||||||
onlyLabels: []
|
|
||||||
|
|
||||||
# Issues or Pull Requests with these labels will never be considered stale. Set
|
|
||||||
# to `[]` to disable
|
|
||||||
exemptLabels:
|
|
||||||
- security
|
|
||||||
- planned
|
|
||||||
- priority/critical
|
|
||||||
- lifecycle/frozen
|
|
||||||
- verified
|
|
||||||
|
|
||||||
# Set to true to ignore issues in a project (defaults to false)
|
|
||||||
exemptProjects: false
|
|
||||||
|
|
||||||
# Set to true to ignore issues in a milestone (defaults to false)
|
|
||||||
exemptMilestones: true
|
|
||||||
|
|
||||||
# Set to true to ignore issues with an assignee (defaults to false)
|
|
||||||
exemptAssignees: false
|
|
||||||
|
|
||||||
# Label to use when marking as stale
|
|
||||||
staleLabel: lifecycle/stale
|
|
||||||
|
|
||||||
# Limit the number of actions per hour, from 1-30. Default is 30
|
|
||||||
limitPerRun: 30
|
|
||||||
|
|
||||||
pulls:
|
|
||||||
markComment: |-
|
|
||||||
PRs go stale after 90 days of inactivity.
|
|
||||||
If there is no further activity, the PR will be closed in another 30 days.
|
|
||||||
|
|
||||||
unmarkComment: >-
|
|
||||||
This pull request is no longer stale.
|
|
||||||
|
|
||||||
closeComment: >-
|
|
||||||
This pull request has been closed due to inactivity.
|
|
||||||
|
|
||||||
issues:
|
|
||||||
markComment: |-
|
|
||||||
Issues go stale after 90 days of inactivity.
|
|
||||||
If there is no further activity, the issue will be closed in another 30 days.
|
|
||||||
|
|
||||||
unmarkComment: >-
|
|
||||||
This issue is no longer stale.
|
|
||||||
|
|
||||||
closeComment: >-
|
|
||||||
This issue has been closed due to inactivity.
|
|
||||||
18
.github/workflows/integration-tests.yaml
vendored
18
.github/workflows/integration-tests.yaml
vendored
@@ -50,6 +50,7 @@ jobs:
|
|||||||
source: "./source"
|
source: "./source"
|
||||||
cloud_common: "./cloudcommon"
|
cloud_common: "./cloudcommon"
|
||||||
ansible_posix: "./ansible_posix"
|
ansible_posix: "./ansible_posix"
|
||||||
|
community_general: "./community_general"
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@@ -61,7 +62,7 @@ jobs:
|
|||||||
- true
|
- true
|
||||||
- false
|
- false
|
||||||
workflow-id: ${{ fromJson(needs.splitter.outputs.test_jobs) }}
|
workflow-id: ${{ fromJson(needs.splitter.outputs.test_jobs) }}
|
||||||
name: "integration-py${{ matrix.python-version }}-${{ matrix.ansible-version }}-${{ matrix.workflow-id }}"
|
name: "integration-py${{ matrix.python-version }}-${{ matrix.ansible-version }}-${{ matrix.workflow-id }}-enable_turbo=${{ matrix.enable-turbo-mode }}"
|
||||||
steps:
|
steps:
|
||||||
- name: Read target
|
- name: Read target
|
||||||
id: read-targets
|
id: read-targets
|
||||||
@@ -118,6 +119,13 @@ jobs:
|
|||||||
path: ${{ env.ansible_posix }}
|
path: ${{ env.ansible_posix }}
|
||||||
ref: main
|
ref: main
|
||||||
|
|
||||||
|
- name: checkout ansible-collections/community.general
|
||||||
|
uses: ansible-network/github_actions/.github/actions/checkout_dependency@main
|
||||||
|
with:
|
||||||
|
repository: ansible-collections/community.general
|
||||||
|
path: ${{ env.community_general }}
|
||||||
|
ref: main
|
||||||
|
|
||||||
- name: install cloud.common collection
|
- name: install cloud.common collection
|
||||||
uses: ansible-network/github_actions/.github/actions/build_install_collection@main
|
uses: ansible-network/github_actions/.github/actions/build_install_collection@main
|
||||||
with:
|
with:
|
||||||
@@ -130,8 +138,16 @@ jobs:
|
|||||||
install_python_dependencies: true
|
install_python_dependencies: true
|
||||||
source_path: ${{ env.ansible_posix }}
|
source_path: ${{ env.ansible_posix }}
|
||||||
|
|
||||||
|
- name: install community.general collection
|
||||||
|
uses: ansible-network/github_actions/.github/actions/build_install_collection@main
|
||||||
|
with:
|
||||||
|
install_python_dependencies: false
|
||||||
|
source_path: ${{ env.community_general }}
|
||||||
|
|
||||||
- name: create kubernetes cluster
|
- name: create kubernetes cluster
|
||||||
uses: helm/kind-action@v1.8.0
|
uses: helm/kind-action@v1.8.0
|
||||||
|
with:
|
||||||
|
node_image: "kindest/node:v1.29.2"
|
||||||
|
|
||||||
- name: Run integration tests
|
- name: Run integration tests
|
||||||
uses: ansible-network/github_actions/.github/actions/ansible_test_integration@main
|
uses: ansible-network/github_actions/.github/actions/ansible_test_integration@main
|
||||||
|
|||||||
5
.github/workflows/linters.yaml
vendored
5
.github/workflows/linters.yaml
vendored
@@ -19,6 +19,5 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
- name: run-ansible-lint
|
||||||
- name: Run ansible-lint
|
uses: ansible/ansible-lint@v25.1.2
|
||||||
uses: ansible/ansible-lint@v6.21.0
|
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -13,6 +13,7 @@ changelogs/.plugin-cache.yaml
|
|||||||
tests/output
|
tests/output
|
||||||
tests/integration/cloud-config-*
|
tests/integration/cloud-config-*
|
||||||
.cache
|
.cache
|
||||||
|
.ansible
|
||||||
|
|
||||||
# Helm charts
|
# Helm charts
|
||||||
tests/integration/*-chart-*.tgz
|
tests/integration/*-chart-*.tgz
|
||||||
|
|||||||
@@ -5,16 +5,24 @@ rules:
|
|||||||
braces:
|
braces:
|
||||||
max-spaces-inside: 1
|
max-spaces-inside: 1
|
||||||
level: error
|
level: error
|
||||||
|
|
||||||
brackets:
|
brackets:
|
||||||
max-spaces-inside: 1
|
max-spaces-inside: 1
|
||||||
level: error
|
level: error
|
||||||
|
comments:
|
||||||
|
min-spaces-from-content: 1
|
||||||
|
comments-indentation: false
|
||||||
document-start: disable
|
document-start: disable
|
||||||
line-length: disable
|
line-length: disable
|
||||||
truthy: disable
|
truthy: disable
|
||||||
indentation:
|
indentation:
|
||||||
spaces: 2
|
spaces: 2
|
||||||
indent-sequences: consistent
|
indent-sequences: consistent
|
||||||
|
octal-values:
|
||||||
|
forbid-implicit-octal: true
|
||||||
|
forbid-explicit-octal: true
|
||||||
ignore: |
|
ignore: |
|
||||||
.cache
|
.cache
|
||||||
.tox
|
.tox
|
||||||
|
.ansible
|
||||||
tests/output
|
tests/output
|
||||||
|
|||||||
@@ -4,6 +4,84 @@ Kubernetes Collection Release Notes
|
|||||||
|
|
||||||
.. contents:: Topics
|
.. contents:: Topics
|
||||||
|
|
||||||
|
v3.3.1
|
||||||
|
======
|
||||||
|
|
||||||
|
Release Summary
|
||||||
|
---------------
|
||||||
|
|
||||||
|
This release fixes the CI issues with the ``linters`` workflow.
|
||||||
|
|
||||||
|
v3.3.0
|
||||||
|
======
|
||||||
|
|
||||||
|
Minor Changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- inventory/k8s.py - Defer removal of k8s inventory plugin to version 5.0 (https://github.com/ansible-collections/kubernetes.core/pull/723).
|
||||||
|
- inventory/k8s.py - Defer removal of k8s inventory plugin to version 6.0.0 (https://github.com/ansible-collections/kubernetes.core/pull/734).
|
||||||
|
- k8s_drain - Improve error message for pod disruption budget when draining a node (https://github.com/ansible-collections/kubernetes.core/issues/797).
|
||||||
|
|
||||||
|
Bugfixes
|
||||||
|
--------
|
||||||
|
|
||||||
|
- helm - Helm version checks did not support RC versions. They now accept any version tags. (https://github.com/ansible-collections/kubernetes.core/pull/745).
|
||||||
|
- helm_pull - Apply no_log=True to pass_credentials to silence false positive warning.. (https://github.com/ansible-collections/kubernetes.core/pull/796).
|
||||||
|
- k8s_drain - Fix k8s_drain does not wait for single pod (https://github.com/ansible-collections/kubernetes.core/issues/769).
|
||||||
|
- k8s_drain - Fix k8s_drain runs into a timeout when evicting a pod which is part of a stateful set (https://github.com/ansible-collections/kubernetes.core/issues/792).
|
||||||
|
- kubeconfig option should not appear in module invocation log (https://github.com/ansible-collections/kubernetes.core/issues/782).
|
||||||
|
- kustomize - kustomize plugin fails with deprecation warnings (https://github.com/ansible-collections/kubernetes.core/issues/639).
|
||||||
|
- waiter - Fix waiting for daemonset when desired number of pods is 0. (https://github.com/ansible-collections/kubernetes.core/pull/756).
|
||||||
|
|
||||||
|
v3.2.0
|
||||||
|
======
|
||||||
|
|
||||||
|
Release Summary
|
||||||
|
---------------
|
||||||
|
|
||||||
|
This release comes with documentation updates.
|
||||||
|
|
||||||
|
Minor Changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- connection/kubectl.py - Added an example of using the kubectl connection plugin to the documentation (https://github.com/ansible-collections/kubernetes.core/pull/741).
|
||||||
|
- inventory/k8s.py - Defer removal of k8s inventory plugin to version 6.0.0 (https://github.com/ansible-collections/kubernetes.core/pull/734).
|
||||||
|
|
||||||
|
v3.1.0
|
||||||
|
======
|
||||||
|
|
||||||
|
Release Summary
|
||||||
|
---------------
|
||||||
|
|
||||||
|
This release comes with some bugfixes and documentation updates. It also adds new features to the kubectl connection plugin and the kustomize lookup plugin.
|
||||||
|
|
||||||
|
Minor Changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- kubectl - added support of local enviroment variable that will be used for kubectl and may be requried for establishing connections ifself (https://github.com/ansible-collections/kubernetes.core/pull/702)
|
||||||
|
- kustomize - new parameter added to --enable-helm (https://github.com/ansible-collections/kubernetes.core/issues/568)
|
||||||
|
|
||||||
|
Bugfixes
|
||||||
|
--------
|
||||||
|
|
||||||
|
- helm - expand kubeconfig path with user's home directory for consistency with k8s
|
||||||
|
- k8s_json_patch - rename action symlink to ensure k8s action plugin is used (https://github.com/ansible-collections/kubernetes.core/pull/652).
|
||||||
|
|
||||||
|
v3.0.1
|
||||||
|
======
|
||||||
|
|
||||||
|
Release Summary
|
||||||
|
---------------
|
||||||
|
|
||||||
|
This release fixes issue with resources discovery when complex subresources are present, and fixes issues with `reuse-values` parameter for helm module.
|
||||||
|
|
||||||
|
Bugfixes
|
||||||
|
--------
|
||||||
|
|
||||||
|
- Resolve Collections util resource discovery fails when complex subresources present (https://github.com/ansible-collections/kubernetes.core/pull/676).
|
||||||
|
- align `helmdiff_check()` function commandline rendering with the `deploy()` function (https://github.com/ansible-collections/kubernetes.core/pull/670).
|
||||||
|
- helm - use ``reuse-values`` when running ``helm diff`` command (https://github.com/ansible-collections/kubernetes.core/issues/680).
|
||||||
|
- integrations test helm_kubeconfig - set helm version to v3.10.3 to avoid incompatability with new bitnami charts (https://github.com/ansible-collections/kubernetes.core/pull/670).
|
||||||
|
|
||||||
v3.0.0
|
v3.0.0
|
||||||
======
|
======
|
||||||
|
|||||||
2
Makefile
2
Makefile
@@ -1,5 +1,5 @@
|
|||||||
# Also needs to be updated in galaxy.yml
|
# Also needs to be updated in galaxy.yml
|
||||||
VERSION = 3.0.0
|
VERSION = 3.3.1
|
||||||
|
|
||||||
TEST_ARGS ?= ""
|
TEST_ARGS ?= ""
|
||||||
PYTHON_VERSION ?= `python -c 'import platform; print(".".join(platform.python_version_tuple()[0:2]))'`
|
PYTHON_VERSION ?= `python -c 'import platform; print(".".join(platform.python_version_tuple()[0:2]))'`
|
||||||
|
|||||||
62
README.md
62
README.md
@@ -4,10 +4,14 @@
|
|||||||
|
|
||||||
This repository hosts the `kubernetes.core` (formerly known as `community.kubernetes`) Ansible Collection.
|
This repository hosts the `kubernetes.core` (formerly known as `community.kubernetes`) Ansible Collection.
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
The collection includes a variety of Ansible content to help automate the management of applications in Kubernetes and OpenShift clusters, as well as the provisioning and maintenance of clusters themselves.
|
The collection includes a variety of Ansible content to help automate the management of applications in Kubernetes and OpenShift clusters, as well as the provisioning and maintenance of clusters themselves.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
<!--start requires_ansible-->
|
<!--start requires_ansible-->
|
||||||
## Ansible version compatibility
|
### Ansible version compatibility
|
||||||
|
|
||||||
This collection has been tested against following Ansible versions: **>=2.14.0**.
|
This collection has been tested against following Ansible versions: **>=2.14.0**.
|
||||||
|
|
||||||
@@ -18,43 +22,43 @@ A collection may contain metadata that identifies these versions.
|
|||||||
PEP440 is the schema used to describe the versions of Ansible.
|
PEP440 is the schema used to describe the versions of Ansible.
|
||||||
<!--end requires_ansible-->
|
<!--end requires_ansible-->
|
||||||
|
|
||||||
## Python Support
|
### Python Support
|
||||||
|
|
||||||
* Collection supports 3.9+
|
* Collection supports 3.9+
|
||||||
|
|
||||||
Note: Python2 is deprecated from [1st January 2020](https://www.python.org/doc/sunset-python-2/). Please switch to Python3.
|
Note: Python2 is deprecated from [1st January 2020](https://www.python.org/doc/sunset-python-2/). Please switch to Python3.
|
||||||
|
|
||||||
## Kubernetes Version Support
|
### Kubernetes Version Support
|
||||||
|
|
||||||
This collection supports Kubernetes versions >= 1.24.
|
This collection supports Kubernetes versions >= 1.24.
|
||||||
|
|
||||||
## Included content
|
### Included content
|
||||||
|
|
||||||
Click on the name of a plugin or module to view that content's documentation:
|
Click on the name of a plugin or module to view that content's documentation:
|
||||||
|
|
||||||
<!--start collection content-->
|
<!--start collection content-->
|
||||||
### Connection plugins
|
#### Connection plugins
|
||||||
Name | Description
|
Name | Description
|
||||||
--- | ---
|
--- | ---
|
||||||
[kubernetes.core.kubectl](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/kubernetes.core.kubectl_connection.rst)|Execute tasks in pods running on Kubernetes.
|
[kubernetes.core.kubectl](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/kubernetes.core.kubectl_connection.rst)|Execute tasks in pods running on Kubernetes.
|
||||||
|
|
||||||
### K8s filter plugins
|
#### K8s filter plugins
|
||||||
Name | Description
|
Name | Description
|
||||||
--- | ---
|
--- | ---
|
||||||
kubernetes.core.k8s_config_resource_name|Generate resource name for the given resource of type ConfigMap, Secret
|
kubernetes.core.k8s_config_resource_name|Generate resource name for the given resource of type ConfigMap, Secret
|
||||||
|
|
||||||
### Inventory plugins
|
#### Inventory plugins
|
||||||
Name | Description
|
Name | Description
|
||||||
--- | ---
|
--- | ---
|
||||||
[kubernetes.core.k8s](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/kubernetes.core.k8s_inventory.rst)|Kubernetes (K8s) inventory source
|
[kubernetes.core.k8s](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/kubernetes.core.k8s_inventory.rst)|Kubernetes (K8s) inventory source
|
||||||
|
|
||||||
### Lookup plugins
|
#### Lookup plugins
|
||||||
Name | Description
|
Name | Description
|
||||||
--- | ---
|
--- | ---
|
||||||
[kubernetes.core.k8s](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/kubernetes.core.k8s_lookup.rst)|Query the K8s API
|
[kubernetes.core.k8s](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/kubernetes.core.k8s_lookup.rst)|Query the K8s API
|
||||||
[kubernetes.core.kustomize](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/kubernetes.core.kustomize_lookup.rst)|Build a set of kubernetes resources using a 'kustomization.yaml' file.
|
[kubernetes.core.kustomize](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/kubernetes.core.kustomize_lookup.rst)|Build a set of kubernetes resources using a 'kustomization.yaml' file.
|
||||||
|
|
||||||
### Modules
|
#### Modules
|
||||||
Name | Description
|
Name | Description
|
||||||
--- | ---
|
--- | ---
|
||||||
[kubernetes.core.helm](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/kubernetes.core.helm_module.rst)|Manages Kubernetes packages with the Helm package manager
|
[kubernetes.core.helm](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/kubernetes.core.helm_module.rst)|Manages Kubernetes packages with the Helm package manager
|
||||||
@@ -79,9 +83,7 @@ Name | Description
|
|||||||
|
|
||||||
<!--end collection content-->
|
<!--end collection content-->
|
||||||
|
|
||||||
## Installation and Usage
|
## Installation
|
||||||
|
|
||||||
### Installing the Collection from Ansible Galaxy
|
|
||||||
|
|
||||||
Before using the Kubernetes collection, you need to install it with the Ansible Galaxy CLI:
|
Before using the Kubernetes collection, you need to install it with the Ansible Galaxy CLI:
|
||||||
|
|
||||||
@@ -93,7 +95,7 @@ You can also include it in a `requirements.yml` file and install it via `ansible
|
|||||||
---
|
---
|
||||||
collections:
|
collections:
|
||||||
- name: kubernetes.core
|
- name: kubernetes.core
|
||||||
version: 3.0.0
|
version: 3.3.1
|
||||||
```
|
```
|
||||||
|
|
||||||
### Installing the Kubernetes Python Library
|
### Installing the Kubernetes Python Library
|
||||||
@@ -102,7 +104,7 @@ Content in this collection requires the [Kubernetes Python client](https://pypi.
|
|||||||
|
|
||||||
pip3 install kubernetes
|
pip3 install kubernetes
|
||||||
|
|
||||||
### Using modules from the Kubernetes Collection in your playbooks
|
## Use Cases
|
||||||
|
|
||||||
It's preferable to use content in this collection using their Fully Qualified Collection Namespace (FQCN), for example `kubernetes.core.k8s_info`:
|
It's preferable to use content in this collection using their Fully Qualified Collection Namespace (FQCN), for example `kubernetes.core.k8s_info`:
|
||||||
|
|
||||||
@@ -189,12 +191,16 @@ defined in the playbook using `environment` keyword as above, you must set it us
|
|||||||
|
|
||||||
Please read more about Ansible Turbo mode - [here](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/ansible_turbo_mode.rst).
|
Please read more about Ansible Turbo mode - [here](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/ansible_turbo_mode.rst).
|
||||||
|
|
||||||
## Testing and Development
|
## Contributing to this collection
|
||||||
|
|
||||||
If you want to develop new content for this collection or improve what's already here, the easiest way to work on the collection is to clone it into one of the configured [`COLLECTIONS_PATHS`](https://docs.ansible.com/ansible/latest/reference_appendices/config.html#collections-paths), and work on it there.
|
If you want to develop new content for this collection or improve what's already here, the easiest way to work on the collection is to clone it into one of the configured [`COLLECTIONS_PATHS`](https://docs.ansible.com/ansible/latest/reference_appendices/config.html#collections-paths), and work on it there.
|
||||||
|
|
||||||
See [Contributing to kubernetes.core](CONTRIBUTING.md).
|
See [Contributing to kubernetes.core](CONTRIBUTING.md).
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
[](https://github.com/ansible-collections/kubernetes.core/actions/workflows/linters.yaml) [](https://github.com/ansible-collections/kubernetes.core/actions/workflows/integration-tests.yaml) [](https://github.com/ansible-collections/kubernetes.core/actions/workflows/sanity-tests.yaml) [](https://github.com/ansible-collections/kubernetes.core/actions/workflows/unit-tests.yaml) [](https://app.codecov.io/gh/ansible-collections/kubernetes.core)
|
||||||
|
|
||||||
### Testing with `ansible-test`
|
### Testing with `ansible-test`
|
||||||
|
|
||||||
The `tests` directory contains configuration for running sanity and integration tests using [`ansible-test`](https://docs.ansible.com/ansible/latest/dev_guide/testing_integration.html).
|
The `tests` directory contains configuration for running sanity and integration tests using [`ansible-test`](https://docs.ansible.com/ansible/latest/dev_guide/testing_integration.html).
|
||||||
@@ -231,10 +237,36 @@ After the version is published, verify it exists on the [Kubernetes Collection G
|
|||||||
|
|
||||||
The process for uploading a supported release to Automation Hub is documented separately.
|
The process for uploading a supported release to Automation Hub is documented separately.
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
<!--List available communication channels. In addition to channels specific to your collection, we also recommend to use the following ones.-->
|
||||||
|
|
||||||
|
We announce releases and important changes through Ansible's [The Bullhorn newsletter](https://github.com/ansible/community/wiki/News#the-bullhorn). Be sure you are [subscribed](https://eepurl.com/gZmiEP).
|
||||||
|
|
||||||
|
We take part in the global quarterly [Ansible Contributor Summit](https://github.com/ansible/community/wiki/Contributor-Summit) virtually or in-person. Track [The Bullhorn newsletter](https://eepurl.com/gZmiEP) and join us.
|
||||||
|
|
||||||
|
For more information about communication, refer to the [Ansible Communication guide](https://docs.ansible.com/ansible/devel/community/communication.html).
|
||||||
|
|
||||||
|
For the latest supported versions, refer to the release notes below.
|
||||||
|
|
||||||
|
If you encounter issues or have questions, you can submit a support request through the following channels:
|
||||||
|
- GitHub Issues: Report bugs, request features, or ask questions by opening an issue in the [GitHub repository]((https://github.com/ansible-collections/kubernetes.core/).
|
||||||
|
|
||||||
|
## Release notes
|
||||||
|
|
||||||
|
See the [raw generated changelog](https://github.com/ansible-collections/kubernetes.core/blob/main/CHANGELOG.rst).
|
||||||
|
|
||||||
## More Information
|
## More Information
|
||||||
|
|
||||||
For more information about Ansible's Kubernetes integration, join the `#ansible-kubernetes` channel on [libera.chat](https://libera.chat/) IRC, and browse the resources in the [Kubernetes Working Group](https://github.com/ansible/community/wiki/Kubernetes) Community wiki page.
|
For more information about Ansible's Kubernetes integration, join the `#ansible-kubernetes` channel on [libera.chat](https://libera.chat/) IRC, and browse the resources in the [Kubernetes Working Group](https://github.com/ansible/community/wiki/Kubernetes) Community wiki page.
|
||||||
|
|
||||||
|
## Code of Conduct
|
||||||
|
|
||||||
|
We follow the [Ansible Code of Conduct](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html) in all our interactions within this project.
|
||||||
|
|
||||||
|
If you encounter abusive behavior, please refer to the [policy violations](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html#policy-violations) section of the Code for information on how to raise a complaint.
|
||||||
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
GNU General Public License v3.0 or later
|
GNU General Public License v3.0 or later
|
||||||
|
|||||||
@@ -814,3 +814,94 @@ releases:
|
|||||||
- remove_ansible_2_13.yaml
|
- remove_ansible_2_13.yaml
|
||||||
- update_supported_versions.yaml
|
- update_supported_versions.yaml
|
||||||
release_date: '2023-11-17'
|
release_date: '2023-11-17'
|
||||||
|
3.0.1:
|
||||||
|
changes:
|
||||||
|
bugfixes:
|
||||||
|
- Resolve Collections util resource discovery fails when complex subresources
|
||||||
|
present (https://github.com/ansible-collections/kubernetes.core/pull/676).
|
||||||
|
- align `helmdiff_check()` function commandline rendering with the `deploy()`
|
||||||
|
function (https://github.com/ansible-collections/kubernetes.core/pull/670).
|
||||||
|
- helm - use ``reuse-values`` when running ``helm diff`` command (https://github.com/ansible-collections/kubernetes.core/issues/680).
|
||||||
|
- integrations test helm_kubeconfig - set helm version to v3.10.3 to avoid incompatability
|
||||||
|
with new bitnami charts (https://github.com/ansible-collections/kubernetes.core/pull/670).
|
||||||
|
release_summary: This release fixes issue with resources discovery when complex
|
||||||
|
subresources are present, and fixes issues with `reuse-values` parameter for
|
||||||
|
helm module.
|
||||||
|
fragments:
|
||||||
|
- 20240117-fix-helm-diff-cmd-line-rendering.yml
|
||||||
|
- 20240222-Collections-util-resource-discovery-fails-when-complex-subresources-present.yml
|
||||||
|
- 20240228-fix-helm-diff-with-reuse-values.yml
|
||||||
|
- 3.0.1.yml
|
||||||
|
release_date: '2024-03-01'
|
||||||
|
3.1.0:
|
||||||
|
changes:
|
||||||
|
bugfixes:
|
||||||
|
- helm - expand kubeconfig path with user's home directory for consistency with
|
||||||
|
k8s
|
||||||
|
- k8s_json_patch - rename action symlink to ensure k8s action plugin is used
|
||||||
|
(https://github.com/ansible-collections/kubernetes.core/pull/652).
|
||||||
|
minor_changes:
|
||||||
|
- kubectl - added support of local enviroment variable that will be used for
|
||||||
|
kubectl and may be requried for establishing connections ifself (https://github.com/ansible-collections/kubernetes.core/pull/702)
|
||||||
|
- kustomize - new parameter added to --enable-helm (https://github.com/ansible-collections/kubernetes.core/issues/568)
|
||||||
|
release_summary: This release comes with some bugfixes and documentation updates.
|
||||||
|
It also adds new features to the kubectl connection plugin and the kustomize
|
||||||
|
lookup plugin.
|
||||||
|
fragments:
|
||||||
|
- 20240426-add-support-of-kubectl-local-env-vars-for-connection-plugin.yml
|
||||||
|
- 3.1.0.yml
|
||||||
|
- 592-kustomize-helm-support.yml
|
||||||
|
- 652-fix-json-patch-action.yml
|
||||||
|
- 654-helm-expand-user.yml
|
||||||
|
release_date: '2024-05-16'
|
||||||
|
3.2.0:
|
||||||
|
changes:
|
||||||
|
minor_changes:
|
||||||
|
- connection/kubectl.py - Added an example of using the kubectl connection plugin
|
||||||
|
to the documentation (https://github.com/ansible-collections/kubernetes.core/pull/741).
|
||||||
|
- inventory/k8s.py - Defer removal of k8s inventory plugin to version 5.0 (https://github.com/ansible-collections/kubernetes.core/pull/723).
|
||||||
|
- inventory/k8s.py - Defer removal of k8s inventory plugin to version 6.0.0
|
||||||
|
(https://github.com/ansible-collections/kubernetes.core/pull/734).
|
||||||
|
release_summary: This release comes with documentation updates.
|
||||||
|
fragments:
|
||||||
|
- 20240530-defer-removal-and-ansible-core-support-update.yaml
|
||||||
|
- 20240601-doc-example-of-using-kubectl.yaml
|
||||||
|
- 3.2.0.yml
|
||||||
|
- inventory-update_removal_date.yml
|
||||||
|
release_date: '2024-06-14'
|
||||||
|
3.3.0:
|
||||||
|
changes:
|
||||||
|
bugfixes:
|
||||||
|
- helm - Helm version checks did not support RC versions. They now accept any
|
||||||
|
version tags. (https://github.com/ansible-collections/kubernetes.core/pull/745).
|
||||||
|
- helm_pull - Apply no_log=True to pass_credentials to silence false positive
|
||||||
|
warning. (https://github.com/ansible-collections/kubernetes.core/pull/796).
|
||||||
|
- k8s_drain - Fix k8s_drain does not wait for single pod (https://github.com/ansible-collections/kubernetes.core/issues/769).
|
||||||
|
- k8s_drain - Fix k8s_drain runs into a timeout when evicting a pod which is
|
||||||
|
part of a stateful set (https://github.com/ansible-collections/kubernetes.core/issues/792).
|
||||||
|
- kubeconfig option should not appear in module invocation log (https://github.com/ansible-collections/kubernetes.core/issues/782).
|
||||||
|
- kustomize - kustomize plugin fails with deprecation warnings (https://github.com/ansible-collections/kubernetes.core/issues/639).
|
||||||
|
- waiter - Fix waiting for daemonset when desired number of pods is 0. (https://github.com/ansible-collections/kubernetes.core/pull/756).
|
||||||
|
minor_changes:
|
||||||
|
- k8s_drain - Improve error message for pod disruption budget when draining
|
||||||
|
a node (https://github.com/ansible-collections/kubernetes.core/issues/797).
|
||||||
|
release_summary: This release comes with improvements to the error messages in the k8s_drain module and several bug fixes.
|
||||||
|
fragments:
|
||||||
|
- 20240530-ansible-core-support-update.yaml
|
||||||
|
- 20240611-helm-rc-version.yaml
|
||||||
|
- 20240620-fix-kustomize-plugin-fails-with-deprecation-warnings.yml
|
||||||
|
- 20241102-fix-ci-post-2.18-issue.yaml
|
||||||
|
- 20241213-kubeconfig-set-no_log-true.yaml
|
||||||
|
- 756-fix-daemonset-waiting.yaml
|
||||||
|
- 770-fix-k8s-drain-doesnt-wait-for-single-pod.yaml
|
||||||
|
- 793-fix-k8s-drain-runs-into-timeout.yaml
|
||||||
|
- 796-false-positive-helmull.yaml
|
||||||
|
- 798-drain-pdb-error-message.yaml
|
||||||
|
- readme_template_update.yml
|
||||||
|
release_date: '2025-01-22'
|
||||||
|
3.3.1:
|
||||||
|
changes:
|
||||||
|
release_summary: This release fixes the CI issues with the ``linters`` workflow.
|
||||||
|
fragments:
|
||||||
|
- release_summary.yml
|
||||||
|
release_date: '2025-03-26'
|
||||||
|
|||||||
3
changelogs/fragments/20250324-k8s_info-templating.yaml
Normal file
3
changelogs/fragments/20250324-k8s_info-templating.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
minor_changes:
|
||||||
|
- action/k8s_info - update templating mechanism with changes from ``ansible-core 2.19`` (https://github.com/ansible-collections/kubernetes.core/pull/888).
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- module_utils/k8s/service - fix issue when trying to delete resource using `delete_options` and `check_mode=true` (https://github.com/ansible-collections/kubernetes.core/issues/892).
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
minor_changes:
|
||||||
|
- Bump version of ansible-lint to 25.1.2 (https://github.com/ansible-collections/kubernetes.core/pull/919).
|
||||||
@@ -443,7 +443,7 @@ Parameters
|
|||||||
<div style="font-size: small">
|
<div style="font-size: small">
|
||||||
<span style="color: purple">boolean</span>
|
<span style="color: purple">boolean</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="font-style: italic; font-size: small; color: darkgreen">added in 2.5.0</div>
|
<div style="font-style: italic; font-size: small; color: darkgreen">added in 3.0.0</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<ul style="margin: 0; padding: 0"><b>Choices:</b>
|
<ul style="margin: 0; padding: 0"><b>Choices:</b>
|
||||||
@@ -463,7 +463,7 @@ Parameters
|
|||||||
<div style="font-size: small">
|
<div style="font-size: small">
|
||||||
<span style="color: purple">boolean</span>
|
<span style="color: purple">boolean</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="font-style: italic; font-size: small; color: darkgreen">added in 2.5.0</div>
|
<div style="font-style: italic; font-size: small; color: darkgreen">added in 3.0.0</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<ul style="margin: 0; padding: 0"><b>Choices:</b>
|
<ul style="margin: 0; padding: 0"><b>Choices:</b>
|
||||||
|
|||||||
@@ -423,7 +423,7 @@ Parameters
|
|||||||
<span style="color: purple">list</span>
|
<span style="color: purple">list</span>
|
||||||
/ <span style="color: purple">elements=string</span>
|
/ <span style="color: purple">elements=string</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="font-style: italic; font-size: small; color: darkgreen">added in 2.5.0</div>
|
<div style="font-style: italic; font-size: small; color: darkgreen">added in 3.0.0</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ Parameters
|
|||||||
<span style="color: purple">list</span>
|
<span style="color: purple">list</span>
|
||||||
/ <span style="color: purple">elements=string</span>
|
/ <span style="color: purple">elements=string</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="font-style: italic; font-size: small; color: darkgreen">added in 2.5.0</div>
|
<div style="font-style: italic; font-size: small; color: darkgreen">added in 3.0.0</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ DEPRECATED
|
|||||||
----------
|
----------
|
||||||
:Removed in collection release after
|
:Removed in collection release after
|
||||||
:Why: As discussed in https://github.com/ansible-collections/kubernetes.core/issues/31, we decided to
|
:Why: As discussed in https://github.com/ansible-collections/kubernetes.core/issues/31, we decided to
|
||||||
remove the k8s inventory plugin in release 4.0.0.
|
remove the k8s inventory plugin in release 6.0.0.
|
||||||
|
|
||||||
:Alternative: Use :ref:`kubernetes.core.k8s_info <kubernetes.core.k8s_info_module>` and :ref:`ansible.builtin.add_host <ansible.builtin.add_host_module>` instead.
|
:Alternative: Use :ref:`kubernetes.core.k8s_info <kubernetes.core.k8s_info_module>` and :ref:`ansible.builtin.add_host <ansible.builtin.add_host_module>` instead.
|
||||||
|
|
||||||
@@ -357,7 +357,7 @@ Status
|
|||||||
------
|
------
|
||||||
|
|
||||||
|
|
||||||
- This inventory will be removed in version 4.0.0. *[deprecated]*
|
- This inventory will be removed in version 6.0.0. *[deprecated]*
|
||||||
- For more information see `DEPRECATED`_.
|
- For more information see `DEPRECATED`_.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ Parameters
|
|||||||
<div style="font-size: small">
|
<div style="font-size: small">
|
||||||
<span style="color: purple">boolean</span>
|
<span style="color: purple">boolean</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="font-style: italic; font-size: small; color: darkgreen">added in 2.5.0</div>
|
<div style="font-style: italic; font-size: small; color: darkgreen">added in 3.0.0</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<ul style="margin: 0; padding: 0"><b>Choices:</b>
|
<ul style="margin: 0; padding: 0"><b>Choices:</b>
|
||||||
@@ -389,7 +389,7 @@ Parameters
|
|||||||
<span style="color: purple">list</span>
|
<span style="color: purple">list</span>
|
||||||
/ <span style="color: purple">elements=string</span>
|
/ <span style="color: purple">elements=string</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="font-style: italic; font-size: small; color: darkgreen">added in 2.5.0</div>
|
<div style="font-style: italic; font-size: small; color: darkgreen">added in 3.0.0</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
</td>
|
</td>
|
||||||
@@ -524,7 +524,7 @@ Parameters
|
|||||||
<div>See <a href='https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment'>https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment</a></div>
|
<div>See <a href='https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment'>https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment</a></div>
|
||||||
<div>If more than one <code>merge_type</code> is given, the merge_types will be tried in order. This defaults to <code>['strategic-merge', 'merge']</code>, which is ideal for using the same parameters on resource kinds that combine Custom Resources and built-in resources.</div>
|
<div>If more than one <code>merge_type</code> is given, the merge_types will be tried in order. This defaults to <code>['strategic-merge', 'merge']</code>, which is ideal for using the same parameters on resource kinds that combine Custom Resources and built-in resources.</div>
|
||||||
<div>mutually exclusive with <code>apply</code></div>
|
<div>mutually exclusive with <code>apply</code></div>
|
||||||
<div><em>merge_type=json</em> is deprecated and will be removed in version 3.0.0. Please use <span class='module'>kubernetes.core.k8s_json_patch</span> instead.</div>
|
<div><em>merge_type=json</em> is deprecated and will be removed in version 4.0.0. Please use <span class='module'>kubernetes.core.k8s_json_patch</span> instead.</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -211,6 +211,27 @@ Parameters
|
|||||||
<div>The configuration can be provided as dictionary. Added in version 2.4.0.</div>
|
<div>The configuration can be provided as dictionary. Added in version 2.4.0.</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="1">
|
||||||
|
<div class="ansibleOptionAnchor" id="parameter-"></div>
|
||||||
|
<b>kubectl_local_env_vars</b>
|
||||||
|
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
|
||||||
|
<div style="font-size: small">
|
||||||
|
<span style="color: purple">dictionary</span>
|
||||||
|
</div>
|
||||||
|
<div style="font-style: italic; font-size: small; color: darkgreen">added in 3.1.0</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<b>Default:</b><br/><div style="color: blue">{}</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div>var: ansible_kubectl_local_env_vars</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div>Local enviromantal variable to be passed locally to the kubectl command line.</div>
|
||||||
|
<div>Please be aware that this passes information directly on the command line and it could expose sensitive data.</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="1">
|
<td colspan="1">
|
||||||
<div class="ansibleOptionAnchor" id="parameter-"></div>
|
<div class="ansibleOptionAnchor" id="parameter-"></div>
|
||||||
@@ -344,6 +365,82 @@ Parameters
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Examples
|
||||||
|
--------
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
- name: Run a command in a pod using local kubectl with kubeconfig file ~/.kube/config
|
||||||
|
hosts: localhost
|
||||||
|
gather_facts: no
|
||||||
|
vars:
|
||||||
|
ansible_connection: kubernetes.core.kubectl
|
||||||
|
ansible_kubectl_namespace: my-namespace
|
||||||
|
ansible_kubectl_pod: my-pod
|
||||||
|
ansible_kubectl_container: my-container
|
||||||
|
tasks:
|
||||||
|
# be aware that the command is executed as the user that started the container
|
||||||
|
# and requires python to be installed in the image
|
||||||
|
- name: Run a command in a pod
|
||||||
|
ansible.builtin.command: echo "Hello, World!"
|
||||||
|
|
||||||
|
- name: Run a command in a pod using local kubectl with inventory variables
|
||||||
|
# Example inventory:
|
||||||
|
# k8s:
|
||||||
|
# hosts:
|
||||||
|
# foo.example.com:
|
||||||
|
# ansible_connection: kubernetes.core.kubectl
|
||||||
|
# ansible_kubectl_kubeconfig: /root/.kube/foo.example.com.config
|
||||||
|
# ansible_kubectl_pod: my-foo-pod
|
||||||
|
# ansible_kubectl_container: my-foo-container
|
||||||
|
# ansible_kubectl_namespace: my-foo-namespace
|
||||||
|
# bar.example.com:
|
||||||
|
# ansible_connection: kubernetes.core.kubectl
|
||||||
|
# ansible_kubectl_kubeconfig: /root/.kube/bar.example.com.config
|
||||||
|
# ansible_kubectl_pod: my-bar-pod
|
||||||
|
# ansible_kubectl_container: my-bar-container
|
||||||
|
# ansible_kubectl_namespace: my-bar-namespace
|
||||||
|
hosts: k8s
|
||||||
|
gather_facts: no
|
||||||
|
tasks:
|
||||||
|
# be aware that the command is executed as the user that started the container
|
||||||
|
# and requires python to be installed in the image
|
||||||
|
- name: Run a command in a pod
|
||||||
|
ansible.builtin.command: echo "Hello, World!"
|
||||||
|
|
||||||
|
- name: Run a command in a pod using dynamic inventory
|
||||||
|
hosts: localhost
|
||||||
|
gather_facts: no
|
||||||
|
vars:
|
||||||
|
kubeconfig: /root/.kube/config
|
||||||
|
namespace: my-namespace
|
||||||
|
my_app: my-app
|
||||||
|
tasks:
|
||||||
|
- name: Get My App pod info based on label
|
||||||
|
kubernetes.core.k8s_info:
|
||||||
|
kubeconfig: "{{ kubeconfig }}"
|
||||||
|
namespace: "{{ namespace }}"
|
||||||
|
kind: Pod
|
||||||
|
label_selectors: app.kubernetes.io/name = "{{ my_app }}"
|
||||||
|
register: my_app_pod
|
||||||
|
|
||||||
|
- name: Get My App pod name
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
my_app_pod_name: "{{ my_app_pod.resources[0].metadata.name }}"
|
||||||
|
|
||||||
|
- name: Add My App pod to inventory
|
||||||
|
ansible.builtin.add_host:
|
||||||
|
name: "{{ my_app_pod_name }}"
|
||||||
|
ansible_connection: kubernetes.core.kubectl
|
||||||
|
ansible_kubectl_kubeconfig: "{{ kubeconfig }}"
|
||||||
|
ansible_kubectl_pod: "{{ my_app_pod_name }}"
|
||||||
|
ansible_kubectl_namespace: "{{ namespace }}"
|
||||||
|
|
||||||
|
- name: Run a command in My App pod
|
||||||
|
# be aware that the command is executed as the user that started the container
|
||||||
|
# and requires python to be installed in the image
|
||||||
|
ansible.builtin.command: echo "Hello, World!"
|
||||||
|
delegate_to: "{{ my_app_pod_name }}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -77,6 +77,24 @@ Parameters
|
|||||||
<div>If omitted, '.' is assumed.</div>
|
<div>If omitted, '.' is assumed.</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="1">
|
||||||
|
<div class="ansibleOptionAnchor" id="parameter-"></div>
|
||||||
|
<b>enable_helm</b>
|
||||||
|
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
|
||||||
|
<div style="font-size: small">
|
||||||
|
<span style="color: purple">-</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<b>Default:</b><br/><div style="color: blue">"False"</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div>Enable the helm chart inflation generator</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="1">
|
<td colspan="1">
|
||||||
<div class="ansibleOptionAnchor" id="parameter-"></div>
|
<div class="ansibleOptionAnchor" id="parameter-"></div>
|
||||||
@@ -112,17 +130,21 @@ Examples
|
|||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
- name: Run lookup using kustomize
|
- name: Run lookup using kustomize
|
||||||
set_fact:
|
ansible.builtin.set_fact:
|
||||||
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kustomize') }}"
|
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kustomize') }}"
|
||||||
|
|
||||||
- name: Run lookup using kubectl kustomize
|
- name: Run lookup using kubectl kustomize
|
||||||
set_fact:
|
ansible.builtin.set_fact:
|
||||||
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kubectl') }}"
|
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kubectl') }}"
|
||||||
|
|
||||||
- name: Create kubernetes resources for lookup output
|
- name: Create kubernetes resources for lookup output
|
||||||
k8s:
|
kubernetes.core.k8s:
|
||||||
definition: "{{ lookup('kubernetes.core.kustomize', dir='/path/to/kustomization') }}"
|
definition: "{{ lookup('kubernetes.core.kustomize', dir='/path/to/kustomization') }}"
|
||||||
|
|
||||||
|
- name: Create kubernetes resources for lookup output with `--enable-helm` set
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
definition: "{{ lookup('kubernetes.core.kustomize', dir='/path/to/kustomization', enable_helm=True) }}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Return Values
|
Return Values
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ tags:
|
|||||||
- openshift
|
- openshift
|
||||||
- okd
|
- okd
|
||||||
- cluster
|
- cluster
|
||||||
version: 3.0.0
|
version: 3.3.1
|
||||||
build_ignore:
|
build_ignore:
|
||||||
- .DS_Store
|
- .DS_Store
|
||||||
- "*.tar.gz"
|
- "*.tar.gz"
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ plugin_routing:
|
|||||||
redirect: community.okd.openshift
|
redirect: community.okd.openshift
|
||||||
k8s:
|
k8s:
|
||||||
deprecation:
|
deprecation:
|
||||||
removal_version: 4.0.0
|
removal_version: 6.0.0
|
||||||
warning_text: >-
|
warning_text: >-
|
||||||
The k8s inventory plugin has been deprecated and
|
The k8s inventory plugin has been deprecated and
|
||||||
will be removed in release 4.0.0.
|
will be removed in release 6.0.0.
|
||||||
modules:
|
modules:
|
||||||
k8s_auth:
|
k8s_auth:
|
||||||
redirect: community.okd.k8s_auth
|
redirect: community.okd.k8s_auth
|
||||||
|
|||||||
@@ -25,30 +25,18 @@ from ansible.module_utils.parsing.convert_bool import boolean
|
|||||||
from ansible.module_utils.six import iteritems, string_types
|
from ansible.module_utils.six import iteritems, string_types
|
||||||
from ansible.plugins.action import ActionBase
|
from ansible.plugins.action import ActionBase
|
||||||
|
|
||||||
|
try:
|
||||||
|
from ansible.template import trust_as_template
|
||||||
|
except ImportError:
|
||||||
|
trust_as_template = None
|
||||||
|
|
||||||
class RemoveOmit(object):
|
|
||||||
def __init__(self, buffer, omit_value):
|
def _from_yaml_to_definition(buffer):
|
||||||
try:
|
try:
|
||||||
import yaml
|
import yaml
|
||||||
except ImportError:
|
except ImportError:
|
||||||
raise AnsibleError("Failed to import the required Python library (PyYAML).")
|
raise AnsibleError("Failed to import the required Python library (PyYAML).")
|
||||||
self.data = yaml.safe_load_all(buffer)
|
return list(yaml.safe_load_all(buffer))
|
||||||
self.omit = omit_value
|
|
||||||
|
|
||||||
def remove_omit(self, data):
|
|
||||||
if isinstance(data, dict):
|
|
||||||
result = dict()
|
|
||||||
for key, value in iteritems(data):
|
|
||||||
if value == self.omit:
|
|
||||||
continue
|
|
||||||
result[key] = self.remove_omit(value)
|
|
||||||
return result
|
|
||||||
if isinstance(data, list):
|
|
||||||
return [self.remove_omit(v) for v in data if v != self.omit]
|
|
||||||
return data
|
|
||||||
|
|
||||||
def output(self):
|
|
||||||
return [self.remove_omit(d) for d in self.data]
|
|
||||||
|
|
||||||
|
|
||||||
ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
|
ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
|
||||||
@@ -207,7 +195,6 @@ class ActionModule(ActionBase):
|
|||||||
"'template' is only a supported parameter for the 'k8s' module."
|
"'template' is only a supported parameter for the 'k8s' module."
|
||||||
)
|
)
|
||||||
|
|
||||||
omit_value = task_vars.get("omit")
|
|
||||||
template_params = []
|
template_params = []
|
||||||
if isinstance(template, string_types) or isinstance(template, dict):
|
if isinstance(template, string_types) or isinstance(template, dict):
|
||||||
template_params.append(self.get_template_args(template))
|
template_params.append(self.get_template_args(template))
|
||||||
@@ -230,6 +217,7 @@ class ActionModule(ActionBase):
|
|||||||
old_vars = self._templar.available_variables
|
old_vars = self._templar.available_variables
|
||||||
|
|
||||||
default_environment = {}
|
default_environment = {}
|
||||||
|
if trust_as_template is None:
|
||||||
for key in (
|
for key in (
|
||||||
"newline_sequence",
|
"newline_sequence",
|
||||||
"variable_start_string",
|
"variable_start_string",
|
||||||
@@ -257,26 +245,35 @@ class ActionModule(ActionBase):
|
|||||||
with self.get_template_data(template_item["path"]) as template_data:
|
with self.get_template_data(template_item["path"]) as template_data:
|
||||||
# add ansible 'template' vars
|
# add ansible 'template' vars
|
||||||
temp_vars = copy.deepcopy(task_vars)
|
temp_vars = copy.deepcopy(task_vars)
|
||||||
|
overrides = {}
|
||||||
for key, value in iteritems(template_item):
|
for key, value in iteritems(template_item):
|
||||||
if hasattr(self._templar.environment, key):
|
if hasattr(self._templar.environment, key):
|
||||||
if value is not None:
|
if value is not None:
|
||||||
|
overrides[key] = value
|
||||||
|
if trust_as_template is None:
|
||||||
setattr(self._templar.environment, key, value)
|
setattr(self._templar.environment, key, value)
|
||||||
else:
|
elif trust_as_template is None:
|
||||||
setattr(
|
setattr(
|
||||||
self._templar.environment,
|
self._templar.environment,
|
||||||
key,
|
key,
|
||||||
default_environment.get(key),
|
default_environment.get(key),
|
||||||
)
|
)
|
||||||
self._templar.available_variables = temp_vars
|
self._templar.available_variables = temp_vars
|
||||||
|
if trust_as_template:
|
||||||
|
template_data = trust_as_template(template_data)
|
||||||
|
result = self._templar.template(
|
||||||
|
template_data,
|
||||||
|
preserve_trailing_newlines=True,
|
||||||
|
escape_backslashes=False,
|
||||||
|
overrides=overrides,
|
||||||
|
)
|
||||||
|
else:
|
||||||
result = self._templar.do_template(
|
result = self._templar.do_template(
|
||||||
template_data,
|
template_data,
|
||||||
preserve_trailing_newlines=True,
|
preserve_trailing_newlines=True,
|
||||||
escape_backslashes=False,
|
escape_backslashes=False,
|
||||||
)
|
)
|
||||||
if omit_value is not None:
|
result_template.extend(_from_yaml_to_definition(result))
|
||||||
result_template.extend(RemoveOmit(result, omit_value).output())
|
|
||||||
else:
|
|
||||||
result_template.append(result)
|
|
||||||
self._templar.available_variables = old_vars
|
self._templar.available_variables = old_vars
|
||||||
resource_definition = self._task.args.get("definition", None)
|
resource_definition = self._task.args.get("definition", None)
|
||||||
if not resource_definition:
|
if not resource_definition:
|
||||||
|
|||||||
@@ -72,6 +72,15 @@ DOCUMENTATION = r"""
|
|||||||
- name: ansible_kubectl_extra_args
|
- name: ansible_kubectl_extra_args
|
||||||
env:
|
env:
|
||||||
- name: K8S_AUTH_EXTRA_ARGS
|
- name: K8S_AUTH_EXTRA_ARGS
|
||||||
|
kubectl_local_env_vars:
|
||||||
|
description:
|
||||||
|
- Local enviromantal variable to be passed locally to the kubectl command line.
|
||||||
|
- Please be aware that this passes information directly on the command line and it could expose sensitive data.
|
||||||
|
default: {}
|
||||||
|
type: dict
|
||||||
|
version_added: 3.1.0
|
||||||
|
vars:
|
||||||
|
- name: ansible_kubectl_local_env_vars
|
||||||
kubectl_kubeconfig:
|
kubectl_kubeconfig:
|
||||||
description:
|
description:
|
||||||
- Path to a kubectl config file. Defaults to I(~/.kube/config)
|
- Path to a kubectl config file. Defaults to I(~/.kube/config)
|
||||||
@@ -172,6 +181,81 @@ DOCUMENTATION = r"""
|
|||||||
aliases: [ kubectl_verify_ssl ]
|
aliases: [ kubectl_verify_ssl ]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
EXAMPLES = r"""
|
||||||
|
|
||||||
|
- name: Run a command in a pod using local kubectl with kubeconfig file ~/.kube/config
|
||||||
|
hosts: localhost
|
||||||
|
gather_facts: no
|
||||||
|
vars:
|
||||||
|
ansible_connection: kubernetes.core.kubectl
|
||||||
|
ansible_kubectl_namespace: my-namespace
|
||||||
|
ansible_kubectl_pod: my-pod
|
||||||
|
ansible_kubectl_container: my-container
|
||||||
|
tasks:
|
||||||
|
# be aware that the command is executed as the user that started the container
|
||||||
|
# and requires python to be installed in the image
|
||||||
|
- name: Run a command in a pod
|
||||||
|
ansible.builtin.command: echo "Hello, World!"
|
||||||
|
|
||||||
|
- name: Run a command in a pod using local kubectl with inventory variables
|
||||||
|
# Example inventory:
|
||||||
|
# k8s:
|
||||||
|
# hosts:
|
||||||
|
# foo.example.com:
|
||||||
|
# ansible_connection: kubernetes.core.kubectl
|
||||||
|
# ansible_kubectl_kubeconfig: /root/.kube/foo.example.com.config
|
||||||
|
# ansible_kubectl_pod: my-foo-pod
|
||||||
|
# ansible_kubectl_container: my-foo-container
|
||||||
|
# ansible_kubectl_namespace: my-foo-namespace
|
||||||
|
# bar.example.com:
|
||||||
|
# ansible_connection: kubernetes.core.kubectl
|
||||||
|
# ansible_kubectl_kubeconfig: /root/.kube/bar.example.com.config
|
||||||
|
# ansible_kubectl_pod: my-bar-pod
|
||||||
|
# ansible_kubectl_container: my-bar-container
|
||||||
|
# ansible_kubectl_namespace: my-bar-namespace
|
||||||
|
hosts: k8s
|
||||||
|
gather_facts: no
|
||||||
|
tasks:
|
||||||
|
# be aware that the command is executed as the user that started the container
|
||||||
|
# and requires python to be installed in the image
|
||||||
|
- name: Run a command in a pod
|
||||||
|
ansible.builtin.command: echo "Hello, World!"
|
||||||
|
|
||||||
|
- name: Run a command in a pod using dynamic inventory
|
||||||
|
hosts: localhost
|
||||||
|
gather_facts: no
|
||||||
|
vars:
|
||||||
|
kubeconfig: /root/.kube/config
|
||||||
|
namespace: my-namespace
|
||||||
|
my_app: my-app
|
||||||
|
tasks:
|
||||||
|
- name: Get My App pod info based on label
|
||||||
|
kubernetes.core.k8s_info:
|
||||||
|
kubeconfig: "{{ kubeconfig }}"
|
||||||
|
namespace: "{{ namespace }}"
|
||||||
|
kind: Pod
|
||||||
|
label_selectors: app.kubernetes.io/name = "{{ my_app }}"
|
||||||
|
register: my_app_pod
|
||||||
|
|
||||||
|
- name: Get My App pod name
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
my_app_pod_name: "{{ my_app_pod.resources[0].metadata.name }}"
|
||||||
|
|
||||||
|
- name: Add My App pod to inventory
|
||||||
|
ansible.builtin.add_host:
|
||||||
|
name: "{{ my_app_pod_name }}"
|
||||||
|
ansible_connection: kubernetes.core.kubectl
|
||||||
|
ansible_kubectl_kubeconfig: "{{ kubeconfig }}"
|
||||||
|
ansible_kubectl_pod: "{{ my_app_pod_name }}"
|
||||||
|
ansible_kubectl_namespace: "{{ namespace }}"
|
||||||
|
|
||||||
|
- name: Run a command in My App pod
|
||||||
|
# be aware that the command is executed as the user that started the container
|
||||||
|
# and requires python to be installed in the image
|
||||||
|
ansible.builtin.command: echo "Hello, World!"
|
||||||
|
delegate_to: "{{ my_app_pod_name }}"
|
||||||
|
"""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
@@ -301,6 +385,19 @@ class Connection(ConnectionBase):
|
|||||||
|
|
||||||
return local_cmd, censored_local_cmd
|
return local_cmd, censored_local_cmd
|
||||||
|
|
||||||
|
def _local_env(self):
|
||||||
|
"""Return a dict of local environment variables to pass to the kubectl command"""
|
||||||
|
local_env = {}
|
||||||
|
local_local_env_vars_name = "{0}_local_env_vars".format(self.transport)
|
||||||
|
local_env_vars = self.get_option(local_local_env_vars_name)
|
||||||
|
if local_env_vars:
|
||||||
|
if isinstance(local_env_vars, dict):
|
||||||
|
local_env_vars = json.dumps(local_env_vars)
|
||||||
|
local_env = os.environ.copy()
|
||||||
|
local_env.update(json.loads(local_env_vars))
|
||||||
|
return local_env
|
||||||
|
return None
|
||||||
|
|
||||||
def _connect(self, port=None):
|
def _connect(self, port=None):
|
||||||
"""Connect to the container. Nothing to do"""
|
"""Connect to the container. Nothing to do"""
|
||||||
super(Connection, self)._connect()
|
super(Connection, self)._connect()
|
||||||
@@ -329,6 +426,7 @@ class Connection(ConnectionBase):
|
|||||||
stdin=subprocess.PIPE,
|
stdin=subprocess.PIPE,
|
||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
stderr=subprocess.PIPE,
|
stderr=subprocess.PIPE,
|
||||||
|
env=self._local_env(),
|
||||||
)
|
)
|
||||||
|
|
||||||
stdout, stderr = p.communicate(in_data)
|
stdout, stderr = p.communicate(in_data)
|
||||||
@@ -378,7 +476,11 @@ class Connection(ConnectionBase):
|
|||||||
args = [to_bytes(i, errors="surrogate_or_strict") for i in args]
|
args = [to_bytes(i, errors="surrogate_or_strict") for i in args]
|
||||||
try:
|
try:
|
||||||
p = subprocess.Popen(
|
p = subprocess.Popen(
|
||||||
args, stdin=in_file, stdout=subprocess.PIPE, stderr=subprocess.PIPE
|
args,
|
||||||
|
stdin=in_file,
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
stderr=subprocess.PIPE,
|
||||||
|
env=self._local_env(),
|
||||||
)
|
)
|
||||||
except OSError:
|
except OSError:
|
||||||
raise AnsibleError(
|
raise AnsibleError(
|
||||||
@@ -415,7 +517,11 @@ class Connection(ConnectionBase):
|
|||||||
) as out_file:
|
) as out_file:
|
||||||
try:
|
try:
|
||||||
p = subprocess.Popen(
|
p = subprocess.Popen(
|
||||||
args, stdin=subprocess.PIPE, stdout=out_file, stderr=subprocess.PIPE
|
args,
|
||||||
|
stdin=subprocess.PIPE,
|
||||||
|
stdout=out_file,
|
||||||
|
stderr=subprocess.PIPE,
|
||||||
|
env=self._local_env(),
|
||||||
)
|
)
|
||||||
except OSError:
|
except OSError:
|
||||||
raise AnsibleError(
|
raise AnsibleError(
|
||||||
|
|||||||
@@ -36,12 +36,12 @@ options:
|
|||||||
description:
|
description:
|
||||||
- Provide a URL for accessing the API. Can also be specified via C(K8S_AUTH_HOST) environment variable.
|
- Provide a URL for accessing the API. Can also be specified via C(K8S_AUTH_HOST) environment variable.
|
||||||
type: str
|
type: str
|
||||||
version_added: "1.2.0"
|
version_added: 1.2.0
|
||||||
api_key:
|
api_key:
|
||||||
description:
|
description:
|
||||||
- Token used to authenticate with the API. Can also be specified via C(K8S_AUTH_API_KEY) environment variable.
|
- Token used to authenticate with the API. Can also be specified via C(K8S_AUTH_API_KEY) environment variable.
|
||||||
type: str
|
type: str
|
||||||
version_added: "1.2.0"
|
version_added: 1.2.0
|
||||||
validate_certs:
|
validate_certs:
|
||||||
description:
|
description:
|
||||||
- Whether or not to verify the API server's SSL certificates. Can also be specified via C(K8S_AUTH_VERIFY_SSL)
|
- Whether or not to verify the API server's SSL certificates. Can also be specified via C(K8S_AUTH_VERIFY_SSL)
|
||||||
@@ -49,12 +49,12 @@ options:
|
|||||||
type: bool
|
type: bool
|
||||||
aliases: [ verify_ssl ]
|
aliases: [ verify_ssl ]
|
||||||
default: True
|
default: True
|
||||||
version_added: "1.2.0"
|
version_added: 1.2.0
|
||||||
ca_cert:
|
ca_cert:
|
||||||
description:
|
description:
|
||||||
- Path to a CA certificate used to authenticate with the API. The full certificate chain must be provided to
|
- Path to a CA certificate used to authenticate with the API. The full certificate chain must be provided to
|
||||||
avoid certificate validation errors. Can also be specified via C(K8S_AUTH_SSL_CA_CERT) environment variable.
|
avoid certificate validation errors. Can also be specified via C(K8S_AUTH_SSL_CA_CERT) environment variable.
|
||||||
type: path
|
type: path
|
||||||
aliases: [ ssl_ca_cert ]
|
aliases: [ ssl_ca_cert ]
|
||||||
version_added: "1.2.0"
|
version_added: 1.2.0
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class ModuleDocFragment(object):
|
|||||||
options:
|
options:
|
||||||
delete_options:
|
delete_options:
|
||||||
type: dict
|
type: dict
|
||||||
version_added: '1.2.0'
|
version_added: 1.2.0
|
||||||
description:
|
description:
|
||||||
- Configure behavior when deleting an object.
|
- Configure behavior when deleting an object.
|
||||||
- Only used when I(state=absent).
|
- Only used when I(state=absent).
|
||||||
|
|||||||
@@ -20,10 +20,10 @@ DOCUMENTATION = """
|
|||||||
- Uses k8s.(yml|yaml) YAML configuration file to set parameter values.
|
- Uses k8s.(yml|yaml) YAML configuration file to set parameter values.
|
||||||
|
|
||||||
deprecated:
|
deprecated:
|
||||||
removed_in: 4.0.0
|
removed_in: 6.0.0
|
||||||
why: |
|
why: |
|
||||||
As discussed in U(https://github.com/ansible-collections/kubernetes.core/issues/31), we decided to
|
As discussed in U(https://github.com/ansible-collections/kubernetes.core/issues/31), we decided to
|
||||||
remove the k8s inventory plugin in release 4.0.0.
|
remove the k8s inventory plugin in release 6.0.0.
|
||||||
alternative: "Use M(kubernetes.core.k8s_info) and M(ansible.builtin.add_host) instead."
|
alternative: "Use M(kubernetes.core.k8s_info) and M(ansible.builtin.add_host) instead."
|
||||||
|
|
||||||
options:
|
options:
|
||||||
@@ -164,8 +164,8 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
|||||||
super(InventoryModule, self).parse(inventory, loader, path)
|
super(InventoryModule, self).parse(inventory, loader, path)
|
||||||
|
|
||||||
self.display.deprecated(
|
self.display.deprecated(
|
||||||
"The 'k8s' inventory plugin has been deprecated and will be removed in release 4.0.0",
|
"The 'k8s' inventory plugin has been deprecated and will be removed in release 6.0.0",
|
||||||
version="4.0.0",
|
version="6.0.0",
|
||||||
collection_name="kubernetes.core",
|
collection_name="kubernetes.core",
|
||||||
)
|
)
|
||||||
cache_key = self._get_cache_prefix(path)
|
cache_key = self._get_cache_prefix(path)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ DOCUMENTATION = """
|
|||||||
|
|
||||||
short_description: Build a set of kubernetes resources using a 'kustomization.yaml' file.
|
short_description: Build a set of kubernetes resources using a 'kustomization.yaml' file.
|
||||||
|
|
||||||
version_added: "2.2.0"
|
version_added: 2.2.0
|
||||||
|
|
||||||
author:
|
author:
|
||||||
- Aubin Bikouo (@abikouo)
|
- Aubin Bikouo (@abikouo)
|
||||||
@@ -30,6 +30,10 @@ DOCUMENTATION = """
|
|||||||
opt_dirs:
|
opt_dirs:
|
||||||
description:
|
description:
|
||||||
- An optional list of directories to search for the executable in addition to PATH.
|
- An optional list of directories to search for the executable in addition to PATH.
|
||||||
|
enable_helm:
|
||||||
|
description:
|
||||||
|
- Enable the helm chart inflation generator
|
||||||
|
default: "False"
|
||||||
|
|
||||||
requirements:
|
requirements:
|
||||||
- "python >= 3.6"
|
- "python >= 3.6"
|
||||||
@@ -37,16 +41,20 @@ DOCUMENTATION = """
|
|||||||
|
|
||||||
EXAMPLES = """
|
EXAMPLES = """
|
||||||
- name: Run lookup using kustomize
|
- name: Run lookup using kustomize
|
||||||
set_fact:
|
ansible.builtin.set_fact:
|
||||||
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kustomize') }}"
|
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kustomize') }}"
|
||||||
|
|
||||||
- name: Run lookup using kubectl kustomize
|
- name: Run lookup using kubectl kustomize
|
||||||
set_fact:
|
ansible.builtin.set_fact:
|
||||||
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kubectl') }}"
|
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kubectl') }}"
|
||||||
|
|
||||||
- name: Create kubernetes resources for lookup output
|
- name: Create kubernetes resources for lookup output
|
||||||
k8s:
|
kubernetes.core.k8s:
|
||||||
definition: "{{ lookup('kubernetes.core.kustomize', dir='/path/to/kustomization') }}"
|
definition: "{{ lookup('kubernetes.core.kustomize', dir='/path/to/kustomization') }}"
|
||||||
|
|
||||||
|
- name: Create kubernetes resources for lookup output with `--enable-helm` set
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
definition: "{{ lookup('kubernetes.core.kustomize', dir='/path/to/kustomization', enable_helm=True) }}"
|
||||||
"""
|
"""
|
||||||
|
|
||||||
RETURN = """
|
RETURN = """
|
||||||
@@ -86,12 +94,20 @@ def get_binary_from_path(name, opt_dirs=None):
|
|||||||
|
|
||||||
def run_command(command):
|
def run_command(command):
|
||||||
cmd = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
cmd = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
return cmd.communicate()
|
stdout, stderr = cmd.communicate()
|
||||||
|
return cmd.returncode, stdout, stderr
|
||||||
|
|
||||||
|
|
||||||
class LookupModule(LookupBase):
|
class LookupModule(LookupBase):
|
||||||
def run(
|
def run(
|
||||||
self, terms, variables=None, dir=".", binary_path=None, opt_dirs=None, **kwargs
|
self,
|
||||||
|
terms,
|
||||||
|
variables=None,
|
||||||
|
dir=".",
|
||||||
|
binary_path=None,
|
||||||
|
opt_dirs=None,
|
||||||
|
enable_helm=False,
|
||||||
|
**kwargs
|
||||||
):
|
):
|
||||||
executable_path = binary_path
|
executable_path = binary_path
|
||||||
if executable_path is None:
|
if executable_path is None:
|
||||||
@@ -122,9 +138,21 @@ class LookupModule(LookupBase):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
(out, err) = run_command(command)
|
if enable_helm:
|
||||||
|
command += ["--enable-helm"]
|
||||||
|
|
||||||
|
(ret, out, err) = run_command(command)
|
||||||
|
if ret != 0:
|
||||||
if err:
|
if err:
|
||||||
raise AnsibleLookupError(
|
raise AnsibleLookupError(
|
||||||
"kustomize command failed with: {0}".format(err.decode("utf-8"))
|
"kustomize command failed. exit code: {0}, error: {1}".format(
|
||||||
|
ret, err.decode("utf-8")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
raise AnsibleLookupError(
|
||||||
|
"kustomize command failed with unknown error. exit code: {0}".format(
|
||||||
|
ret
|
||||||
|
)
|
||||||
)
|
)
|
||||||
return [out.decode("utf-8")]
|
return [out.decode("utf-8")]
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ AUTH_PROXY_HEADERS_SPEC = dict(
|
|||||||
)
|
)
|
||||||
|
|
||||||
AUTH_ARG_SPEC = {
|
AUTH_ARG_SPEC = {
|
||||||
"kubeconfig": {"type": "raw"},
|
"kubeconfig": {"type": "raw", "no_log": True},
|
||||||
"context": {},
|
"context": {},
|
||||||
"host": {},
|
"host": {},
|
||||||
"api_key": {"no_log": True},
|
"api_key": {"no_log": True},
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ class Discoverer(kubernetes.dynamic.discovery.Discoverer):
|
|||||||
filter(lambda resource: "/" in resource["name"], resources_response)
|
filter(lambda resource: "/" in resource["name"], resources_response)
|
||||||
)
|
)
|
||||||
for subresource in subresources_raw:
|
for subresource in subresources_raw:
|
||||||
resource, name = subresource["name"].split("/")
|
resource, name = subresource["name"].split("/", 1)
|
||||||
subresources[resource][name] = subresource
|
subresources[resource][name] = subresource
|
||||||
|
|
||||||
for resource in resources_raw:
|
for resource in resources_raw:
|
||||||
|
|||||||
@@ -77,7 +77,6 @@ def write_temp_kubeconfig(server, validate_certs=True, ca_cert=None, kubeconfig=
|
|||||||
|
|
||||||
|
|
||||||
class AnsibleHelmModule(object):
|
class AnsibleHelmModule(object):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
An Ansible module class for Kubernetes.core helm modules
|
An Ansible module class for Kubernetes.core helm modules
|
||||||
"""
|
"""
|
||||||
@@ -115,7 +114,7 @@ class AnsibleHelmModule(object):
|
|||||||
kubeconfig = self.params.get("kubeconfig")
|
kubeconfig = self.params.get("kubeconfig")
|
||||||
if kubeconfig:
|
if kubeconfig:
|
||||||
if isinstance(kubeconfig, string_types):
|
if isinstance(kubeconfig, string_types):
|
||||||
with open(kubeconfig) as fd:
|
with open(os.path.expanduser(kubeconfig)) as fd:
|
||||||
kubeconfig_content = yaml.safe_load(fd)
|
kubeconfig_content = yaml.safe_load(fd)
|
||||||
elif isinstance(kubeconfig, dict):
|
elif isinstance(kubeconfig, dict):
|
||||||
kubeconfig_content = kubeconfig
|
kubeconfig_content = kubeconfig
|
||||||
@@ -184,10 +183,10 @@ class AnsibleHelmModule(object):
|
|||||||
def get_helm_version(self):
|
def get_helm_version(self):
|
||||||
command = self.get_helm_binary() + " version"
|
command = self.get_helm_binary() + " version"
|
||||||
rc, out, err = self.run_command(command)
|
rc, out, err = self.run_command(command)
|
||||||
m = re.match(r'version.BuildInfo{Version:"v([0-9\.]*)",', out)
|
m = re.match(r'version.BuildInfo{Version:"v(.*?)",', out)
|
||||||
if m:
|
if m:
|
||||||
return m.group(1)
|
return m.group(1)
|
||||||
m = re.match(r'Client: &version.Version{SemVer:"v([0-9\.]*)", ', out)
|
m = re.match(r'Client: &version.Version{SemVer:"v(.*?)", ', out)
|
||||||
if m:
|
if m:
|
||||||
return m.group(1)
|
return m.group(1)
|
||||||
return None
|
return None
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ HELM_AUTH_ARG_SPEC = dict(
|
|||||||
type="raw",
|
type="raw",
|
||||||
aliases=["kubeconfig_path"],
|
aliases=["kubeconfig_path"],
|
||||||
fallback=(env_fallback, ["K8S_AUTH_KUBECONFIG"]),
|
fallback=(env_fallback, ["K8S_AUTH_KUBECONFIG"]),
|
||||||
|
no_log=True,
|
||||||
),
|
),
|
||||||
host=dict(type="str", fallback=(env_fallback, ["K8S_AUTH_HOST"])),
|
host=dict(type="str", fallback=(env_fallback, ["K8S_AUTH_HOST"])),
|
||||||
ca_cert=dict(
|
ca_cert=dict(
|
||||||
|
|||||||
@@ -476,7 +476,7 @@ class K8sService:
|
|||||||
if label_selectors:
|
if label_selectors:
|
||||||
params["label_selector"] = ",".join(label_selectors)
|
params["label_selector"] = ",".join(label_selectors)
|
||||||
|
|
||||||
if delete_options:
|
if delete_options and not self.module.check_mode:
|
||||||
body = {
|
body = {
|
||||||
"apiVersion": "v1",
|
"apiVersion": "v1",
|
||||||
"kind": "DeleteOptions",
|
"kind": "DeleteOptions",
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ def daemonset_ready(daemonset: ResourceInstance) -> bool:
|
|||||||
return bool(
|
return bool(
|
||||||
daemonset.status
|
daemonset.status
|
||||||
and daemonset.status.desiredNumberScheduled is not None
|
and daemonset.status.desiredNumberScheduled is not None
|
||||||
and daemonset.status.updatedNumberScheduled
|
and (daemonset.status.updatedNumberScheduled or 0)
|
||||||
== daemonset.status.desiredNumberScheduled
|
== daemonset.status.desiredNumberScheduled
|
||||||
and daemonset.status.numberReady == daemonset.status.desiredNumberScheduled
|
and daemonset.status.numberReady == daemonset.status.desiredNumberScheduled
|
||||||
and daemonset.status.observedGeneration == daemonset.metadata.generation
|
and daemonset.status.observedGeneration == daemonset.metadata.generation
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ module: helm
|
|||||||
|
|
||||||
short_description: Manages Kubernetes packages with the Helm package manager
|
short_description: Manages Kubernetes packages with the Helm package manager
|
||||||
|
|
||||||
version_added: "0.11.0"
|
version_added: 0.11.0
|
||||||
|
|
||||||
author:
|
author:
|
||||||
- Lucas Boisserie (@LucasBoisserie)
|
- Lucas Boisserie (@LucasBoisserie)
|
||||||
@@ -61,7 +61,7 @@ options:
|
|||||||
default: false
|
default: false
|
||||||
type: bool
|
type: bool
|
||||||
aliases: [ dep_up ]
|
aliases: [ dep_up ]
|
||||||
version_added: "2.4.0"
|
version_added: 2.4.0
|
||||||
release_name:
|
release_name:
|
||||||
description:
|
description:
|
||||||
- Release name to manage.
|
- Release name to manage.
|
||||||
@@ -99,7 +99,7 @@ options:
|
|||||||
default: []
|
default: []
|
||||||
type: list
|
type: list
|
||||||
elements: str
|
elements: str
|
||||||
version_added: '1.1.0'
|
version_added: 1.1.0
|
||||||
update_repo_cache:
|
update_repo_cache:
|
||||||
description:
|
description:
|
||||||
- Run C(helm repo update) before the operation. Can be run as part of the package installation or as a separate step (see Examples).
|
- Run C(helm repo update) before the operation. Can be run as part of the package installation or as a separate step (see Examples).
|
||||||
@@ -129,7 +129,7 @@ options:
|
|||||||
- string
|
- string
|
||||||
- json
|
- json
|
||||||
- file
|
- file
|
||||||
version_added: '2.4.0'
|
version_added: 2.4.0
|
||||||
reuse_values:
|
reuse_values:
|
||||||
description:
|
description:
|
||||||
- When upgrading package, specifies wether to reuse the last release's values and merge in any overrides from parameters I(release_values),
|
- When upgrading package, specifies wether to reuse the last release's values and merge in any overrides from parameters I(release_values),
|
||||||
@@ -137,14 +137,14 @@ options:
|
|||||||
- If I(reset_values) is set to C(True), this is ignored.
|
- If I(reset_values) is set to C(True), this is ignored.
|
||||||
type: bool
|
type: bool
|
||||||
required: false
|
required: false
|
||||||
version_added: '2.5.0'
|
version_added: 3.0.0
|
||||||
reset_values:
|
reset_values:
|
||||||
description:
|
description:
|
||||||
- When upgrading package, reset the values to the ones built into the chart.
|
- When upgrading package, reset the values to the ones built into the chart.
|
||||||
type: bool
|
type: bool
|
||||||
required: false
|
required: false
|
||||||
default: True
|
default: True
|
||||||
version_added: '2.5.0'
|
version_added: 3.0.0
|
||||||
|
|
||||||
#Helm options
|
#Helm options
|
||||||
disable_hook:
|
disable_hook:
|
||||||
@@ -181,7 +181,7 @@ options:
|
|||||||
- similar to C(wait_timeout) but does not required C(wait) to be activated.
|
- similar to C(wait_timeout) but does not required C(wait) to be activated.
|
||||||
- Mutually exclusive with C(wait_timeout).
|
- Mutually exclusive with C(wait_timeout).
|
||||||
type: str
|
type: str
|
||||||
version_added: "2.3.0"
|
version_added: 2.3.0
|
||||||
atomic:
|
atomic:
|
||||||
description:
|
description:
|
||||||
- If set, the installation process deletes the installation on failure.
|
- If set, the installation process deletes the installation on failure.
|
||||||
@@ -192,12 +192,12 @@ options:
|
|||||||
- Create the release namespace if not present.
|
- Create the release namespace if not present.
|
||||||
type: bool
|
type: bool
|
||||||
default: False
|
default: False
|
||||||
version_added: "0.11.1"
|
version_added: 0.11.1
|
||||||
post_renderer:
|
post_renderer:
|
||||||
description:
|
description:
|
||||||
- Path to an executable to be used for post rendering.
|
- Path to an executable to be used for post rendering.
|
||||||
type: str
|
type: str
|
||||||
version_added: "2.4.0"
|
version_added: 2.4.0
|
||||||
replace:
|
replace:
|
||||||
description:
|
description:
|
||||||
- Reuse the given name, only if that name is a deleted release which remains in the history.
|
- Reuse the given name, only if that name is a deleted release which remains in the history.
|
||||||
@@ -205,19 +205,19 @@ options:
|
|||||||
- mutually exclusive with with C(history_max).
|
- mutually exclusive with with C(history_max).
|
||||||
type: bool
|
type: bool
|
||||||
default: False
|
default: False
|
||||||
version_added: "1.11.0"
|
version_added: 1.11.0
|
||||||
skip_crds:
|
skip_crds:
|
||||||
description:
|
description:
|
||||||
- Skip custom resource definitions when installing or upgrading.
|
- Skip custom resource definitions when installing or upgrading.
|
||||||
type: bool
|
type: bool
|
||||||
default: False
|
default: False
|
||||||
version_added: "1.2.0"
|
version_added: 1.2.0
|
||||||
history_max:
|
history_max:
|
||||||
description:
|
description:
|
||||||
- Limit the maximum number of revisions saved per release.
|
- Limit the maximum number of revisions saved per release.
|
||||||
- mutually exclusive with with C(replace).
|
- mutually exclusive with with C(replace).
|
||||||
type: int
|
type: int
|
||||||
version_added: "2.2.0"
|
version_added: 2.2.0
|
||||||
extends_documentation_fragment:
|
extends_documentation_fragment:
|
||||||
- kubernetes.core.helm_common_options
|
- kubernetes.core.helm_common_options
|
||||||
"""
|
"""
|
||||||
@@ -639,6 +639,9 @@ def helmdiff_check(
|
|||||||
replace=False,
|
replace=False,
|
||||||
chart_repo_url=None,
|
chart_repo_url=None,
|
||||||
post_renderer=False,
|
post_renderer=False,
|
||||||
|
set_value_args=None,
|
||||||
|
reuse_values=None,
|
||||||
|
reset_values=True,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Use helm diff to determine if a release would change by upgrading a chart.
|
Use helm diff to determine if a release would change by upgrading a chart.
|
||||||
@@ -652,10 +655,14 @@ def helmdiff_check(
|
|||||||
if chart_version is not None:
|
if chart_version is not None:
|
||||||
cmd += " " + "--version=" + chart_version
|
cmd += " " + "--version=" + chart_version
|
||||||
if not replace:
|
if not replace:
|
||||||
cmd += " " + "--reset-values"
|
cmd += " " + "--reset-values=" + str(reset_values)
|
||||||
if post_renderer:
|
if post_renderer:
|
||||||
cmd += " --post-renderer=" + post_renderer
|
cmd += " --post-renderer=" + post_renderer
|
||||||
|
|
||||||
|
if values_files:
|
||||||
|
for value_file in values_files:
|
||||||
|
cmd += " --values=" + value_file
|
||||||
|
|
||||||
if release_values != {}:
|
if release_values != {}:
|
||||||
fd, path = tempfile.mkstemp(suffix=".yml")
|
fd, path = tempfile.mkstemp(suffix=".yml")
|
||||||
with open(path, "w") as yaml_file:
|
with open(path, "w") as yaml_file:
|
||||||
@@ -663,9 +670,11 @@ def helmdiff_check(
|
|||||||
cmd += " -f=" + path
|
cmd += " -f=" + path
|
||||||
module.add_cleanup_file(path)
|
module.add_cleanup_file(path)
|
||||||
|
|
||||||
if values_files:
|
if set_value_args:
|
||||||
for values_file in values_files:
|
cmd += " " + set_value_args
|
||||||
cmd += " -f=" + values_file
|
|
||||||
|
if reuse_values:
|
||||||
|
cmd += " --reuse-values"
|
||||||
|
|
||||||
rc, out, err = module.run_helm_command(cmd)
|
rc, out, err = module.run_helm_command(cmd)
|
||||||
return (len(out.strip()) > 0, out.strip())
|
return (len(out.strip()) > 0, out.strip())
|
||||||
@@ -847,11 +856,11 @@ def main():
|
|||||||
"Please consider add dependencies block or disable dependency_update to remove this warning."
|
"Please consider add dependencies block or disable dependency_update to remove this warning."
|
||||||
)
|
)
|
||||||
|
|
||||||
if release_status is None: # Not installed
|
|
||||||
set_value_args = None
|
set_value_args = None
|
||||||
if set_values:
|
if set_values:
|
||||||
set_value_args = module.get_helm_set_values_args(set_values)
|
set_value_args = module.get_helm_set_values_args(set_values)
|
||||||
|
|
||||||
|
if release_status is None: # Not installed
|
||||||
helm_cmd = deploy(
|
helm_cmd = deploy(
|
||||||
module,
|
module,
|
||||||
helm_cmd,
|
helm_cmd,
|
||||||
@@ -896,6 +905,9 @@ def main():
|
|||||||
replace,
|
replace,
|
||||||
chart_repo_url,
|
chart_repo_url,
|
||||||
post_renderer,
|
post_renderer,
|
||||||
|
set_value_args,
|
||||||
|
reuse_values=reuse_values,
|
||||||
|
reset_values=reset_values,
|
||||||
)
|
)
|
||||||
if would_change and module._diff:
|
if would_change and module._diff:
|
||||||
opt_result["diff"] = {"prepared": prepared}
|
opt_result["diff"] = {"prepared": prepared}
|
||||||
@@ -909,10 +921,6 @@ def main():
|
|||||||
)
|
)
|
||||||
|
|
||||||
if force or would_change:
|
if force or would_change:
|
||||||
set_value_args = None
|
|
||||||
if set_values:
|
|
||||||
set_value_args = module.get_helm_set_values_args(set_values)
|
|
||||||
|
|
||||||
helm_cmd = deploy(
|
helm_cmd = deploy(
|
||||||
module,
|
module,
|
||||||
helm_cmd,
|
helm_cmd,
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ module: helm_info
|
|||||||
|
|
||||||
short_description: Get information from Helm package deployed inside the cluster
|
short_description: Get information from Helm package deployed inside the cluster
|
||||||
|
|
||||||
version_added: "0.11.0"
|
version_added: 0.11.0
|
||||||
|
|
||||||
author:
|
author:
|
||||||
- Lucas Boisserie (@LucasBoisserie)
|
- Lucas Boisserie (@LucasBoisserie)
|
||||||
@@ -53,7 +53,7 @@ options:
|
|||||||
type: list
|
type: list
|
||||||
elements: str
|
elements: str
|
||||||
default: []
|
default: []
|
||||||
version_added: "2.3.0"
|
version_added: 2.3.0
|
||||||
get_all_values:
|
get_all_values:
|
||||||
description:
|
description:
|
||||||
- Set to C(True) if you want to get all (computed) values of the release.
|
- Set to C(True) if you want to get all (computed) values of the release.
|
||||||
@@ -61,7 +61,7 @@ options:
|
|||||||
required: false
|
required: false
|
||||||
default: false
|
default: false
|
||||||
type: bool
|
type: bool
|
||||||
version_added: "2.4.0"
|
version_added: 2.4.0
|
||||||
extends_documentation_fragment:
|
extends_documentation_fragment:
|
||||||
- kubernetes.core.helm_common_options
|
- kubernetes.core.helm_common_options
|
||||||
"""
|
"""
|
||||||
@@ -123,18 +123,18 @@ status:
|
|||||||
elements: dict
|
elements: dict
|
||||||
description: Hooks of the release
|
description: Hooks of the release
|
||||||
returned: always
|
returned: always
|
||||||
version_added: "2.4.0"
|
version_added: 2.4.0
|
||||||
notes:
|
notes:
|
||||||
type: str
|
type: str
|
||||||
description: Notes of the release
|
description: Notes of the release
|
||||||
returned: always
|
returned: always
|
||||||
version_added: "2.4.0"
|
version_added: 2.4.0
|
||||||
manifest:
|
manifest:
|
||||||
type: list
|
type: list
|
||||||
elements: dict
|
elements: dict
|
||||||
description: Manifest of the release
|
description: Manifest of the release
|
||||||
returned: always
|
returned: always
|
||||||
version_added: "2.4.0"
|
version_added: 2.4.0
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ DOCUMENTATION = r"""
|
|||||||
---
|
---
|
||||||
module: helm_plugin
|
module: helm_plugin
|
||||||
short_description: Manage Helm plugins
|
short_description: Manage Helm plugins
|
||||||
version_added: "1.0.0"
|
version_added: 1.0.0
|
||||||
author:
|
author:
|
||||||
- Abhijeet Kasurde (@Akasurde)
|
- Abhijeet Kasurde (@Akasurde)
|
||||||
requirements:
|
requirements:
|
||||||
@@ -47,7 +47,7 @@ options:
|
|||||||
- Ignored when C(state=absent) or C(state=latest).
|
- Ignored when C(state=absent) or C(state=latest).
|
||||||
required: false
|
required: false
|
||||||
type: str
|
type: str
|
||||||
version_added: "2.3.0"
|
version_added: 2.3.0
|
||||||
extends_documentation_fragment:
|
extends_documentation_fragment:
|
||||||
- kubernetes.core.helm_common_options
|
- kubernetes.core.helm_common_options
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ DOCUMENTATION = r"""
|
|||||||
---
|
---
|
||||||
module: helm_plugin_info
|
module: helm_plugin_info
|
||||||
short_description: Gather information about Helm plugins
|
short_description: Gather information about Helm plugins
|
||||||
version_added: "1.0.0"
|
version_added: 1.0.0
|
||||||
author:
|
author:
|
||||||
- Abhijeet Kasurde (@Akasurde)
|
- Abhijeet Kasurde (@Akasurde)
|
||||||
requirements:
|
requirements:
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ DOCUMENTATION = r"""
|
|||||||
---
|
---
|
||||||
module: helm_pull
|
module: helm_pull
|
||||||
short_description: download a chart from a repository and (optionally) unpack it in local directory.
|
short_description: download a chart from a repository and (optionally) unpack it in local directory.
|
||||||
version_added: "2.4.0"
|
version_added: 2.4.0
|
||||||
author:
|
author:
|
||||||
- Aubin Bikouo (@abikouo)
|
- Aubin Bikouo (@abikouo)
|
||||||
description:
|
description:
|
||||||
@@ -189,7 +189,7 @@ def main():
|
|||||||
repo_password=dict(
|
repo_password=dict(
|
||||||
type="str", no_log=True, aliases=["password", "chart_repo_password"]
|
type="str", no_log=True, aliases=["password", "chart_repo_password"]
|
||||||
),
|
),
|
||||||
pass_credentials=dict(type="bool", default=False),
|
pass_credentials=dict(type="bool", default=False, no_log=False),
|
||||||
skip_tls_certs_check=dict(type="bool", default=False),
|
skip_tls_certs_check=dict(type="bool", default=False),
|
||||||
chart_devel=dict(type="bool"),
|
chart_devel=dict(type="bool"),
|
||||||
untar_chart=dict(type="bool", default=False),
|
untar_chart=dict(type="bool", default=False),
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ module: helm_repository
|
|||||||
|
|
||||||
short_description: Manage Helm repositories.
|
short_description: Manage Helm repositories.
|
||||||
|
|
||||||
version_added: "0.11.0"
|
version_added: 0.11.0
|
||||||
|
|
||||||
author:
|
author:
|
||||||
- Lucas Boisserie (@LucasBoisserie)
|
- Lucas Boisserie (@LucasBoisserie)
|
||||||
@@ -76,12 +76,12 @@ options:
|
|||||||
description:
|
description:
|
||||||
- Provide a URL for accessing the API. Can also be specified via C(K8S_AUTH_HOST) environment variable.
|
- Provide a URL for accessing the API. Can also be specified via C(K8S_AUTH_HOST) environment variable.
|
||||||
type: str
|
type: str
|
||||||
version_added: "2.3.0"
|
version_added: 2.3.0
|
||||||
api_key:
|
api_key:
|
||||||
description:
|
description:
|
||||||
- Token used to authenticate with the API. Can also be specified via C(K8S_AUTH_API_KEY) environment variable.
|
- Token used to authenticate with the API. Can also be specified via C(K8S_AUTH_API_KEY) environment variable.
|
||||||
type: str
|
type: str
|
||||||
version_added: "2.3.0"
|
version_added: 2.3.0
|
||||||
validate_certs:
|
validate_certs:
|
||||||
description:
|
description:
|
||||||
- Whether or not to verify the API server's SSL certificates. Can also be specified via C(K8S_AUTH_VERIFY_SSL)
|
- Whether or not to verify the API server's SSL certificates. Can also be specified via C(K8S_AUTH_VERIFY_SSL)
|
||||||
@@ -89,21 +89,21 @@ options:
|
|||||||
type: bool
|
type: bool
|
||||||
aliases: [ verify_ssl ]
|
aliases: [ verify_ssl ]
|
||||||
default: True
|
default: True
|
||||||
version_added: "2.3.0"
|
version_added: 2.3.0
|
||||||
ca_cert:
|
ca_cert:
|
||||||
description:
|
description:
|
||||||
- Path to a CA certificate used to authenticate with the API. The full certificate chain must be provided to
|
- Path to a CA certificate used to authenticate with the API. The full certificate chain must be provided to
|
||||||
avoid certificate validation errors. Can also be specified via C(K8S_AUTH_SSL_CA_CERT) environment variable.
|
avoid certificate validation errors. Can also be specified via C(K8S_AUTH_SSL_CA_CERT) environment variable.
|
||||||
type: path
|
type: path
|
||||||
aliases: [ ssl_ca_cert ]
|
aliases: [ ssl_ca_cert ]
|
||||||
version_added: "2.3.0"
|
version_added: 2.3.0
|
||||||
context:
|
context:
|
||||||
description:
|
description:
|
||||||
- Helm option to specify which kubeconfig context to use.
|
- Helm option to specify which kubeconfig context to use.
|
||||||
- If the value is not specified in the task, the value of environment variable C(K8S_AUTH_CONTEXT) will be used instead.
|
- If the value is not specified in the task, the value of environment variable C(K8S_AUTH_CONTEXT) will be used instead.
|
||||||
type: str
|
type: str
|
||||||
aliases: [ kube_context ]
|
aliases: [ kube_context ]
|
||||||
version_added: "2.4.0"
|
version_added: 2.4.0
|
||||||
kubeconfig:
|
kubeconfig:
|
||||||
description:
|
description:
|
||||||
- Helm option to specify kubeconfig path to use.
|
- Helm option to specify kubeconfig path to use.
|
||||||
@@ -111,14 +111,14 @@ options:
|
|||||||
- The configuration can be provided as dictionary.
|
- The configuration can be provided as dictionary.
|
||||||
type: raw
|
type: raw
|
||||||
aliases: [ kubeconfig_path ]
|
aliases: [ kubeconfig_path ]
|
||||||
version_added: "2.4.0"
|
version_added: 2.4.0
|
||||||
force_update:
|
force_update:
|
||||||
description:
|
description:
|
||||||
- Whether or not to replace (overwrite) the repo if it already exists.
|
- Whether or not to replace (overwrite) the repo if it already exists.
|
||||||
type: bool
|
type: bool
|
||||||
aliases: [ force ]
|
aliases: [ force ]
|
||||||
default: False
|
default: False
|
||||||
version_added: "2.4.0"
|
version_added: 2.4.0
|
||||||
"""
|
"""
|
||||||
|
|
||||||
EXAMPLES = r"""
|
EXAMPLES = r"""
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ options:
|
|||||||
default: false
|
default: false
|
||||||
type: bool
|
type: bool
|
||||||
aliases: [ dep_up ]
|
aliases: [ dep_up ]
|
||||||
version_added: "2.4.0"
|
version_added: 2.4.0
|
||||||
disable_hook:
|
disable_hook:
|
||||||
description:
|
description:
|
||||||
- Prevent hooks from running during install.
|
- Prevent hooks from running during install.
|
||||||
@@ -139,7 +139,7 @@ options:
|
|||||||
- string
|
- string
|
||||||
- json
|
- json
|
||||||
- file
|
- file
|
||||||
version_added: '2.4.0'
|
version_added: 2.4.0
|
||||||
"""
|
"""
|
||||||
|
|
||||||
EXAMPLES = r"""
|
EXAMPLES = r"""
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ options:
|
|||||||
C(['strategic-merge', 'merge']), which is ideal for using the same parameters on resource kinds that
|
C(['strategic-merge', 'merge']), which is ideal for using the same parameters on resource kinds that
|
||||||
combine Custom Resources and built-in resources.
|
combine Custom Resources and built-in resources.
|
||||||
- mutually exclusive with C(apply)
|
- mutually exclusive with C(apply)
|
||||||
- I(merge_type=json) is deprecated and will be removed in version 3.0.0. Please use M(kubernetes.core.k8s_json_patch) instead.
|
- I(merge_type=json) is deprecated and will be removed in version 4.0.0. Please use M(kubernetes.core.k8s_json_patch) instead.
|
||||||
choices:
|
choices:
|
||||||
- json
|
- json
|
||||||
- merge
|
- merge
|
||||||
@@ -182,7 +182,7 @@ options:
|
|||||||
- This parameter can be used with C(label_selectors) to restrict the resources to be deleted.
|
- This parameter can be used with C(label_selectors) to restrict the resources to be deleted.
|
||||||
type: bool
|
type: bool
|
||||||
default: false
|
default: false
|
||||||
version_added: 2.5.0
|
version_added: 3.0.0
|
||||||
aliases:
|
aliases:
|
||||||
- all
|
- all
|
||||||
hidden_fields:
|
hidden_fields:
|
||||||
@@ -192,7 +192,7 @@ options:
|
|||||||
- Only field definitions that don't reference list items are supported (so V(spec.containers[0]) would not work)
|
- Only field definitions that don't reference list items are supported (so V(spec.containers[0]) would not work)
|
||||||
type: list
|
type: list
|
||||||
elements: str
|
elements: str
|
||||||
version_added: 2.5.0
|
version_added: 3.0.0
|
||||||
|
|
||||||
requirements:
|
requirements:
|
||||||
- "python >= 3.9"
|
- "python >= 3.9"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ __metaclass__ = type
|
|||||||
DOCUMENTATION = r"""
|
DOCUMENTATION = r"""
|
||||||
module: k8s_cluster_info
|
module: k8s_cluster_info
|
||||||
|
|
||||||
version_added: "0.11.1"
|
version_added: 0.11.1
|
||||||
|
|
||||||
short_description: Describe Kubernetes (K8s) cluster, APIs available and their respective versions
|
short_description: Describe Kubernetes (K8s) cluster, APIs available and their respective versions
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ module: k8s_cp
|
|||||||
|
|
||||||
short_description: Copy files and directories to and from pod.
|
short_description: Copy files and directories to and from pod.
|
||||||
|
|
||||||
version_added: "2.2.0"
|
version_added: 2.2.0
|
||||||
|
|
||||||
author:
|
author:
|
||||||
- Aubin Bikouo (@abikouo)
|
- Aubin Bikouo (@abikouo)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ module: k8s_drain
|
|||||||
|
|
||||||
short_description: Drain, Cordon, or Uncordon node in k8s cluster
|
short_description: Drain, Cordon, or Uncordon node in k8s cluster
|
||||||
|
|
||||||
version_added: "2.2.0"
|
version_added: 2.2.0
|
||||||
|
|
||||||
author: Aubin Bikouo (@abikouo)
|
author: Aubin Bikouo (@abikouo)
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ options:
|
|||||||
- This option has effect only when C(state) is set to I(drain).
|
- This option has effect only when C(state) is set to I(drain).
|
||||||
type: list
|
type: list
|
||||||
elements: str
|
elements: str
|
||||||
version_added: 2.5.0
|
version_added: 3.0.0
|
||||||
aliases:
|
aliases:
|
||||||
- label_selectors
|
- label_selectors
|
||||||
delete_options:
|
delete_options:
|
||||||
@@ -143,6 +143,7 @@ result:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
|
import json
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
@@ -187,6 +188,17 @@ except ImportError:
|
|||||||
HAS_EVICTION_API = False
|
HAS_EVICTION_API = False
|
||||||
|
|
||||||
|
|
||||||
|
def format_dynamic_api_exc(exc):
|
||||||
|
if exc.body:
|
||||||
|
if exc.headers and exc.headers.get("Content-Type") == "application/json":
|
||||||
|
message = json.loads(exc.body).get("message")
|
||||||
|
if message:
|
||||||
|
return message
|
||||||
|
return exc.body
|
||||||
|
else:
|
||||||
|
return "%s Reason: %s" % (exc.status, exc.reason)
|
||||||
|
|
||||||
|
|
||||||
def filter_pods(pods, force, ignore_daemonset, delete_emptydir_data):
|
def filter_pods(pods, force, ignore_daemonset, delete_emptydir_data):
|
||||||
k8s_kind_mirror = "kubernetes.io/config.mirror"
|
k8s_kind_mirror = "kubernetes.io/config.mirror"
|
||||||
daemonSet, unmanaged, mirror, localStorage, to_delete = [], [], [], [], []
|
daemonSet, unmanaged, mirror, localStorage, to_delete = [], [], [], [], []
|
||||||
@@ -291,16 +303,19 @@ class K8sDrainAnsible(object):
|
|||||||
return (datetime.now() - start).seconds
|
return (datetime.now() - start).seconds
|
||||||
|
|
||||||
response = None
|
response = None
|
||||||
pod = pods.pop()
|
pod = None
|
||||||
while (_elapsed_time() < wait_timeout or wait_timeout == 0) and pods:
|
while (_elapsed_time() < wait_timeout or wait_timeout == 0) and pods:
|
||||||
if not pod:
|
if not pod:
|
||||||
pod = pods.pop()
|
pod = pods[-1]
|
||||||
try:
|
try:
|
||||||
response = self._api_instance.read_namespaced_pod(
|
response = self._api_instance.read_namespaced_pod(
|
||||||
namespace=pod[0], name=pod[1]
|
namespace=pod[0], name=pod[1]
|
||||||
)
|
)
|
||||||
if not response:
|
if not response or response.spec.node_name != self._module.params.get(
|
||||||
|
"name"
|
||||||
|
):
|
||||||
pod = None
|
pod = None
|
||||||
|
del pods[-1]
|
||||||
time.sleep(wait_sleep)
|
time.sleep(wait_sleep)
|
||||||
except ApiException as exc:
|
except ApiException as exc:
|
||||||
if exc.reason != "Not Found":
|
if exc.reason != "Not Found":
|
||||||
@@ -308,6 +323,7 @@ class K8sDrainAnsible(object):
|
|||||||
msg="Exception raised: {0}".format(exc.reason)
|
msg="Exception raised: {0}".format(exc.reason)
|
||||||
)
|
)
|
||||||
pod = None
|
pod = None
|
||||||
|
del pods[-1]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self._module.fail_json(msg="Exception raised: {0}".format(to_native(e)))
|
self._module.fail_json(msg="Exception raised: {0}".format(to_native(e)))
|
||||||
if not pods:
|
if not pods:
|
||||||
@@ -334,7 +350,7 @@ class K8sDrainAnsible(object):
|
|||||||
if exc.reason != "Not Found":
|
if exc.reason != "Not Found":
|
||||||
self._module.fail_json(
|
self._module.fail_json(
|
||||||
msg="Failed to delete pod {0}/{1} due to: {2}".format(
|
msg="Failed to delete pod {0}/{1} due to: {2}".format(
|
||||||
namespace, name, exc.reason
|
namespace, name, to_native(format_dynamic_api_exc(exc))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ module: k8s_exec
|
|||||||
|
|
||||||
short_description: Execute command in Pod
|
short_description: Execute command in Pod
|
||||||
|
|
||||||
version_added: "0.10.0"
|
version_added: 0.10.0
|
||||||
|
|
||||||
author: "Tristan de Cacqueray (@tristanC)"
|
author: "Tristan de Cacqueray (@tristanC)"
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ options:
|
|||||||
- Only field definitions that don't reference list items are supported (so V(spec.containers[0]) would not work)
|
- Only field definitions that don't reference list items are supported (so V(spec.containers[0]) would not work)
|
||||||
type: list
|
type: list
|
||||||
elements: str
|
elements: str
|
||||||
version_added: 2.5.0
|
version_added: 3.0.0
|
||||||
|
|
||||||
extends_documentation_fragment:
|
extends_documentation_fragment:
|
||||||
- kubernetes.core.k8s_auth_options
|
- kubernetes.core.k8s_auth_options
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ module: k8s_log
|
|||||||
|
|
||||||
short_description: Fetch logs from Kubernetes resources
|
short_description: Fetch logs from Kubernetes resources
|
||||||
|
|
||||||
version_added: "0.10.0"
|
version_added: 0.10.0
|
||||||
|
|
||||||
author:
|
author:
|
||||||
- "Fabian von Feilitzsch (@fabianvf)"
|
- "Fabian von Feilitzsch (@fabianvf)"
|
||||||
@@ -61,26 +61,26 @@ options:
|
|||||||
- A relative time in seconds before the current time from which to show logs.
|
- A relative time in seconds before the current time from which to show logs.
|
||||||
required: no
|
required: no
|
||||||
type: str
|
type: str
|
||||||
version_added: '2.2.0'
|
version_added: 2.2.0
|
||||||
previous:
|
previous:
|
||||||
description:
|
description:
|
||||||
- If C(true), print the logs for the previous instance of the container in a pod if it exists.
|
- If C(true), print the logs for the previous instance of the container in a pod if it exists.
|
||||||
required: no
|
required: no
|
||||||
type: bool
|
type: bool
|
||||||
default: False
|
default: False
|
||||||
version_added: '2.4.0'
|
version_added: 2.4.0
|
||||||
tail_lines:
|
tail_lines:
|
||||||
description:
|
description:
|
||||||
- A number of lines from the end of the logs to retrieve.
|
- A number of lines from the end of the logs to retrieve.
|
||||||
required: no
|
required: no
|
||||||
type: int
|
type: int
|
||||||
version_added: '2.4.0'
|
version_added: 2.4.0
|
||||||
all_containers:
|
all_containers:
|
||||||
description:
|
description:
|
||||||
- If set to C(true), retrieve all containers' logs in the pod(s).
|
- If set to C(true), retrieve all containers' logs in the pod(s).
|
||||||
- mutually exclusive with C(container).
|
- mutually exclusive with C(container).
|
||||||
type: bool
|
type: bool
|
||||||
version_added: '2.4.0'
|
version_added: 2.4.0
|
||||||
|
|
||||||
requirements:
|
requirements:
|
||||||
- "python >= 3.9"
|
- "python >= 3.9"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ __metaclass__ = type
|
|||||||
DOCUMENTATION = r"""
|
DOCUMENTATION = r"""
|
||||||
module: k8s_rollback
|
module: k8s_rollback
|
||||||
short_description: Rollback Kubernetes (K8S) Deployments and DaemonSets
|
short_description: Rollback Kubernetes (K8S) Deployments and DaemonSets
|
||||||
version_added: "1.0.0"
|
version_added: 1.0.0
|
||||||
author:
|
author:
|
||||||
- "Julien Huon (@julienhuon)"
|
- "Julien Huon (@julienhuon)"
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ __metaclass__ = type
|
|||||||
DOCUMENTATION = r"""
|
DOCUMENTATION = r"""
|
||||||
module: k8s_taint
|
module: k8s_taint
|
||||||
short_description: Taint a node in a Kubernetes/OpenShift cluster
|
short_description: Taint a node in a Kubernetes/OpenShift cluster
|
||||||
version_added: "2.3.0"
|
version_added: 2.3.0
|
||||||
author: Alina Buzachis (@alinabuzachis)
|
author: Alina Buzachis (@alinabuzachis)
|
||||||
description:
|
description:
|
||||||
- Taint allows a node to refuse Pod to be scheduled unless that Pod has a matching toleration.
|
- Taint allows a node to refuse Pod to be scheduled unless that Pod has a matching toleration.
|
||||||
|
|||||||
@@ -4,4 +4,4 @@
|
|||||||
loop_control:
|
loop_control:
|
||||||
loop_var: helm_version
|
loop_var: helm_version
|
||||||
with_items:
|
with_items:
|
||||||
- "v3.7.0"
|
- "v3.8.0"
|
||||||
|
|||||||
@@ -17,8 +17,7 @@
|
|||||||
- name: Initial chart installation
|
- name: Initial chart installation
|
||||||
helm:
|
helm:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
chart_ref: redis
|
chart_ref: oci://registry-1.docker.io/bitnamicharts/redis
|
||||||
chart_repo_url: https://charts.bitnami.com/bitnami
|
|
||||||
release_name: test-redis
|
release_name: test-redis
|
||||||
release_namespace: "{{ helm_namespace }}"
|
release_namespace: "{{ helm_namespace }}"
|
||||||
create_namespace: true
|
create_namespace: true
|
||||||
@@ -42,8 +41,7 @@
|
|||||||
- name: Upgrade chart using reuse_values=true
|
- name: Upgrade chart using reuse_values=true
|
||||||
helm:
|
helm:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
chart_ref: redis
|
chart_ref: oci://registry-1.docker.io/bitnamicharts/redis
|
||||||
chart_repo_url: https://charts.bitnami.com/bitnami
|
|
||||||
release_name: test-redis
|
release_name: test-redis
|
||||||
release_namespace: "{{ helm_namespace }}"
|
release_namespace: "{{ helm_namespace }}"
|
||||||
reuse_values: true
|
reuse_values: true
|
||||||
|
|||||||
@@ -374,8 +374,8 @@
|
|||||||
chart_ref: "{{ chart_source }}"
|
chart_ref: "{{ chart_source }}"
|
||||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||||
disable_hook: True
|
disable_hook: True
|
||||||
release_name: "MyRelease"
|
release_name: "myrelease"
|
||||||
release_namespace: "MyReleaseNamespace"
|
release_namespace: "myreleasenamespace"
|
||||||
show_only:
|
show_only:
|
||||||
- "templates/configmap.yaml"
|
- "templates/configmap.yaml"
|
||||||
release_values:
|
release_values:
|
||||||
@@ -388,7 +388,7 @@
|
|||||||
- result is changed
|
- result is changed
|
||||||
- result is not failed
|
- result is not failed
|
||||||
- result.rc == 0
|
- result.rc == 0
|
||||||
- result.command is match("{{ helm_binary }} template MyRelease {{ chart_source }}")
|
- result.command is match(helm_binary+" template myrelease "+chart_source)
|
||||||
- result.stdout is search("ThisValue")
|
- result.stdout is search("ThisValue")
|
||||||
when: chart_source is search("test-chart")
|
when: chart_source is search("test-chart")
|
||||||
# limit assertion of test result to controlled (local) chart_source
|
# limit assertion of test result to controlled (local) chart_source
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: test-chart-deployment-time
|
||||||
|
description: A chart with a config map containing the deployment time in data
|
||||||
|
type: application
|
||||||
|
version: 0.1.0
|
||||||
|
appVersion: "default"
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ default "ansible-configmap" .Values.myConfigmapName }}
|
||||||
|
data:
|
||||||
|
myValue: {{ default "test" .Values.myValue }}
|
||||||
|
deploymentTime: {{ now }}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: chart-reuse-values
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
|
#
|
||||||
|
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||||
|
# to be deployed.
|
||||||
|
#
|
||||||
|
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||||
|
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||||
|
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
|
# to the chart and its templates, including the app version.
|
||||||
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
# This is the version number of the application being deployed. This version number should be
|
||||||
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
|
# It is recommended to use it with quotes.
|
||||||
|
appVersion: "1.16.0"
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: cmap
|
||||||
|
data:
|
||||||
|
ansible_version: {{ .Values.ansible_version }}
|
||||||
|
phase: {{ .Values.phase }}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ansible_version: milestone
|
||||||
|
phase: uat
|
||||||
@@ -2,3 +2,4 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
- remove_namespace
|
- remove_namespace
|
||||||
- install_helm
|
- install_helm
|
||||||
|
- setup_helm_registry
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
- name: Test helm diff functionality
|
- name: Test helm diff functionality
|
||||||
vars:
|
vars:
|
||||||
test_chart_ref: "/tmp/test-chart"
|
test_chart_ref: "/tmp/test-chart"
|
||||||
redis_chart_version: '17.0.5'
|
|
||||||
|
|
||||||
block:
|
block:
|
||||||
|
|
||||||
@@ -24,7 +23,7 @@
|
|||||||
name: test-chart
|
name: test-chart
|
||||||
namespace: "{{ helm_namespace }}"
|
namespace: "{{ helm_namespace }}"
|
||||||
chart_ref: "{{ test_chart_ref }}"
|
chart_ref: "{{ test_chart_ref }}"
|
||||||
create_namespace: yes
|
create_namespace: true
|
||||||
register: install
|
register: install
|
||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
@@ -49,8 +48,8 @@
|
|||||||
name: test-chart
|
name: test-chart
|
||||||
namespace: "{{ helm_namespace }}"
|
namespace: "{{ helm_namespace }}"
|
||||||
chart_ref: "{{ test_chart_ref }}"
|
chart_ref: "{{ test_chart_ref }}"
|
||||||
check_mode: yes
|
check_mode: true
|
||||||
diff: yes
|
diff: true
|
||||||
register: diff_result
|
register: diff_result
|
||||||
|
|
||||||
- name: Check if helm diff check is correct
|
- name: Check if helm diff check is correct
|
||||||
@@ -79,7 +78,7 @@
|
|||||||
namespace: "{{ helm_namespace }}"
|
namespace: "{{ helm_namespace }}"
|
||||||
chart_ref: "{{ test_chart_ref }}"
|
chart_ref: "{{ test_chart_ref }}"
|
||||||
check_mode: yes
|
check_mode: yes
|
||||||
diff: yes
|
diff: true
|
||||||
register: diff_result
|
register: diff_result
|
||||||
|
|
||||||
- name: Check if no diff in check mode when no change
|
- name: Check if no diff in check mode when no change
|
||||||
@@ -101,7 +100,7 @@
|
|||||||
|
|
||||||
- name: Modify values
|
- name: Modify values
|
||||||
blockinfile:
|
blockinfile:
|
||||||
create: yes
|
create: true
|
||||||
path: "{{ test_chart_ref }}/values.yml"
|
path: "{{ test_chart_ref }}/values.yml"
|
||||||
block: |
|
block: |
|
||||||
---
|
---
|
||||||
@@ -143,6 +142,8 @@
|
|||||||
chart_ref: "{{ test_chart_ref }}"
|
chart_ref: "{{ test_chart_ref }}"
|
||||||
values:
|
values:
|
||||||
foo: gaz
|
foo: gaz
|
||||||
|
values_files:
|
||||||
|
- "{{ test_chart_ref }}/values.yml"
|
||||||
register: install
|
register: install
|
||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
@@ -157,6 +158,46 @@
|
|||||||
chart_ref: "{{ test_chart_ref }}"
|
chart_ref: "{{ test_chart_ref }}"
|
||||||
values:
|
values:
|
||||||
foo: gaz
|
foo: gaz
|
||||||
|
values_files:
|
||||||
|
- "{{ test_chart_ref }}/values.yml"
|
||||||
|
register: install
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- install is not changed
|
||||||
|
|
||||||
|
- name: Upgrade with set_values
|
||||||
|
helm:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
name: test-chart
|
||||||
|
namespace: "{{ helm_namespace }}"
|
||||||
|
chart_ref: "{{ test_chart_ref }}"
|
||||||
|
values:
|
||||||
|
foo: gaz
|
||||||
|
values_files:
|
||||||
|
- "{{ test_chart_ref }}/values.yml"
|
||||||
|
set_values:
|
||||||
|
- value: foo=qux
|
||||||
|
value_type: string
|
||||||
|
register: install
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- install is changed
|
||||||
|
|
||||||
|
- name: Upgrade with set_values idempotency check
|
||||||
|
helm:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
name: test-chart
|
||||||
|
namespace: "{{ helm_namespace }}"
|
||||||
|
chart_ref: "{{ test_chart_ref }}"
|
||||||
|
values:
|
||||||
|
foo: gaz
|
||||||
|
values_files:
|
||||||
|
- "{{ test_chart_ref }}/values.yml"
|
||||||
|
set_values:
|
||||||
|
- value: foo=qux
|
||||||
|
value_type: string
|
||||||
register: install
|
register: install
|
||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
@@ -164,52 +205,76 @@
|
|||||||
- install is not changed
|
- install is not changed
|
||||||
|
|
||||||
# Test helm diff with chart_repo_url
|
# Test helm diff with chart_repo_url
|
||||||
- name: Define Redis chart values
|
|
||||||
set_fact:
|
|
||||||
redis_chart_values:
|
|
||||||
commonLabels:
|
|
||||||
phase: testing
|
|
||||||
company: RedHat
|
|
||||||
image:
|
|
||||||
tag: 6.2.6-debian-10-r135
|
|
||||||
architecture: standalone
|
|
||||||
|
|
||||||
- name: Install Redis chart
|
|
||||||
helm:
|
|
||||||
binary_path: "{{ helm_binary }}"
|
|
||||||
chart_repo_url: https://charts.bitnami.com/bitnami
|
|
||||||
chart_ref: redis
|
|
||||||
namespace: "{{ helm_namespace }}"
|
|
||||||
name: redis-chart
|
|
||||||
chart_version: "{{ redis_chart_version }}"
|
|
||||||
release_values: "{{ redis_chart_values }}"
|
|
||||||
|
|
||||||
- name: Upgrade Redis chart
|
|
||||||
helm:
|
|
||||||
binary_path: "{{ helm_binary }}"
|
|
||||||
chart_repo_url: https://charts.bitnami.com/bitnami
|
|
||||||
chart_ref: redis
|
|
||||||
namespace: "{{ helm_namespace }}"
|
|
||||||
name: redis-chart
|
|
||||||
chart_version: "{{ redis_chart_version }}"
|
|
||||||
release_values: "{{ redis_chart_values }}"
|
|
||||||
check_mode: yes
|
|
||||||
register: redis_upgrade
|
|
||||||
|
|
||||||
- name: Assert that module raised a warning
|
|
||||||
assert:
|
|
||||||
that:
|
|
||||||
- not redis_upgrade.changed
|
|
||||||
- redis_upgrade.warnings is defined
|
|
||||||
- redis_upgrade.warnings | length == 1
|
|
||||||
- redis_upgrade.warnings[0] == "The default idempotency check can fail to report changes in certain cases. Install helm diff >= 3.4.1 for better results."
|
|
||||||
|
|
||||||
- name: Uninstall helm diff
|
- name: Uninstall helm diff
|
||||||
helm_plugin:
|
helm_plugin:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
state: absent
|
state: absent
|
||||||
plugin_name: diff
|
plugin_name: diff
|
||||||
ignore_errors: yes
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Define chart variables
|
||||||
|
set_fact:
|
||||||
|
test_chart_values:
|
||||||
|
myValue: 'Some ConfigMap data value'
|
||||||
|
myConfigmapName: 'ansible-config-from-url'
|
||||||
|
test_chart_version: 0.1.0
|
||||||
|
test_chart_ref_url: "oci://localhost:6035/testing/test-chart-deployment-time"
|
||||||
|
|
||||||
|
- name: Deploy chart to remote registry
|
||||||
|
block:
|
||||||
|
- name: Create local directory to copy chart in
|
||||||
|
ansible.builtin.tempfile:
|
||||||
|
suffix: .chart
|
||||||
|
state: directory
|
||||||
|
register: _tmpd
|
||||||
|
|
||||||
|
- name: Copy local registry
|
||||||
|
ansible.builtin.copy:
|
||||||
|
dest: "{{ _tmpd.path }}"
|
||||||
|
src: '{{ role_path }}/files/test-chart-deployment-time'
|
||||||
|
|
||||||
|
- name: Push chart to helm registry
|
||||||
|
ansible.builtin.include_role:
|
||||||
|
name: push_to_helm_registry
|
||||||
|
vars:
|
||||||
|
chart_local_path: '{{ _tmpd.path }}/test-chart-deployment-time'
|
||||||
|
chart_repo_path: 'testing'
|
||||||
|
always:
|
||||||
|
- name: Delete temporary directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: absent
|
||||||
|
path: '{{ _tmpd.path }}'
|
||||||
|
|
||||||
|
- name: Log into Helm registry
|
||||||
|
ansible.builtin.command: "{{ helm_binary }} registry login -u testuser -p 'pass123!' localhost:6035"
|
||||||
|
|
||||||
|
- name: Install chart from remote URL
|
||||||
|
helm:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
chart_ref: "{{ test_chart_ref_url }}"
|
||||||
|
chart_version: 0.1.0
|
||||||
|
namespace: "{{ helm_namespace }}"
|
||||||
|
name: another-chart
|
||||||
|
release_values: "{{ test_chart_values }}"
|
||||||
|
|
||||||
|
- name: Upgrade chart
|
||||||
|
helm:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
chart_ref: "{{ test_chart_ref_url }}"
|
||||||
|
chart_version: 0.1.0
|
||||||
|
namespace: "{{ helm_namespace }}"
|
||||||
|
name: another-chart
|
||||||
|
release_values: "{{ test_chart_values }}"
|
||||||
|
check_mode: true
|
||||||
|
register: _upgrade
|
||||||
|
|
||||||
|
- name: Assert that module raised a warning
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- not _upgrade.changed
|
||||||
|
- _upgrade.warnings is defined
|
||||||
|
- _upgrade.warnings | length == 1
|
||||||
|
- _upgrade.warnings[0] == "The default idempotency check can fail to report changes in certain cases. Install helm diff >= 3.4.1 for better results."
|
||||||
|
|
||||||
- name: Install helm diff (version=3.4.1)
|
- name: Install helm diff (version=3.4.1)
|
||||||
helm_plugin:
|
helm_plugin:
|
||||||
@@ -218,37 +283,36 @@
|
|||||||
plugin_path: https://github.com/databus23/helm-diff
|
plugin_path: https://github.com/databus23/helm-diff
|
||||||
plugin_version: 3.4.1
|
plugin_version: 3.4.1
|
||||||
|
|
||||||
- name: Upgrade Redis chart once again
|
- name: Upgrade chart once again
|
||||||
helm:
|
helm:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
chart_repo_url: https://charts.bitnami.com/bitnami
|
chart_ref: "{{ test_chart_ref_url }}"
|
||||||
chart_ref: redis
|
chart_version: 0.1.0
|
||||||
namespace: "{{ helm_namespace }}"
|
namespace: "{{ helm_namespace }}"
|
||||||
name: redis-chart
|
name: another-chart
|
||||||
chart_version: "{{ redis_chart_version }}"
|
release_values: "{{ test_chart_values }}"
|
||||||
release_values: "{{ redis_chart_values }}"
|
check_mode: true
|
||||||
check_mode: yes
|
register: _upgrade_2
|
||||||
register: redis_upgrade_2
|
|
||||||
|
|
||||||
- name: Assert that module raised a warning
|
- name: Assert that module raised a warning
|
||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- redis_upgrade_2.changed
|
- _upgrade_2.changed
|
||||||
- redis_upgrade_2.warnings is not defined
|
- _upgrade_2.warnings is not defined
|
||||||
|
|
||||||
always:
|
always:
|
||||||
- name: Remove chart directory
|
- name: Remove chart directory
|
||||||
file:
|
file:
|
||||||
path: "{{ test_chart_ref }}"
|
path: "{{ test_chart_ref }}"
|
||||||
state: absent
|
state: absent
|
||||||
ignore_errors: yes
|
ignore_errors: true
|
||||||
|
|
||||||
- name: Uninstall helm diff
|
- name: Uninstall helm diff
|
||||||
helm_plugin:
|
helm_plugin:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
state: absent
|
state: absent
|
||||||
plugin_name: diff
|
plugin_name: diff
|
||||||
ignore_errors: yes
|
ignore_errors: true
|
||||||
|
|
||||||
- name: Remove helm namespace
|
- name: Remove helm namespace
|
||||||
k8s:
|
k8s:
|
||||||
@@ -256,4 +320,7 @@
|
|||||||
kind: Namespace
|
kind: Namespace
|
||||||
name: "{{ helm_namespace }}"
|
name: "{{ helm_namespace }}"
|
||||||
state: absent
|
state: absent
|
||||||
ignore_errors: yes
|
wait: true
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- include_tasks: reuse_values.yml
|
||||||
|
|||||||
93
tests/integration/targets/helm_diff/tasks/reuse_values.yml
Normal file
93
tests/integration/targets/helm_diff/tasks/reuse_values.yml
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
---
|
||||||
|
- name: Create temporary directory for helm chart
|
||||||
|
tempfile:
|
||||||
|
suffix: .helm
|
||||||
|
state: directory
|
||||||
|
register: helm_dir
|
||||||
|
|
||||||
|
- name: Test helm diff functionality
|
||||||
|
vars:
|
||||||
|
test_chart_path: "{{ helm_dir.path }}/test-chart-reuse-values"
|
||||||
|
test_release_name: "myrelease"
|
||||||
|
|
||||||
|
block:
|
||||||
|
|
||||||
|
- name: Install helm diff
|
||||||
|
kubernetes.core.helm_plugin:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
state: present
|
||||||
|
plugin_path: https://github.com/databus23/helm-diff
|
||||||
|
plugin_version: 3.9.4
|
||||||
|
|
||||||
|
- name: Copy test chart
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "test-chart-reuse-values"
|
||||||
|
dest: "{{ helm_dir.path }}"
|
||||||
|
|
||||||
|
- name: Create helm release
|
||||||
|
kubernetes.core.helm:
|
||||||
|
state: present
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
chart_ref: "{{ test_chart_path }}"
|
||||||
|
release_name: "{{ test_release_name }}"
|
||||||
|
release_namespace: "{{ helm_namespace }}"
|
||||||
|
create_namespace: true
|
||||||
|
release_values:
|
||||||
|
ansible_version: devel
|
||||||
|
phase: ci
|
||||||
|
wait: true
|
||||||
|
|
||||||
|
- name: Upgrade helm release (reset_values=false and reuse_values=true)
|
||||||
|
kubernetes.core.helm:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
chart_ref: "{{ test_chart_path }}"
|
||||||
|
reset_values: false
|
||||||
|
reuse_values: true
|
||||||
|
release_name: "{{ test_release_name }}"
|
||||||
|
release_namespace: "{{ helm_namespace }}"
|
||||||
|
values:
|
||||||
|
ansible_version: devel
|
||||||
|
register: helm_upgrade
|
||||||
|
|
||||||
|
- name: Ensure task did not reported change
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- helm_upgrade is not changed
|
||||||
|
|
||||||
|
- name: Upgrade helm release (reuse_values=true with default value for reset_values)
|
||||||
|
kubernetes.core.helm:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
chart_ref: "{{ test_chart_path }}"
|
||||||
|
reuse_values: true
|
||||||
|
release_name: "{{ test_release_name }}"
|
||||||
|
release_namespace: "{{ helm_namespace }}"
|
||||||
|
values:
|
||||||
|
ansible_version: devel
|
||||||
|
register: helm_upgrade
|
||||||
|
|
||||||
|
- name: Ensure task reported change
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- helm_upgrade is changed
|
||||||
|
|
||||||
|
always:
|
||||||
|
- name: Remove temporary directory
|
||||||
|
file:
|
||||||
|
path: "{{ helm_dir.path }}"
|
||||||
|
state: absent
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Uninstall helm diff
|
||||||
|
kubernetes.core.helm_plugin:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
state: absent
|
||||||
|
plugin_name: diff
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Remove helm namespace
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
api_version: v1
|
||||||
|
kind: Namespace
|
||||||
|
name: "{{ helm_namespace }}"
|
||||||
|
state: absent
|
||||||
|
ignore_errors: true
|
||||||
@@ -1,6 +1,10 @@
|
|||||||
---
|
---
|
||||||
- name: Test helm with in-memory kubeconfig
|
- name: Test helm with in-memory kubeconfig
|
||||||
include_tasks: "from_in_memory_kubeconfig.yml"
|
include_tasks: "from_in_memory_kubeconfig.yml"
|
||||||
|
loop_control:
|
||||||
|
loop_var: test_helm_version
|
||||||
|
with_items:
|
||||||
|
- "v3.10.3"
|
||||||
|
|
||||||
- name: Test helm with custom kubeconfig and validate_certs=false
|
- name: Test helm with custom kubeconfig and validate_certs=false
|
||||||
include_tasks: "from_kubeconfig_with_validate_certs.yml"
|
include_tasks: "from_kubeconfig_with_validate_certs.yml"
|
||||||
@@ -8,12 +12,10 @@
|
|||||||
loop_var: test_helm_version
|
loop_var: test_helm_version
|
||||||
with_items:
|
with_items:
|
||||||
- "v3.10.3"
|
- "v3.10.3"
|
||||||
- "v3.8.2"
|
|
||||||
|
|
||||||
- name: Test helm with custom kubeconfig and ca_cert
|
- name: Test helm with custom kubeconfig and ca_cert
|
||||||
include_tasks: "from_kubeconfig_with_cacert.yml"
|
include_tasks: "from_kubeconfig_with_cacert.yml"
|
||||||
loop_control:
|
loop_control:
|
||||||
loop_var: test_helm_version
|
loop_var: test_helm_version
|
||||||
with_items:
|
with_items:
|
||||||
- "v3.5.1"
|
- "v3.10.3"
|
||||||
- "v3.4.2"
|
|
||||||
|
|||||||
@@ -18,7 +18,12 @@
|
|||||||
- set_fact:
|
- set_fact:
|
||||||
saved_kubeconfig_path: "{{ _dir.path }}/config"
|
saved_kubeconfig_path: "{{ _dir.path }}/config"
|
||||||
|
|
||||||
- block:
|
- vars:
|
||||||
|
helm_repo_name: autoscaler
|
||||||
|
helm_repo_url: "https://kubernetes.github.io/autoscaler"
|
||||||
|
helm_release_name: "autoscaler"
|
||||||
|
helm_chart_name: "cluster-autoscaler"
|
||||||
|
block:
|
||||||
- name: Copy default kubeconfig
|
- name: Copy default kubeconfig
|
||||||
copy:
|
copy:
|
||||||
remote_src: true
|
remote_src: true
|
||||||
@@ -59,14 +64,14 @@
|
|||||||
- plugin_info.plugin_list != []
|
- plugin_info.plugin_list != []
|
||||||
|
|
||||||
# helm_repository, helm, helm_info
|
# helm_repository, helm, helm_info
|
||||||
- name: Add test_bitnami chart repository
|
- name: 'Add "{{ helm_repo_name }}" chart repository'
|
||||||
helm_repository:
|
helm_repository:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
name: test_bitnami
|
name: "{{ helm_repo_name }}"
|
||||||
kubeconfig: "{{ test_kubeconfig | default(omit) }}"
|
kubeconfig: "{{ test_kubeconfig | default(omit) }}"
|
||||||
validate_certs: "{{ test_validate_certs | default(omit) }}"
|
validate_certs: "{{ test_validate_certs | default(omit) }}"
|
||||||
ca_cert: "{{ test_ca_cert | default(omit) }}"
|
ca_cert: "{{ test_ca_cert | default(omit) }}"
|
||||||
repo_url: https://charts.bitnami.com/bitnami
|
repo_url: "{{ helm_repo_url }}"
|
||||||
register: repository
|
register: repository
|
||||||
|
|
||||||
- name: Assert that repository was added
|
- name: Assert that repository was added
|
||||||
@@ -77,8 +82,8 @@
|
|||||||
- name: Install chart from repository added before
|
- name: Install chart from repository added before
|
||||||
helm:
|
helm:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
name: rabbitmq
|
name: "{{ helm_release_name }}"
|
||||||
chart_ref: test_bitnami/rabbitmq
|
chart_ref: "{{ helm_repo_name }}/{{ helm_chart_name }}"
|
||||||
namespace: "{{ helm_namespace }}"
|
namespace: "{{ helm_namespace }}"
|
||||||
update_repo_cache: true
|
update_repo_cache: true
|
||||||
kubeconfig: "{{ test_kubeconfig | default(omit) }}"
|
kubeconfig: "{{ test_kubeconfig | default(omit) }}"
|
||||||
@@ -98,7 +103,7 @@
|
|||||||
kubeconfig: "{{ test_kubeconfig | default(omit) }}"
|
kubeconfig: "{{ test_kubeconfig | default(omit) }}"
|
||||||
validate_certs: "{{ test_validate_certs | default(omit) }}"
|
validate_certs: "{{ test_validate_certs | default(omit) }}"
|
||||||
ca_cert: "{{ test_ca_cert | default(omit) }}"
|
ca_cert: "{{ test_ca_cert | default(omit) }}"
|
||||||
name: "rabbitmq"
|
name: "{{ helm_release_name }}"
|
||||||
namespace: "{{ helm_namespace }}"
|
namespace: "{{ helm_namespace }}"
|
||||||
register: chart_info
|
register: chart_info
|
||||||
|
|
||||||
@@ -112,7 +117,7 @@
|
|||||||
- name: Remove chart
|
- name: Remove chart
|
||||||
helm:
|
helm:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
name: rabbitmq
|
name: "{{ helm_release_name }}"
|
||||||
namespace: "{{ helm_namespace }}"
|
namespace: "{{ helm_namespace }}"
|
||||||
kubeconfig: "{{ test_kubeconfig | default(omit) }}"
|
kubeconfig: "{{ test_kubeconfig | default(omit) }}"
|
||||||
validate_certs: "{{ test_validate_certs | default(omit) }}"
|
validate_certs: "{{ test_validate_certs | default(omit) }}"
|
||||||
@@ -131,7 +136,7 @@
|
|||||||
kubeconfig: "{{ test_kubeconfig | default(omit) }}"
|
kubeconfig: "{{ test_kubeconfig | default(omit) }}"
|
||||||
validate_certs: "{{ test_validate_certs | default(omit) }}"
|
validate_certs: "{{ test_validate_certs | default(omit) }}"
|
||||||
ca_cert: "{{ test_ca_cert | default(omit) }}"
|
ca_cert: "{{ test_ca_cert | default(omit) }}"
|
||||||
name: "rabbitmq"
|
name: "{{ helm_release_name }}"
|
||||||
namespace: "{{ helm_namespace }}"
|
namespace: "{{ helm_namespace }}"
|
||||||
register: chart_info
|
register: chart_info
|
||||||
|
|
||||||
@@ -143,7 +148,7 @@
|
|||||||
- name: Remove chart repository
|
- name: Remove chart repository
|
||||||
helm_repository:
|
helm_repository:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
name: test_bitnami
|
name: "{{ helm_repo_name }}"
|
||||||
kubeconfig: "{{ test_kubeconfig | default(omit) }}"
|
kubeconfig: "{{ test_kubeconfig | default(omit) }}"
|
||||||
validate_certs: "{{ test_validate_certs | default(omit) }}"
|
validate_certs: "{{ test_validate_certs | default(omit) }}"
|
||||||
ca_cert: "{{ test_ca_cert | default(omit) }}"
|
ca_cert: "{{ test_ca_cert | default(omit) }}"
|
||||||
@@ -192,6 +197,6 @@
|
|||||||
- name: Delete helm repository
|
- name: Delete helm repository
|
||||||
helm_repository:
|
helm_repository:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
name: test_bitnami
|
name: "{{ helm_repo_name }}"
|
||||||
state: absent
|
state: absent
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|||||||
@@ -180,6 +180,7 @@
|
|||||||
- '"--username ansible" in _result.command'
|
- '"--username ansible" in _result.command'
|
||||||
- '"--password ***" in _result.command'
|
- '"--password ***" in _result.command'
|
||||||
- '"--keyring pubring.gpg" in _result.command'
|
- '"--keyring pubring.gpg" in _result.command'
|
||||||
|
- '"Module did not set no_log for pass_credentials" not in _result.stderr'
|
||||||
|
|
||||||
- name: Download chart using chart_ref
|
- name: Download chart using chart_ref
|
||||||
helm_pull:
|
helm_pull:
|
||||||
@@ -203,9 +204,8 @@
|
|||||||
- name: Download chart using untar_chart
|
- name: Download chart using untar_chart
|
||||||
helm_pull:
|
helm_pull:
|
||||||
binary_path: "{{ helm_path }}"
|
binary_path: "{{ helm_path }}"
|
||||||
chart_ref: redis
|
chart_ref: "oci://registry-1.docker.io/bitnamicharts/redis"
|
||||||
destination: "{{ destination }}"
|
destination: "{{ destination }}"
|
||||||
repo_url: "https://charts.bitnami.com/bitnami"
|
|
||||||
untar_chart: true
|
untar_chart: true
|
||||||
register: _result
|
register: _result
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
- name: Install helm using set_values parameters
|
- name: Install helm using set_values parameters
|
||||||
helm:
|
helm:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
chart_ref: mariadb
|
chart_ref: oci://registry-1.docker.io/bitnamicharts/mariadb
|
||||||
chart_repo_url: https://charts.bitnami.com/bitnami
|
|
||||||
release_name: test-mariadb
|
release_name: test-mariadb
|
||||||
release_namespace: "{{ helm_namespace }}"
|
release_namespace: "{{ helm_namespace }}"
|
||||||
create_namespace: true
|
create_namespace: true
|
||||||
@@ -36,8 +35,7 @@
|
|||||||
- name: Install helm using set_values parameters
|
- name: Install helm using set_values parameters
|
||||||
helm:
|
helm:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
chart_ref: apache
|
chart_ref: oci://registry-1.docker.io/bitnamicharts/apache
|
||||||
chart_repo_url: https://charts.bitnami.com/bitnami
|
|
||||||
release_name: test-apache
|
release_name: test-apache
|
||||||
release_namespace: "{{ helm_namespace }}"
|
release_namespace: "{{ helm_namespace }}"
|
||||||
create_namespace: true
|
create_namespace: true
|
||||||
@@ -79,8 +77,7 @@
|
|||||||
- name: Install helm using set_values parameters
|
- name: Install helm using set_values parameters
|
||||||
helm:
|
helm:
|
||||||
binary_path: "{{ helm_binary }}"
|
binary_path: "{{ helm_binary }}"
|
||||||
chart_ref: minio
|
chart_ref: oci://registry-1.docker.io/bitnamicharts/minio
|
||||||
chart_repo_url: https://charts.bitnami.com/bitnami
|
|
||||||
release_name: test-minio
|
release_name: test-minio
|
||||||
release_namespace: "{{ helm_namespace }}"
|
release_namespace: "{{ helm_namespace }}"
|
||||||
create_namespace: true
|
create_namespace: true
|
||||||
@@ -107,3 +104,11 @@
|
|||||||
file:
|
file:
|
||||||
state: absent
|
state: absent
|
||||||
path: "{{ ymlfile.path }}"
|
path: "{{ ymlfile.path }}"
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Delete namespace
|
||||||
|
k8s:
|
||||||
|
state: absent
|
||||||
|
kind: namespace
|
||||||
|
name: "{{ helm_namespace }}"
|
||||||
|
ignore_errors: true
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
helm_version: v3.7.0
|
helm_version: v3.8.0
|
||||||
helm_install_path: /tmp/helm
|
helm_install_path: /tmp/helm
|
||||||
helm_default_archive_name: "helm-{{ helm_version }}-{{ ansible_system | lower }}-amd64.tar.gz"
|
helm_default_archive_name: "helm-{{ helm_version }}-{{ ansible_system | lower }}-amd64.tar.gz"
|
||||||
|
|||||||
@@ -26,7 +26,8 @@
|
|||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- k8s_configmap is changed
|
- k8s_configmap is changed
|
||||||
- k8s_configmap.result.metadata.annotations|default(False)
|
- '"annotations" in k8s_configmap.result.metadata'
|
||||||
|
- k8s_configmap.result.metadata.annotations != {}
|
||||||
|
|
||||||
- name: Add same configmap again
|
- name: Add same configmap again
|
||||||
k8s:
|
k8s:
|
||||||
@@ -467,7 +468,7 @@
|
|||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- k8s_secret is changed
|
- k8s_secret is changed
|
||||||
- k8s_secret.result.data.foo
|
- k8s_secret.result.data.foo != ""
|
||||||
|
|
||||||
- name: Add same secret
|
- name: Add same secret
|
||||||
k8s:
|
k8s:
|
||||||
@@ -748,7 +749,7 @@
|
|||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- _create is changed
|
- _create is changed
|
||||||
- not _info.resources
|
- _info.resources | length == 0
|
||||||
|
|
||||||
# server side apply over kubernetes client releases
|
# server side apply over kubernetes client releases
|
||||||
- name: Create temporary directory
|
- name: Create temporary directory
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
- name: Assert that there are pods
|
- name: Assert that there are pods
|
||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- pods_create.resources
|
- pods_create.resources | length > 0
|
||||||
|
|
||||||
- name: Remove the daemonset
|
- name: Remove the daemonset
|
||||||
k8s:
|
k8s:
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
- name: Assert that deleting the daemonset deleted the pods
|
- name: Assert that deleting the daemonset deleted the pods
|
||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- not pods_delete.resources
|
- pods_delete.resources | length == 0
|
||||||
|
|
||||||
# test deletion using label selector
|
# test deletion using label selector
|
||||||
- name: Deploy load balancer
|
- name: Deploy load balancer
|
||||||
@@ -152,6 +152,27 @@
|
|||||||
register: _deployment
|
register: _deployment
|
||||||
failed_when: _deployment.resources | length == 0
|
failed_when: _deployment.resources | length == 0
|
||||||
|
|
||||||
|
- name: Trying to delete nginx deployment in check mode and with deleteOptions set
|
||||||
|
k8s:
|
||||||
|
kind: Deployment
|
||||||
|
api_version: apps/v1
|
||||||
|
namespace: "{{ test_namespace }}"
|
||||||
|
name: nginx-d
|
||||||
|
state: absent
|
||||||
|
delete_options:
|
||||||
|
propagationPolicy: Foreground
|
||||||
|
check_mode: true
|
||||||
|
register: _delete
|
||||||
|
|
||||||
|
- name: Validate that Deployment nginx-d still exists
|
||||||
|
k8s_info:
|
||||||
|
kind: Deployment
|
||||||
|
api_version: apps/v1
|
||||||
|
namespace: "{{ test_namespace }}"
|
||||||
|
name: nginx-d
|
||||||
|
register: _deployment
|
||||||
|
failed_when: _deployment.resources | length != 1
|
||||||
|
|
||||||
- name: Trying to delete using delete_all=true but missing kind option
|
- name: Trying to delete using delete_all=true but missing kind option
|
||||||
k8s:
|
k8s:
|
||||||
api_version: apps/v1
|
api_version: apps/v1
|
||||||
|
|||||||
@@ -244,7 +244,7 @@
|
|||||||
kind: Pod
|
kind: Pod
|
||||||
name: '{{ drain_pod_name }}'
|
name: '{{ drain_pod_name }}'
|
||||||
register: _result
|
register: _result
|
||||||
failed_when: _result.resources
|
failed_when: _result.resources | length > 0
|
||||||
|
|
||||||
- name: assert that emptyDir pod was deleted
|
- name: assert that emptyDir pod was deleted
|
||||||
k8s_info:
|
k8s_info:
|
||||||
@@ -346,7 +346,7 @@
|
|||||||
kind: Pod
|
kind: Pod
|
||||||
name: '{{ drain_pod_name }}-01'
|
name: '{{ drain_pod_name }}-01'
|
||||||
register: _result
|
register: _result
|
||||||
failed_when: _result.resources
|
failed_when: _result.resources | length > 0
|
||||||
|
|
||||||
# test: drain using pod_selectors
|
# test: drain using pod_selectors
|
||||||
- name: Uncordon node
|
- name: Uncordon node
|
||||||
|
|||||||
@@ -394,9 +394,11 @@
|
|||||||
register: k8s_info_testing6
|
register: k8s_info_testing6
|
||||||
failed_when: not k8s_info_testing6.resources or k8s_info_testing6.resources[0].status.phase != "Active"
|
failed_when: not k8s_info_testing6.resources or k8s_info_testing6.resources[0].status.phase != "Active"
|
||||||
|
|
||||||
- name: Create large configmap data
|
- name: Create a file with specific size and attributes, to be used as swap space
|
||||||
command: dd if=/dev/urandom bs=500K count=1
|
community.general.filesize:
|
||||||
register: cmap_data
|
path: /tmp/configmap.bin
|
||||||
|
size: 500K
|
||||||
|
source: /dev/urandom
|
||||||
|
|
||||||
- name: Create configmap with large value
|
- name: Create configmap with large value
|
||||||
k8s:
|
k8s:
|
||||||
@@ -407,7 +409,7 @@
|
|||||||
name: testmap
|
name: testmap
|
||||||
namespace: testing
|
namespace: testing
|
||||||
data:
|
data:
|
||||||
testkey: "{{ cmap_data.stdout | b64encode }}"
|
testkey: "{{ lookup('file', '/tmp/configmap.bin') | b64encode }}"
|
||||||
wait: true
|
wait: true
|
||||||
register: result
|
register: result
|
||||||
|
|
||||||
@@ -424,7 +426,7 @@
|
|||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
that:
|
that:
|
||||||
- result.resources[0].data.testkey == "{{ cmap_data.stdout | b64encode }}"
|
- result.resources[0].data.testkey == (lookup('file', '/tmp/configmap.bin') | b64encode)
|
||||||
|
|
||||||
# test setting module defaults for kubernetes.core.k8s_info
|
# test setting module defaults for kubernetes.core.k8s_info
|
||||||
- block:
|
- block:
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
label_selectors:
|
label_selectors:
|
||||||
- "job=gc"
|
- "job=gc"
|
||||||
register: wait_job
|
register: wait_job
|
||||||
until: wait_job.resources
|
until: wait_job.resources | length > 0
|
||||||
retries: 5
|
retries: 5
|
||||||
delay: 10
|
delay: 10
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
label_selectors:
|
label_selectors:
|
||||||
- "job=gc"
|
- "job=gc"
|
||||||
register: wait_job
|
register: wait_job
|
||||||
until: wait_job.resources
|
until: wait_job.resources | length > 0
|
||||||
retries: 5
|
retries: 5
|
||||||
delay: 10
|
delay: 10
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@
|
|||||||
label_selectors:
|
label_selectors:
|
||||||
- "job=gc"
|
- "job=gc"
|
||||||
register: wait_job
|
register: wait_job
|
||||||
until: wait_job.resources
|
until: wait_job.resources | length > 0
|
||||||
retries: 5
|
retries: 5
|
||||||
delay: 10
|
delay: 10
|
||||||
|
|
||||||
@@ -225,7 +225,7 @@
|
|||||||
|
|
||||||
- name: Assert job is deleted
|
- name: Assert job is deleted
|
||||||
assert:
|
assert:
|
||||||
that: not job.resources
|
that: job.resources | length == 0
|
||||||
|
|
||||||
always:
|
always:
|
||||||
- name: Delete namespace
|
- name: Delete namespace
|
||||||
|
|||||||
32
tests/integration/targets/k8s_info/tasks/discovery.yml
Normal file
32
tests/integration/targets/k8s_info/tasks/discovery.yml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
# Testing fix for issue https://github.com/ansible-collections/kubernetes.core/pull/676
|
||||||
|
- vars:
|
||||||
|
kubevirt_release: "v1.1.1"
|
||||||
|
block:
|
||||||
|
- name: Delete existing namespace
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
kind: namespace
|
||||||
|
namespace: kubevirt
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
- name: Create kubevirt resources
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
apply: true
|
||||||
|
src: "{{ item }}"
|
||||||
|
with_items:
|
||||||
|
- "https://github.com/kubevirt/kubevirt/releases/download/{{ kubevirt_release }}/kubevirt-operator.yaml"
|
||||||
|
- "https://github.com/kubevirt/kubevirt/releases/download/{{ kubevirt_release }}/kubevirt-cr.yaml"
|
||||||
|
|
||||||
|
- name: Read kubevirt Deployment
|
||||||
|
k8s_info:
|
||||||
|
kind: Deployment
|
||||||
|
namespace: kubevirt
|
||||||
|
always:
|
||||||
|
- name: Delete existing namespace
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
kind: namespace
|
||||||
|
namespace: kubevirt
|
||||||
|
state: absent
|
||||||
|
wait: true
|
||||||
|
ignore_errors: true
|
||||||
@@ -3,3 +3,4 @@
|
|||||||
with_items:
|
with_items:
|
||||||
- wait
|
- wait
|
||||||
- api-server-caching
|
- api-server-caching
|
||||||
|
- discovery
|
||||||
|
|||||||
@@ -192,7 +192,7 @@
|
|||||||
- name: Check that module waited
|
- name: Check that module waited
|
||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- "{{ lookup('pipe', 'date +%s') }} - {{ start }} > 30"
|
- ( lookup('pipe', 'date +%s')|int - start|int ) > 30
|
||||||
|
|
||||||
- name: Create simple pod
|
- name: Create simple pod
|
||||||
k8s:
|
k8s:
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
- result.changed
|
- result.changed
|
||||||
- result.result.metadata.labels.label2 == "bar"
|
- result.result.metadata.labels.label2 == "bar"
|
||||||
- result.result.spec.containers[0].image == "busybox:glibc"
|
- result.result.spec.containers[0].image == "busybox:glibc"
|
||||||
- result.diff
|
- result.diff != {}
|
||||||
|
|
||||||
- name: Describe pod
|
- name: Describe pod
|
||||||
kubernetes.core.k8s_info:
|
kubernetes.core.k8s_info:
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
- name: Update directory permissions
|
- name: Update directory permissions
|
||||||
file:
|
file:
|
||||||
path: "{{ manifests_dir.path }}"
|
path: "{{ manifests_dir.path }}"
|
||||||
mode: 0755
|
mode: '0755'
|
||||||
|
|
||||||
- name: Create manifests files
|
- name: Create manifests files
|
||||||
copy:
|
copy:
|
||||||
|
|||||||
@@ -129,7 +129,7 @@
|
|||||||
that:
|
that:
|
||||||
- scale_down is changed
|
- scale_down is changed
|
||||||
- '"duration" in scale_down'
|
- '"duration" in scale_down'
|
||||||
- scale_down.diff
|
- scale_down.diff != {}
|
||||||
|
|
||||||
- name: Scale the deployment once again (idempotency)
|
- name: Scale the deployment once again (idempotency)
|
||||||
k8s_scale:
|
k8s_scale:
|
||||||
@@ -274,7 +274,7 @@
|
|||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- scale_down_no_wait is changed
|
- scale_down_no_wait is changed
|
||||||
- scale_down_no_wait.diff
|
- scale_down_no_wait.diff != {}
|
||||||
- scale_down_no_wait_pods.resources | length == 1
|
- scale_down_no_wait_pods.resources | length == 1
|
||||||
|
|
||||||
# scale multiple resource using label selectors
|
# scale multiple resource using label selectors
|
||||||
|
|||||||
@@ -421,7 +421,7 @@
|
|||||||
- name: Assert that taints have been removed
|
- name: Assert that taints have been removed
|
||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- _result.resources | selectattr('spec.taints', 'undefined')
|
- _result.resources | selectattr('spec.taints', 'undefined') | list | length > 0
|
||||||
|
|
||||||
always:
|
always:
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
kubernetes.core.k8s_service:
|
kubernetes.core.k8s_service:
|
||||||
template: "pod_one.j2"
|
template: "pod_one.j2"
|
||||||
state: present
|
state: present
|
||||||
ignore_errors: yes
|
ignore_errors: true
|
||||||
register: r
|
register: r
|
||||||
|
|
||||||
- name: Check for expected failures in last tasks
|
- name: Check for expected failures in last tasks
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
k8s_pod_name_one: pod
|
k8s_pod_name_one: pod
|
||||||
k8s_pod_namespace: "{{ template_namespace }}"
|
k8s_pod_namespace: "{{ template_namespace }}"
|
||||||
register: r
|
register: r
|
||||||
ignore_errors: yes
|
ignore_errors: true
|
||||||
|
|
||||||
- name: Check if definition and template are mutually exclusive
|
- name: Check if definition and template are mutually exclusive
|
||||||
assert:
|
assert:
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
k8s_pod_name_one: pod
|
k8s_pod_name_one: pod
|
||||||
k8s_pod_namespace: "{{ template_namespace }}"
|
k8s_pod_namespace: "{{ template_namespace }}"
|
||||||
register: r
|
register: r
|
||||||
ignore_errors: yes
|
ignore_errors: true
|
||||||
|
|
||||||
- name: Check if src and template are mutually exclusive
|
- name: Check if src and template are mutually exclusive
|
||||||
assert:
|
assert:
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
- name: Create pod using template (direct specification)
|
- name: Create pod using template (direct specification)
|
||||||
kubernetes.core.k8s:
|
kubernetes.core.k8s:
|
||||||
template: "pod_one.j2"
|
template: "pod_one.j2"
|
||||||
wait: yes
|
wait: true
|
||||||
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||||
vars:
|
vars:
|
||||||
k8s_pod_name_one: pod-1
|
k8s_pod_name_one: pod-1
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
kubernetes.core.k8s:
|
kubernetes.core.k8s:
|
||||||
template:
|
template:
|
||||||
- default
|
- default
|
||||||
wait: yes
|
wait: true
|
||||||
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||||
vars:
|
vars:
|
||||||
k8s_pod_name_one: pod-2
|
k8s_pod_name_one: pod-2
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
kubernetes.core.k8s:
|
kubernetes.core.k8s:
|
||||||
template:
|
template:
|
||||||
path: "pod_one.j2"
|
path: "pod_one.j2"
|
||||||
wait: yes
|
wait: true
|
||||||
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||||
vars:
|
vars:
|
||||||
k8s_pod_name_one: pod-3
|
k8s_pod_name_one: pod-3
|
||||||
@@ -114,12 +114,11 @@
|
|||||||
path: "pod_two.j2"
|
path: "pod_two.j2"
|
||||||
variable_start_string: '[['
|
variable_start_string: '[['
|
||||||
variable_end_string: ']]'
|
variable_end_string: ']]'
|
||||||
wait: yes
|
wait: true
|
||||||
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||||
vars:
|
vars:
|
||||||
k8s_pod_name_two: pod-4
|
k8s_pod_name_two: pod-4
|
||||||
k8s_pod_namespace: "[[ template_namespace ]]"
|
k8s_pod_namespace: "template-test"
|
||||||
ansible_python_interpreter: "[[ ansible_playbook_python ]]"
|
|
||||||
register: r
|
register: r
|
||||||
|
|
||||||
- name: Assert that pod creation succeeded using template
|
- name: Assert that pod creation succeeded using template
|
||||||
@@ -131,7 +130,7 @@
|
|||||||
kubernetes.core.k8s:
|
kubernetes.core.k8s:
|
||||||
template:
|
template:
|
||||||
path: "pod_three.j2"
|
path: "pod_three.j2"
|
||||||
wait: yes
|
wait: true
|
||||||
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||||
vars:
|
vars:
|
||||||
k8s_pod_name_three_one: pod-5
|
k8s_pod_name_three_one: pod-5
|
||||||
@@ -152,7 +151,7 @@
|
|||||||
variable_start_string: '[['
|
variable_start_string: '[['
|
||||||
variable_end_string: ']]'
|
variable_end_string: ']]'
|
||||||
- path: "pod_three.j2"
|
- path: "pod_three.j2"
|
||||||
wait: yes
|
wait: true
|
||||||
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||||
vars:
|
vars:
|
||||||
k8s_pod_name_one: pod-7
|
k8s_pod_name_one: pod-7
|
||||||
@@ -239,63 +238,6 @@
|
|||||||
- resource.result.results | selectattr('changed') | list | length == 1
|
- resource.result.results | selectattr('changed') | list | length == 1
|
||||||
- resource.result.results | selectattr('error', 'defined') | list | length == 1
|
- resource.result.results | selectattr('error', 'defined') | list | length == 1
|
||||||
|
|
||||||
# Test resource definition using template with 'omit'
|
|
||||||
- name: Deploy configmap using template
|
|
||||||
k8s:
|
|
||||||
namespace: "{{ template_namespace }}"
|
|
||||||
name: test-data
|
|
||||||
template: configmap.yml.j2
|
|
||||||
|
|
||||||
- name: Read configmap created
|
|
||||||
k8s_info:
|
|
||||||
kind: configmap
|
|
||||||
namespace: "{{ template_namespace }}"
|
|
||||||
name: test-data
|
|
||||||
register: _configmap
|
|
||||||
|
|
||||||
- name: Validate that the configmap does not contains annotations
|
|
||||||
assert:
|
|
||||||
that:
|
|
||||||
- '"annotations" not in _configmap.resources.0.metadata'
|
|
||||||
|
|
||||||
- name: Create resource once again
|
|
||||||
k8s:
|
|
||||||
namespace: "{{ template_namespace }}"
|
|
||||||
name: test-data
|
|
||||||
template: configmap.yml.j2
|
|
||||||
register: _configmap
|
|
||||||
|
|
||||||
- name: assert that nothing changed
|
|
||||||
assert:
|
|
||||||
that:
|
|
||||||
- _configmap is not changed
|
|
||||||
|
|
||||||
- name: Create resource once again (using description)
|
|
||||||
k8s:
|
|
||||||
namespace: "{{ template_namespace }}"
|
|
||||||
name: test-data
|
|
||||||
template: configmap.yml.j2
|
|
||||||
register: _configmap
|
|
||||||
vars:
|
|
||||||
k8s_configmap_desc: "This is a simple configmap used to test ansible k8s collection"
|
|
||||||
|
|
||||||
- name: assert that configmap was changed
|
|
||||||
assert:
|
|
||||||
that:
|
|
||||||
- _configmap is changed
|
|
||||||
|
|
||||||
- name: Read configmap created
|
|
||||||
k8s_info:
|
|
||||||
kind: configmap
|
|
||||||
namespace: "{{ template_namespace }}"
|
|
||||||
name: test-data
|
|
||||||
register: _configmap
|
|
||||||
|
|
||||||
- name: Validate that the configmap does not contains annotations
|
|
||||||
assert:
|
|
||||||
that:
|
|
||||||
- _configmap.resources.0.metadata.annotations.description == "This is a simple configmap used to test ansible k8s collection"
|
|
||||||
|
|
||||||
always:
|
always:
|
||||||
- name: Remove namespace (Cleanup)
|
- name: Remove namespace (Cleanup)
|
||||||
kubernetes.core.k8s:
|
kubernetes.core.k8s:
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
description: "{{ k8s_configmap_desc | default(omit) }}"
|
|
||||||
data:
|
|
||||||
key: "testing-template"
|
|
||||||
@@ -5,6 +5,7 @@ k8s_pod_metadata:
|
|||||||
|
|
||||||
k8s_pod_spec:
|
k8s_pod_spec:
|
||||||
serviceAccount: "{{ k8s_pod_service_account }}"
|
serviceAccount: "{{ k8s_pod_service_account }}"
|
||||||
|
nodeSelector: "{{ k8s_pod_node_selector }}"
|
||||||
containers:
|
containers:
|
||||||
- image: "{{ k8s_pod_image }}"
|
- image: "{{ k8s_pod_image }}"
|
||||||
imagePullPolicy: Always
|
imagePullPolicy: Always
|
||||||
@@ -33,6 +34,8 @@ k8s_pod_ports: []
|
|||||||
|
|
||||||
k8s_pod_env: []
|
k8s_pod_env: []
|
||||||
|
|
||||||
|
k8s_pod_node_selector: {}
|
||||||
|
|
||||||
k8s_pod_template:
|
k8s_pod_template:
|
||||||
metadata: "{{ k8s_pod_metadata }}"
|
metadata: "{{ k8s_pod_metadata }}"
|
||||||
spec: "{{ k8s_pod_spec }}"
|
spec: "{{ k8s_pod_spec }}"
|
||||||
|
|||||||
@@ -127,6 +127,48 @@
|
|||||||
- ds.result.status.currentNumberScheduled == ds.result.status.desiredNumberScheduled
|
- ds.result.status.currentNumberScheduled == ds.result.status.desiredNumberScheduled
|
||||||
- updated_ds_pods.resources[0].spec.containers[0].image.endswith(":3")
|
- updated_ds_pods.resources[0].spec.containers[0].image.endswith(":3")
|
||||||
|
|
||||||
|
- name: Create daemonset with nodeSelector and not existing label
|
||||||
|
k8s:
|
||||||
|
definition:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: DaemonSet
|
||||||
|
metadata:
|
||||||
|
name: wait-daemonset-not-existing-label
|
||||||
|
namespace: "{{ wait_namespace }}"
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: "{{ k8s_pod_name }}"
|
||||||
|
template: "{{ k8s_pod_template }}"
|
||||||
|
wait: yes
|
||||||
|
wait_sleep: 5
|
||||||
|
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||||
|
vars:
|
||||||
|
k8s_pod_name: wait-daemonset-not-existing-label
|
||||||
|
k8s_pod_image: gcr.io/kuar-demo/kuard-amd64:1
|
||||||
|
k8s_pod_command:
|
||||||
|
- sleep
|
||||||
|
- "600"
|
||||||
|
k8s_pod_node_selector:
|
||||||
|
nonExisitingLabel: test-not-exiting-label
|
||||||
|
register: ds_not_existing_label
|
||||||
|
|
||||||
|
- name: Get updated pods
|
||||||
|
k8s_info:
|
||||||
|
api_version: v1
|
||||||
|
kind: Pod
|
||||||
|
namespace: "{{ wait_namespace }}"
|
||||||
|
label_selectors:
|
||||||
|
- app=wait-daemonset-not-existing-label
|
||||||
|
register: updated_ds_pods_not_existing_label
|
||||||
|
|
||||||
|
- name: Check that daemonset wait worked (when desired number is 0)
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- ds_not_existing_label.result.status.currentNumberScheduled == ds_not_existing_label.result.status.desiredNumberScheduled
|
||||||
|
- ds_not_existing_label.result.status.desiredNumberScheduled == 0
|
||||||
|
- updated_ds_pods_not_existing_label.resources | length == 0
|
||||||
|
|
||||||
- name: Add a statefulset
|
- name: Add a statefulset
|
||||||
k8s:
|
k8s:
|
||||||
definition:
|
definition:
|
||||||
|
|||||||
@@ -56,8 +56,8 @@
|
|||||||
# Without wantlist=True lookup should return mapping
|
# Without wantlist=True lookup should return mapping
|
||||||
- test5 is mapping
|
- test5 is mapping
|
||||||
- test6 is mapping
|
- test6 is mapping
|
||||||
# errors='ignore'
|
# errors='ignore' (return null with ansible-core 2.19)
|
||||||
- test7 is string
|
- test7 is string or not test7
|
||||||
- test8 is not defined
|
- test8 is not defined
|
||||||
|
|
||||||
- name: Create another namespace with label
|
- name: Create another namespace with label
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
- name: make script as executable
|
- name: make script as executable
|
||||||
file:
|
file:
|
||||||
path: "{{ tmp_dir_path }}/install_kustomize.sh"
|
path: "{{ tmp_dir_path }}/install_kustomize.sh"
|
||||||
mode: 0755
|
mode: '0755'
|
||||||
|
|
||||||
- name: Install kustomize
|
- name: Install kustomize
|
||||||
command: "{{ tmp_dir_path }}/install_kustomize.sh"
|
command: "{{ tmp_dir_path }}/install_kustomize.sh"
|
||||||
|
|||||||
1
tests/integration/targets/push_to_helm_registry/aliases
Normal file
1
tests/integration/targets/push_to_helm_registry/aliases
Normal file
@@ -0,0 +1 @@
|
|||||||
|
disabled
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
helm_binary_path: "helm"
|
||||||
|
chart_repo_url: 'localhost:6035'
|
||||||
|
chart_repo_username: testuser
|
||||||
|
chart_repo_password: 'pass123!'
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure we can log into the helm registry
|
||||||
|
command: >-
|
||||||
|
{{ helm_binary_path }} registry login
|
||||||
|
-u {{ chart_repo_username }}
|
||||||
|
-p {{ chart_repo_password }}
|
||||||
|
{{ chart_repo_url }}
|
||||||
|
|
||||||
|
- name: Package chart and push to helm registry
|
||||||
|
block:
|
||||||
|
- name: Create temporary directory to store chart
|
||||||
|
ansible.builtin.tempfile:
|
||||||
|
state: directory
|
||||||
|
suffix: .chart
|
||||||
|
register: _tmpfile
|
||||||
|
|
||||||
|
- name: Package helm chart
|
||||||
|
command: '{{ helm_binary_path }} package {{ chart_local_path }} --destination {{ _tmpfile.path }}'
|
||||||
|
|
||||||
|
- name: Locate helm chart package
|
||||||
|
ansible.builtin.find:
|
||||||
|
paths: "{{ _tmpfile.path }}"
|
||||||
|
patterns: '*.tgz'
|
||||||
|
register: _files
|
||||||
|
|
||||||
|
- name: Helm push chart to the registry
|
||||||
|
command: '{{ helm_binary_path }} push {{ _files.files.0.path }} oci://{{ chart_repo_url }}/{{ chart_repo_path }}'
|
||||||
|
|
||||||
|
always:
|
||||||
|
- name: Logout from registry
|
||||||
|
command: '{{ helm_binary_path }} registry logout {{ chart_repo_url }}'
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Delete temporary directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: absent
|
||||||
|
path: '{{ _tmpfile.path }}'
|
||||||
|
ignore_errors: true
|
||||||
1
tests/integration/targets/setup_helm_registry/aliases
Normal file
1
tests/integration/targets/setup_helm_registry/aliases
Normal file
@@ -0,0 +1 @@
|
|||||||
|
disabled
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
# user: testuser, password: pass123!
|
||||||
|
registry_credentials: testuser:$2y$05$d8tw6L1hojRFW.FjHOAnIOihJWAvFb0/Pu/30hLbQNJIYzCmlyBCi
|
||||||
|
registry_name: helm_registry
|
||||||
|
registry_port: 6035
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
- name: Teardown registry
|
||||||
|
include_tasks: teardown_registry.yml
|
||||||
32
tests/integration/targets/setup_helm_registry/tasks/main.yml
Normal file
32
tests/integration/targets/setup_helm_registry/tasks/main.yml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure we can talk to docker daemon
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: docker ps
|
||||||
|
|
||||||
|
- name: Create temporary directory to store file in
|
||||||
|
tempfile:
|
||||||
|
state: directory
|
||||||
|
suffix: .helm_registry
|
||||||
|
register: _tmpfile
|
||||||
|
# notify:
|
||||||
|
# - Teardown registry
|
||||||
|
|
||||||
|
- name: Create authentication file
|
||||||
|
copy:
|
||||||
|
content: "{{ registry_credentials }}"
|
||||||
|
dest: "{{ _tmpfile.path }}/htpasswd"
|
||||||
|
|
||||||
|
- name: Remove existing registry
|
||||||
|
ansible.builtin.include_tasks: remove_docker_container.yml
|
||||||
|
|
||||||
|
- name: Create registry container
|
||||||
|
command: >-
|
||||||
|
docker run -d
|
||||||
|
-p {{ registry_port }}:5000
|
||||||
|
--restart=always
|
||||||
|
--name "{{ registry_name }}"
|
||||||
|
-v "{{ _tmpfile.path }}:/auth"
|
||||||
|
-e "REGISTRY_AUTH=htpasswd"
|
||||||
|
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"
|
||||||
|
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
|
||||||
|
registry:2
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
- name: Inspect docker container
|
||||||
|
command: docker container inspect {{ registry_name }} -f '{{ '{{' }} .State.Running {{ '}}' }}'
|
||||||
|
register: _inspect
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Remove container
|
||||||
|
when: _inspect.rc == 0
|
||||||
|
block:
|
||||||
|
- name: Stop running container
|
||||||
|
command: docker container stop {{ registry_name }}
|
||||||
|
when: _inspect.stdout == "true"
|
||||||
|
|
||||||
|
- name: Remove container
|
||||||
|
command: docker container rm {{ registry_name }}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
- name: Remove Docker container
|
||||||
|
ansible.builtin.include_tasks: remove_docker_container.yml
|
||||||
|
|
||||||
|
- name: Delete temporary directory
|
||||||
|
file:
|
||||||
|
state: absent
|
||||||
|
path: '{{ _tmpfile.path }}'
|
||||||
|
ignore_errors: true
|
||||||
@@ -4,10 +4,17 @@
|
|||||||
namespace_to_create: "{{ item.name | default(item) }}"
|
namespace_to_create: "{{ item.name | default(item) }}"
|
||||||
namespace_labels: "{{ item.labels | default(omit) }}"
|
namespace_labels: "{{ item.labels | default(omit) }}"
|
||||||
with_items: "{{ test_namespace }}"
|
with_items: "{{ test_namespace }}"
|
||||||
when: test_namespace | type_debug == "list"
|
when:
|
||||||
|
- test_namespace is not string
|
||||||
|
- test_namespace is not mapping
|
||||||
|
- test_namespace is iterable
|
||||||
|
|
||||||
- include_tasks: tasks/create.yml
|
- include_tasks: tasks/create.yml
|
||||||
vars:
|
vars:
|
||||||
namespace_to_create: "{{ test_namespace }}"
|
namespace_to_create: "{{ test_namespace }}"
|
||||||
namespace_labels: "{{ test_namespace_labels | default(omit) }}"
|
namespace_labels: "{{ test_namespace_labels | default(omit) }}"
|
||||||
when: test_namespace | type_debug == "AnsibleUnicode"
|
when:
|
||||||
|
- test_namespace is string
|
||||||
|
- test_namespace is iterable
|
||||||
|
- test_namespace is sequence
|
||||||
|
- test_namespace is not mapping
|
||||||
|
|||||||
@@ -1,616 +0,0 @@
|
|||||||
plugins/module_utils/client/discovery.py import-3.6!skip
|
|
||||||
plugins/module_utils/client/discovery.py import-3.7!skip
|
|
||||||
plugins/module_utils/client/discovery.py import-3.8!skip
|
|
||||||
plugins/module_utils/client/discovery.py import-3.9!skip
|
|
||||||
plugins/module_utils/client/resource.py import-3.6!skip
|
|
||||||
plugins/module_utils/client/resource.py import-3.7!skip
|
|
||||||
plugins/module_utils/client/resource.py import-3.8!skip
|
|
||||||
plugins/module_utils/client/resource.py import-3.9!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-3.6!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-3.7!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-3.8!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-3.9!skip
|
|
||||||
tests/unit/module_utils/fixtures/definitions.yml yamllint!skip
|
|
||||||
tests/unit/module_utils/fixtures/deployments.yml yamllint!skip
|
|
||||||
tests/unit/module_utils/fixtures/pods.yml yamllint!skip
|
|
||||||
tests/integration/targets/helm/files/appversionless-chart-v2/templates/configmap.yaml yamllint!skip
|
|
||||||
tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip
|
|
||||||
tests/integration/targets/helm/files/test-chart-v2/templates/configmap.yaml yamllint!skip
|
|
||||||
tests/integration/targets/helm/files/test-chart/templates/configmap.yaml yamllint!skip
|
|
||||||
tests/integration/targets/helm_diff/files/test-chart/templates/configmap.yaml yamllint!skip
|
|
||||||
tests/integration/targets/k8s_scale/files/deployment.yaml yamllint!skip
|
|
||||||
tests/sanity/refresh_ignore_files shebang!skip
|
|
||||||
plugins/doc_fragments/k8s_name_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/__init__.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/helm.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/apply.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/hashes.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/helm_args_common.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/version.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/_version.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/copy.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/args_common.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/__init__.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/selector.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/common.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/exceptions.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/client/resource.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/client/discovery.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/resource.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/core.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/client.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/runner.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/service.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py future-import-boilerplate!skip
|
|
||||||
plugins/connection/kubectl.py future-import-boilerplate!skip
|
|
||||||
plugins/inventory/k8s.py future-import-boilerplate!skip
|
|
||||||
plugins/lookup/k8s.py future-import-boilerplate!skip
|
|
||||||
plugins/lookup/kustomize.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_scale.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/helm_template.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_exec.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/helm.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/helm_plugin_info.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/helm_info.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/helm_repository.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_rollback.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_log.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_drain.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/helm_plugin.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_taint.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_service.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_info.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_cp.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/__init__.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_json_patch.py future-import-boilerplate!skip
|
|
||||||
plugins/action/k8s_info.py future-import-boilerplate!skip
|
|
||||||
plugins/filter/k8s.py future-import-boilerplate!skip
|
|
||||||
tests/unit/conftest.py future-import-boilerplate!skip
|
|
||||||
tests/unit/utils/ansible_module_mock.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_helm.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_marshal.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_discoverer.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_hashes.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_resource.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_service.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_waiter.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_common.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_selector.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_apply.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_runner.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_client.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_core.py future-import-boilerplate!skip
|
|
||||||
tests/unit/modules/test_helm_template_module.py future-import-boilerplate!skip
|
|
||||||
tests/unit/modules/test_helm_template.py future-import-boilerplate!skip
|
|
||||||
tests/unit/modules/test_module_helm.py future-import-boilerplate!skip
|
|
||||||
tests/unit/action/test_remove_omit.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_name_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/__init__.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/helm.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/apply.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/hashes.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/helm_args_common.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/version.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/_version.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/copy.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/args_common.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/__init__.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/selector.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/common.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/exceptions.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/client/resource.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/client/discovery.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/resource.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/core.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/client.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/runner.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/service.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py metaclass-boilerplate!skip
|
|
||||||
plugins/connection/kubectl.py metaclass-boilerplate!skip
|
|
||||||
plugins/inventory/k8s.py metaclass-boilerplate!skip
|
|
||||||
plugins/lookup/k8s.py metaclass-boilerplate!skip
|
|
||||||
plugins/lookup/kustomize.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_scale.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/helm_template.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_exec.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/helm.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/helm_plugin_info.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/helm_info.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/helm_repository.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_rollback.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_log.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_drain.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/helm_plugin.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_taint.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_service.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_info.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_cp.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/__init__.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_json_patch.py metaclass-boilerplate!skip
|
|
||||||
plugins/action/k8s_info.py metaclass-boilerplate!skip
|
|
||||||
plugins/filter/k8s.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/conftest.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/utils/ansible_module_mock.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_helm.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_marshal.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_discoverer.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_hashes.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_resource.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_service.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_waiter.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_common.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_selector.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_apply.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_runner.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_client.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_core.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/modules/test_helm_template_module.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/modules/test_helm_template.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/modules/test_module_helm.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/action/test_remove_omit.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_scale.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_scale.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_scale.py import-3.5!skip
|
|
||||||
plugins/modules/helm_template.py import-2.6!skip
|
|
||||||
plugins/modules/helm_template.py import-2.7!skip
|
|
||||||
plugins/modules/helm_template.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_exec.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_exec.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_exec.py import-3.5!skip
|
|
||||||
plugins/modules/helm.py import-2.6!skip
|
|
||||||
plugins/modules/helm.py import-2.7!skip
|
|
||||||
plugins/modules/helm.py import-3.5!skip
|
|
||||||
plugins/modules/helm_plugin_info.py import-2.6!skip
|
|
||||||
plugins/modules/helm_plugin_info.py import-2.7!skip
|
|
||||||
plugins/modules/helm_plugin_info.py import-3.5!skip
|
|
||||||
plugins/modules/helm_info.py import-2.6!skip
|
|
||||||
plugins/modules/helm_info.py import-2.7!skip
|
|
||||||
plugins/modules/helm_info.py import-3.5!skip
|
|
||||||
plugins/modules/helm_repository.py import-2.6!skip
|
|
||||||
plugins/modules/helm_repository.py import-2.7!skip
|
|
||||||
plugins/modules/helm_repository.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_rollback.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_rollback.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_rollback.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_log.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_log.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_log.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_drain.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_drain.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_drain.py import-3.5!skip
|
|
||||||
plugins/modules/helm_plugin.py import-2.6!skip
|
|
||||||
plugins/modules/helm_plugin.py import-2.7!skip
|
|
||||||
plugins/modules/helm_plugin.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_taint.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_taint.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_taint.py import-3.5!skip
|
|
||||||
plugins/modules/k8s.py import-2.6!skip
|
|
||||||
plugins/modules/k8s.py import-2.7!skip
|
|
||||||
plugins/modules/k8s.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_service.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_service.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_service.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_info.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_info.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_info.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_cp.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_cp.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_cp.py import-3.5!skip
|
|
||||||
plugins/modules/__init__.py import-2.6!skip
|
|
||||||
plugins/modules/__init__.py import-2.7!skip
|
|
||||||
plugins/modules/__init__.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_json_patch.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_json_patch.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_json_patch.py import-3.5!skip
|
|
||||||
plugins/module_utils/helm.py import-2.6!skip
|
|
||||||
plugins/module_utils/helm.py import-2.7!skip
|
|
||||||
plugins/module_utils/helm.py import-3.5!skip
|
|
||||||
plugins/module_utils/apply.py import-2.6!skip
|
|
||||||
plugins/module_utils/apply.py import-2.7!skip
|
|
||||||
plugins/module_utils/apply.py import-3.5!skip
|
|
||||||
plugins/module_utils/hashes.py import-2.6!skip
|
|
||||||
plugins/module_utils/hashes.py import-2.7!skip
|
|
||||||
plugins/module_utils/hashes.py import-3.5!skip
|
|
||||||
plugins/module_utils/helm_args_common.py import-2.6!skip
|
|
||||||
plugins/module_utils/helm_args_common.py import-2.7!skip
|
|
||||||
plugins/module_utils/helm_args_common.py import-3.5!skip
|
|
||||||
plugins/module_utils/version.py import-2.6!skip
|
|
||||||
plugins/module_utils/version.py import-2.7!skip
|
|
||||||
plugins/module_utils/version.py import-3.5!skip
|
|
||||||
plugins/module_utils/_version.py import-2.6!skip
|
|
||||||
plugins/module_utils/_version.py import-2.7!skip
|
|
||||||
plugins/module_utils/_version.py import-3.5!skip
|
|
||||||
plugins/module_utils/copy.py import-2.6!skip
|
|
||||||
plugins/module_utils/copy.py import-2.7!skip
|
|
||||||
plugins/module_utils/copy.py import-3.5!skip
|
|
||||||
plugins/module_utils/args_common.py import-2.6!skip
|
|
||||||
plugins/module_utils/args_common.py import-2.7!skip
|
|
||||||
plugins/module_utils/args_common.py import-3.5!skip
|
|
||||||
plugins/module_utils/__init__.py import-2.6!skip
|
|
||||||
plugins/module_utils/__init__.py import-2.7!skip
|
|
||||||
plugins/module_utils/__init__.py import-3.5!skip
|
|
||||||
plugins/module_utils/selector.py import-2.6!skip
|
|
||||||
plugins/module_utils/selector.py import-2.7!skip
|
|
||||||
plugins/module_utils/selector.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-3.5!skip
|
|
||||||
plugins/module_utils/common.py import-2.6!skip
|
|
||||||
plugins/module_utils/common.py import-2.7!skip
|
|
||||||
plugins/module_utils/common.py import-3.5!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py import-2.6!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py import-2.7!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py import-3.5!skip
|
|
||||||
plugins/module_utils/exceptions.py import-2.6!skip
|
|
||||||
plugins/module_utils/exceptions.py import-2.7!skip
|
|
||||||
plugins/module_utils/exceptions.py import-3.5!skip
|
|
||||||
plugins/module_utils/client/resource.py import-2.6!skip
|
|
||||||
plugins/module_utils/client/resource.py import-2.7!skip
|
|
||||||
plugins/module_utils/client/resource.py import-3.5!skip
|
|
||||||
plugins/module_utils/client/discovery.py import-2.6!skip
|
|
||||||
plugins/module_utils/client/discovery.py import-2.7!skip
|
|
||||||
plugins/module_utils/client/discovery.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/resource.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/resource.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/resource.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/core.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/core.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/core.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/client.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/client.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/client.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/runner.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/runner.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/runner.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/service.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/service.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/service.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py import-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_name_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_name_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_name_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/__init__.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/__init__.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/__init__.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py compile-3.5!skip
|
|
||||||
plugins/module_utils/helm.py compile-2.6!skip
|
|
||||||
plugins/module_utils/helm.py compile-2.7!skip
|
|
||||||
plugins/module_utils/helm.py compile-3.5!skip
|
|
||||||
plugins/module_utils/apply.py compile-2.6!skip
|
|
||||||
plugins/module_utils/apply.py compile-2.7!skip
|
|
||||||
plugins/module_utils/apply.py compile-3.5!skip
|
|
||||||
plugins/module_utils/hashes.py compile-2.6!skip
|
|
||||||
plugins/module_utils/hashes.py compile-2.7!skip
|
|
||||||
plugins/module_utils/hashes.py compile-3.5!skip
|
|
||||||
plugins/module_utils/helm_args_common.py compile-2.6!skip
|
|
||||||
plugins/module_utils/helm_args_common.py compile-2.7!skip
|
|
||||||
plugins/module_utils/helm_args_common.py compile-3.5!skip
|
|
||||||
plugins/module_utils/version.py compile-2.6!skip
|
|
||||||
plugins/module_utils/version.py compile-2.7!skip
|
|
||||||
plugins/module_utils/version.py compile-3.5!skip
|
|
||||||
plugins/module_utils/_version.py compile-2.6!skip
|
|
||||||
plugins/module_utils/_version.py compile-2.7!skip
|
|
||||||
plugins/module_utils/_version.py compile-3.5!skip
|
|
||||||
plugins/module_utils/copy.py compile-2.6!skip
|
|
||||||
plugins/module_utils/copy.py compile-2.7!skip
|
|
||||||
plugins/module_utils/copy.py compile-3.5!skip
|
|
||||||
plugins/module_utils/args_common.py compile-2.6!skip
|
|
||||||
plugins/module_utils/args_common.py compile-2.7!skip
|
|
||||||
plugins/module_utils/args_common.py compile-3.5!skip
|
|
||||||
plugins/module_utils/__init__.py compile-2.6!skip
|
|
||||||
plugins/module_utils/__init__.py compile-2.7!skip
|
|
||||||
plugins/module_utils/__init__.py compile-3.5!skip
|
|
||||||
plugins/module_utils/selector.py compile-2.6!skip
|
|
||||||
plugins/module_utils/selector.py compile-2.7!skip
|
|
||||||
plugins/module_utils/selector.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py compile-3.5!skip
|
|
||||||
plugins/module_utils/common.py compile-2.6!skip
|
|
||||||
plugins/module_utils/common.py compile-2.7!skip
|
|
||||||
plugins/module_utils/common.py compile-3.5!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py compile-2.6!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py compile-2.7!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py compile-3.5!skip
|
|
||||||
plugins/module_utils/exceptions.py compile-2.6!skip
|
|
||||||
plugins/module_utils/exceptions.py compile-2.7!skip
|
|
||||||
plugins/module_utils/exceptions.py compile-3.5!skip
|
|
||||||
plugins/module_utils/client/resource.py compile-2.6!skip
|
|
||||||
plugins/module_utils/client/resource.py compile-2.7!skip
|
|
||||||
plugins/module_utils/client/resource.py compile-3.5!skip
|
|
||||||
plugins/module_utils/client/discovery.py compile-2.6!skip
|
|
||||||
plugins/module_utils/client/discovery.py compile-2.7!skip
|
|
||||||
plugins/module_utils/client/discovery.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/resource.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/resource.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/resource.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/core.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/core.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/core.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/client.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/client.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/client.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/runner.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/runner.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/runner.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/service.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/service.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/service.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py compile-3.5!skip
|
|
||||||
plugins/connection/kubectl.py compile-2.6!skip
|
|
||||||
plugins/connection/kubectl.py compile-2.7!skip
|
|
||||||
plugins/connection/kubectl.py compile-3.5!skip
|
|
||||||
plugins/inventory/k8s.py compile-2.6!skip
|
|
||||||
plugins/inventory/k8s.py compile-2.7!skip
|
|
||||||
plugins/inventory/k8s.py compile-3.5!skip
|
|
||||||
plugins/lookup/k8s.py compile-2.6!skip
|
|
||||||
plugins/lookup/k8s.py compile-2.7!skip
|
|
||||||
plugins/lookup/k8s.py compile-3.5!skip
|
|
||||||
plugins/lookup/kustomize.py compile-2.6!skip
|
|
||||||
plugins/lookup/kustomize.py compile-2.7!skip
|
|
||||||
plugins/lookup/kustomize.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_scale.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_scale.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_scale.py compile-3.5!skip
|
|
||||||
plugins/modules/helm_template.py compile-2.6!skip
|
|
||||||
plugins/modules/helm_template.py compile-2.7!skip
|
|
||||||
plugins/modules/helm_template.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_exec.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_exec.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_exec.py compile-3.5!skip
|
|
||||||
plugins/modules/helm.py compile-2.6!skip
|
|
||||||
plugins/modules/helm.py compile-2.7!skip
|
|
||||||
plugins/modules/helm.py compile-3.5!skip
|
|
||||||
plugins/modules/helm_plugin_info.py compile-2.6!skip
|
|
||||||
plugins/modules/helm_plugin_info.py compile-2.7!skip
|
|
||||||
plugins/modules/helm_plugin_info.py compile-3.5!skip
|
|
||||||
plugins/modules/helm_info.py compile-2.6!skip
|
|
||||||
plugins/modules/helm_info.py compile-2.7!skip
|
|
||||||
plugins/modules/helm_info.py compile-3.5!skip
|
|
||||||
plugins/modules/helm_repository.py compile-2.6!skip
|
|
||||||
plugins/modules/helm_repository.py compile-2.7!skip
|
|
||||||
plugins/modules/helm_repository.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_rollback.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_rollback.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_rollback.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_log.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_log.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_log.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_drain.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_drain.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_drain.py compile-3.5!skip
|
|
||||||
plugins/modules/helm_plugin.py compile-2.6!skip
|
|
||||||
plugins/modules/helm_plugin.py compile-2.7!skip
|
|
||||||
plugins/modules/helm_plugin.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_taint.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_taint.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_taint.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_service.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_service.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_service.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_info.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_info.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_info.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_cp.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_cp.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_cp.py compile-3.5!skip
|
|
||||||
plugins/modules/__init__.py compile-2.6!skip
|
|
||||||
plugins/modules/__init__.py compile-2.7!skip
|
|
||||||
plugins/modules/__init__.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_json_patch.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_json_patch.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_json_patch.py compile-3.5!skip
|
|
||||||
plugins/action/k8s_info.py compile-2.6!skip
|
|
||||||
plugins/action/k8s_info.py compile-2.7!skip
|
|
||||||
plugins/action/k8s_info.py compile-3.5!skip
|
|
||||||
plugins/filter/k8s.py compile-2.6!skip
|
|
||||||
plugins/filter/k8s.py compile-2.7!skip
|
|
||||||
plugins/filter/k8s.py compile-3.5!skip
|
|
||||||
tests/unit/conftest.py compile-2.6!skip
|
|
||||||
tests/unit/conftest.py compile-2.7!skip
|
|
||||||
tests/unit/conftest.py compile-3.5!skip
|
|
||||||
tests/unit/utils/ansible_module_mock.py compile-2.6!skip
|
|
||||||
tests/unit/utils/ansible_module_mock.py compile-2.7!skip
|
|
||||||
tests/unit/utils/ansible_module_mock.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_helm.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_helm.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_helm.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_marshal.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_marshal.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_marshal.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_discoverer.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_discoverer.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_discoverer.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_hashes.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_hashes.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_hashes.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_resource.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_resource.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_resource.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_service.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_service.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_service.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_waiter.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_waiter.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_waiter.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_common.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_common.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_common.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_selector.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_selector.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_selector.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_apply.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_apply.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_apply.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_runner.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_runner.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_runner.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_client.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_client.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_client.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_core.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_core.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_core.py compile-3.5!skip
|
|
||||||
tests/unit/modules/test_helm_template_module.py compile-2.6!skip
|
|
||||||
tests/unit/modules/test_helm_template_module.py compile-2.7!skip
|
|
||||||
tests/unit/modules/test_helm_template_module.py compile-3.5!skip
|
|
||||||
tests/unit/modules/test_helm_template.py compile-2.6!skip
|
|
||||||
tests/unit/modules/test_helm_template.py compile-2.7!skip
|
|
||||||
tests/unit/modules/test_helm_template.py compile-3.5!skip
|
|
||||||
tests/unit/modules/test_module_helm.py compile-2.6!skip
|
|
||||||
tests/unit/modules/test_module_helm.py compile-2.7!skip
|
|
||||||
tests/unit/modules/test_module_helm.py compile-3.5!skip
|
|
||||||
tests/unit/action/test_remove_omit.py compile-2.6!skip
|
|
||||||
tests/unit/action/test_remove_omit.py compile-2.7!skip
|
|
||||||
tests/unit/action/test_remove_omit.py compile-3.5!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-2.6!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-2.7!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-3.5!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-2.6!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-2.7!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-3.5!skip
|
|
||||||
tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-2.6!skip
|
|
||||||
tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-2.7!skip
|
|
||||||
tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-3.5!skip
|
|
||||||
tests/integration/targets/helm/library/helm_test_version.py compile-2.6!skip
|
|
||||||
tests/integration/targets/helm/library/helm_test_version.py compile-2.7!skip
|
|
||||||
tests/integration/targets/helm/library/helm_test_version.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_scale.py pylint!skip
|
|
||||||
plugins/modules/helm_template.py pylint!skip
|
|
||||||
plugins/modules/k8s_exec.py pylint!skip
|
|
||||||
plugins/modules/helm.py pylint!skip
|
|
||||||
plugins/modules/helm_plugin_info.py pylint!skip
|
|
||||||
plugins/modules/helm_info.py pylint!skip
|
|
||||||
plugins/modules/helm_repository.py pylint!skip
|
|
||||||
plugins/modules/k8s_rollback.py pylint!skip
|
|
||||||
plugins/modules/k8s_log.py pylint!skip
|
|
||||||
plugins/modules/k8s_drain.py pylint!skip
|
|
||||||
plugins/modules/helm_plugin.py pylint!skip
|
|
||||||
plugins/modules/k8s_taint.py pylint!skip
|
|
||||||
plugins/modules/k8s.py pylint!skip
|
|
||||||
plugins/modules/k8s_service.py pylint!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py pylint!skip
|
|
||||||
plugins/modules/k8s_info.py pylint!skip
|
|
||||||
plugins/modules/k8s_cp.py pylint!skip
|
|
||||||
plugins/modules/__init__.py pylint!skip
|
|
||||||
plugins/modules/k8s_json_patch.py pylint!skip
|
|
||||||
plugins/module_utils/helm.py pylint!skip
|
|
||||||
plugins/module_utils/apply.py pylint!skip
|
|
||||||
plugins/module_utils/hashes.py pylint!skip
|
|
||||||
plugins/module_utils/helm_args_common.py pylint!skip
|
|
||||||
plugins/module_utils/version.py pylint!skip
|
|
||||||
plugins/module_utils/_version.py pylint!skip
|
|
||||||
plugins/module_utils/copy.py pylint!skip
|
|
||||||
plugins/module_utils/args_common.py pylint!skip
|
|
||||||
plugins/module_utils/__init__.py pylint!skip
|
|
||||||
plugins/module_utils/selector.py pylint!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py pylint!skip
|
|
||||||
plugins/module_utils/common.py pylint!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py pylint!skip
|
|
||||||
plugins/module_utils/exceptions.py pylint!skip
|
|
||||||
plugins/module_utils/client/resource.py pylint!skip
|
|
||||||
plugins/module_utils/client/discovery.py pylint!skip
|
|
||||||
plugins/module_utils/k8s/resource.py pylint!skip
|
|
||||||
plugins/module_utils/k8s/core.py pylint!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py pylint!skip
|
|
||||||
plugins/module_utils/k8s/client.py pylint!skip
|
|
||||||
plugins/module_utils/k8s/runner.py pylint!skip
|
|
||||||
plugins/module_utils/k8s/service.py pylint!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py pylint!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/k8s_create_file.py pylint!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/kubectl_file_compare.py pylint!skip
|
|
||||||
tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py pylint!skip
|
|
||||||
tests/integration/targets/helm/library/helm_test_version.py pylint!skip
|
|
||||||
tests/unit/conftest.py pylint!skip
|
|
||||||
tests/unit/utils/ansible_module_mock.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_helm.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_marshal.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_discoverer.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_hashes.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_resource.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_service.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_waiter.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_common.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_selector.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_apply.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_runner.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_client.py pylint!skip
|
|
||||||
tests/unit/module_utils/test_core.py pylint!skip
|
|
||||||
tests/unit/modules/test_helm_template_module.py pylint!skip
|
|
||||||
tests/unit/modules/test_helm_template.py pylint!skip
|
|
||||||
tests/unit/modules/test_module_helm.py pylint!skip
|
|
||||||
tests/unit/action/test_remove_omit.py pylint!skip
|
|
||||||
plugins/modules/k8s.py validate-modules!skip
|
|
||||||
plugins/modules/k8s_cp.py validate-modules!skip
|
|
||||||
plugins/modules/k8s_drain.py validate-modules!skip
|
|
||||||
plugins/modules/k8s_exec.py validate-modules!skip
|
|
||||||
plugins/modules/k8s_info.py validate-modules!skip
|
|
||||||
plugins/modules/k8s_json_patch.py validate-modules!skip
|
|
||||||
plugins/modules/k8s_log.py validate-modules!skip
|
|
||||||
plugins/modules/k8s_rollback.py validate-modules!skip
|
|
||||||
plugins/modules/k8s_scale.py validate-modules!skip
|
|
||||||
plugins/modules/k8s_service.py validate-modules!skip
|
|
||||||
plugins/modules/k8s_taint.py validate-modules!skip
|
|
||||||
@@ -1,593 +0,0 @@
|
|||||||
plugins/module_utils/client/discovery.py import-3.6!skip
|
|
||||||
plugins/module_utils/client/discovery.py import-3.7!skip
|
|
||||||
plugins/module_utils/client/discovery.py import-3.8!skip
|
|
||||||
plugins/module_utils/client/discovery.py import-3.9!skip
|
|
||||||
plugins/module_utils/client/resource.py import-3.6!skip
|
|
||||||
plugins/module_utils/client/resource.py import-3.7!skip
|
|
||||||
plugins/module_utils/client/resource.py import-3.8!skip
|
|
||||||
plugins/module_utils/client/resource.py import-3.9!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-3.6!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-3.7!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-3.8!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-3.9!skip
|
|
||||||
plugins/modules/k8s.py validate-modules:parameter-type-not-in-doc
|
|
||||||
plugins/modules/k8s_scale.py validate-modules:parameter-type-not-in-doc
|
|
||||||
plugins/modules/k8s_service.py validate-modules:parameter-type-not-in-doc
|
|
||||||
tests/unit/module_utils/fixtures/definitions.yml yamllint!skip
|
|
||||||
tests/unit/module_utils/fixtures/deployments.yml yamllint!skip
|
|
||||||
tests/unit/module_utils/fixtures/pods.yml yamllint!skip
|
|
||||||
tests/integration/targets/helm/files/appversionless-chart-v2/templates/configmap.yaml yamllint!skip
|
|
||||||
tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip
|
|
||||||
tests/integration/targets/helm/files/test-chart-v2/templates/configmap.yaml yamllint!skip
|
|
||||||
tests/integration/targets/helm/files/test-chart/templates/configmap.yaml yamllint!skip
|
|
||||||
tests/integration/targets/helm_diff/files/test-chart/templates/configmap.yaml yamllint!skip
|
|
||||||
tests/integration/targets/k8s_scale/files/deployment.yaml yamllint!skip
|
|
||||||
tests/sanity/refresh_ignore_files shebang!skip
|
|
||||||
plugins/modules/k8s.py validate-modules:return-syntax-error
|
|
||||||
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
|
|
||||||
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
|
||||||
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
|
||||||
plugins/doc_fragments/k8s_name_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/__init__.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/helm.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/apply.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/hashes.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/helm_args_common.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/version.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/_version.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/copy.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/args_common.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/__init__.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/selector.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/common.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/exceptions.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/client/resource.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/client/discovery.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/resource.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/core.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/client.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/runner.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/service.py future-import-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py future-import-boilerplate!skip
|
|
||||||
plugins/connection/kubectl.py future-import-boilerplate!skip
|
|
||||||
plugins/inventory/k8s.py future-import-boilerplate!skip
|
|
||||||
plugins/lookup/k8s.py future-import-boilerplate!skip
|
|
||||||
plugins/lookup/kustomize.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_scale.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/helm_template.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_exec.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/helm.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/helm_plugin_info.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/helm_info.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/helm_repository.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_rollback.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_log.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_drain.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/helm_plugin.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_taint.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_service.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_info.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_cp.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/__init__.py future-import-boilerplate!skip
|
|
||||||
plugins/modules/k8s_json_patch.py future-import-boilerplate!skip
|
|
||||||
plugins/action/k8s_info.py future-import-boilerplate!skip
|
|
||||||
plugins/filter/k8s.py future-import-boilerplate!skip
|
|
||||||
tests/unit/conftest.py future-import-boilerplate!skip
|
|
||||||
tests/unit/utils/ansible_module_mock.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_helm.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_marshal.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_discoverer.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_hashes.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_resource.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_service.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_waiter.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_common.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_selector.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_apply.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_runner.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_client.py future-import-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_core.py future-import-boilerplate!skip
|
|
||||||
tests/unit/modules/test_helm_template_module.py future-import-boilerplate!skip
|
|
||||||
tests/unit/modules/test_helm_template.py future-import-boilerplate!skip
|
|
||||||
tests/unit/modules/test_module_helm.py future-import-boilerplate!skip
|
|
||||||
tests/unit/action/test_remove_omit.py future-import-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_name_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/__init__.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/helm.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/apply.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/hashes.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/helm_args_common.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/version.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/_version.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/copy.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/args_common.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/__init__.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/selector.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/common.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/exceptions.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/client/resource.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/client/discovery.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/resource.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/core.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/client.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/runner.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/service.py metaclass-boilerplate!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py metaclass-boilerplate!skip
|
|
||||||
plugins/connection/kubectl.py metaclass-boilerplate!skip
|
|
||||||
plugins/inventory/k8s.py metaclass-boilerplate!skip
|
|
||||||
plugins/lookup/k8s.py metaclass-boilerplate!skip
|
|
||||||
plugins/lookup/kustomize.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_scale.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/helm_template.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_exec.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/helm.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/helm_plugin_info.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/helm_info.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/helm_repository.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_rollback.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_log.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_drain.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/helm_plugin.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_taint.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_service.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_info.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_cp.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/__init__.py metaclass-boilerplate!skip
|
|
||||||
plugins/modules/k8s_json_patch.py metaclass-boilerplate!skip
|
|
||||||
plugins/action/k8s_info.py metaclass-boilerplate!skip
|
|
||||||
plugins/filter/k8s.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/conftest.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/utils/ansible_module_mock.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_helm.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_marshal.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_discoverer.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_hashes.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_resource.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_service.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_waiter.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_common.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_selector.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_apply.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_runner.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_client.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/module_utils/test_core.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/modules/test_helm_template_module.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/modules/test_helm_template.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/modules/test_module_helm.py metaclass-boilerplate!skip
|
|
||||||
tests/unit/action/test_remove_omit.py metaclass-boilerplate!skip
|
|
||||||
plugins/doc_fragments/k8s_name_options.py import-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_name_options.py import-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_name_options.py import-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py import-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py import-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py import-3.5!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py import-2.6!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py import-2.7!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py import-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py import-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py import-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py import-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py import-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py import-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py import-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py import-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py import-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py import-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py import-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py import-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py import-3.5!skip
|
|
||||||
plugins/doc_fragments/__init__.py import-2.6!skip
|
|
||||||
plugins/doc_fragments/__init__.py import-2.7!skip
|
|
||||||
plugins/doc_fragments/__init__.py import-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py import-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py import-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py import-3.5!skip
|
|
||||||
plugins/module_utils/helm.py import-2.6!skip
|
|
||||||
plugins/module_utils/helm.py import-2.7!skip
|
|
||||||
plugins/module_utils/helm.py import-3.5!skip
|
|
||||||
plugins/module_utils/apply.py import-2.6!skip
|
|
||||||
plugins/module_utils/apply.py import-2.7!skip
|
|
||||||
plugins/module_utils/apply.py import-3.5!skip
|
|
||||||
plugins/module_utils/hashes.py import-2.6!skip
|
|
||||||
plugins/module_utils/hashes.py import-2.7!skip
|
|
||||||
plugins/module_utils/hashes.py import-3.5!skip
|
|
||||||
plugins/module_utils/helm_args_common.py import-2.6!skip
|
|
||||||
plugins/module_utils/helm_args_common.py import-2.7!skip
|
|
||||||
plugins/module_utils/helm_args_common.py import-3.5!skip
|
|
||||||
plugins/module_utils/version.py import-2.6!skip
|
|
||||||
plugins/module_utils/version.py import-2.7!skip
|
|
||||||
plugins/module_utils/version.py import-3.5!skip
|
|
||||||
plugins/module_utils/_version.py import-2.6!skip
|
|
||||||
plugins/module_utils/_version.py import-2.7!skip
|
|
||||||
plugins/module_utils/_version.py import-3.5!skip
|
|
||||||
plugins/module_utils/copy.py import-2.6!skip
|
|
||||||
plugins/module_utils/copy.py import-2.7!skip
|
|
||||||
plugins/module_utils/copy.py import-3.5!skip
|
|
||||||
plugins/module_utils/args_common.py import-2.6!skip
|
|
||||||
plugins/module_utils/args_common.py import-2.7!skip
|
|
||||||
plugins/module_utils/args_common.py import-3.5!skip
|
|
||||||
plugins/module_utils/__init__.py import-2.6!skip
|
|
||||||
plugins/module_utils/__init__.py import-2.7!skip
|
|
||||||
plugins/module_utils/__init__.py import-3.5!skip
|
|
||||||
plugins/module_utils/selector.py import-2.6!skip
|
|
||||||
plugins/module_utils/selector.py import-2.7!skip
|
|
||||||
plugins/module_utils/selector.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py import-3.5!skip
|
|
||||||
plugins/module_utils/common.py import-2.6!skip
|
|
||||||
plugins/module_utils/common.py import-2.7!skip
|
|
||||||
plugins/module_utils/common.py import-3.5!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py import-2.6!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py import-2.7!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py import-3.5!skip
|
|
||||||
plugins/module_utils/exceptions.py import-2.6!skip
|
|
||||||
plugins/module_utils/exceptions.py import-2.7!skip
|
|
||||||
plugins/module_utils/exceptions.py import-3.5!skip
|
|
||||||
plugins/module_utils/client/resource.py import-2.6!skip
|
|
||||||
plugins/module_utils/client/resource.py import-2.7!skip
|
|
||||||
plugins/module_utils/client/resource.py import-3.5!skip
|
|
||||||
plugins/module_utils/client/discovery.py import-2.6!skip
|
|
||||||
plugins/module_utils/client/discovery.py import-2.7!skip
|
|
||||||
plugins/module_utils/client/discovery.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/resource.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/resource.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/resource.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/core.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/core.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/core.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/client.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/client.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/client.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/runner.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/runner.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/runner.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/service.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/service.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/service.py import-3.5!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py import-2.6!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py import-2.7!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py import-3.5!skip
|
|
||||||
plugins/connection/kubectl.py import-2.6!skip
|
|
||||||
plugins/connection/kubectl.py import-2.7!skip
|
|
||||||
plugins/connection/kubectl.py import-3.5!skip
|
|
||||||
plugins/inventory/k8s.py import-2.6!skip
|
|
||||||
plugins/inventory/k8s.py import-2.7!skip
|
|
||||||
plugins/inventory/k8s.py import-3.5!skip
|
|
||||||
plugins/lookup/k8s.py import-2.6!skip
|
|
||||||
plugins/lookup/k8s.py import-2.7!skip
|
|
||||||
plugins/lookup/k8s.py import-3.5!skip
|
|
||||||
plugins/lookup/kustomize.py import-2.6!skip
|
|
||||||
plugins/lookup/kustomize.py import-2.7!skip
|
|
||||||
plugins/lookup/kustomize.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_scale.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_scale.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_scale.py import-3.5!skip
|
|
||||||
plugins/modules/helm_template.py import-2.6!skip
|
|
||||||
plugins/modules/helm_template.py import-2.7!skip
|
|
||||||
plugins/modules/helm_template.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_exec.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_exec.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_exec.py import-3.5!skip
|
|
||||||
plugins/modules/helm.py import-2.6!skip
|
|
||||||
plugins/modules/helm.py import-2.7!skip
|
|
||||||
plugins/modules/helm.py import-3.5!skip
|
|
||||||
plugins/modules/helm_plugin_info.py import-2.6!skip
|
|
||||||
plugins/modules/helm_plugin_info.py import-2.7!skip
|
|
||||||
plugins/modules/helm_plugin_info.py import-3.5!skip
|
|
||||||
plugins/modules/helm_info.py import-2.6!skip
|
|
||||||
plugins/modules/helm_info.py import-2.7!skip
|
|
||||||
plugins/modules/helm_info.py import-3.5!skip
|
|
||||||
plugins/modules/helm_repository.py import-2.6!skip
|
|
||||||
plugins/modules/helm_repository.py import-2.7!skip
|
|
||||||
plugins/modules/helm_repository.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_rollback.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_rollback.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_rollback.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_log.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_log.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_log.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_drain.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_drain.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_drain.py import-3.5!skip
|
|
||||||
plugins/modules/helm_plugin.py import-2.6!skip
|
|
||||||
plugins/modules/helm_plugin.py import-2.7!skip
|
|
||||||
plugins/modules/helm_plugin.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_taint.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_taint.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_taint.py import-3.5!skip
|
|
||||||
plugins/modules/k8s.py import-2.6!skip
|
|
||||||
plugins/modules/k8s.py import-2.7!skip
|
|
||||||
plugins/modules/k8s.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_service.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_service.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_service.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_info.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_info.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_info.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_cp.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_cp.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_cp.py import-3.5!skip
|
|
||||||
plugins/modules/__init__.py import-2.6!skip
|
|
||||||
plugins/modules/__init__.py import-2.7!skip
|
|
||||||
plugins/modules/__init__.py import-3.5!skip
|
|
||||||
plugins/modules/k8s_json_patch.py import-2.6!skip
|
|
||||||
plugins/modules/k8s_json_patch.py import-2.7!skip
|
|
||||||
plugins/modules/k8s_json_patch.py import-3.5!skip
|
|
||||||
plugins/action/k8s_info.py import-2.6!skip
|
|
||||||
plugins/action/k8s_info.py import-2.7!skip
|
|
||||||
plugins/action/k8s_info.py import-3.5!skip
|
|
||||||
plugins/filter/k8s.py import-2.6!skip
|
|
||||||
plugins/filter/k8s.py import-2.7!skip
|
|
||||||
plugins/filter/k8s.py import-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_name_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_name_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_name_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_auth_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/helm_common_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_state_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_wait_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_scale_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_delete_options.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/__init__.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/__init__.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/__init__.py compile-3.5!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py compile-2.6!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py compile-2.7!skip
|
|
||||||
plugins/doc_fragments/k8s_resource_options.py compile-3.5!skip
|
|
||||||
plugins/module_utils/helm.py compile-2.6!skip
|
|
||||||
plugins/module_utils/helm.py compile-2.7!skip
|
|
||||||
plugins/module_utils/helm.py compile-3.5!skip
|
|
||||||
plugins/module_utils/apply.py compile-2.6!skip
|
|
||||||
plugins/module_utils/apply.py compile-2.7!skip
|
|
||||||
plugins/module_utils/apply.py compile-3.5!skip
|
|
||||||
plugins/module_utils/hashes.py compile-2.6!skip
|
|
||||||
plugins/module_utils/hashes.py compile-2.7!skip
|
|
||||||
plugins/module_utils/hashes.py compile-3.5!skip
|
|
||||||
plugins/module_utils/helm_args_common.py compile-2.6!skip
|
|
||||||
plugins/module_utils/helm_args_common.py compile-2.7!skip
|
|
||||||
plugins/module_utils/helm_args_common.py compile-3.5!skip
|
|
||||||
plugins/module_utils/version.py compile-2.6!skip
|
|
||||||
plugins/module_utils/version.py compile-2.7!skip
|
|
||||||
plugins/module_utils/version.py compile-3.5!skip
|
|
||||||
plugins/module_utils/_version.py compile-2.6!skip
|
|
||||||
plugins/module_utils/_version.py compile-2.7!skip
|
|
||||||
plugins/module_utils/_version.py compile-3.5!skip
|
|
||||||
plugins/module_utils/copy.py compile-2.6!skip
|
|
||||||
plugins/module_utils/copy.py compile-2.7!skip
|
|
||||||
plugins/module_utils/copy.py compile-3.5!skip
|
|
||||||
plugins/module_utils/args_common.py compile-2.6!skip
|
|
||||||
plugins/module_utils/args_common.py compile-2.7!skip
|
|
||||||
plugins/module_utils/args_common.py compile-3.5!skip
|
|
||||||
plugins/module_utils/__init__.py compile-2.6!skip
|
|
||||||
plugins/module_utils/__init__.py compile-2.7!skip
|
|
||||||
plugins/module_utils/__init__.py compile-3.5!skip
|
|
||||||
plugins/module_utils/selector.py compile-2.6!skip
|
|
||||||
plugins/module_utils/selector.py compile-2.7!skip
|
|
||||||
plugins/module_utils/selector.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8sdynamicclient.py compile-3.5!skip
|
|
||||||
plugins/module_utils/common.py compile-2.6!skip
|
|
||||||
plugins/module_utils/common.py compile-2.7!skip
|
|
||||||
plugins/module_utils/common.py compile-3.5!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py compile-2.6!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py compile-2.7!skip
|
|
||||||
plugins/module_utils/ansiblemodule.py compile-3.5!skip
|
|
||||||
plugins/module_utils/exceptions.py compile-2.6!skip
|
|
||||||
plugins/module_utils/exceptions.py compile-2.7!skip
|
|
||||||
plugins/module_utils/exceptions.py compile-3.5!skip
|
|
||||||
plugins/module_utils/client/resource.py compile-2.6!skip
|
|
||||||
plugins/module_utils/client/resource.py compile-2.7!skip
|
|
||||||
plugins/module_utils/client/resource.py compile-3.5!skip
|
|
||||||
plugins/module_utils/client/discovery.py compile-2.6!skip
|
|
||||||
plugins/module_utils/client/discovery.py compile-2.7!skip
|
|
||||||
plugins/module_utils/client/discovery.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/resource.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/resource.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/resource.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/core.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/core.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/core.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/waiter.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/client.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/client.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/client.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/runner.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/runner.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/runner.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/service.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/service.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/service.py compile-3.5!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py compile-2.6!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py compile-2.7!skip
|
|
||||||
plugins/module_utils/k8s/exceptions.py compile-3.5!skip
|
|
||||||
plugins/connection/kubectl.py compile-2.6!skip
|
|
||||||
plugins/connection/kubectl.py compile-2.7!skip
|
|
||||||
plugins/connection/kubectl.py compile-3.5!skip
|
|
||||||
plugins/inventory/k8s.py compile-2.6!skip
|
|
||||||
plugins/inventory/k8s.py compile-2.7!skip
|
|
||||||
plugins/inventory/k8s.py compile-3.5!skip
|
|
||||||
plugins/lookup/k8s.py compile-2.6!skip
|
|
||||||
plugins/lookup/k8s.py compile-2.7!skip
|
|
||||||
plugins/lookup/k8s.py compile-3.5!skip
|
|
||||||
plugins/lookup/kustomize.py compile-2.6!skip
|
|
||||||
plugins/lookup/kustomize.py compile-2.7!skip
|
|
||||||
plugins/lookup/kustomize.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_scale.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_scale.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_scale.py compile-3.5!skip
|
|
||||||
plugins/modules/helm_template.py compile-2.6!skip
|
|
||||||
plugins/modules/helm_template.py compile-2.7!skip
|
|
||||||
plugins/modules/helm_template.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_exec.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_exec.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_exec.py compile-3.5!skip
|
|
||||||
plugins/modules/helm.py compile-2.6!skip
|
|
||||||
plugins/modules/helm.py compile-2.7!skip
|
|
||||||
plugins/modules/helm.py compile-3.5!skip
|
|
||||||
plugins/modules/helm_plugin_info.py compile-2.6!skip
|
|
||||||
plugins/modules/helm_plugin_info.py compile-2.7!skip
|
|
||||||
plugins/modules/helm_plugin_info.py compile-3.5!skip
|
|
||||||
plugins/modules/helm_info.py compile-2.6!skip
|
|
||||||
plugins/modules/helm_info.py compile-2.7!skip
|
|
||||||
plugins/modules/helm_info.py compile-3.5!skip
|
|
||||||
plugins/modules/helm_repository.py compile-2.6!skip
|
|
||||||
plugins/modules/helm_repository.py compile-2.7!skip
|
|
||||||
plugins/modules/helm_repository.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_rollback.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_rollback.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_rollback.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_log.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_log.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_log.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_drain.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_drain.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_drain.py compile-3.5!skip
|
|
||||||
plugins/modules/helm_plugin.py compile-2.6!skip
|
|
||||||
plugins/modules/helm_plugin.py compile-2.7!skip
|
|
||||||
plugins/modules/helm_plugin.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_taint.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_taint.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_taint.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_service.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_service.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_service.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_cluster_info.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_info.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_info.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_info.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_cp.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_cp.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_cp.py compile-3.5!skip
|
|
||||||
plugins/modules/__init__.py compile-2.6!skip
|
|
||||||
plugins/modules/__init__.py compile-2.7!skip
|
|
||||||
plugins/modules/__init__.py compile-3.5!skip
|
|
||||||
plugins/modules/k8s_json_patch.py compile-2.6!skip
|
|
||||||
plugins/modules/k8s_json_patch.py compile-2.7!skip
|
|
||||||
plugins/modules/k8s_json_patch.py compile-3.5!skip
|
|
||||||
plugins/action/k8s_info.py compile-2.6!skip
|
|
||||||
plugins/action/k8s_info.py compile-2.7!skip
|
|
||||||
plugins/action/k8s_info.py compile-3.5!skip
|
|
||||||
plugins/filter/k8s.py compile-2.6!skip
|
|
||||||
plugins/filter/k8s.py compile-2.7!skip
|
|
||||||
plugins/filter/k8s.py compile-3.5!skip
|
|
||||||
tests/unit/conftest.py compile-2.6!skip
|
|
||||||
tests/unit/conftest.py compile-2.7!skip
|
|
||||||
tests/unit/conftest.py compile-3.5!skip
|
|
||||||
tests/unit/utils/ansible_module_mock.py compile-2.6!skip
|
|
||||||
tests/unit/utils/ansible_module_mock.py compile-2.7!skip
|
|
||||||
tests/unit/utils/ansible_module_mock.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_helm.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_helm.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_helm.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_marshal.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_marshal.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_marshal.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_discoverer.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_discoverer.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_discoverer.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_hashes.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_hashes.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_hashes.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_resource.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_resource.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_resource.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_service.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_service.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_service.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_waiter.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_waiter.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_waiter.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_common.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_common.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_common.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_selector.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_selector.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_selector.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_apply.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_apply.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_apply.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_runner.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_runner.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_runner.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_client.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_client.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_client.py compile-3.5!skip
|
|
||||||
tests/unit/module_utils/test_core.py compile-2.6!skip
|
|
||||||
tests/unit/module_utils/test_core.py compile-2.7!skip
|
|
||||||
tests/unit/module_utils/test_core.py compile-3.5!skip
|
|
||||||
tests/unit/modules/test_helm_template_module.py compile-2.6!skip
|
|
||||||
tests/unit/modules/test_helm_template_module.py compile-2.7!skip
|
|
||||||
tests/unit/modules/test_helm_template_module.py compile-3.5!skip
|
|
||||||
tests/unit/modules/test_helm_template.py compile-2.6!skip
|
|
||||||
tests/unit/modules/test_helm_template.py compile-2.7!skip
|
|
||||||
tests/unit/modules/test_helm_template.py compile-3.5!skip
|
|
||||||
tests/unit/modules/test_module_helm.py compile-2.6!skip
|
|
||||||
tests/unit/modules/test_module_helm.py compile-2.7!skip
|
|
||||||
tests/unit/modules/test_module_helm.py compile-3.5!skip
|
|
||||||
tests/unit/action/test_remove_omit.py compile-2.6!skip
|
|
||||||
tests/unit/action/test_remove_omit.py compile-2.7!skip
|
|
||||||
tests/unit/action/test_remove_omit.py compile-3.5!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-2.6!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-2.7!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-3.5!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-2.6!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-2.7!skip
|
|
||||||
tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-3.5!skip
|
|
||||||
tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-2.6!skip
|
|
||||||
tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-2.7!skip
|
|
||||||
tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-3.5!skip
|
|
||||||
tests/integration/targets/helm/library/helm_test_version.py compile-2.6!skip
|
|
||||||
tests/integration/targets/helm/library/helm_test_version.py compile-2.7!skip
|
|
||||||
tests/integration/targets/helm/library/helm_test_version.py compile-3.5!skip
|
|
||||||
tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip
|
|
||||||
@@ -28,9 +28,10 @@ tests/integration/targets/helm/files/test-chart-v2/templates/configmap.yaml yaml
|
|||||||
tests/integration/targets/helm/files/test-chart/templates/configmap.yaml yamllint!skip
|
tests/integration/targets/helm/files/test-chart/templates/configmap.yaml yamllint!skip
|
||||||
tests/integration/targets/helm_diff/files/test-chart/templates/configmap.yaml yamllint!skip
|
tests/integration/targets/helm_diff/files/test-chart/templates/configmap.yaml yamllint!skip
|
||||||
tests/integration/targets/k8s_scale/files/deployment.yaml yamllint!skip
|
tests/integration/targets/k8s_scale/files/deployment.yaml yamllint!skip
|
||||||
tests/sanity/refresh_ignore_files shebang!skip
|
|
||||||
plugins/modules/k8s.py validate-modules:return-syntax-error
|
plugins/modules/k8s.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
|
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
||||||
tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip
|
tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip
|
||||||
|
tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml yamllint!skip
|
||||||
|
tests/integration/targets/helm_diff/files/test-chart-deployment-time/templates/configmap.yaml yamllint!skip
|
||||||
|
|||||||
@@ -30,8 +30,9 @@ tests/integration/targets/helm/files/test-chart-v2/templates/configmap.yaml yaml
|
|||||||
tests/integration/targets/helm/files/test-chart/templates/configmap.yaml yamllint!skip
|
tests/integration/targets/helm/files/test-chart/templates/configmap.yaml yamllint!skip
|
||||||
tests/integration/targets/helm_diff/files/test-chart/templates/configmap.yaml yamllint!skip
|
tests/integration/targets/helm_diff/files/test-chart/templates/configmap.yaml yamllint!skip
|
||||||
tests/integration/targets/k8s_scale/files/deployment.yaml yamllint!skip
|
tests/integration/targets/k8s_scale/files/deployment.yaml yamllint!skip
|
||||||
tests/sanity/refresh_ignore_files shebang!skip
|
|
||||||
plugins/modules/k8s.py validate-modules:return-syntax-error
|
plugins/modules/k8s.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
|
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
||||||
|
tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml yamllint!skip
|
||||||
|
tests/integration/targets/helm_diff/files/test-chart-deployment-time/templates/configmap.yaml yamllint!skip
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user