From 2c7299fa340e6918a59d92981f01652e9464ee86 Mon Sep 17 00:00:00 2001 From: Bartek Grzybowski Date: Fri, 22 Jan 2021 15:09:51 +0100 Subject: Add Helm v3 plugin deployment playbook Change-Id: I3999dd64dd87f163a3306b74cec88019d821759e Issue-ID: OOM-2665 Signed-off-by: Bartek Grzybowski --- .../molecule/default/tests/test_default.py | 7 ++- .../roles/application/molecule/helm3/Dockerfile.j2 | 1 + .../roles/application/molecule/helm3/molecule.yml | 54 ++++++++++++++++++++++ ansible/roles/application/molecule/helm3/tests | 1 + .../application/tasks/install-helm3-plugins.yml | 33 +++++++++++++ ansible/roles/application/tasks/install.yml | 8 ++-- ansible/roles/application/tasks/setup-helm2.yml | 5 ++ ansible/roles/application/tasks/setup-helm3.yml | 5 ++ .../application/tasks/transfer-helm-charts.yml | 2 + 9 files changed, 111 insertions(+), 5 deletions(-) create mode 120000 ansible/roles/application/molecule/helm3/Dockerfile.j2 create mode 100644 ansible/roles/application/molecule/helm3/molecule.yml create mode 120000 ansible/roles/application/molecule/helm3/tests create mode 100644 ansible/roles/application/tasks/install-helm3-plugins.yml create mode 100644 ansible/roles/application/tasks/setup-helm2.yml create mode 100644 ansible/roles/application/tasks/setup-helm3.yml (limited to 'ansible') diff --git a/ansible/roles/application/molecule/default/tests/test_default.py b/ansible/roles/application/molecule/default/tests/test_default.py index 22298e3a..21fc40e4 100644 --- a/ansible/roles/application/molecule/default/tests/test_default.py +++ b/ansible/roles/application/molecule/default/tests/test_default.py @@ -8,7 +8,12 @@ testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( def test_helm_commands(host): fc = host.file('/tmp/helm_simu_output').content_string - expected_content = """home + helm_release = host.ansible.get_variables()['helm_version'] + if helm_release == 'v2': + content_str1 = 'home' + elif helm_release == 'v3': + content_str1 = 'env' + expected_content = content_str1 + """ init --upgrade --skip-refresh version --tiller-connection-timeout 10 repo list diff --git a/ansible/roles/application/molecule/helm3/Dockerfile.j2 b/ansible/roles/application/molecule/helm3/Dockerfile.j2 new file mode 120000 index 00000000..867ec5c3 --- /dev/null +++ b/ansible/roles/application/molecule/helm3/Dockerfile.j2 @@ -0,0 +1 @@ +../default/Dockerfile.j2 \ No newline at end of file diff --git a/ansible/roles/application/molecule/helm3/molecule.yml b/ansible/roles/application/molecule/helm3/molecule.yml new file mode 100644 index 00000000..fce59098 --- /dev/null +++ b/ansible/roles/application/molecule/helm3/molecule.yml @@ -0,0 +1,54 @@ +--- +dependency: + name: galaxy +driver: + name: docker +lint: + name: yamllint +platforms: + - name: instance-helm3 + image: centos:7 +provisioner: + name: ansible + env: + ANSIBLE_ROLES_PATH: ../../../../test/roles + inventory: + group_vars: + all: + app_name: moleculetestapp + app_data_path: "/opt/{{ app_name }}" + app_helm_release_name: "{{ app_name }}" + app_kubernetes_namespace: "{{ app_name }}" + app_helm_charts_install_directory: application/helm_charts + app_helm_plugins_directory: "{{ app_helm_charts_install_directory}}/helm/plugins/" + app_helm_charts_infra_directory: "{{ app_data_path }}/helm_charts" + helm_bin_dir: /usr/local/bin + app_helm_build_targets: + - all + - onap + app_helm_chart_name: "{{ app_name }}" + helm_version: v3 + lint: + name: ansible-lint + playbooks: + prepare: ../default/prepare.yml + converge: ../default/playbook.yml + cleanup: ../default/cleanup.yml +scenario: + name: helm3 + test_sequence: + - lint + - cleanup + - destroy + - dependency + - syntax + - create + - prepare + - converge + - verify + - cleanup + - destroy +verifier: + name: testinfra + lint: + name: flake8 diff --git a/ansible/roles/application/molecule/helm3/tests b/ansible/roles/application/molecule/helm3/tests new file mode 120000 index 00000000..b8ac4407 --- /dev/null +++ b/ansible/roles/application/molecule/helm3/tests @@ -0,0 +1 @@ +../default/tests/ \ No newline at end of file diff --git a/ansible/roles/application/tasks/install-helm3-plugins.yml b/ansible/roles/application/tasks/install-helm3-plugins.yml new file mode 100644 index 00000000..da402f31 --- /dev/null +++ b/ansible/roles/application/tasks/install-helm3-plugins.yml @@ -0,0 +1,33 @@ +--- +- name: Install helm plugins if needed + block: + - name: Get helm environment information + command: "{{ helm_bin_dir }}/helm env" + register: helm_env + - name: Set helm data dir + set_fact: + helm_data_dir: | + "{% if 'HELM_DATA_HOME' in helm_env.stdout %} + {{ (helm_env.stdout | replace('\"', '') | regex_search('HELM_DATA_HOME.*')).split('=')[1] }} + {% else %} + {{ '~/.local/share/helm' }} + {% endif %}" + - name: Ensure that dir for helm plugins exists + file: + path: "{{ helm_data_dir }}/plugins" + state: directory + mode: 0755 + - name: Register all plugins to be inserted by dir names + find: + paths: "{{ app_helm_plugins_directory }}" + file_type: "directory" + register: list_of_plugins + delegate_to: localhost + - name: Install all helm plugins from {{ app_helm_plugins_directory }} dir + copy: + src: "{{ item.path }}" + dest: "{{ helm_data_dir }}/plugins" + directory_mode: true + mode: 0755 + loop: "{{ list_of_plugins.files }}" + when: app_helm_plugins_directory is defined and app_helm_plugins_directory is not none diff --git a/ansible/roles/application/tasks/install.yml b/ansible/roles/application/tasks/install.yml index 81e145a7..9e27e2de 100644 --- a/ansible/roles/application/tasks/install.yml +++ b/ansible/roles/application/tasks/install.yml @@ -78,10 +78,10 @@ debug: var: helm_override_files -- name: Check for deploy plugin presence - stat: - path: '{{ helm_home_dir.stdout }}/plugins/deploy/deploy.sh' - register: deploy_plugin_presence +- include_tasks: setup-helm2.yml + when: helm_version | regex_search("^v2" ) +- include_tasks: setup-helm3.yml + when: helm_version | regex_search("^v3" ) - name: "Helm Install application {{ app_name }}" command: > diff --git a/ansible/roles/application/tasks/setup-helm2.yml b/ansible/roles/application/tasks/setup-helm2.yml new file mode 100644 index 00000000..77f0ee91 --- /dev/null +++ b/ansible/roles/application/tasks/setup-helm2.yml @@ -0,0 +1,5 @@ +--- +- name: Check for deploy plugin presence + stat: + path: '{{ helm_home_dir.stdout }}/plugins/deploy/deploy.sh' + register: deploy_plugin_presence diff --git a/ansible/roles/application/tasks/setup-helm3.yml b/ansible/roles/application/tasks/setup-helm3.yml new file mode 100644 index 00000000..ce8cbb3a --- /dev/null +++ b/ansible/roles/application/tasks/setup-helm3.yml @@ -0,0 +1,5 @@ +--- +- name: Check for deploy plugin presence + stat: + path: '{{ helm_data_dir }}/plugins/deploy/deploy.sh' + register: deploy_plugin_presence diff --git a/ansible/roles/application/tasks/transfer-helm-charts.yml b/ansible/roles/application/tasks/transfer-helm-charts.yml index ac910735..2101a5ab 100644 --- a/ansible/roles/application/tasks/transfer-helm-charts.yml +++ b/ansible/roles/application/tasks/transfer-helm-charts.yml @@ -22,3 +22,5 @@ - include_tasks: install-helm2-plugins.yml when: helm_version | regex_search("^v2" ) +- include_tasks: install-helm3-plugins.yml + when: helm_version | regex_search("^v3" ) -- cgit 1.2.3-korg