community.kubernetes.helm – Manages Kubernetes packages with the Helm package manager
Note
This plugin is part of the community.kubernetes collection (version 1.2.1).
You might already have this collection installed if you are using the ansible
package.
It is not included in ansible-core
.
To check whether it is installed, run ansible-galaxy collection list
.
To install it, use: ansible-galaxy collection install community.kubernetes
.
To use it in a playbook, specify: community.kubernetes.helm
.
New in version 0.11.0: of community.kubernetes
Synopsis
Install, upgrade, delete packages with the Helm package manager.
Note
This module has a corresponding action plugin.
Requirements
The below requirements are needed on the host that executes this module.
Parameters
Parameter |
Comments |
---|---|
Token used to authenticate with the API. Can also be specified via |
|
If set, the installation process deletes the installation on failure. Choices:
|
|
The path of a helm binary to use. |
|
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 |
|
chart_reference on chart repository. path to a packaged chart. path to an unpacked chart directory. absolute URL. Required when release_state is set to |
|
Chart repository URL where to locate the requested chart. |
|
Chart version to install. If this is not specified, the latest version is installed. |
|
Helm option to specify which kubeconfig context to use. If the value is not specified in the task, the value of environment variable |
|
Create the release namespace if not present. Choices:
|
|
Helm option to disable hook on install/upgrade/delete. Choices:
|
|
Helm option to force reinstall, ignore on new install. Choices:
|
|
Provide a URL for accessing the API. Can also be specified via |
|
Helm option to specify kubeconfig path to use. If the value is not specified in the task, the value of environment variable |
|
Remove the release from the store and make its name free for later use. Choices:
|
|
Release name to manage. |
|
Kubernetes namespace where the chart should be installed. |
|
Desirated state of release. Choices:
|
|
Value to pass to chart. Default: {} |
|
Reuse the given name, only if that name is a deleted release which remains in the history. This is unsafe in production environment. Choices:
|
|
Skip custom resource definitions when installing or upgrading. Choices:
|
|
Run Choices:
|
|
Whether or not to verify the API server’s SSL certificates. Can also be specified via Choices:
|
|
Value files to pass to chart. Paths will be read from the target host’s filesystem, not the host running ansible. values_files option is evaluated before values option if both are used. Paths are evaluated in the order the paths are specified. Default: [] |
|
Wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. Choices:
|
|
Timeout when wait option is enabled (helm2 is a number of seconds, helm3 is a duration). |
Examples
- name: Deploy latest version of Prometheus chart inside monitoring namespace (and create it)
community.kubernetes.helm:
name: test
chart_ref: stable/prometheus
release_namespace: monitoring
create_namespace: true
# From repository
- name: Add stable chart repo
community.kubernetes.helm_repository:
name: stable
repo_url: "https://kubernetes.github.io/ingress-nginx"
- name: Deploy latest version of Grafana chart inside monitoring namespace with values
community.kubernetes.helm:
name: test
chart_ref: stable/grafana
release_namespace: monitoring
values:
replicas: 2
- name: Deploy Grafana chart on 5.0.12 with values loaded from template
community.kubernetes.helm:
name: test
chart_ref: stable/grafana
chart_version: 5.0.12
values: "{{ lookup('template', 'somefile.yaml') | from_yaml }}"
- name: Deploy Grafana chart using values files on target
community.kubernetes.helm:
name: test
chart_ref: stable/grafana
release_namespace: monitoring
values_files:
- /path/to/values.yaml
- name: Remove test release and waiting suppression ending
community.kubernetes.helm:
name: test
state: absent
wait: true
# From git
- name: Git clone stable repo on HEAD
ansible.builtin.git:
repo: "http://github.com/helm/charts.git"
dest: /tmp/helm_repo
- name: Deploy Grafana chart from local path
community.kubernetes.helm:
name: test
chart_ref: /tmp/helm_repo/stable/grafana
release_namespace: monitoring
# From url
- name: Deploy Grafana chart on 5.6.0 from url
community.kubernetes.helm:
name: test
chart_ref: "https://github.com/grafana/helm-charts/releases/download/grafana-5.6.0/grafana-5.6.0.tgz"
release_namespace: monitoring
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
---|---|
Full helm command built by this module, in case you want to re-run the command outside the module or debug a problem. Returned: always Sample: “helm upgrade …” |
|
A dictionary of status output Returned: on success Creation/Upgrade/Already deploy |
|
Version of app deployed Returned: always |
|
Chart name and chart version Returned: always |
|
Name of the release Returned: always |
|
Namespace where the release is deployed Returned: always |
|
Number of time where the release has been updated Returned: always |
|
Status of release (can be DEPLOYED, FAILED, …) Returned: always |
|
The Date of last update Returned: always |
|
Dict of Values used to deploy Returned: always |
|
Full helm command stderr, in case you want to display it or examine the event log Returned: always Sample: “” |
|
Full helm command stdout, in case you want to display it or examine the event log Returned: always Sample: “” |
Authors
Lucas Boisserie (@LucasBoisserie)
Matthieu Diehr (@d-matt)