This repository has been archived by the owner on Apr 4, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
/
post-install.yml
254 lines (222 loc) · 10 KB
/
post-install.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
- hosts: "{{ hosts_prefix }}-tsuru-api-0"
sudo: yes
tasks:
- name: Post Install Tasks | Install git client
apt: name=git state=present
- name: Post Install Tasks | Install crane
apt: name=crane state=present
- name: Post Install Tasks | Check tsuru_deployer key
stat: path=~/.ssh/tsuru_deployer
register: tsuru_deployer_key
- name: Post Install Tasks | Generate tsuru_deployer key
shell: >
ssh-keygen -b 2048 -t rsa -f ~/.ssh/tsuru_deployer -q -N ""
when: tsuru_deployer_key.stat.exists == False
- name: Post Install Tasks | Generate tsuru_deployer.pub key
shell: >
ssh-keygen -y -f ~/.ssh/tsuru_deployer >~/.ssh/tsuru_deployer.pub
when: tsuru_deployer_key.stat.exists == False
- name: Post Install Tasks | Generate ssh config for git
copy:
content: |
Host {{ deploy_env }}-gandalf.{{ domain_name }}
HostName {{ deploy_env }}-gandalf.{{ domain_name }}
User git
IdentityFile ~/.ssh/tsuru_deployer
dest: ~/.ssh/config
mode: 0600
- name: Post Install Tasks | Add Gandalf to known hosts
shell: >
ssh-keyscan {{ deploy_env }}-gandalf.{{ domain_name }} >~/.ssh/known_hosts
- name: Post Install Tasks | Tsuru pool-list
shell: >
tsuru-admin pool-list
register: tsuru_pools
- name: Post Install Tasks | Tsuru pool add default
shell: >
tsuru-admin pool-add default
when: "not 'default' in tsuru_pools.stdout"
- name: Post Install Tasks | Check admin pool
shell: >
tsuru pool-list | grep admin
register: admin_pool
- name: Post Install Tasks | Add admin team to default pool
shell: >
tsuru-admin pool-teams-add default admin
when: "not 'default' in admin_pool.stdout"
- name: Post Install Tasks | Tsuru platform-list
shell: >
tsuru platform-list | awk {'print $2'}
register: tsuru_platforms
- name: Post Install Tasks | Tsuru platform add python
shell: >
tsuru-admin platform-add python -d https://raw.github.com/tsuru/basebuilder/master/python/Dockerfile
when: "not 'python' in tsuru_platforms.stdout"
- name: Post Install Tasks | Tsuru platform add java
shell: >
tsuru-admin platform-add java -d https://raw.github.com/tsuru/basebuilder/master/java/Dockerfile
when: "not 'java' in tsuru_platforms.stdout"
- name: Post Install Tasks | Tsuru platform add static
shell: >
tsuru-admin platform-add static -d https://raw.github.com/tsuru/basebuilder/master/static/Dockerfile
when: "not 'static' in tsuru_platforms.stdout"
- name: Post Install Tasks | Tsuru platform add nodejs
shell: >
tsuru-admin platform-add nodejs -d https://raw.github.com/tsuru/basebuilder/master/nodejs/Dockerfile
when: "not 'nodejs' in tsuru_platforms.stdout"
- name: Post Install Tasks | Tsuru list tsuru_deployer key
shell: >
tsuru key-list -n | awk '$2 == "tsuru_deployer"'
register: tsuru_keys
- name: Post Install Tasks | Get local key content
shell: cat ~/.ssh/tsuru_deployer.pub
register: public_key_content
- name: Post Install Tasks | Tsuru remove old key
shell: >
tsuru key-remove -y tsuru_deployer
when: "not public_key_content.stdout in tsuru_keys.stdout and tsuru_keys.stdout != ''"
- name: Post Install Tasks | Tsuru add ssh key
shell: >
tsuru key-add tsuru_deployer ~/.ssh/tsuru_deployer.pub
when: "not public_key_content.stdout in tsuru_keys.stdout"
- name: Post Install Tasks | Tsuru app-list
shell: >
tsuru app-list
register: tsuru_apps
- name: Post Install Tasks | Tsuru app-create dashboard
shell: >
tsuru app-create dashboard python -t admin
when: "not 'dashboard' in tsuru_apps.stdout"
- name: Post Install Tasks | Get gandalf repo for dashboard
shell: >
tsuru app-info -a dashboard | grep -o 'git@.\+'
register: dashboard_git_remote
- name: Post Install Tasks | Git pull dashboard
git:
repo: https://github.com/tsuru/tsuru-dashboard.git
dest: /tmp/tsuru-dashboard
- name: Post Install Tasks | Git push dashboard to gandalf
shell: >
git push {{ dashboard_git_remote.stdout }} HEAD:refs/heads/master
args:
chdir: /tmp/tsuru-dashboard
- name: Post Install Tasks | Tsuru app-info dashboard
shell: >
tsuru app-info -a dashboard
register: dashboard_app_info
# Adding postgresapi app
- name: Post Install Tasks | Tsuru app-create postgresapi
shell: >
tsuru app-create postgresapi python -t admin
when: "not 'postgresapi' in tsuru_apps.stdout"
- name: Post Install Tasks | Git pull postgresapi
git:
repo: https://github.com/tsuru/postgres-api
dest: /tmp/postgresapi
version: "7d9657e6ea28a4e980048ed159aabd99e13bfeba"
- name: Post Install Tasks | Get gandalf repo for postgresapi
shell: >
tsuru app-info -a postgresapi | grep -o 'git@.\+'
register: postgresapi_git_remote
- name: Post Install Tasks | Git push postgresapi to gandalf
shell: >
git push {{ postgresapi_git_remote.stdout }} HEAD:refs/heads/master
args:
chdir: /tmp/postgresapi
register: postgresapi_push_result
- name: Post Install Tasks | Tsuru app-info postgresapi
shell: >
tsuru app-info -a postgresapi
register: postgresapi_app_info
- name: Post Install Tasks | Tsuru set environment variables for postgresapi
shell: >
tsuru env-set -a postgresapi POSTGRESAPI_DATABASE=postgresapi;
tsuru env-set -a postgresapi POSTGRESAPI_USER=postgresapi;
tsuru env-set -a postgresapi POSTGRESAPI_PASSWORD={{ pg_apiuser_pass }};
tsuru env-set -a postgresapi POSTGRESAPI_HOST={{ postgres_master_host }};
tsuru env-set -a postgresapi POSTGRESAPI_PORT=5432;
tsuru env-set -a postgresapi POSTGRESAPI_SALT=md5;
tsuru env-set -a postgresapi POSTGRESAPI_SHARED_HOST={{ postgres_master_host }};
tsuru env-set -a postgresapi POSTGRESAPI_SHARED_PORT=5432;
tsuru env-set -a postgresapi POSTGRESAPI_SHARED_ADMIN={{ pg_admin_user}};
tsuru env-set -a postgresapi POSTGRESAPI_SHARED_ADMIN_PASSWORD={{ pg_admin_pass }};
tsuru env-set -a postgresapi POSTGRESAPI_SHARED_PUBLIC_HOST={{ postgres_master_host }};
tsuru env-set -a postgresapi POSTGRESAPI_BROKER_USERNAME={{ pg_admin_user }};
tsuru env-set -a postgresapi POSTGRESAPI_BROKER_PASSWORD={{ pg_admin_pass }};
when: "not 'Everything up-to-date' in postgresapi_push_result.stderr"
- name: Post Install Tasks | Tsuru app-run db upgrade
shell: >
tsuru app-run --app postgresapi -- python manage.py upgrade_db
when: "not 'Everything up-to-date' in postgresapi_push_result.stderr"
- name: Post Install Tasks | Add <deploy_env>-postgresapi.<domain_name> cname to posgtresqlapi app
shell: >
tsuru cname-add {{ deploy_env }}-postgresapi.{{ domain_name }} -a postgresapi
when: "not '-postgresapi.' in postgresapi_app_info.stdout"
- name: Post Install Tasks | Generate postgresapi.yml
copy:
content: |
id: postgresql
username: {{ pg_admin_user }}
password: {{ pg_admin_pass }}
endpoint:
production: https://{{ deploy_env }}-postgresapi.{{ domain_name }}
dest: ~/postgresapi.yml
- name: Post Install Tasks | Get service list
shell: >
tsuru service-list
register: service_list
- name: Post Install Tasks | Register service
shell: >
crane create ~/postgresapi.yml
when: "not 'postgresql' in service_list.stdout"
# Elasticsearch
- name: Post Install Tasks | Tsuru app-create elasticsearchapi
shell: >
tsuru app-create elasticsearchapi python -t admin
when: "not 'elasticsearchapi' in tsuru_apps.stdout"
- name: Post Install Tasks | Get env variables of elasticsearchapi
shell: >
tsuru env-get -a elasticsearchapi
register: elasticsearchapi_env
- name: Post Install Tasks | Tsuru set environment variables for elasticsearchapi
shell: >
tsuru env-set -a elasticsearchapi ELASTICSEARCH_HOST={{ elasticsearch_host }};
when: "not \"{{ elasticsearch_host }}\" in elasticsearchapi_env.stdout"
- name: Post Install Tasks | Git pull elasticsearchapi
git:
repo: https://github.com/globocom/elastic-search-api.git
dest: /tmp/elasticsearchapi
version: "b2e12d7e55181d29adb01f7cc397455a207de743"
- name: Post Install Tasks | Get gandalf repo for elasticsearchapi
shell: >
tsuru app-info -a elasticsearchapi | grep -o 'git@.\+'
register: elasticsearchapi_git_remote
- name: Post Install Tasks | Git push elasticsearchapi to gandalf
shell: >
git push {{ elasticsearchapi_git_remote.stdout }} HEAD:refs/heads/master
args:
chdir: /tmp/elasticsearchapi
- name: Post Install Tasks | Tsuru app-info elasticsearchapi
shell: >
tsuru app-info -a elasticsearchapi
register: elasticsearchapi_app_info
- name: Post Install Tasks | Add <deploy_env>-elasticsearchapi.<domain_name> cname to elasticsearchapi app
shell: >
tsuru cname-add {{ elasticsearch_api }} -a elasticsearchapi
when: "not \"{{ elasticsearch_api }}\" in elasticsearchapi_app_info.stdout"
- name: Post Install Tasks | Generate elasticsearchapi.yml
copy:
content: |
id: elasticsearch
username: admin
password: password
endpoint:
production: https://{{ elasticsearch_api }}
dest: ~/elasticsearchapi.yml
- name: Post Install Tasks | Register elasticsearch service
shell: >
crane create ~/elasticsearchapi.yml
when: "not 'elasticsearch' in service_list.stdout"
- debug: var=dashboard_app_info.stdout_lines
- debug: var=postgresapi_app_info.stdout_lines
- debug: var=elasticsearchapi_app_info.stdout_lines