fhcap-cli 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rakeTasks +7 -0
  4. data/.rspec +1 -0
  5. data/CHANGELOG.md +15 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +150 -0
  9. data/Rakefile +2 -0
  10. data/bin/fhcap +6 -0
  11. data/fhcap-cli.gemspec +44 -0
  12. data/lib/cookbooks/provision/libraries/provision.rb +140 -0
  13. data/lib/cookbooks/provision/metadata.rb +7 -0
  14. data/lib/cookbooks/provision/recipes/aws.rb +15 -0
  15. data/lib/cookbooks/provision/recipes/aws_cluster_create.rb +59 -0
  16. data/lib/cookbooks/provision/recipes/aws_cluster_create_elb.rb +61 -0
  17. data/lib/cookbooks/provision/recipes/aws_cluster_destroy.rb +52 -0
  18. data/lib/cookbooks/provision/recipes/cluster_create.rb +2 -0
  19. data/lib/cookbooks/provision/recipes/cluster_destroy.rb +2 -0
  20. data/lib/cookbooks/provision/recipes/cluster_destroy_instances.rb +11 -0
  21. data/lib/cookbooks/provision/recipes/cluster_provision.rb +4 -0
  22. data/lib/cookbooks/provision/recipes/cluster_provision_instances.rb +55 -0
  23. data/lib/cookbooks/provision/recipes/cluster_status.rb +24 -0
  24. data/lib/cookbooks/provision/recipes/common.rb +9 -0
  25. data/lib/cookbooks/provision/recipes/default.rb +5 -0
  26. data/lib/cookbooks/provision/recipes/openstack.rb +11 -0
  27. data/lib/cookbooks/provision/recipes/openstack_cluster_create.rb +11 -0
  28. data/lib/cookbooks/provision/recipes/openstack_cluster_destroy.rb +4 -0
  29. data/lib/cookbooks/provision/recipes/reset_rabbitmq.rb +49 -0
  30. data/lib/cookbooks/provision/recipes/restart_services.rb +24 -0
  31. data/lib/extensions/chef/provisioning.rb +21 -0
  32. data/lib/extensions/chef/provisioning/aws_driver/driver.rb +46 -0
  33. data/lib/extensions/chef/provisioning/chef_run_data.rb +18 -0
  34. data/lib/extensions/cheffish/merged_config.rb +9 -0
  35. data/lib/fhcap.rb +14 -0
  36. data/lib/fhcap/chef-dk/chef_runner.rb +94 -0
  37. data/lib/fhcap/cli.rb +75 -0
  38. data/lib/fhcap/cluster.rb +112 -0
  39. data/lib/fhcap/config.rb +104 -0
  40. data/lib/fhcap/cookbook.rb +75 -0
  41. data/lib/fhcap/dummy_node.rb +80 -0
  42. data/lib/fhcap/fhcap_helper.rb +9 -0
  43. data/lib/fhcap/kitchen.rb +235 -0
  44. data/lib/fhcap/knife.rb +74 -0
  45. data/lib/fhcap/knife_helper.rb +38 -0
  46. data/lib/fhcap/misc.rb +103 -0
  47. data/lib/fhcap/provider.rb +41 -0
  48. data/lib/fhcap/providers_helper.rb +60 -0
  49. data/lib/fhcap/repo.rb +52 -0
  50. data/lib/fhcap/repos_helper.rb +217 -0
  51. data/lib/fhcap/tasks/chef/chef_task_base.rb +82 -0
  52. data/lib/fhcap/tasks/chef/cookbook/list.rb +37 -0
  53. data/lib/fhcap/tasks/chef/cookbook/update_changelog.rb +63 -0
  54. data/lib/fhcap/tasks/chef/cookbook/update_metadata.rb +57 -0
  55. data/lib/fhcap/tasks/chef/cookbook/update_readme.rb +30 -0
  56. data/lib/fhcap/tasks/chef/cookbook/update_version.rb +90 -0
  57. data/lib/fhcap/tasks/chef/environments/create.rb +115 -0
  58. data/lib/fhcap/tasks/chef/environments/destroy.rb +37 -0
  59. data/lib/fhcap/tasks/chef/environments/promote_cookbooks.rb +47 -0
  60. data/lib/fhcap/tasks/chef/provisioning/chef_provisioning_task.rb +27 -0
  61. data/lib/fhcap/tasks/chef/provisioning/chef_provisioning_task_base.rb +38 -0
  62. data/lib/fhcap/tasks/chef/provisioning/create.rb +22 -0
  63. data/lib/fhcap/tasks/chef/provisioning/destroy.rb +21 -0
  64. data/lib/fhcap/tasks/chef/provisioning/provision.rb +19 -0
  65. data/lib/fhcap/tasks/chef/server/bootstrap.rb +165 -0
  66. data/lib/fhcap/tasks/chef/server/create_user.rb +97 -0
  67. data/lib/fhcap/tasks/chef/server/info.rb +82 -0
  68. data/lib/fhcap/tasks/chef/server/provision.rb +45 -0
  69. data/lib/fhcap/tasks/clean.rb +34 -0
  70. data/lib/fhcap/tasks/cluster/cluster_task_base.rb +57 -0
  71. data/lib/fhcap/tasks/cluster/create.rb +243 -0
  72. data/lib/fhcap/tasks/cluster/create_environment.rb +171 -0
  73. data/lib/fhcap/tasks/cluster/destroy.rb +30 -0
  74. data/lib/fhcap/tasks/cluster/destroy_environment.rb +28 -0
  75. data/lib/fhcap/tasks/cluster/info.rb +67 -0
  76. data/lib/fhcap/tasks/cluster/list.rb +40 -0
  77. data/lib/fhcap/tasks/cluster/provision.rb +46 -0
  78. data/lib/fhcap/tasks/cluster/status.rb +17 -0
  79. data/lib/fhcap/tasks/cluster/test.rb +15 -0
  80. data/lib/fhcap/tasks/knife/add.rb +111 -0
  81. data/lib/fhcap/tasks/knife/list.rb +22 -0
  82. data/lib/fhcap/tasks/knife/remove.rb +39 -0
  83. data/lib/fhcap/tasks/misc/create_dns_record.rb +100 -0
  84. data/lib/fhcap/tasks/misc/create_ssl_cert.rb +82 -0
  85. data/lib/fhcap/tasks/provider/add.rb +136 -0
  86. data/lib/fhcap/tasks/provider/list.rb +31 -0
  87. data/lib/fhcap/tasks/provider/remove.rb +28 -0
  88. data/lib/fhcap/tasks/repo/add.rb +57 -0
  89. data/lib/fhcap/tasks/repo/checkout.rb +144 -0
  90. data/lib/fhcap/tasks/repo/list.rb +22 -0
  91. data/lib/fhcap/tasks/repo/remove.rb +34 -0
  92. data/lib/fhcap/tasks/setup.rb +59 -0
  93. data/lib/fhcap/tasks/task_base.rb +89 -0
  94. data/lib/fhcap/thor_base.rb +121 -0
  95. data/lib/fhcap/version.rb +3 -0
  96. data/spec/fhcap/cli_spec.rb +6 -0
  97. data/spec/fhcap/tasks/cluster/create_spec.rb +46 -0
  98. data/spec/fhcap/tasks/knife/add_spec.rb +35 -0
  99. data/spec/fhcap/tasks/knife/remove_spec.rb +25 -0
  100. data/spec/fhcap/tasks/provider/add_spec.rb +61 -0
  101. data/spec/fhcap/tasks/provider/remove_spec.rb +25 -0
  102. data/spec/fhcap/tasks/repo/add_spec.rb +32 -0
  103. data/spec/fhcap/tasks/repo/remove_spec.rb +25 -0
  104. data/spec/fhcap/tasks/task_base_spec.rb +51 -0
  105. data/spec/fhcap/thor_base_spec.rb +9 -0
  106. data/spec/spec_helper.rb +23 -0
  107. data/spec/support/dummy_config.rb +7 -0
  108. data/spec/support/dummy_thor.rb +3 -0
  109. data/templates/chef/cookbook/changelog.md.erb +12 -0
  110. data/templates/chef/cookbook/metadata.erb +45 -0
  111. data/templates/chef/environment_core.json.erb +278 -0
  112. data/templates/chef/environment_empty.json.erb +10 -0
  113. data/templates/chef/environment_mbaas.json.erb +120 -0
  114. data/templates/chef/environment_single.json.erb +300 -0
  115. data/templates/cluster/aws/common.json.erb +43 -0
  116. data/templates/cluster/aws/core-3node.json.erb +106 -0
  117. data/templates/cluster/aws/core-small-9node.json.erb +333 -0
  118. data/templates/cluster/aws/mbaas-3node.json.erb +116 -0
  119. data/templates/cluster/aws/nginx-test.json.erb +93 -0
  120. data/templates/cluster/aws/single-blank.json.erb +41 -0
  121. data/templates/cluster/aws/single.json.erb +88 -0
  122. data/templates/cluster/core-3node.json.erb +8 -0
  123. data/templates/cluster/core-mbaas-6node.json.erb +13 -0
  124. data/templates/cluster/core-small-9node.json.erb +8 -0
  125. data/templates/cluster/mbaas-3node.json.erb +9 -0
  126. data/templates/cluster/nginx-test.json.erb +8 -0
  127. data/templates/cluster/openstack/common.json.erb +7 -0
  128. data/templates/cluster/openstack/core-3node.json.erb +14 -0
  129. data/templates/cluster/openstack/core-small-9node.json.erb +32 -0
  130. data/templates/cluster/openstack/mbaas-3node.json.erb +14 -0
  131. data/templates/cluster/openstack/nginx-test.json.erb +11 -0
  132. data/templates/cluster/openstack/single-blank.json.erb +10 -0
  133. data/templates/cluster/openstack/single.json.erb +10 -0
  134. data/templates/cluster/single-blank.json.erb +8 -0
  135. data/templates/cluster/single.json.erb +8 -0
  136. data/templates/init/knife.rb.erb +13 -0
  137. data/templates/kitchen/Cheffile.erb +11 -0
  138. data/templates/kitchen/kitchen.aws.yml.erb +35 -0
  139. data/templates/kitchen/kitchen.docker.yml.erb +24 -0
  140. data/templates/kitchen/kitchen.generate.yml.erb +2 -0
  141. data/templates/kitchen/kitchen.openstack.yml.erb +31 -0
  142. metadata +506 -0
@@ -0,0 +1,106 @@
1
+ {
2
+ "domain": "<%= config[:domain] %>",
3
+ "subnets": {
4
+ "1a": {
5
+ "cidr": "64/26",
6
+ "availability_zone": "1a"
7
+ },
8
+ "1b": {
9
+ "cidr": "128/26",
10
+ "availability_zone": "1b"
11
+ },
12
+ "1c": {
13
+ "cidr": "192/26",
14
+ "availability_zone": "1c"
15
+ }
16
+ },
17
+ "security_groups": {
18
+ "<%= config[:environment_name] %>-studio-lb": {
19
+ "authorize_ingress": [
20
+ {
21
+ "protocols": ["tcp"],
22
+ "start": 80,
23
+ "end": 80,
24
+ "sources": ["0.0.0.0/0"]
25
+ },
26
+ {
27
+ "protocols": ["tcp"],
28
+ "start": 443,
29
+ "end": 443,
30
+ "sources": ["0.0.0.0/0"]
31
+ }
32
+ ]
33
+ },
34
+ "<%= config[:environment_name] %>": {
35
+ "authorize_ingress": [
36
+ {
37
+ "protocols": ["all"],
38
+ "start": 0,
39
+ "end": 65535,
40
+ "groups": ["<%= config[:environment_name] %>", "<%= config[:environment_name] %>-studio-lb"]
41
+ }
42
+ ]
43
+ },
44
+ "<%= config[:environment_name] %>-git": {
45
+ "authorize_ingress": [
46
+ {
47
+ "protocols": ["tcp"],
48
+ "start": 22,
49
+ "end": 22,
50
+ "sources": ["0.0.0.0/0"]
51
+ }
52
+ ]
53
+ }
54
+ },
55
+ "load_balancers": {
56
+ "studio": {
57
+ "security_groups": ["<%= config[:environment_name] %>-studio-lb"],
58
+ "subnets": ["1a", "1b"],
59
+ "scheme": "internet-facing",
60
+ "listeners": [
61
+ {
62
+ "port": 80,
63
+ "protocol": "http",
64
+ "instance_port": 80,
65
+ "instance_protocol": "http"
66
+ },
67
+ {
68
+ "port": 443,
69
+ "protocol": "https",
70
+ "instance_port": 80,
71
+ "instance_protocol": "http",
72
+ "server_certificate": ""
73
+ }
74
+ ]
75
+ }
76
+ },
77
+ "instances": {
78
+ "node1": {
79
+ "aws": {
80
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>", "<%= config[:environment_name] %>-git"],
81
+ "private_ip_address": "",
82
+ "subnet": "1a"
83
+ },
84
+ "load_balancers": ["studio", "scm", "messaging", "metrics"],
85
+ "run_list": ["role[mount_data_volumes]", "role[platform_mongo_server]", "role[rabbitmq_server]", "role[app_server]", "role[fh-scm]", "role[fh-messaging]", "role[fh-metrics]", "role[fh-stats]", "recipe[feedhenry_common::fhctl]"]
86
+ },
87
+ "node2": {
88
+ "aws": {
89
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>", "<%= config[:environment_name] %>-git"],
90
+ "private_ip_address": "",
91
+ "subnet": "1b"
92
+ },
93
+ "load_balancers": ["studio", "scm", "messaging", "metrics"],
94
+ "run_list": ["role[mount_data_volumes]", "role[platform_mongo_server]", "role[rabbitmq_server]", "role[app_server]", "role[fh-scm]", "role[fh-messaging]", "role[fh-metrics]", "recipe[feedhenry_common::fhctl]"]
95
+ },
96
+ "mgt1": {
97
+ "aws": {
98
+ "instance_type": "m3.medium",
99
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>", "<%= config[:environment_name] %>-git"],
100
+ "private_ip_address": "",
101
+ "subnet": "1c"
102
+ },
103
+ "run_list": ["role[platform_mongo_server]", "role[mysql_server]", "role[gitlab-shell_server]", "role[management_server]", "recipe[feedhenry_common::fhctl]"]
104
+ }
105
+ }
106
+ }
@@ -0,0 +1,333 @@
1
+ {
2
+ "domain": "<%= config[:domain] %>",
3
+ "subnets": {
4
+ "1a": {
5
+ "cidr": "64/26",
6
+ "availability_zone": "1a"
7
+ },
8
+ "1b": {
9
+ "cidr": "128/26",
10
+ "availability_zone": "1b"
11
+ },
12
+ "1c": {
13
+ "cidr": "192/26",
14
+ "availability_zone": "1c"
15
+ }
16
+ },
17
+ "security_groups": {
18
+ "<%= config[:environment_name] %>-studio-lb": {
19
+ "authorize_ingress": [
20
+ {
21
+ "protocols": ["tcp"],
22
+ "start": 80,
23
+ "end": 80,
24
+ "sources": ["0.0.0.0/0"]
25
+ },
26
+ {
27
+ "protocols": ["tcp"],
28
+ "start": 443,
29
+ "end": 443,
30
+ "sources": ["0.0.0.0/0"]
31
+ }
32
+ ]
33
+ },
34
+ "<%= config[:environment_name] %>": {
35
+ "authorize_ingress": [
36
+ {
37
+ "protocols": ["all"],
38
+ "start": 0,
39
+ "end": 65535,
40
+ "groups": ["core", "core-studio-lb"]
41
+ }
42
+ ]
43
+ },
44
+ "<%= config[:environment_name] %>-git": {
45
+ "authorize_ingress": [
46
+ {
47
+ "protocols": ["tcp"],
48
+ "start": 22,
49
+ "end": 22,
50
+ "sources": ["0.0.0.0/0"]
51
+ }
52
+ ]
53
+ },
54
+ "<%= config[:environment_name] %>-scm-lb": {
55
+ "authorize_ingress": [
56
+ {
57
+ "protocols": ["tcp"],
58
+ "start": 8801,
59
+ "end": 8801,
60
+ "groups": ["core"]
61
+ }
62
+ ]
63
+ },
64
+ "<%= config[:environment_name] %>-sql-lb": {
65
+ "authorize_ingress": [
66
+ {
67
+ "protocols": ["tcp"],
68
+ "start": 3306,
69
+ "end": 3306,
70
+ "groups": ["core"]
71
+ }
72
+ ]
73
+ },
74
+ "<%= config[:environment_name] %>-messaging-lb": {
75
+ "authorize_ingress": [
76
+ {
77
+ "protocols": ["tcp"],
78
+ "start": 8803,
79
+ "end": 8803,
80
+ "groups": ["core"]
81
+ }
82
+ ]
83
+ },
84
+ "<%= config[:environment_name] %>-metrics-lb": {
85
+ "authorize_ingress": [
86
+ {
87
+ "protocols": ["tcp"],
88
+ "start": 8813,
89
+ "end": 8813,
90
+ "groups": ["core"]
91
+ }
92
+ ]
93
+ }
94
+ },
95
+ "load_balancers": {
96
+ "studio": {
97
+ "security_groups": ["<%= config[:environment_name] %>-studio-lb"],
98
+ "subnets": ["1a", "1b"],
99
+ "scheme": "internet-facing",
100
+ "listeners": [
101
+ {
102
+ "port": 80,
103
+ "protocol": "http",
104
+ "instance_port": 80,
105
+ "instance_protocol": "http"
106
+ },
107
+ {
108
+ "port": 443,
109
+ "protocol": "https",
110
+ "instance_port": 80,
111
+ "instance_protocol": "http",
112
+ "server_certificate": ""
113
+ }
114
+ ]
115
+ },
116
+ "scm": {
117
+ "security_groups": ["<%= config[:environment_name] %>-scm-lb"],
118
+ "subnets": ["1a", "1b"],
119
+ "scheme": "internal",
120
+ "listeners": [
121
+ {
122
+ "port": 8801,
123
+ "protocol": "tcp",
124
+ "instance_port": 8801,
125
+ "instance_protocol": "tcp"
126
+ }
127
+ ]
128
+ },
129
+ "sql": {
130
+ "security_groups": ["<%= config[:environment_name] %>-sql-lb"],
131
+ "subnets": ["1a", "1b"],
132
+ "scheme": "internal",
133
+ "listeners": [
134
+ {
135
+ "port": 3306,
136
+ "protocol": "tcp",
137
+ "instance_port": 3306,
138
+ "instance_protocol": "tcp"
139
+ }
140
+ ]
141
+ },
142
+ "messaging": {
143
+ "security_groups": ["<%= config[:environment_name] %>-messaging-lb"],
144
+ "subnets": ["1a", "1b"],
145
+ "scheme": "internal",
146
+ "listeners": [
147
+ {
148
+ "port": 8803,
149
+ "protocol": "tcp",
150
+ "instance_port": 8803,
151
+ "instance_protocol": "tcp"
152
+ }
153
+ ]
154
+ },
155
+ "metrics": {
156
+ "security_groups": ["<%= config[:environment_name] %>-metrics-lb"],
157
+ "subnets": ["1a", "1b"],
158
+ "scheme": "internal",
159
+ "listeners": [
160
+ {
161
+ "port": 8813,
162
+ "protocol": "tcp",
163
+ "instance_port": 8813,
164
+ "instance_protocol": "tcp"
165
+ }
166
+ ]
167
+ }
168
+ },
169
+ "instances": {
170
+ "app1": {
171
+ "aws": {
172
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>", "<%= config[:environment_name] %>-git"],
173
+ "private_ip_address": "",
174
+ "subnet": "1a",
175
+ "block_device_mappings": [
176
+ {
177
+ "device_name": "/dev/sda1",
178
+ "ebs": {
179
+ "volume_size": 40,
180
+ "volume_type": "gp2",
181
+ "delete_on_termination": false
182
+ }
183
+ }
184
+ ]
185
+ },
186
+ "load_balancers": ["studio"],
187
+ "run_list": ["role[app_server]"]
188
+ },
189
+ "app2": {
190
+ "aws": {
191
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>", "<%= config[:environment_name] %>-git"],
192
+ "private_ip_address": "",
193
+ "subnet": "1a",
194
+ "block_device_mappings": [
195
+ {
196
+ "device_name": "/dev/sda1",
197
+ "ebs": {
198
+ "volume_size": 40,
199
+ "volume_type": "gp2",
200
+ "delete_on_termination": false
201
+ }
202
+ }
203
+ ]
204
+ },
205
+ "load_balancers": ["studio"],
206
+ "run_list": ["role[app_server]"]
207
+ },
208
+ "mgt1": {
209
+ "aws": {
210
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>", "<%= config[:environment_name] %>-git"],
211
+ "private_ip_address": "",
212
+ "subnet": "1a",
213
+ "block_device_mappings": [
214
+ {
215
+ "device_name": "/dev/sda1",
216
+ "ebs": {
217
+ "volume_size": 40,
218
+ "volume_type": "gp2",
219
+ "delete_on_termination": false
220
+ }
221
+ },
222
+ {
223
+ "device_name": "/dev/sdb",
224
+ "ebs": {
225
+ "volume_size": 200,
226
+ "volume_type": "gp2",
227
+ "delete_on_termination": false,
228
+ "encrypted": true
229
+ }
230
+ }
231
+ ]
232
+ },
233
+ "run_list": ["role[platform_mongo_server]", "role[galera_backup_server]", "role[galera_arbiter_server]", "role[management_server]", "role[mount_data_volumes]", "role[mongo_backup_server]"]
234
+ },
235
+ "db1": {
236
+ "aws": {
237
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>"],
238
+ "private_ip_address": "",
239
+ "subnet": "1a"
240
+ },
241
+ "load_balancers": ["sql"],
242
+ "run_list": ["role[mount_data_volumes]", "role[galera_server]", "role[platform_mongo_server]", "role[rabbitmq_server]"],
243
+ "source_dest_check": true
244
+ },
245
+ "db2": {
246
+ "aws": {
247
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>"],
248
+ "private_ip_address": "",
249
+ "subnet": "1a"
250
+ },
251
+ "load_balancers": ["sql"],
252
+ "run_list": ["role[mount_data_volumes]", "role[galera_server]", "role[platform_mongo_server]", "role[rabbitmq_server]"],
253
+ "source_dest_check": true
254
+ },
255
+ "util1": {
256
+ "aws": {
257
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>"],
258
+ "private_ip_address": "",
259
+ "subnet": "1a"
260
+ },
261
+ "load_balancers": ["scm", "messaging", "metrics"],
262
+ "run_list": ["role[mount_data_volumes]", "role[fh-scm]", "role[fh-messaging]", "role[fh-metrics]", "role[fh-docs]", "role[fh-stats]"],
263
+ "source_dest_check": true
264
+ },
265
+ "util2": {
266
+ "aws": {
267
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>"],
268
+ "private_ip_address": "",
269
+ "subnet": "1b"
270
+ },
271
+ "load_balancers": ["messaging", "metrics"],
272
+ "run_list": ["role[mount_data_volumes]", "role[fh-scm]", "role[fh-messaging]", "role[fh-metrics]", "role[fh-stats]"],
273
+ "source_dest_check": true
274
+ },
275
+ "git1": {
276
+ "aws": {
277
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>"],
278
+ "private_ip_address": "",
279
+ "subnet": "1a",
280
+ "block_device_mappings": [
281
+ {
282
+ "device_name": "/dev/sda1",
283
+ "ebs": {
284
+ "volume_size": 40,
285
+ "volume_type": "gp2",
286
+ "delete_on_termination": false
287
+ }
288
+ },
289
+ {
290
+ "device_name": "/dev/sdb",
291
+ "ebs": {
292
+ "volume_size": 50,
293
+ "volume_type": "gp2",
294
+ "delete_on_termination": false,
295
+ "encrypted": true
296
+ }
297
+ }
298
+ ]
299
+ },
300
+ "load_balancers": ["git"],
301
+ "run_list": ["role[mount_data_volumes]", "role[gitlab_shell_server"],
302
+ "source_dest_check": true
303
+ },
304
+ "git2": {
305
+ "aws": {
306
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>"],
307
+ "private_ip_address": "",
308
+ "subnet": "1b",
309
+ "block_device_mappings": [
310
+ {
311
+ "device_name": "/dev/sda1",
312
+ "ebs": {
313
+ "volume_size": 40,
314
+ "volume_type": "gp2",
315
+ "delete_on_termination": false
316
+ }
317
+ },
318
+ {
319
+ "device_name": "/dev/sdb",
320
+ "ebs": {
321
+ "volume_size": 50,
322
+ "volume_type": "gp2",
323
+ "delete_on_termination": false,
324
+ "encrypted": true
325
+ }
326
+ }
327
+ ]
328
+ },
329
+ "run_list": ["role[mount_data_volumes]", "role[gitlab_shell_server"],
330
+ "source_dest_check": true
331
+ }
332
+ }
333
+ }
@@ -0,0 +1,116 @@
1
+ {
2
+ "domain": "<%= config[:domain] %>",
3
+ "subnets": {
4
+ "1a": {
5
+ "cidr": "64/26",
6
+ "availability_zone": "1a"
7
+ },
8
+ "1b": {
9
+ "cidr": "128/26",
10
+ "availability_zone": "1b"
11
+ },
12
+ "1c": {
13
+ "cidr": "192/26",
14
+ "availability_zone": "1c"
15
+ }
16
+ },
17
+ "security_groups": {
18
+ "<%= config[:environment_name] %>-api-lb": {
19
+ "authorize_ingress": [
20
+ {
21
+ "protocols": ["tcp"],
22
+ "start": 80,
23
+ "end": 80,
24
+ "sources": ["0.0.0.0/0"]
25
+ },
26
+ {
27
+ "protocols": ["tcp"],
28
+ "start": 443,
29
+ "end": 443,
30
+ "sources": ["0.0.0.0/0"]
31
+ }
32
+ ]
33
+ },
34
+ "<%= config[:environment_name] %>": {
35
+ "authorize_ingress": [
36
+ {
37
+ "protocols": ["all"],
38
+ "start": 0,
39
+ "end": 65535,
40
+ "groups": ["<%= config[:environment_name] %>", "<%= config[:environment_name] %>-studio-lb"]
41
+ }
42
+ ]
43
+ },
44
+ "<%= config[:environment_name] %>-ditch-lb": {
45
+ "authorize_ingress": [
46
+ {
47
+ "protocols": ["tcp"],
48
+ "start": 8802,
49
+ "end": 8802,
50
+ "groups": ["<%= config[:environment_name] %>"]
51
+ }
52
+ ]
53
+ },
54
+ "<%= config[:environment_name] %>-stats-lb": {
55
+ "authorize_ingress": [
56
+ {
57
+ "protocols": ["tcp"],
58
+ "start": 8804,
59
+ "end": 8804,
60
+ "groups": ["<%= config[:environment_name] %>"]
61
+ }
62
+ ]
63
+ }
64
+ },
65
+ "load_balancers": {
66
+ "api": {
67
+ "security_groups": ["<%= config[:environment_name] %>-api-lb"],
68
+ "subnets": ["1a", "1b"],
69
+ "scheme": "internet-facing",
70
+ "listeners": [
71
+ {
72
+ "port": 80,
73
+ "protocol": "http",
74
+ "instance_port": 80,
75
+ "instance_protocol": "http"
76
+ },
77
+ {
78
+ "port": 443,
79
+ "protocol": "https",
80
+ "instance_port": 80,
81
+ "instance_protocol": "http",
82
+ "server_certificate": ""
83
+ }
84
+ ]
85
+ }
86
+ },
87
+ "instances": {
88
+ "ship1": {
89
+ "aws": {
90
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>"],
91
+ "private_ip_address": "",
92
+ "subnet": "1a"
93
+ },
94
+ "load_balancers": ["api"],
95
+ "run_list": ["role[mount_data_volumes]", "role[mongo_server]", "role[dyno_server]", "role[fh-ditch]", "recipe[feedhenry_common::fhctl]"]
96
+ },
97
+ "ship2": {
98
+ "aws": {
99
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>"],
100
+ "private_ip_address": "",
101
+ "subnet": "1b"
102
+ },
103
+ "load_balancers": ["api"],
104
+ "run_list": ["role[mount_data_volumes]", "role[mongo_server]", "role[dyno_server]", "role[fh-ditch]", "recipe[feedhenry_common::fhctl]"]
105
+ },
106
+ "mgt1": {
107
+ "aws": {
108
+ "instance_type": "m3.medium",
109
+ "security_groups": ["ops-admin", "<%= config[:environment_name] %>"],
110
+ "private_ip_address": "",
111
+ "subnet": "1c"
112
+ },
113
+ "run_list": ["role[mongo_server]", "role[fh-stats]", "role[management_server]"]
114
+ }
115
+ }
116
+ }