diff --git a/.drone.yml b/.drone.yml index 06cbf94..38585e2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -18,6 +18,8 @@ steps: - yamllint -c /yamllint/relaxed.yaml roles/docker/tasks/main.yml - yamllint -c /yamllint/relaxed.yaml roles/docker-compose/tasks/main.yml - yamllint -c /yamllint/relaxed.yaml roles/docker-compose/vars/main.yml + - yamllint -c /yamllint/relaxed.yaml roles/helm/tasks/main.yml + - yamllint -c /yamllint/relaxed.yaml roles/helm/vars/main.yml - yamllint -c /yamllint/relaxed.yaml roles/k8s-init-first-master/tasks/main.yml - yamllint -c /yamllint/relaxed.yaml roles/k8s-init-machines/tasks/main.yml - yamllint -c /yamllint/relaxed.yaml roles/k8s-init-workers/tasks/main.yml diff --git a/Makefile b/Makefile index 21a2d72..d8b499f 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,8 @@ lint-yaml: $(LINT-YAML-CMD) roles/docker/tasks/main.yml $(LINT-YAML-CMD) roles/docker-compose/tasks/main.yml $(LINT-YAML-CMD) roles/docker-compose/vars/main.yml + $(LINT-YAML-CMD) roles/helm/tasks/main.yml + $(LINT-YAML-CMD) roles/helm/vars/main.yml $(LINT-YAML-CMD) roles/k8s-init-first-master/tasks/main.yml $(LINT-YAML-CMD) roles/k8s-init-machines/tasks/main.yml $(LINT-YAML-CMD) roles/k8s-init-workers/tasks/main.yml diff --git a/playbooks/k8s-dev/init.yml b/playbooks/k8s-dev/init.yml index 62c71d5..922233a 100644 --- a/playbooks/k8s-dev/init.yml +++ b/playbooks/k8s-dev/init.yml @@ -28,4 +28,5 @@ become: true roles: - k8s-join-workers-to-first-master + - helm ... diff --git a/roles/helm/tasks/main.yml b/roles/helm/tasks/main.yml new file mode 100644 index 0000000..dbdd56c --- /dev/null +++ b/roles/helm/tasks/main.yml @@ -0,0 +1,84 @@ +--- +- name: create download directory + file: + state: directory + mode: 'u=rwx,go=rx' + dest: '{{ helm_download_dir }}' + +- name: download sha256sum + get_url: + url: '{{ helm_mirror }}/{{ helm_filename }}.sha256' + dest: '{{ helm_download_dir }}/{{ helm_filename }}.sha256' + force: no + use_proxy: yes + validate_certs: yes + mode: 'u=rw,go=r' + +- name: read sha256sum + slurp: + src: '{{ helm_download_dir }}/{{ helm_filename }}.sha256' + register: helm_sha256sum + +- name: download Helm + get_url: + url: '{{ helm_mirror }}/{{ helm_filename }}' + dest: '{{ helm_download_dir }}/{{ helm_filename }}' + sha256sum: '{{ helm_sha256sum.content | b64decode | trim }}' + force: no + use_proxy: yes + validate_certs: yes + mode: 'u=rw,go=r' + +- name: check current version + command: > + {{ helm_install_dir }}/helm version --client --template {{ "'{{ if .Version }}{{ .Version }}{{ else }}{{ .Client.SemVer }}{{ end }}'" }} + register: helm_current_version + failed_when: no + changed_when: no + +- name: current version + debug: + msg: '{{ helm_current_version.stdout }}' + when: helm_current_version.rc == 0 + +- name: remove existing installation + become: yes + file: + path: '{{ helm_install_dir }}' + state: absent + when: + - helm_current_version.rc == 0 + - helm_current_version.stdout != ('v' + helm_version) + +- name: create the Helm installation dir + become: yes + file: + state: directory + owner: root + group: root + mode: 'u=rwx,go=rx' + dest: '{{ helm_install_dir }}' + +- name: install Helm + become: yes + unarchive: + src: '{{ helm_download_dir }}/{{ helm_filename }}' + remote_src: yes + dest: '{{ helm_install_dir }}' + extra_opts: + - '--strip-components=1' + owner: root + group: root + mode: 'o-w' + creates: '{{ helm_install_dir }}/helm' + +- name: create helm link + become: yes + file: + src: '{{ helm_install_dir }}/helm' + dest: '/usr/local/bin/helm' + state: link + owner: root + group: root + mode: 'u=rwx,go=rx' +... diff --git a/roles/helm/vars/main.yml b/roles/helm/vars/main.yml new file mode 100644 index 0000000..9de3c94 --- /dev/null +++ b/roles/helm/vars/main.yml @@ -0,0 +1,10 @@ +--- +helm_version: '3.5.4' +helm_os: 'linux' +helm_architecture: 'amd64' +helm_filename: 'helm-v{{ helm_version }}-{{ helm_os }}-{{ helm_architecture }}.tar.gz' + +helm_mirror: 'https://get.helm.sh' +helm_install_dir: '/usr/local/share/helm' +helm_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}" +...