Tomas Levora | 5ea00a9 | 2018-12-19 14:36:36 +0100 | [diff] [blame] | 1 | --- |
| 2 | - name: Helm init and upgrade |
| 3 | command: | |
| 4 | {{ helm_bin_dir }}/helm init |
| 5 | --upgrade |
| 6 | --skip-refresh |
Samuli Silvius | 8fd2314 | 2019-04-17 19:42:59 +0300 | [diff] [blame] | 7 | changed_when: true # init is always changed type of action |
Tomas Levora | 5ea00a9 | 2018-12-19 14:36:36 +0100 | [diff] [blame] | 8 | |
Samuli Silvius | 51d7d01 | 2019-03-19 08:45:54 +0200 | [diff] [blame] | 9 | # A correct way to implement this would be using --wait option in helm init invocation. |
| 10 | # However, it does not work due to https://github.com/helm/helm/issues/4031 (fixed in newer helm release) |
Michal Ptacek | 11e2af5 | 2018-12-19 19:42:03 +0000 | [diff] [blame] | 11 | - name: "Wait for helm upgrade to finish" |
| 12 | command: "{{ helm_bin_dir }}/helm version --tiller-connection-timeout 10" |
| 13 | register: result |
| 14 | until: result.rc == 0 |
| 15 | delay: 10 |
| 16 | retries: 12 |
Samuli Silvius | 8fd2314 | 2019-04-17 19:42:59 +0300 | [diff] [blame] | 17 | changed_when: false # for idempotency |
Tomas Levora | 5ea00a9 | 2018-12-19 14:36:36 +0100 | [diff] [blame] | 18 | |
| 19 | - name: Get all helm repos |
| 20 | command: "{{ helm_bin_dir }}/helm repo list" |
| 21 | register: repos |
Samuli Silvius | 8fd2314 | 2019-04-17 19:42:59 +0300 | [diff] [blame] | 22 | changed_when: false # for idempotency |
Tomas Levora | 5ea00a9 | 2018-12-19 14:36:36 +0100 | [diff] [blame] | 23 | |
| 24 | - name: Remove stable repo |
| 25 | command: "{{ helm_bin_dir }}/helm repo remove stable" |
Samuli Silvius | 8fd2314 | 2019-04-17 19:42:59 +0300 | [diff] [blame] | 26 | changed_when: true # when executed its a changed type of action |
Tomas Levora | 5ea00a9 | 2018-12-19 14:36:36 +0100 | [diff] [blame] | 27 | when: "'stable' in repos.stdout" |
| 28 | |
| 29 | - name: Helm Serve |
| 30 | shell: "{{ helm_bin_dir }}/helm serve &" |
| 31 | async: 45 |
Samuli Silvius | 8fd2314 | 2019-04-17 19:42:59 +0300 | [diff] [blame] | 32 | poll: 3 # wait 3sec to get a chance for some stderr |
Michal Ptacek | 200ae72 | 2019-03-21 12:32:20 +0000 | [diff] [blame] | 33 | register: helm_serve |
| 34 | changed_when: "'address already in use' not in helm_serve.stderr" |
| 35 | |
| 36 | - name: List helm repos |
| 37 | command: "{{ helm_bin_dir }}/helm repo list" |
| 38 | register: helm_repo_list |
Samuli Silvius | 8fd2314 | 2019-04-17 19:42:59 +0300 | [diff] [blame] | 39 | changed_when: false # for idempotency |
Michal Ptacek | 200ae72 | 2019-03-21 12:32:20 +0000 | [diff] [blame] | 40 | failed_when: |
| 41 | - helm_repo_list.rc > 0 |
| 42 | - "'Error: no repositories to show' not in helm_repo_list.stderr" |
Tomas Levora | 5ea00a9 | 2018-12-19 14:36:36 +0100 | [diff] [blame] | 43 | |
| 44 | - name: Helm Add Repo |
Samuli Silvius | 51d7d01 | 2019-03-19 08:45:54 +0200 | [diff] [blame] | 45 | command: "{{ helm_bin_dir }}/helm repo add {{ helm_repository_name | mandatory }} {{ helm_repository_url | mandatory }}" |
Michal Ptacek | 200ae72 | 2019-03-21 12:32:20 +0000 | [diff] [blame] | 46 | when: "'local' not in helm_repo_list.stdout" |
Samuli Silvius | 8fd2314 | 2019-04-17 19:42:59 +0300 | [diff] [blame] | 47 | changed_when: true # when executed its a changed type of action |
Tomas Levora | 5ea00a9 | 2018-12-19 14:36:36 +0100 | [diff] [blame] | 48 | |
Michal Ptacek | 271cf3f | 2019-01-17 20:39:46 +0000 | [diff] [blame] | 49 | - name: Build local helm repository |
Tomas Levora | 5ea00a9 | 2018-12-19 14:36:36 +0100 | [diff] [blame] | 50 | make: |
Michal Ptacek | 11e2af5 | 2018-12-19 19:42:03 +0000 | [diff] [blame] | 51 | chdir: "{{ app_helm_charts_infra_directory }}" |
Michal Ptacek | 271cf3f | 2019-01-17 20:39:46 +0000 | [diff] [blame] | 52 | target: "{{ item }}" |
Samuli Silvius | 51d7d01 | 2019-03-19 08:45:54 +0200 | [diff] [blame] | 53 | loop: "{{ app_helm_build_targets }}" |
Michal Ptacek | 11e2af5 | 2018-12-19 19:42:03 +0000 | [diff] [blame] | 54 | environment: |
| 55 | PATH: "{{ helm_bin_dir }}:{{ ansible_env.PATH }}" |
Tomas Levora | 5ea00a9 | 2018-12-19 14:36:36 +0100 | [diff] [blame] | 56 | |
Samuli Silvius | 51d7d01 | 2019-03-19 08:45:54 +0200 | [diff] [blame] | 57 | - name: Generate Helm application override file with custom role |
| 58 | include_role: |
| 59 | name: "{{ app_helm_override_role }}" |
| 60 | when: not app_skip_helm_override |
Michal Ptacek | 997057f | 2019-02-01 08:37:05 +0000 | [diff] [blame] | 61 | |
Michal Zegan | a9fff27 | 2019-07-01 14:50:49 +0200 | [diff] [blame] | 62 | # The generated override file is added to override list unless skipped. |
| 63 | - name: Add application helm override file to list of overrides unless skipped |
| 64 | set_fact: |
| 65 | helm_override_files: "{{ (helm_override_files | default([])) + [app_helm_override_file] }}" |
| 66 | when: not app_skip_helm_override |
| 67 | |
| 68 | - name: Print final list of override files |
| 69 | debug: |
| 70 | var: helm_override_files |
| 71 | |
Michal Ptacek | fabcad6 | 2019-02-04 06:38:08 +0000 | [diff] [blame] | 72 | - name: Check for deploy plugin presence |
| 73 | stat: |
Milan Verespej | 5f5aa01 | 2019-02-08 15:30:39 +0100 | [diff] [blame] | 74 | path: '{{ helm_home_dir.stdout }}/plugins/deploy/deploy.sh' |
Michal Ptacek | fabcad6 | 2019-02-04 06:38:08 +0000 | [diff] [blame] | 75 | register: deploy_plugin_presence |
| 76 | |
| 77 | - name: "Helm Install application {{ app_name }}" |
| 78 | command: > |
| 79 | {{ helm_bin_dir }}/helm |
| 80 | {{ 'deploy' if deploy_plugin_presence.stat.exists else 'install --name' }} |
| 81 | {{ app_helm_release_name }} |
| 82 | {{ helm_repository_name }}/{{ app_helm_chart_name }} |
| 83 | --namespace {{ app_kubernetes_namespace }} |
Michal Zegan | 570db0a | 2019-06-04 16:27:40 +0200 | [diff] [blame] | 84 | {{ helm_override_files | map('regex_replace', '^', '-f ') | join(' ') }} |
| 85 | {{ helm_extra_install_options | map(attribute='opt') | join(' ') }} |
Samuli Silvius | 8fd2314 | 2019-04-17 19:42:59 +0300 | [diff] [blame] | 86 | changed_when: true # when executed its a changed type of action |
Milan Verespej | a2e3a4c | 2019-03-29 12:50:40 +0100 | [diff] [blame] | 87 | register: helm_install |
| 88 | failed_when: helm_install.stderr |