]> git.immae.eu Git - github/fretlink/ansible-clever.git/blob - tasks/deploy.yml
Add support for scalability configuration
[github/fretlink/ansible-clever.git] / tasks / deploy.yml
1 - name: Configure Drain
2 when: syslog_server is defined or clever_syslog_server is defined
3 command: "{{ ansible_env.HOME }}/{{ clever_user_path }}/clever-set-drain.sh"
4 args:
5 chdir: "{{ clever_app_root }}"
6 environment:
7 SYSLOG_UDP_SERVER: "{{ clever_syslog_server | default(syslog_server) }}"
8 CONFIGURATION_FILE: "{{ clever_login_file }}"
9
10 - name: Configure Domain
11 when: domain is defined or clever_domain is defined
12 command: "{{ ansible_env.HOME }}/{{ clever_user_path }}/clever-set-domain.sh"
13 args:
14 chdir: "{{ clever_app_root }}"
15 environment:
16 DOMAIN: "{{ clever_domain | default(domain) }}"
17 CONFIGURATION_FILE: "{{ clever_login_file }}"
18
19 - name: Configure Build Instance
20 when: clever_build_flavor is defined
21 command: "clever scale --build-flavor {{ clever_build_flavor }}"
22 args:
23 chdir: "{{ clever_app_root }}"
24 environment:
25 CONFIGURATION_FILE: "{{ clever_login_file }}"
26
27 - name: Configure Scalability
28 when: clever_scaling is defined
29 command: "{{ ansible_env.HOME }}/{{ clever_user_path }}/clever-set-scalability.sh"
30 args:
31 chdir: "{{ clever_app_root }}"
32 environment:
33 CONFIGURATION_FILE: "{{ clever_login_file }}"
34 INSTANCES: "{{ clever_scaling.instances.fixed | default ('') }}"
35 MIN_INSTANCES: "{{ clever_scaling.instances.min | default('') }}"
36 MAX_INSTANCES: "{{ clever_scaling.instances.max | default('') }}"
37 FLAVOR: "{{ clever_scaling.flavor.fixed | default('') }}"
38 MIN_FLAVOR: "{{ clever_scaling.flavor.min | default('') }}"
39 MAX_FLAVOR: "{{ clever_scaling.flavor.max | default('') }}"
40
41 - name: Push Environment
42 shell: "clever env import --json < {{ clever_app_confdir }}/env"
43 args:
44 chdir: "{{ clever_app_root }}"
45 environment:
46 CONFIGURATION_FILE: "{{ clever_login_file }}"
47 changed_when: false
48
49 - name: Deploy to Clever-Cloud
50 shell: "clever deploy --force"
51 args:
52 chdir: "{{ clever_app_root }}"
53 environment:
54 CONFIGURATION_FILE: "{{ clever_login_file }}"
55 async: 2400 # 40 minutes
56 poll: 0
57 ignore_errors: true
58 register: clever_deploy
59 tags:
60 - skip_ansible_lint
61
62 - name: Wait up to 40 minutes for deployment completion
63 async_status:
64 jid: "{{ clever_deploy.ansible_job_id }}"
65 register: job_result
66 until: job_result.finished
67 ignore_errors: true
68 delay: 30
69 retries: 80 # 40 minutes (80 * 30 secs delay)
70
71 ##################################################################
72 # Re-deploy only if its the first clever deploy for that project #
73 ##################################################################
74
75 - name: Retry deploy to clever-cloud
76 include_tasks: redeploy.yml
77 when:
78 - not job_result.rc == 0
79 - job_result.stderr is defined
80 - job_result.stderr is search("Failed to read git object")
81
82 - name: Deploy logs (stdout)
83 debug:
84 var: job_result.stdout_lines
85 when: job_result.stdout_lines is defined
86
87 - name: Deploy error logs (stderr)
88 debug:
89 var: job_result.stderr_lines
90 when: job_result.stderr_lines is defined
91
92 - name: Fail in case of timeout or failure
93 fail:
94 msg: "Deployment failed. Please check logs above."
95 when: not job_result.finished or not job_result.rc == 0