mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-05-08 05:52:37 +00:00
Ensure compatibility with Helm v4 for the collection (#1090)
SUMMARY Ensure compatibility with Helm v4 for modules helm_plugin and helm_plugin_info Partially addresses #1038 ISSUE TYPE Feature Pull Request COMPONENT NAME helm_plugin helm_plugin_info helm_info helm_pull helm_registry_auth helm helm_template Reviewed-by: Bianca Henderson <beeankha@gmail.com> Reviewed-by: Yuriy Novostavskiy <yuriy@novostavskiy.kyiv.ua> Reviewed-by: Alina Buzachis
This commit is contained in:
@@ -1,4 +1 @@
|
||||
time=100
|
||||
helm_info
|
||||
helm_repository
|
||||
helm_template
|
||||
disabled # used by test targets helm_vX_XX_XX
|
||||
|
||||
@@ -9,25 +9,25 @@ chart_test_version: 4.2.4
|
||||
chart_test_version_local_path: 1.32.0
|
||||
chart_test_version_upgrade: 4.2.5
|
||||
chart_test_version_upgrade_local_path: 1.33.0
|
||||
chart_test_repo: "https://kubernetes.github.io/ingress-nginx"
|
||||
chart_test_repo: "https://stenic.github.io/k8status/"
|
||||
chart_test_git_repo: "http://github.com/helm/charts.git"
|
||||
chart_test_values:
|
||||
revisionHistoryLimit: 0
|
||||
myValue: "changed"
|
||||
|
||||
test_namespace:
|
||||
- "helm-test-crds"
|
||||
- "helm-uninstall"
|
||||
- "helm-read-envvars"
|
||||
- "helm-dep-update"
|
||||
- "helm-local-path-001"
|
||||
- "helm-local-path-002"
|
||||
- "helm-local-path-003"
|
||||
- "helm-from-repository"
|
||||
- "helm-from-url"
|
||||
- "helm-reuse-values"
|
||||
- "helm-chart-with-space-into-name"
|
||||
- "helm-reset-then-reuse-values"
|
||||
- "helm-insecure"
|
||||
- "helm-test-take-ownership"
|
||||
- "helm-skip-schema-validation"
|
||||
- "helm-test-crds-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-uninstall-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-read-envvars-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-dep-update-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-local-path-001-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-local-path-002-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-local-path-003-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-from-repository-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-from-url-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-reuse-values-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-chart-with-space-into-name-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-reset-then-reuse-values-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-insecure-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-test-take-ownership-{{ helm_version | replace('.', '-') }}"
|
||||
- "helm-skip-schema-validation-{{ helm_version | replace('.', '-') }}"
|
||||
|
||||
@@ -52,7 +52,9 @@ import json
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible_collections.kubernetes.core.plugins.module_utils.helm import (
|
||||
AnsibleHelmModule,
|
||||
)
|
||||
|
||||
|
||||
class HelmReleaseNotFoundError(Exception):
|
||||
@@ -60,7 +62,9 @@ class HelmReleaseNotFoundError(Exception):
|
||||
super().__init__(message)
|
||||
|
||||
|
||||
def create_pending_install_release(helm_binary, chart_ref, chart_release, namespace):
|
||||
def create_pending_install_release(
|
||||
module, helm_binary, chart_ref, chart_release, namespace
|
||||
):
|
||||
# create pending-install release
|
||||
command = [
|
||||
helm_binary,
|
||||
@@ -78,13 +82,14 @@ def create_pending_install_release(helm_binary, chart_ref, chart_release, namesp
|
||||
command = [
|
||||
helm_binary,
|
||||
"list",
|
||||
"--all",
|
||||
"--output=json",
|
||||
"--namespace",
|
||||
namespace,
|
||||
"--filter",
|
||||
chart_release,
|
||||
]
|
||||
if not module.is_helm_v4():
|
||||
command.append("--all")
|
||||
cmd = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
out, err = cmd.communicate()
|
||||
|
||||
@@ -92,11 +97,11 @@ def create_pending_install_release(helm_binary, chart_ref, chart_release, namesp
|
||||
if not data:
|
||||
error = "Release %s not found." % chart_release
|
||||
raise HelmReleaseNotFoundError(message=error)
|
||||
return data[0]["status"] == "pending-install", data[0]["status"]
|
||||
return data[0]["status"] in ("pending-install", "failed"), data[0]["status"]
|
||||
|
||||
|
||||
def main():
|
||||
module = AnsibleModule(
|
||||
module = AnsibleHelmModule(
|
||||
argument_spec=dict(
|
||||
binary_path=dict(type="path", required=True),
|
||||
chart_ref=dict(type="str", required=True),
|
||||
@@ -106,6 +111,7 @@ def main():
|
||||
)
|
||||
|
||||
params = dict(
|
||||
module=module,
|
||||
helm_binary=module.params.get("binary_path"),
|
||||
chart_release=module.params.get("chart_release"),
|
||||
chart_ref=module.params.get("chart_ref"),
|
||||
@@ -116,7 +122,7 @@ def main():
|
||||
result, status = create_pending_install_release(**params)
|
||||
if not result:
|
||||
module.fail_json(
|
||||
msg="unable to create pending-install release, current status is %s"
|
||||
msg="unable to create pending-install/failed release, current status is %s"
|
||||
% status
|
||||
)
|
||||
module.exit_json(changed=True, msg="Release created with status '%s'" % status)
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
---
|
||||
collections:
|
||||
- kubernetes.core
|
||||
dependencies:
|
||||
- remove_namespace
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
- connection: local
|
||||
gather_facts: true
|
||||
hosts: localhost
|
||||
|
||||
roles:
|
||||
- helm
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eux
|
||||
export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
|
||||
export ANSIBLE_ROLES_PATH=../
|
||||
ansible-playbook playbook.yaml "$@"
|
||||
@@ -1,15 +0,0 @@
|
||||
---
|
||||
- name: Init Helm folders
|
||||
file:
|
||||
path: /tmp/helm/
|
||||
state: directory
|
||||
|
||||
- name: Unarchive Helm binary
|
||||
unarchive:
|
||||
src: 'https://get.helm.sh/{{ helm_archive_name | default(helm_default_archive_name) }}'
|
||||
dest: /tmp/helm/
|
||||
remote_src: yes
|
||||
retries: 10
|
||||
delay: 5
|
||||
register: result
|
||||
until: result is not failed
|
||||
@@ -1,10 +1,22 @@
|
||||
---
|
||||
- name: Ensure helm is not installed
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
with_items:
|
||||
- "/tmp/helm"
|
||||
|
||||
- name: Check failed if helm is not installed
|
||||
include_tasks: test_helm_not_installed.yml
|
||||
|
||||
- name: Install Helm v4
|
||||
ansible.builtin.include_role:
|
||||
name: install_helm
|
||||
vars:
|
||||
helm_version: v3.6.0
|
||||
|
||||
- name: Test helm uninstall
|
||||
ansible.builtin.include_tasks: test_helm_uninstall.yml
|
||||
|
||||
- name: Run tests
|
||||
include_tasks: run_test.yml
|
||||
loop_control:
|
||||
loop_var: helm_version
|
||||
with_items:
|
||||
- "v3.15.4"
|
||||
- "v3.16.0"
|
||||
- "v3.17.0"
|
||||
- "v4.0.0"
|
||||
|
||||
@@ -1,25 +1,19 @@
|
||||
---
|
||||
- name: Ensure helm is not installed
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
with_items:
|
||||
- "/tmp/helm"
|
||||
|
||||
- name: Check failed if helm is not installed
|
||||
include_tasks: test_helm_not_installed.yml
|
||||
|
||||
- name: "Install {{ helm_version }}"
|
||||
include_role:
|
||||
name: install_helm
|
||||
|
||||
- name: Main helm tests with Helm v3
|
||||
when: helm_version != "v4.0.0"
|
||||
- name: Main helm tests
|
||||
block:
|
||||
- name: Install helm-diff plugin
|
||||
helm_plugin:
|
||||
binary_path: "{{ helm_binary }}"
|
||||
plugin_path: https://github.com/databus23/helm-diff
|
||||
plugin_version: "{{ helm_version is version('v4.0.0', '>=') | ternary('v3.14.0', 'v3.10.0') }}"
|
||||
verify: false
|
||||
|
||||
- name: "Ensure we honor the environment variables"
|
||||
include_tasks: test_read_envvars.yml
|
||||
when: helm_version != "v4.0.0"
|
||||
|
||||
- name: Deploy charts
|
||||
include_tasks: "tests_chart/{{ test_chart_type }}.yml"
|
||||
@@ -39,9 +33,6 @@
|
||||
- name: test helm dependency update
|
||||
include_tasks: test_up_dep.yml
|
||||
|
||||
- name: Test helm uninstall
|
||||
include_tasks: test_helm_uninstall.yml
|
||||
|
||||
- name: Test helm install with chart name containing space
|
||||
include_tasks: test_helm_with_space_into_chart_name.yml
|
||||
|
||||
@@ -58,12 +49,15 @@
|
||||
- name: Test helm skip_schema_validation
|
||||
include_tasks: test_skip_schema_validation.yml
|
||||
|
||||
- name: Test helm version
|
||||
include_tasks: test_helm_version.yml
|
||||
always:
|
||||
- name: Remove helm-diff plugin
|
||||
helm_plugin:
|
||||
binary_path: "{{ helm_binary }}"
|
||||
plugin_name: diff
|
||||
state: absent
|
||||
ignore_errors: true
|
||||
|
||||
- name: Clean helm install
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
with_items:
|
||||
- "/tmp/helm/"
|
||||
- name: Clean helm install
|
||||
ansible.builtin.file:
|
||||
path: "/tmp/helm/"
|
||||
state: absent
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
name: test
|
||||
chart_ref: "{{ chart_test }}"
|
||||
namespace: "helm-test"
|
||||
ignore_errors: yes
|
||||
ignore_errors: true
|
||||
register: helm_missing_binary
|
||||
|
||||
- name: Assert that helm is not installed
|
||||
|
||||
@@ -38,6 +38,28 @@
|
||||
- '"--reset-then-reuse-values" not in install.command'
|
||||
- release_value["status"]["release_values"] == chart_release_values
|
||||
|
||||
# We need to provide the actual redis password otherwise the update command
|
||||
# will fail with the following:
|
||||
# Error: execution error at (redis/templates/replicas/application.yaml:55:35):
|
||||
# PASSWORDS ERROR: You must provide your current passwords when upgrading the release.
|
||||
# Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims.
|
||||
# Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases
|
||||
# 'global.redis.password' must not be empty, please add '--set global.redis.password=$REDIS_PASSWORD' to the command. To get the current value:
|
||||
- name: Retrieve release password
|
||||
kubernetes.core.k8s_info:
|
||||
namespace: "{{ helm_namespace }}"
|
||||
kind: Secret
|
||||
name: test-redis
|
||||
register: redis_secret
|
||||
|
||||
- ansible.builtin.set_fact:
|
||||
chart_reset_then_reuse_values: "{{ chart_reset_then_reuse_values | combine(redis_global_password) }}"
|
||||
vars:
|
||||
redis_global_password:
|
||||
global:
|
||||
redis:
|
||||
password: "{{ redis_secret.resources.0.data['redis-password'] | b64decode }}"
|
||||
|
||||
- name: Upgrade chart using reset_then_reuse_values=true
|
||||
helm:
|
||||
binary_path: "{{ helm_binary }}"
|
||||
@@ -73,3 +95,4 @@
|
||||
kind: Namespace
|
||||
name: "{{ helm_namespace }}"
|
||||
state: absent
|
||||
wait: false
|
||||
|
||||
@@ -38,6 +38,21 @@
|
||||
- '"--reuse-values=True" not in install.command'
|
||||
- release_value["status"]["release_values"] == chart_release_values
|
||||
|
||||
- name: Retrieve release password
|
||||
kubernetes.core.k8s_info:
|
||||
namespace: "{{ helm_namespace }}"
|
||||
kind: Secret
|
||||
name: test-redis
|
||||
register: redis_secret
|
||||
|
||||
- ansible.builtin.set_fact:
|
||||
chart_reuse_values: "{{ chart_reuse_values | combine(redis_global_password) }}"
|
||||
vars:
|
||||
redis_global_password:
|
||||
global:
|
||||
redis:
|
||||
password: "{{ redis_secret.resources.0.data['redis-password'] | b64decode }}"
|
||||
|
||||
- name: Upgrade chart using reuse_values=true
|
||||
helm:
|
||||
binary_path: "{{ helm_binary }}"
|
||||
|
||||
@@ -19,6 +19,20 @@
|
||||
- install is changed
|
||||
- '"--take-ownership" not in install.command'
|
||||
|
||||
# We need to provide the actual redis password otherwise the update command
|
||||
# will fail with the following:
|
||||
# Error: execution error at (redis/templates/replicas/application.yaml:55:35):
|
||||
# PASSWORDS ERROR: You must provide your current passwords when upgrading the release.
|
||||
# Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims.
|
||||
# Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases
|
||||
# 'global.redis.password' must not be empty, please add '--set global.redis.password=$REDIS_PASSWORD' to the command. To get the current value:
|
||||
- name: Retrieve release password
|
||||
kubernetes.core.k8s_info:
|
||||
namespace: "{{ helm_namespace }}"
|
||||
kind: Secret
|
||||
name: test-take-ownership-redis
|
||||
register: redis_secret
|
||||
|
||||
- name: Upgrade chart (take-onwership flag set)
|
||||
helm:
|
||||
binary_path: "{{ helm_binary }}"
|
||||
@@ -29,6 +43,9 @@
|
||||
values:
|
||||
commonLabels:
|
||||
take-onwership: "set"
|
||||
global:
|
||||
redis:
|
||||
password: "{{ redis_secret.resources.0.data['redis-password'] | b64decode }}"
|
||||
register: upgrade
|
||||
ignore_errors: true
|
||||
|
||||
@@ -55,6 +72,9 @@
|
||||
values:
|
||||
commonLabels:
|
||||
take-onwership: "not-set"
|
||||
global:
|
||||
redis:
|
||||
password: "{{ redis_secret.resources.0.data['redis-password'] | b64decode }}"
|
||||
register: upgrade
|
||||
ignore_errors: true
|
||||
|
||||
|
||||
@@ -31,26 +31,18 @@
|
||||
- name: assert warning has been raised
|
||||
assert:
|
||||
that:
|
||||
- uninstall.warnings
|
||||
- uninstall.warnings is defined
|
||||
- '"helm uninstall support option --wait for helm release >= 3.7.0" in uninstall.warnings'
|
||||
|
||||
- name: Create temp directory
|
||||
tempfile:
|
||||
state: directory
|
||||
suffix: .test
|
||||
register: _result
|
||||
|
||||
- set_fact:
|
||||
helm_tmp_dir: "{{ _result.path }}"
|
||||
|
||||
- name: Unarchive Helm binary
|
||||
unarchive:
|
||||
src: 'https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz'
|
||||
dest: "{{ helm_tmp_dir }}"
|
||||
remote_src: yes
|
||||
- name: Install Helm v4
|
||||
ansible.builtin.include_role:
|
||||
name: install_helm
|
||||
vars:
|
||||
helm_version: v4.0.0
|
||||
|
||||
- name: Install chart
|
||||
helm:
|
||||
binary_path: "{{ helm_tmp_dir }}/linux-amd64/helm"
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
@@ -59,7 +51,7 @@
|
||||
- name: uninstall chart again using recent version
|
||||
helm:
|
||||
state: absent
|
||||
binary_path: "{{ helm_tmp_dir }}/linux-amd64/helm"
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_name }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
wait: yes
|
||||
@@ -96,12 +88,6 @@
|
||||
- _info.status is undefined
|
||||
|
||||
always:
|
||||
- name: Delete temp directory
|
||||
file:
|
||||
path: "{{ helm_tmp_dir }}"
|
||||
state: absent
|
||||
ignore_errors: true
|
||||
|
||||
- name: Remove namespace
|
||||
k8s:
|
||||
kind: Namespace
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
---
|
||||
- name: Test helm reuse_values
|
||||
vars:
|
||||
helm_namespace: "{{ test_namespace[14] }}"
|
||||
chart_release_values:
|
||||
replica:
|
||||
replicaCount: 3
|
||||
master:
|
||||
count: 1
|
||||
kind: Deployment
|
||||
chart_reuse_values:
|
||||
replica:
|
||||
replicaCount: 1
|
||||
master:
|
||||
count: 3
|
||||
block:
|
||||
- name: Initial chart installation
|
||||
helm:
|
||||
binary_path: "{{ helm_binary }}"
|
||||
chart_ref: oci://registry-1.docker.io/bitnamicharts/redis
|
||||
release_name: test-redis
|
||||
release_namespace: "{{ helm_namespace }}"
|
||||
create_namespace: true
|
||||
release_values: "{{ chart_release_values }}"
|
||||
register: install
|
||||
ignore_errors: true
|
||||
when: helm_version == "v4.0.0"
|
||||
|
||||
- name: Debug install result
|
||||
debug:
|
||||
var: install
|
||||
when: helm_version == "v4.0.0"
|
||||
|
||||
- name: Ensure helm installation was failed for v4.0.0
|
||||
assert:
|
||||
that:
|
||||
- install is failed
|
||||
- "'Helm version must be >=3.0.0,<4.0.0' in install.msg"
|
||||
when: helm_version == "v4.0.0"
|
||||
|
||||
always:
|
||||
- name: Remove helm namespace
|
||||
k8s:
|
||||
api_version: v1
|
||||
kind: Namespace
|
||||
name: "{{ helm_namespace }}"
|
||||
state: absent
|
||||
@@ -30,9 +30,9 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
ignore_errors: yes
|
||||
ignore_errors: true
|
||||
register: install_fail
|
||||
|
||||
- name: "Assert that Install fail {{ chart_test }} from {{ source }}"
|
||||
@@ -46,7 +46,7 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
create_namespace: true
|
||||
register: install_check_mode
|
||||
@@ -64,17 +64,18 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
create_namespace: true
|
||||
register: install
|
||||
|
||||
- name: "Assert that {{ chart_test }} chart is installed from {{ source }}"
|
||||
- name: "Assert that {{ chart_test }} chart version {{ chart_test_version }} is installed from {{ source }}"
|
||||
assert:
|
||||
that:
|
||||
- install is changed
|
||||
- install.status.chart == chart_test+"-"+chart_test_version
|
||||
- install.status.status | lower == 'deployed'
|
||||
- install.status.release_values == {}
|
||||
|
||||
- name: Check helm_info content
|
||||
helm_info:
|
||||
@@ -92,7 +93,7 @@
|
||||
- deployed
|
||||
register: release_state_content_info
|
||||
|
||||
- name: "Assert that {{ chart_test }} is installed from {{ source }} with helm_info"
|
||||
- name: "Assert that {{ chart_test }} chart version {{ chart_test_version }} is installed from {{ source }} with helm_info"
|
||||
assert:
|
||||
that:
|
||||
- content_info.status.chart == chart_test+"-"+chart_test_version
|
||||
@@ -104,9 +105,10 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
register: install
|
||||
diff: true
|
||||
|
||||
- name: Assert idempotency
|
||||
assert:
|
||||
@@ -120,7 +122,7 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
values: "{{ chart_test_values }}"
|
||||
register: install
|
||||
@@ -131,17 +133,18 @@
|
||||
- install is changed
|
||||
- install.status.status | lower == 'deployed'
|
||||
- install.status.chart == chart_test+"-"+chart_test_version
|
||||
- "install.status['release_values'].revisionHistoryLimit == 0"
|
||||
- install.status['release_values'] == chart_test_values
|
||||
|
||||
- name: Check idempotency after adding vars
|
||||
helm:
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
values: "{{ chart_test_values }}"
|
||||
register: install
|
||||
diff: true
|
||||
|
||||
- name: Assert idempotency after add vars
|
||||
assert:
|
||||
@@ -149,14 +152,14 @@
|
||||
- install is not changed
|
||||
- install.status.status | lower == 'deployed'
|
||||
- install.status.chart == chart_test+"-"+chart_test_version
|
||||
- "install.status['release_values'].revisionHistoryLimit == 0"
|
||||
- install.status['release_values'] == chart_test_values
|
||||
|
||||
- name: "Remove Vars to {{ chart_test }} from {{ source }}"
|
||||
helm:
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
register: install
|
||||
|
||||
@@ -173,9 +176,10 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
register: install
|
||||
diff: true
|
||||
|
||||
- name: Assert idempotency after removing vars
|
||||
assert:
|
||||
@@ -190,7 +194,7 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source_upgrade | default(chart_source) }}"
|
||||
chart_version: "{{ chart_source_version_upgrade | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version_upgrade }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
register: install
|
||||
|
||||
@@ -206,9 +210,10 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source_upgrade | default(chart_source) }}"
|
||||
chart_version: "{{ chart_source_version_upgrade | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version_upgrade }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
register: install
|
||||
diff: true
|
||||
|
||||
- name: Assert idempotency after upgrade
|
||||
assert:
|
||||
@@ -237,6 +242,7 @@
|
||||
name: "{{ chart_release_name }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
register: install
|
||||
diff: true
|
||||
|
||||
- name: Assert idempotency
|
||||
assert:
|
||||
@@ -249,7 +255,7 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_replaced_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
register: install
|
||||
|
||||
@@ -277,7 +283,7 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_replaced_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
replace: True
|
||||
register: install
|
||||
@@ -305,7 +311,7 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
values_files:
|
||||
- "{{ role_path }}/files/values.yaml"
|
||||
@@ -324,7 +330,7 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
values_files:
|
||||
- "{{ role_path }}/files/values.yaml"
|
||||
@@ -346,7 +352,7 @@
|
||||
helm_template:
|
||||
binary_path: "{{ helm_binary }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
output_dir: "{{ temp_dir }}"
|
||||
values_files:
|
||||
- "{{ role_path }}/files/values.yaml"
|
||||
@@ -372,7 +378,7 @@
|
||||
helm_template:
|
||||
binary_path: "{{ helm_binary }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
disable_hook: True
|
||||
release_name: "myrelease"
|
||||
release_namespace: "myreleasenamespace"
|
||||
@@ -398,7 +404,7 @@
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: "{{ chart_release_name }}"
|
||||
chart_ref: "{{ chart_source }}"
|
||||
chart_version: "{{ chart_source_version | default(omit) }}"
|
||||
chart_version: "{{ chart_test_version }}"
|
||||
namespace: "{{ helm_namespace }}"
|
||||
create_namespace: true
|
||||
context: does-not-exist
|
||||
@@ -417,6 +423,7 @@
|
||||
state: absent
|
||||
path: "{{ temp_dir }}"
|
||||
ignore_errors: true
|
||||
when: temp_dir is defined
|
||||
|
||||
- name: Remove helm namespace
|
||||
k8s:
|
||||
|
||||
@@ -5,18 +5,38 @@
|
||||
name: test_helm
|
||||
repo_url: "{{ chart_test_repo }}"
|
||||
|
||||
- name: Install Chart from repository
|
||||
include_tasks: "../tests_chart.yml"
|
||||
vars:
|
||||
source: repository
|
||||
chart_source: "test_helm/{{ chart_test }}"
|
||||
chart_source_version: "{{ chart_test_version }}"
|
||||
chart_source_version_upgrade: "{{ chart_test_version_upgrade }}"
|
||||
helm_namespace: "{{ test_namespace[7] }}"
|
||||
- name: Create temporary file to save values in
|
||||
ansible.builtin.tempfile:
|
||||
suffix: .helm_values
|
||||
register: value_file
|
||||
|
||||
- name: Remove chart repo
|
||||
helm_repository:
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: test_helm
|
||||
repo_url: "{{ chart_test_repo }}"
|
||||
state: absent
|
||||
- vars:
|
||||
source: repository
|
||||
chart_test: k8status
|
||||
chart_source: "test_helm/k8status"
|
||||
chart_test_version: "0.16.1"
|
||||
chart_test_version_upgrade: "0.16.2"
|
||||
helm_namespace: "{{ test_namespace[7] }}"
|
||||
chart_test_values:
|
||||
replicaCount: 3
|
||||
block:
|
||||
- name: Save values into file
|
||||
ansible.builtin.copy:
|
||||
content: "{{ chart_test_values }}"
|
||||
dest: "{{ value_file.path }}"
|
||||
|
||||
- name: Install Chart from repository
|
||||
ansible.builtin.include_tasks: "../tests_chart.yml"
|
||||
|
||||
always:
|
||||
- name: Remove temporary file
|
||||
ansible.builtin.file:
|
||||
state: absent
|
||||
path: "{{ value_file.path }}"
|
||||
|
||||
- name: Remove chart repo
|
||||
helm_repository:
|
||||
binary_path: "{{ helm_binary }}"
|
||||
name: test_helm
|
||||
repo_url: "{{ chart_test_repo }}"
|
||||
state: absent
|
||||
|
||||
@@ -3,6 +3,11 @@
|
||||
include_tasks: "../tests_chart.yml"
|
||||
vars:
|
||||
source: url
|
||||
chart_source: "https://github.com/kubernetes/ingress-nginx/releases/download/helm-chart-{{ chart_test_version }}/{{ chart_test }}-{{ chart_test_version }}.tgz"
|
||||
chart_source_upgrade: "https://github.com/kubernetes/ingress-nginx/releases/download/helm-chart-{{ chart_test_version_upgrade }}/{{ chart_test }}-{{ chart_test_version_upgrade }}.tgz"
|
||||
chart_test: "k8status"
|
||||
chart_test_values:
|
||||
replicaCount: 3
|
||||
chart_test_version: "0.16.1"
|
||||
chart_test_version_upgrade: "0.16.2"
|
||||
chart_source: https://github.com/stenic/k8status/releases/download/k8status-0.16.1/k8status-0.16.1.tgz
|
||||
chart_source_upgrade: https://github.com/stenic/k8status/releases/download/k8status-0.16.2/k8status-0.16.2.tgz
|
||||
helm_namespace: "{{ test_namespace[8] }}"
|
||||
|
||||
Reference in New Issue
Block a user