diff options
author | Michal Ptacek <m.ptacek@partner.samsung.com> | 2018-12-19 19:42:03 +0000 |
---|---|---|
committer | Michal Ptacek <m.ptacek@partner.samsung.com> | 2018-12-19 19:42:03 +0000 |
commit | 11e2af5b184a9260b31ab3be497cb709f3471cec (patch) | |
tree | 033209fe62bb92b19880fbf94aee6e9366ad7ab5 /ansible | |
parent | 1f3bd6c49f6731ab05fef5189ab766309bc816de (diff) |
Adding role for application handling
this ansible role contains application specific tasks, it is
written in generic way and different helm charts can be used as
application. In addition operator can provide proprietary pre_install
and post_install hooks.
Change-Id: Ibe4b330e5a725dde41aca9f6a59d702cfaba6f52
Issue-ID: OOM-1551
Signed-off-by: Michal Ptacek <m.ptacek@partner.samsung.com>
Diffstat (limited to 'ansible')
4 files changed, 49 insertions, 5 deletions
diff --git a/ansible/roles/application-install/tasks/custom_role.yml b/ansible/roles/application-install/tasks/custom_role.yml new file mode 100644 index 00000000..3c6237e3 --- /dev/null +++ b/ansible/roles/application-install/tasks/custom_role.yml @@ -0,0 +1,9 @@ +--- +# Caller fills application_custom_role variable with actual role name. +- name: "Execute custom role {{ application_custom_role }} {{ phase }} Helm install." + include_role: + name: "{{ application_custom_role }}" + when: + - application_custom_role is defined + - application_custom_role is not none + - application_custom_role | trim != '' diff --git a/ansible/roles/application-install/tasks/install.yml b/ansible/roles/application-install/tasks/install.yml index 54b64439..7ff6b62c 100644 --- a/ansible/roles/application-install/tasks/install.yml +++ b/ansible/roles/application-install/tasks/install.yml @@ -5,9 +5,14 @@ --upgrade --skip-refresh -- name: Wait for helm - wait_for: timeout=10 - delegate_to: localhost +#A correct way to implement this would be using --wait option in helm init invocation. +#However, it does not work due to https://github.com/helm/helm/issues/4031 (fixed in newer helm release) +- name: "Wait for helm upgrade to finish" + command: "{{ helm_bin_dir }}/helm version --tiller-connection-timeout 10" + register: result + until: result.rc == 0 + delay: 10 + retries: 12 - name: Get all helm repos command: "{{ helm_bin_dir }}/helm repo list" @@ -27,8 +32,10 @@ - name: Helm Make All make: - chdir: "{{ app_helm_charts_directory }}" + chdir: "{{ app_helm_charts_infra_directory }}" target: all + environment: + PATH: "{{ helm_bin_dir }}:{{ ansible_env.PATH }}" - name: Helm Install application {{ app_name }} - command: "helm install {{ helm_repository_name }}/{{ app_helm_chart_name }} --name {{ app_helm_release_name }} --namespace {{ app_kubernetes_namespace }}" + command: "{{ helm_bin_dir }}/helm install {{ helm_repository_name }}/{{ app_helm_chart_name }} --name {{ app_helm_release_name }} --namespace {{ app_kubernetes_namespace }}" diff --git a/ansible/roles/application-install/tasks/post-install.yml b/ansible/roles/application-install/tasks/post-install.yml new file mode 100644 index 00000000..10594233 --- /dev/null +++ b/ansible/roles/application-install/tasks/post-install.yml @@ -0,0 +1,5 @@ +--- +- name: "Execute custome role {{ application_post_install_role }} if defined." + include_tasks: custom_role.yml + vars: + application_custom_role: "{{ application_post_install_role }}" diff --git a/ansible/roles/application-install/tasks/pre-install.yml b/ansible/roles/application-install/tasks/pre-install.yml new file mode 100644 index 00000000..b782ca76 --- /dev/null +++ b/ansible/roles/application-install/tasks/pre-install.yml @@ -0,0 +1,23 @@ +--- +# before custom specific code is executed we need to move helm charts to infra +- name: Distribute helm charts to infra node + block: + - name: Archive helm charts + archive: + path: "{{ app_helm_charts_install_directory }}/*" + dest: "{{ app_helm_charts_install_directory }}.tgz" + delegate_to: localhost + - name: Create helm charts dir on infra + file: + path: "{{ app_helm_charts_infra_directory }}" + state: directory + mode: 0755 + - name: Unarchive helm charts on infra node + unarchive: + src: "{{ app_helm_charts_install_directory }}.tgz" + dest: "{{ app_helm_charts_infra_directory }}" + +- name: "Execute custome role {{ application_pre_install_role }} if defined." + include_tasks: custom_role.yml + vars: + application_custom_role: "{{ application_pre_install_role }}" |