From 5e8d09951f0e4a61ca2de3685c774a18bf5c5ca1 Mon Sep 17 00:00:00 2001 From: Curtis Wilson Date: Wed, 15 Dec 2021 20:44:28 -0500 Subject: [PATCH] Initial commit. --- README.md | 42 ++++++++++++++++++++++++++++++++- defaults/main.yml | 13 ++++++++++ handlers/main.yml | 5 ++++ meta/main.yml | 21 +++++++++++++++++ tasks/main.yml | 60 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 defaults/main.yml create mode 100644 handlers/main.yml create mode 100644 meta/main.yml create mode 100644 tasks/main.yml diff --git a/README.md b/README.md index 854892e..f6cfa01 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,42 @@ -# helm-ansible-role +Role Name +========= +An Ansible role to install helm. + +Requirements +------------ + +None + +Role Variables +-------------- + +```yml +helm_version: 3.7.2 +helm_arch: amd64 +``` + +Dependencies +------------ + +None + +Example Playbook +---------------- + +```yml +- name: Install helm. + hosts: all + roles: + - { role: install_helm, helm_version: 3.7,2, helm_arch: amd64 } +``` + +License +------- + +MIT + +Author Information +------------------ + +This role was created by [shnee](https://github.com/shnee). diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..8394023 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,13 @@ +--- +helm_version: 3.7.2 +helm_arch: amd64 +helm_install_dir: /usr/local/bin +helm_release_base_url: https://get.helm.sh +helm_download_sha256: + 3.7.2: + amd64: 4ae30e48966aba5f807a4e140dad6736ee1a392940101e4d79ffb4ee86200a9e + arm64: b0214eabbb64791f563bd222d17150ce39bf4e2f5de49f49fdb456ce9ae8162f + +# A temporary directory to extract the tar.gz helm release. It get's deleted by +# a handler if it's ever created. +tmp_dir: /tmp/helm-ansible diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..0084b9c --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: Clean up tmp dir + file: + path: "{{ tmp_dir }}" + state: absent diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..cc00342 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,21 @@ +--- +galaxy_info: + author: shnee + description: A ansible role to install helm. + + license: MIT + + min_ansible_version: 2.1 + + platforms: + - name: Ubuntu + versions: + - focal # 20.04 + + galaxy_tags: + - containers + - orchestration + - helm + - kubernetes + +dependencies: [] diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..173f257 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,60 @@ +--- +- name: Check if helm is already installed. + stat: + path: "{{ helm_install_dir }}/helm" + failed_when: false + register: helm_stat + +- name: > + "Check the installed helm version against the desired version + {{ helm_version }}." + command: "{{ helm_install_dir }}/helm version" + changed_when: false + failed_when: false + when: helm_stat.stat.exists + register: existing_helm_version + +- name: Install helm + block: + + - name: Create a tmp directory to extract helm tar.gz + file: + path: "{{ tmp_dir }}" + state: directory + mode: 0700 + notify: Clean up tmp dir + + - name: Download helm tar.gz. + get_url: + url: "{{ helm_release_base_url }}/\ + helm-v{{ helm_version }}-linux-{{ helm_arch }}.tar.gz" + dest: "{{ tmp_dir }}" + checksum: "sha256:{{ helm_download_sha256[helm_version][helm_arch] }}" + mode: 0700 + + - name: Extract helm tar.gz + unarchive: + src: "{{ tmp_dir }}/\ + helm-v{{ helm_version }}-linux-{{ helm_arch }}.tar.gz" + dest: "{{ tmp_dir }}" + remote_src: true + mode: 0700 + + - name: Make sure install directory exists. + file: + path: "{{ helm_install_dir }}" + state: directory + mode: 0755 + become: true + + - name: Copy helm binary from tmp folder to install location. + copy: + src: "{{ tmp_dir }}/linux-{{ helm_arch }}/helm" + remote_src: true + dest: "{{ helm_install_dir }}/helm" + mode: 0755 + become: true + + when: > + not helm_stat.stat.exists or + helm_version not in existing_helm_version.stdout