mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-03-27 05:43:02 +00:00
[PR #703/63607630 backport][stable-3] minor(doc): use the same style of version_added across repo
This is a backport of PR #703 as merged into main (6360763).
SUMMARY
Currently is no single style of version_added, in some places it's unquoted, somewhere single quote is used, in another places it's double quoted. Moreover, some file had different styles in one single file.
The aim of this PR is to update whole repo to single style for version_added
ISSUE TYPE
Docs Pull Request
COMPONENT NAME
kustomize
helm
helm_info
helm_plugin
helm_plugin_info
helm_pull
helm_repository
helm_template
k8s_cluster_info
k8s_cp
k8s_drain
k8s_exec
k8s_log
k8s_rollback
k8s_taint
ADDITIONAL INFORMATION
The same style is proposed as used in amazon.aws collections
Reviewed-by: Mike Graves <mgraves@redhat.com>
303 lines
9.0 KiB
Python
303 lines
9.0 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# Copyright: (c) 2022, Ansible Project
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
from __future__ import absolute_import, division, print_function
|
|
|
|
__metaclass__ = type
|
|
|
|
|
|
DOCUMENTATION = r"""
|
|
---
|
|
module: helm_pull
|
|
short_description: download a chart from a repository and (optionally) unpack it in local directory.
|
|
version_added: 2.4.0
|
|
author:
|
|
- Aubin Bikouo (@abikouo)
|
|
description:
|
|
- Retrieve a package from a package repository, and download it locally.
|
|
- It can also be used to perform cryptographic verification of a chart without installing the chart.
|
|
- There are options for unpacking the chart after download.
|
|
|
|
requirements:
|
|
- "helm >= 3.0 (https://github.com/helm/helm/releases)"
|
|
|
|
options:
|
|
chart_ref:
|
|
description:
|
|
- chart name on chart repository.
|
|
- absolute URL.
|
|
required: true
|
|
type: str
|
|
chart_version:
|
|
description:
|
|
- Specify a version constraint for the chart version to use.
|
|
- This constraint can be a specific tag (e.g. 1.1.1) or it may reference a valid range (e.g. ^2.0.0).
|
|
- Mutually exclusive with C(chart_devel).
|
|
type: str
|
|
verify_chart:
|
|
description:
|
|
- Verify the package before using it.
|
|
default: False
|
|
type: bool
|
|
verify_chart_keyring:
|
|
description:
|
|
- location of public keys used for verification.
|
|
type: path
|
|
provenance:
|
|
description:
|
|
- Fetch the provenance file, but don't perform verification.
|
|
type: bool
|
|
default: False
|
|
repo_url:
|
|
description:
|
|
- chart repository url where to locate the requested chart.
|
|
type: str
|
|
aliases: [ url, chart_repo_url ]
|
|
repo_username:
|
|
description:
|
|
- Chart repository username where to locate the requested chart.
|
|
- Required if C(repo_password) is specified.
|
|
type: str
|
|
aliases: [ username, chart_repo_username ]
|
|
repo_password:
|
|
description:
|
|
- Chart repository password where to locate the requested chart.
|
|
- Required if C(repo_username) is specified.
|
|
type: str
|
|
aliases: [ password, chart_repo_password ]
|
|
pass_credentials:
|
|
description:
|
|
- Pass credentials to all domains.
|
|
default: False
|
|
type: bool
|
|
skip_tls_certs_check:
|
|
description:
|
|
- Whether or not to check tls certificate for the chart download.
|
|
- Requires helm >= 3.3.0.
|
|
type: bool
|
|
default: False
|
|
chart_devel:
|
|
description:
|
|
- Use development versions, too. Equivalent to version '>0.0.0-0'.
|
|
- Mutually exclusive with C(chart_version).
|
|
type: bool
|
|
untar_chart:
|
|
description:
|
|
- if set to true, will untar the chart after downloading it.
|
|
type: bool
|
|
default: False
|
|
destination:
|
|
description:
|
|
- location to write the chart.
|
|
type: path
|
|
required: True
|
|
chart_ca_cert:
|
|
description:
|
|
- Verify certificates of HTTPS-enabled servers using this CA bundle.
|
|
- Requires helm >= 3.1.0.
|
|
type: path
|
|
chart_ssl_cert_file:
|
|
description:
|
|
- Identify HTTPS client using this SSL certificate file.
|
|
- Requires helm >= 3.1.0.
|
|
type: path
|
|
chart_ssl_key_file:
|
|
description:
|
|
- Identify HTTPS client using this SSL key file
|
|
- Requires helm >= 3.1.0.
|
|
type: path
|
|
binary_path:
|
|
description:
|
|
- The path of a helm binary to use.
|
|
required: false
|
|
type: path
|
|
"""
|
|
|
|
EXAMPLES = r"""
|
|
- name: Download chart using chart url
|
|
kubernetes.core.helm_pull:
|
|
chart_ref: https://github.com/grafana/helm-charts/releases/download/grafana-5.6.0/grafana-5.6.0.tgz
|
|
destination: /path/to/chart
|
|
|
|
- name: Download Chart using chart_name and repo_url
|
|
kubernetes.core.helm_pull:
|
|
chart_ref: redis
|
|
repo_url: https://charts.bitnami.com/bitnami
|
|
untar_chart: yes
|
|
destination: /path/to/chart
|
|
|
|
- name: Download Chart (skip tls certificate check)
|
|
kubernetes.core.helm_pull:
|
|
chart_ref: redis
|
|
repo_url: https://charts.bitnami.com/bitnami
|
|
untar_chart: yes
|
|
destination: /path/to/chart
|
|
skip_tls_certs_check: yes
|
|
|
|
- name: Download Chart using chart registry credentials
|
|
kubernetes.core.helm_pull:
|
|
chart_ref: redis
|
|
repo_url: https://charts.bitnami.com/bitnami
|
|
untar_chart: yes
|
|
destination: /path/to/chart
|
|
username: myuser
|
|
password: mypassword123
|
|
"""
|
|
|
|
RETURN = r"""
|
|
stdout:
|
|
type: str
|
|
description: Full `helm pull` command stdout, in case you want to display it or examine the event log
|
|
returned: always
|
|
sample: ''
|
|
stderr:
|
|
type: str
|
|
description: Full `helm pull` command stderr, in case you want to display it or examine the event log
|
|
returned: always
|
|
sample: ''
|
|
command:
|
|
type: str
|
|
description: Full `helm pull` 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 pull --repo test ...
|
|
rc:
|
|
type: int
|
|
description: Helm pull command return code
|
|
returned: always
|
|
sample: 1
|
|
"""
|
|
|
|
from ansible_collections.kubernetes.core.plugins.module_utils.helm import (
|
|
AnsibleHelmModule,
|
|
)
|
|
from ansible_collections.kubernetes.core.plugins.module_utils.version import (
|
|
LooseVersion,
|
|
)
|
|
|
|
|
|
def main():
|
|
argspec = dict(
|
|
chart_ref=dict(type="str", required=True),
|
|
chart_version=dict(type="str"),
|
|
verify_chart=dict(type="bool", default=False),
|
|
verify_chart_keyring=dict(type="path"),
|
|
provenance=dict(type="bool", default=False),
|
|
repo_url=dict(type="str", aliases=["url", "chart_repo_url"]),
|
|
repo_username=dict(type="str", aliases=["username", "chart_repo_username"]),
|
|
repo_password=dict(
|
|
type="str", no_log=True, aliases=["password", "chart_repo_password"]
|
|
),
|
|
pass_credentials=dict(type="bool", default=False),
|
|
skip_tls_certs_check=dict(type="bool", default=False),
|
|
chart_devel=dict(type="bool"),
|
|
untar_chart=dict(type="bool", default=False),
|
|
destination=dict(type="path", required=True),
|
|
chart_ca_cert=dict(type="path"),
|
|
chart_ssl_cert_file=dict(type="path"),
|
|
chart_ssl_key_file=dict(type="path"),
|
|
binary_path=dict(type="path"),
|
|
)
|
|
module = AnsibleHelmModule(
|
|
argument_spec=argspec,
|
|
supports_check_mode=True,
|
|
required_by=dict(
|
|
repo_username=("repo_password"),
|
|
repo_password=("repo_username"),
|
|
),
|
|
mutually_exclusive=[("chart_version", "chart_devel")],
|
|
)
|
|
|
|
helm_version = module.get_helm_version()
|
|
if LooseVersion(helm_version) < LooseVersion("3.0.0"):
|
|
module.fail_json(
|
|
msg="This module requires helm >= 3.0.0, current version is {0}".format(
|
|
helm_version
|
|
)
|
|
)
|
|
|
|
helm_pull_opt_versionning = dict(
|
|
skip_tls_certs_check="3.3.0",
|
|
chart_ca_cert="3.1.0",
|
|
chart_ssl_cert_file="3.1.0",
|
|
chart_ssl_key_file="3.1.0",
|
|
)
|
|
|
|
def test_version_requirement(opt):
|
|
req_version = helm_pull_opt_versionning.get(opt)
|
|
if req_version and LooseVersion(helm_version) < LooseVersion(req_version):
|
|
module.fail_json(
|
|
msg="Parameter {0} requires helm >= {1}, current version is {2}".format(
|
|
opt, req_version, helm_version
|
|
)
|
|
)
|
|
|
|
# Set `helm pull` arguments requiring values
|
|
helm_pull_opts = []
|
|
|
|
helm_value_args = dict(
|
|
chart_version="version",
|
|
verify_chart_keyring="keyring",
|
|
repo_url="repo",
|
|
repo_username="username",
|
|
repo_password="password",
|
|
destination="destination",
|
|
chart_ca_cert="ca-file",
|
|
chart_ssl_cert_file="cert-file",
|
|
chart_ssl_key_file="key-file",
|
|
)
|
|
|
|
for opt, cmdkey in helm_value_args.items():
|
|
if module.params.get(opt):
|
|
test_version_requirement(opt)
|
|
helm_pull_opts.append("--{0} {1}".format(cmdkey, module.params.get(opt)))
|
|
|
|
# Set `helm pull` arguments flags
|
|
helm_flag_args = dict(
|
|
verify_chart=dict(key="verify"),
|
|
provenance=dict(key="prov"),
|
|
pass_credentials=dict(key="pass-credentials"),
|
|
skip_tls_certs_check=dict(key="insecure-skip-tls-verify"),
|
|
chart_devel=dict(key="devel"),
|
|
untar_chart=dict(key="untar"),
|
|
)
|
|
|
|
for k, v in helm_flag_args.items():
|
|
if module.params.get(k):
|
|
test_version_requirement(k)
|
|
helm_pull_opts.append("--{0}".format(v["key"]))
|
|
|
|
helm_cmd_common = "{0} pull {1} {2}".format(
|
|
module.get_helm_binary(),
|
|
module.params.get("chart_ref"),
|
|
" ".join(helm_pull_opts),
|
|
)
|
|
if not module.check_mode:
|
|
rc, out, err = module.run_helm_command(helm_cmd_common, fails_on_error=False)
|
|
else:
|
|
rc, out, err = (0, "", "")
|
|
|
|
if rc == 0:
|
|
module.exit_json(
|
|
failed=False,
|
|
changed=True,
|
|
command=helm_cmd_common,
|
|
stdout=out,
|
|
stderr=err,
|
|
rc=rc,
|
|
)
|
|
else:
|
|
module.fail_json(
|
|
msg="Failure when executing Helm command.",
|
|
command=helm_cmd_common,
|
|
changed=False,
|
|
stdout=out,
|
|
stderr=err,
|
|
rc=rc,
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|