OSDN Git Service

improve the backup and restore scripts.
[metasearch/grid-chef-repo.git] / roles / devops-suite-on-docker.rb
1 #
2 # Copyright 2017, whitestar
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 #
16
17 name 'devops-suite-on-docker'
18 description 'DevOps Suite on Docker'
19
20 dockerd_extra_opts = [
21   '-H fd://',
22   '--bip=192.168.100.1/24 --fixed-cidr=192.168.100.0/24',
23 ].join(' ')
24 network_mode_bridge = false
25 aptly_port             =  '7080'  # default: 8080
26 aptly_api_port         =  '7081'  # default: 8081
27 athenz_zms_port        =  '7043'  # default: 4443
28 athenz_zts_port        =  '8043'  # default: 8443
29 athenz_ui_port         =  '9043'  # default: 9443
30 concourse_port         =  '8080'
31 gitlab_http_port       =    '80'  # default: 80, Note: 8080 already in use.
32 gitlab_ssh_port        =  '2022'
33 halyard_port           =  '8064'  # default: 8064
34 jenkins_port           =  '9080'  # default: 8080
35 jenkins_agent_port     = '50000'  # default: 50000
36 jenkins_home_path = '/opt/docker-compose/app/jenkins/home'
37 nexus_ver = '3'
38 nexus_port = nexus_ver == '3' ? '8081' : '8071'
39 screwdriver_ui_port    =  '9000'  # default: 9000
40 screwdriver_api_port   =  '9001'  # default: 9001
41 screwdriver_store_port =  '9002'  # default: 9002
42 vault_port             =  '8200'  # default: 8200
43
44 run_list(
45   'role[docker]',
46   'role[aptly-on-docker]',
47   'role[athenz-on-docker]',
48   'role[concourse-on-docker]',
49   'role[gitlab-on-docker]',
50   'role[gitlab-runner]',
51   'role[halyard-on-docker]',
52   'role[jenkins-on-docker]',
53   "role[nexus#{nexus_ver}-on-docker]",
54   'role[screwdriver-on-docker]',
55   'role[vault-on-docker]',
56 )
57
58 #env_run_lists()
59
60 attrs = {
61   'docker-grid' => {
62     'engine' => {
63       'skip_setup' => false,
64       'daemon_extra_options' => dockerd_extra_opts
65       #'users_allow' => [
66       #  '<your_login_name>',
67       #],
68     },
69     'compose' => {
70       'skip_setup' => false,
71     },
72   },
73   'apt_utils' => {
74     'aptly' => {
75       'docker-compose' => {
76         'config' => {
77           'services' => {
78             'reverseproxy' => {
79               'ports' => [
80                 "#{aptly_port}:8080",
81                 "#{aptly_api_port}:8081",
82               ],
83             },
84             'aptly' => {
85             },
86           },
87         },
88       },
89     },
90   },
91   'athenz' => {
92     'docker-compose' => {
93       'config' => {
94         'services' => {
95           'athenz' => {
96             'ports' => [
97               "#{athenz_zms_port}:4443",
98               "#{athenz_zts_port}:8443",
99               "#{athenz_ui_port}:9443",
100             ],
101             'environment' => {
102             },
103           },
104         },
105       },
106     },
107   },
108   'concourse-ci' => {
109     'docker-compose' => {
110       'config' => {
111         # Version 1 docker-compose format
112         'concourse-db' => {
113         },
114         'concourse-web' => {
115           'ports' => [
116             "#{concourse_port}:8080",
117           ],
118           'environment' => {
119             #'CONCOURSE_RESOURCE_CHECKING_INTERVAL' => '1m',
120             # If you sepecify no value, Chef will sets "http://#{node['ipaddress']}:8080".
121             #'CONCOURSE_EXTERNAL_URL' => "http://#{node['ipaddress']}:#{concourse_port}",
122           },
123         },
124         'concourse-worker' => {
125           'environment' => {
126           },
127         },
128       },
129     },
130   },
131   'gitlab-grid' => {
132     'gitlab.rb' => {
133       #'external_url' => "http://#{gitlab_cn}:#{gitlab_http_port}",
134       'gitlab_rails' => {
135         #'time_zone' => 'Asia/Tokyo',
136         'gitlab_shell_ssh_port' => gitlab_ssh_port.to_i,
137       },
138       'postgresql' => {
139         'shared_buffers' => '128MB',  # default: 1975MB
140       },
141       'unicorn' => {
142         'worker_processes' => 1,  # default: 5
143       },
144     },
145     'docker-compose' => {
146       'config' => {
147         'services' => {
148           'gitlab' => {
149             #'hostname' => gitlab_cn,
150             'ports' => [
151               "#{gitlab_http_port}:#{gitlab_http_port}",
152               "#{gitlab_ssh_port}:22",
153             ],
154             'network_mode' => 'bridge',  # for the Container Registry feature.
155           },
156         },
157       },
158     },
159     'runner-docker-compose' => {
160       'import_ca' => false,
161     },
162   },
163   'jenkins-grid' => {
164     'docker-compose' => {
165       'jenkins_home' => {
166         'path' => jenkins_home_path,
167       },
168       'config' => {
169         'services' => {
170           'jenkins' => {
171             'ports' => [
172               "#{jenkins_port}:8080",
173               "#{jenkins_agent_port}:50000",
174             ],
175           },
176         },
177       },
178     },
179   },
180   'nexus-grid' => {
181     'docker-compose' => {
182       'config' => {
183         'services' => {
184           'reverseproxy' => {
185             'ports' => [
186               "#{nexus_port}:8081",
187             ],
188           },
189           'nexus' => {
190             #'image' => 'sonatype/nexus3',  # => role[nexus2/3-on-docker]
191           },
192         },
193       },
194     },
195   },
196   'screwdriver' => {
197     'docker-compose' => {
198       'config' => {
199         'services' => {
200           'api' => {
201             'ports' => [
202               "#{screwdriver_api_port}:80",
203             ],
204             'environment' => {
205             },
206           },
207           'ui' => {
208             'ports' => [
209               "#{screwdriver_ui_port}:80",
210             ],
211             'environment' => {
212             },
213           },
214           'store' => {
215             'ports' => [
216               "#{screwdriver_store_port}:80",
217             ],
218             'environment' => {
219             },
220           },
221         },
222       },
223     },
224   },
225   'spinnaker' => {
226     'halyard-docker-compose' => {
227       'config' => {
228         'services' => {
229           'halyard' => {
230             'ports' => [
231               "#{halyard_port}:8064",
232             ],
233             'environment' => {
234             },
235           },
236         },
237       },
238     },
239   },
240   'hc-vault' => {
241     'config' => {
242     },
243     'docker-compose' => {
244       'config' => {
245         'services' => {
246           'vault' => {
247             'ports' => [
248               "#{vault_port}:8200",
249             ],
250             'environment' => {
251               #'VAULT_LOCAL_CONFIG' => '',  # expanded to /vault/config/local.json
252             },
253           },
254         },
255       },
256     },
257   },
258 }
259
260 if network_mode_bridge
261   aptly_srvs = attrs['apt_utils']['aptly']['docker-compose']['config']['services']
262   aptly_srvs['reverseproxy']['network_mode'] = 'bridge'
263   aptly_srvs['reverseproxy']['links'] = [
264     'aptly',
265   ]
266   aptly_srvs['aptly']['network_mode'] = 'bridge'
267
268   athenz_srvs = attrs['athenz']['docker-compose']['config']['services']
269   athenz_srvs['athenz']['network_mode'] = 'bridge'
270
271   jenkins_srvs = attrs['jenkins-grid']['docker-compose']['config']['services']
272   jenkins_srvs['jenkins']['network_mode'] = 'bridge'
273
274   halyard_srvs = attrs['spinnaker']['halyard-docker-compose']['config']['services']
275   halyard_srvs['halyard']['network_mode'] = 'bridge'
276
277   nexus_srvs = attrs['nexus-grid']['docker-compose']['config']['services']
278   nexus_srvs['reverseproxy']['network_mode'] = 'bridge'
279   nexus_srvs['reverseproxy']['links'] = [
280     'nexus',
281   ]
282   nexus_srvs['nexus']['network_mode'] = 'bridge'
283
284   screwdriver_srvs = attrs['screwdriver']['docker-compose']['config']['services']
285   unless screwdriver_srvs['reverseproxy'].nil?
286     screwdriver_srvs['reverseproxy']['network_mode'] = 'bridge'
287     screwdriver_srvs['reverseproxy']['links'] = [
288       'ui',
289     ]
290   end
291   screwdriver_srvs['api']['network_mode'] = 'bridge'
292   screwdriver_srvs['ui']['network_mode'] = 'bridge'
293   screwdriver_srvs['store']['network_mode'] = 'bridge'
294
295   vault_srvs = attrs['hc-vault']['docker-compose']['config']['services']
296   vault_srvs['vault']['network_mode'] = 'bridge'
297 end
298
299 #default_attributes()
300
301 override_attributes(attrs)