cloud-mu 3.2.0 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +1 -1
  3. data/ansible/roles/mu-nat/tasks/main.yml +3 -0
  4. data/bin/mu-adopt +12 -1
  5. data/bin/mu-aws-setup +41 -7
  6. data/bin/mu-azure-setup +34 -0
  7. data/bin/mu-configure +214 -119
  8. data/bin/mu-gcp-setup +37 -2
  9. data/bin/mu-load-config.rb +2 -1
  10. data/bin/mu-node-manage +3 -0
  11. data/bin/mu-refresh-ssl +67 -0
  12. data/bin/mu-run-tests +28 -6
  13. data/bin/mu-self-update +30 -10
  14. data/bin/mu-upload-chef-artifacts +30 -26
  15. data/cloud-mu.gemspec +10 -8
  16. data/cookbooks/mu-master/attributes/default.rb +5 -1
  17. data/cookbooks/mu-master/metadata.rb +2 -2
  18. data/cookbooks/mu-master/recipes/default.rb +81 -26
  19. data/cookbooks/mu-master/recipes/init.rb +197 -62
  20. data/cookbooks/mu-master/recipes/update_nagios_only.rb +1 -1
  21. data/cookbooks/mu-master/recipes/vault.rb +78 -77
  22. data/cookbooks/mu-master/templates/default/mods/rewrite.conf.erb +1 -0
  23. data/cookbooks/mu-master/templates/default/nagios.conf.erb +103 -0
  24. data/cookbooks/mu-master/templates/default/web_app.conf.erb +14 -30
  25. data/cookbooks/mu-tools/attributes/default.rb +12 -0
  26. data/cookbooks/mu-tools/files/centos-6/CentOS-Base.repo +47 -0
  27. data/cookbooks/mu-tools/libraries/helper.rb +98 -4
  28. data/cookbooks/mu-tools/libraries/monkey.rb +1 -1
  29. data/cookbooks/mu-tools/recipes/apply_security.rb +31 -9
  30. data/cookbooks/mu-tools/recipes/aws_api.rb +8 -2
  31. data/cookbooks/mu-tools/recipes/base_repositories.rb +1 -1
  32. data/cookbooks/mu-tools/recipes/gcloud.rb +2 -9
  33. data/cookbooks/mu-tools/recipes/google_api.rb +7 -0
  34. data/cookbooks/mu-tools/recipes/rsyslog.rb +8 -1
  35. data/cookbooks/mu-tools/resources/disk.rb +113 -42
  36. data/cookbooks/mu-tools/resources/mommacat_request.rb +1 -2
  37. data/cookbooks/mu-tools/templates/centos-8/sshd_config.erb +215 -0
  38. data/extras/Gemfile.lock.bootstrap +394 -0
  39. data/extras/bucketstubs/error.html +0 -0
  40. data/extras/bucketstubs/index.html +0 -0
  41. data/extras/clean-stock-amis +11 -3
  42. data/extras/generate-stock-images +6 -3
  43. data/extras/git_rpm/build.sh +20 -0
  44. data/extras/git_rpm/mugit.spec +53 -0
  45. data/extras/image-generators/AWS/centos7.yaml +19 -16
  46. data/extras/image-generators/AWS/{rhel7.yaml → rhel71.yaml} +0 -0
  47. data/extras/image-generators/AWS/{win2k12.yaml → win2k12r2.yaml} +0 -0
  48. data/extras/image-generators/VMWare/centos8.yaml +15 -0
  49. data/extras/openssl_rpm/build.sh +19 -0
  50. data/extras/openssl_rpm/mussl.spec +46 -0
  51. data/extras/python_rpm/muthon.spec +14 -4
  52. data/extras/ruby_rpm/muby.spec +9 -5
  53. data/extras/sqlite_rpm/build.sh +19 -0
  54. data/extras/sqlite_rpm/muqlite.spec +47 -0
  55. data/install/installer +7 -5
  56. data/modules/mommacat.ru +2 -2
  57. data/modules/mu.rb +14 -7
  58. data/modules/mu/adoption.rb +5 -5
  59. data/modules/mu/cleanup.rb +47 -25
  60. data/modules/mu/cloud.rb +29 -1
  61. data/modules/mu/cloud/dnszone.rb +0 -2
  62. data/modules/mu/cloud/machine_images.rb +1 -1
  63. data/modules/mu/cloud/providers.rb +6 -1
  64. data/modules/mu/cloud/resource_base.rb +16 -7
  65. data/modules/mu/cloud/ssh_sessions.rb +5 -1
  66. data/modules/mu/cloud/wrappers.rb +20 -7
  67. data/modules/mu/config.rb +28 -12
  68. data/modules/mu/config/bucket.rb +31 -2
  69. data/modules/mu/config/cache_cluster.rb +1 -1
  70. data/modules/mu/config/cdn.rb +100 -0
  71. data/modules/mu/config/container_cluster.rb +1 -1
  72. data/modules/mu/config/database.rb +3 -3
  73. data/modules/mu/config/dnszone.rb +4 -3
  74. data/modules/mu/config/endpoint.rb +1 -0
  75. data/modules/mu/config/firewall_rule.rb +1 -1
  76. data/modules/mu/config/function.rb +16 -7
  77. data/modules/mu/config/job.rb +89 -0
  78. data/modules/mu/config/notifier.rb +7 -18
  79. data/modules/mu/config/ref.rb +55 -9
  80. data/modules/mu/config/schema_helpers.rb +12 -3
  81. data/modules/mu/config/server.rb +11 -5
  82. data/modules/mu/config/server_pool.rb +2 -2
  83. data/modules/mu/config/vpc.rb +11 -10
  84. data/modules/mu/defaults/AWS.yaml +106 -106
  85. data/modules/mu/deploy.rb +40 -14
  86. data/modules/mu/groomers/chef.rb +2 -2
  87. data/modules/mu/master.rb +70 -3
  88. data/modules/mu/mommacat.rb +28 -9
  89. data/modules/mu/mommacat/daemon.rb +13 -7
  90. data/modules/mu/mommacat/naming.rb +2 -2
  91. data/modules/mu/mommacat/search.rb +16 -5
  92. data/modules/mu/mommacat/storage.rb +67 -32
  93. data/modules/mu/providers/aws.rb +298 -85
  94. data/modules/mu/providers/aws/alarm.rb +5 -5
  95. data/modules/mu/providers/aws/bucket.rb +284 -50
  96. data/modules/mu/providers/aws/cache_cluster.rb +26 -26
  97. data/modules/mu/providers/aws/cdn.rb +782 -0
  98. data/modules/mu/providers/aws/collection.rb +16 -16
  99. data/modules/mu/providers/aws/container_cluster.rb +84 -64
  100. data/modules/mu/providers/aws/database.rb +59 -55
  101. data/modules/mu/providers/aws/dnszone.rb +29 -12
  102. data/modules/mu/providers/aws/endpoint.rb +535 -50
  103. data/modules/mu/providers/aws/firewall_rule.rb +32 -26
  104. data/modules/mu/providers/aws/folder.rb +1 -1
  105. data/modules/mu/providers/aws/function.rb +300 -134
  106. data/modules/mu/providers/aws/group.rb +16 -14
  107. data/modules/mu/providers/aws/habitat.rb +4 -4
  108. data/modules/mu/providers/aws/job.rb +469 -0
  109. data/modules/mu/providers/aws/loadbalancer.rb +67 -45
  110. data/modules/mu/providers/aws/log.rb +17 -17
  111. data/modules/mu/providers/aws/msg_queue.rb +22 -13
  112. data/modules/mu/providers/aws/nosqldb.rb +99 -8
  113. data/modules/mu/providers/aws/notifier.rb +137 -65
  114. data/modules/mu/providers/aws/role.rb +119 -83
  115. data/modules/mu/providers/aws/search_domain.rb +166 -30
  116. data/modules/mu/providers/aws/server.rb +209 -118
  117. data/modules/mu/providers/aws/server_pool.rb +95 -130
  118. data/modules/mu/providers/aws/storage_pool.rb +19 -11
  119. data/modules/mu/providers/aws/user.rb +5 -5
  120. data/modules/mu/providers/aws/userdata/linux.erb +5 -4
  121. data/modules/mu/providers/aws/vpc.rb +109 -54
  122. data/modules/mu/providers/aws/vpc_subnet.rb +43 -39
  123. data/modules/mu/providers/azure.rb +78 -12
  124. data/modules/mu/providers/azure/server.rb +20 -4
  125. data/modules/mu/providers/cloudformation/server.rb +1 -1
  126. data/modules/mu/providers/google.rb +21 -5
  127. data/modules/mu/providers/google/bucket.rb +1 -1
  128. data/modules/mu/providers/google/container_cluster.rb +1 -1
  129. data/modules/mu/providers/google/database.rb +1 -1
  130. data/modules/mu/providers/google/firewall_rule.rb +1 -1
  131. data/modules/mu/providers/google/folder.rb +7 -3
  132. data/modules/mu/providers/google/function.rb +66 -31
  133. data/modules/mu/providers/google/group.rb +1 -1
  134. data/modules/mu/providers/google/habitat.rb +1 -1
  135. data/modules/mu/providers/google/loadbalancer.rb +1 -1
  136. data/modules/mu/providers/google/role.rb +6 -3
  137. data/modules/mu/providers/google/server.rb +1 -1
  138. data/modules/mu/providers/google/server_pool.rb +1 -1
  139. data/modules/mu/providers/google/user.rb +1 -1
  140. data/modules/mu/providers/google/vpc.rb +28 -3
  141. data/modules/tests/aws-jobs-functions.yaml +46 -0
  142. data/modules/tests/aws-servers-with-handrolled-iam.yaml +37 -0
  143. data/modules/tests/centos6.yaml +4 -0
  144. data/modules/tests/centos7.yaml +4 -0
  145. data/modules/tests/ecs.yaml +2 -2
  146. data/modules/tests/eks.yaml +1 -1
  147. data/modules/tests/functions/node-function/lambda_function.js +10 -0
  148. data/modules/tests/functions/python-function/lambda_function.py +12 -0
  149. data/modules/tests/k8s.yaml +1 -1
  150. data/modules/tests/microservice_app.yaml +288 -0
  151. data/modules/tests/rds.yaml +5 -5
  152. data/modules/tests/regrooms/rds.yaml +5 -5
  153. data/modules/tests/server-with-scrub-muisms.yaml +1 -1
  154. data/modules/tests/super_complex_bok.yml +2 -2
  155. data/modules/tests/super_simple_bok.yml +2 -2
  156. metadata +42 -17
@@ -0,0 +1,37 @@
1
+ # clouds: AWS
2
+ # groomers: Chef
3
+ ---
4
+ appname: smoketest
5
+ vpcs:
6
+ - name: svrtest
7
+ roles:
8
+ - name: handrolled
9
+ scrub_mu_isms: true
10
+ can_assume:
11
+ - entity_id: ec2.amazonaws.com
12
+ entity_type: service
13
+ import:
14
+ - arn:aws:iam::aws:policy/AmazonRDSFullAccess
15
+ servers:
16
+ - name: iamtest1
17
+ size: t3.medium
18
+ iam_role: handrolled
19
+ platform: centos6
20
+ generate_iam_role: false
21
+ vpc:
22
+ name: svrtest
23
+ server_pools:
24
+ - name: iamtest2
25
+ scrub_mu_isms: true
26
+ min_size: 1
27
+ max_size: 1
28
+ wait_for_nodes: 1
29
+ platform: centos6
30
+ vpc:
31
+ name: svrtest
32
+ basis:
33
+ launch-config:
34
+ name: iamtest2
35
+ size: t3.medium
36
+ iam_role: handrolled
37
+ generate_iam_role: false
@@ -1,8 +1,12 @@
1
1
  # groomers: Chef
2
2
  ---
3
3
  appname: smoketest
4
+ vpcs:
5
+ - name: wrapper
4
6
  servers:
5
7
  - name: centos6
8
+ vpc:
9
+ name: wrapper
6
10
  platform: centos6
7
11
  size: m3.medium
8
12
  run_list:
@@ -1,9 +1,13 @@
1
1
  # groomers: Chef
2
2
  ---
3
3
  appname: smoketest
4
+ vpcs:
5
+ - name: wrapper
4
6
  servers:
5
7
  - name: centos7
6
8
  platform: centos7
9
+ vpc:
10
+ name: wrapper
7
11
  size: m3.medium
8
12
  run_list:
9
13
  - recipe[mu-tools::apply_security]
@@ -7,7 +7,7 @@ vpcs:
7
7
  container_clusters:
8
8
  - name: ecsplain
9
9
  flavor: ECS
10
- instance_type: t2.medium
10
+ instance_type: t3.medium
11
11
  vpc:
12
12
  name: ecs
13
13
  containers:
@@ -15,7 +15,7 @@ container_clusters:
15
15
  image: "nginx:1.8"
16
16
  - name: ecsfargate
17
17
  flavor: Fargate
18
- instance_type: t2.medium
18
+ instance_type: t3.medium
19
19
  vpc:
20
20
  name: ecs
21
21
  containers:
@@ -10,7 +10,7 @@ container_clusters:
10
10
  vpc:
11
11
  vpc_name: eksvpc
12
12
  instance_count: 3
13
- instance_type: t2.medium
13
+ instance_type: t3.medium
14
14
  kubernetes_resources:
15
15
  - apiVersion: apps/v1
16
16
  kind: Deployment
@@ -0,0 +1,10 @@
1
+ console.log('Loading function');
2
+
3
+ exports.handler = async (event, context) => {
4
+ //console.log('Received event:', JSON.stringify(event, null, 2));
5
+ console.log('value1 =', event.key1);
6
+ console.log('value2 =', event.key2);
7
+ console.log('value3 =', event.key3);
8
+ return event.key1; // Echo back the first key value
9
+ // throw new Error('Something went wrong');
10
+ };
@@ -0,0 +1,12 @@
1
+ import json
2
+
3
+ print('Loading function')
4
+
5
+
6
+ def lambda_handler(event, context):
7
+ #print("Received event: " + json.dumps(event, indent=2))
8
+ print("value1 = " + event['key1'])
9
+ print("value2 = " + event['key2'])
10
+ print("value3 = " + event['key3'])
11
+ return event['key1'] # Echo back the first key value
12
+ #raise Exception('Something went wrong')
@@ -27,7 +27,7 @@ container_clusters:
27
27
  comment: meep
28
28
  vpc:
29
29
  vpc_name: k8s
30
- subnet_pref: all_private
30
+ subnet_pref: all_public
31
31
  kubernetes_resources:
32
32
  - apiVersion: v1
33
33
  kind: Service
@@ -0,0 +1,288 @@
1
+ # Old Sitemonitor, with serial numbers and code filed off. This will *only*
2
+ # work on our own Labs sandbox, unless you feed it a different domain name to
3
+ # play in.
4
+ # clouds: AWS
5
+ ---
6
+ appname: SMOKETEST
7
+ parameters:
8
+ - name: domain
9
+ default: "sandbox.egt-labs.com" # this must exist as a Route53 zone and have a corresponding wildcard ACM or IAM SSL certificate
10
+ jobs:
11
+ - name: clear-scan-data
12
+ schedule:
13
+ minute: '0'
14
+ hour: '1'
15
+ day_of_month: '*'
16
+ month: "*"
17
+ day_of_week: "?"
18
+ year: "*"
19
+ targets:
20
+ - type: functions
21
+ name: empty-out-table
22
+ - name: run-scans
23
+ schedule:
24
+ minute: '0'
25
+ hour: '2'
26
+ day_of_month: '*'
27
+ month: "*"
28
+ day_of_week: "?"
29
+ year: "*"
30
+ targets:
31
+ - type: functions
32
+ name: queue-domains
33
+
34
+ cdns:
35
+ - name: front
36
+ origins:
37
+ - name: default
38
+ bucket:
39
+ name: bucket
40
+ certificate:
41
+ name: "*.<%= domain %>"
42
+ dns_records:
43
+ - zone:
44
+ name: <%= domain %>
45
+ behaviors:
46
+ - origin: default
47
+ forwarded_values:
48
+ headers:
49
+ - Origin
50
+ - Access-Control-Request-Headers
51
+ - Access-Control-Request-Method
52
+ - Access-Control-Allow-Origin
53
+
54
+ roles:
55
+ - name: dynamostream-to-es
56
+ can_assume:
57
+ - assume_method: basic
58
+ entity_type: service
59
+ entity_id: lambda.amazonaws.com
60
+ attachable_policies:
61
+ - id: AWSLambdaInvocation-DynamoDB
62
+ - id: AWSLambdaBasicExecutionRole
63
+ policies:
64
+ - name: allow_es_posting
65
+ permissions:
66
+ - es:ESHttpPost
67
+ targets:
68
+ - identifier: domains-scan-data
69
+ type: search_domain
70
+ path: "/*"
71
+ - name: empty-out-table
72
+ can_assume:
73
+ - assume_method: basic
74
+ entity_type: service
75
+ entity_id: lambda.amazonaws.com
76
+ attachable_policies:
77
+ - id: AmazonDynamoDBFullAccess
78
+ - id: AWSLambdaBasicExecutionRole
79
+ - name: on-demand-scanner
80
+ can_assume:
81
+ - assume_method: basic
82
+ entity_type: service
83
+ entity_id: lambda.amazonaws.com
84
+ attachable_policies:
85
+ - id: AmazonDynamoDBFullAccess
86
+ - id: AWSLambdaBasicExecutionRole
87
+ - name: queue-domains
88
+ can_assume:
89
+ - assume_method: basic
90
+ entity_type: service
91
+ entity_id: lambda.amazonaws.com
92
+ attachable_policies:
93
+ - id: AmazonDynamoDBFullAccess
94
+ - id: AmazonSNSFullAccess
95
+ - id: AWSLambdaBasicExecutionRole
96
+ - name: scheduled-scanner
97
+ can_assume:
98
+ - assume_method: basic
99
+ entity_type: service
100
+ entity_id: lambda.amazonaws.com
101
+ attachable_policies:
102
+ - id: AmazonDynamoDBFullAccess
103
+ - id: AWSLambdaBasicExecutionRole
104
+
105
+ notifiers:
106
+ - name: publish-domains
107
+ subscriptions:
108
+ - type: lambda
109
+ resource:
110
+ type: functions
111
+ name: scheduled-scanner
112
+
113
+ functions:
114
+ - name: dynamostream-to-es
115
+ handler: lambda_function.lambda_handler
116
+ memory: 128
117
+ runtime: python2.7
118
+ timeout: 900
119
+ code:
120
+ path: functions/python-function
121
+ role:
122
+ name: dynamostream-to-es
123
+ type: roles
124
+ triggers:
125
+ - service: dynamodb
126
+ name: scan-data
127
+ dependencies:
128
+ - type: search_domain
129
+ name: domains-scan-data
130
+ phase: groom
131
+ - name: empty-out-table
132
+ handler: lambda_function.lambda_handler
133
+ memory: 128
134
+ runtime: python3.6
135
+ timeout: 300
136
+ code:
137
+ path: functions/python-function
138
+ environment_variable:
139
+ - key: table
140
+ value: scandata
141
+ role:
142
+ name: empty-out-table
143
+ type: roles
144
+ dependencies:
145
+ - type: nosqldb
146
+ name: scan-data
147
+ - type: nosqldb
148
+ name: domain-list
149
+ - name: on-demand-scanner
150
+ handler: lambda_function.lambda_handler
151
+ memory: 128
152
+ runtime: python3.6
153
+ timeout: 900
154
+ code:
155
+ path: functions/python-function
156
+ role:
157
+ name: on-demand-scanner
158
+ type: roles
159
+ dependencies:
160
+ - type: nosqldb
161
+ name: scan-data
162
+ triggers:
163
+ - service: apigateway
164
+ name: api
165
+ - name: queue-domains
166
+ handler: lambda_function.lambda_handler
167
+ memory: 128
168
+ runtime: python3.6
169
+ timeout: 900
170
+ code:
171
+ path: functions/python-function
172
+ role:
173
+ name: queue-domains
174
+ type: roles
175
+ invoke_on_completion:
176
+ invocation_type: "RequestResponse"
177
+ permissions:
178
+ - basic
179
+ - dynamo
180
+ dependencies:
181
+ - type: function
182
+ name: dynamostream-to-es
183
+ - type: nosqldb
184
+ name: domain-list
185
+ - type: nosqldb
186
+ name: scan-data
187
+ - type: notifier
188
+ name: publish-domains
189
+ phase: groom
190
+ - name: scheduled-scanner
191
+ handler: lambda_function.lambda_handler
192
+ memory: 256
193
+ runtime: python3.6
194
+ timeout: 900
195
+ code:
196
+ path: functions/python-function
197
+ role:
198
+ name: scheduled-scanner
199
+ type: roles
200
+ dependencies:
201
+ - type: nosqldb
202
+ name: scan-data
203
+ triggers:
204
+ - service: sns
205
+ name: publish-domains
206
+
207
+ endpoints:
208
+ - name: api
209
+ deploy_to: production
210
+ log_requests: true
211
+ methods:
212
+ - path: "/"
213
+ type: POST
214
+ cors: "*"
215
+ responses:
216
+ - code: 200
217
+ body:
218
+ - is_error: false
219
+ content_type: application/json
220
+ integrate_with:
221
+ name: on-demand-scanner
222
+ type: functions
223
+ integration_http_method: POST
224
+ async: true
225
+ backend_http_method: POST
226
+ passthrough_behavior: WHEN_NO_MATCH
227
+ domain_names:
228
+ - dns_record:
229
+ zone:
230
+ name: <%= domain %>
231
+ certificate:
232
+ name: "*.<%= domain %>"
233
+
234
+ buckets:
235
+ - name: bucket
236
+ web: false
237
+ cors:
238
+ - allowed_methods:
239
+ - GET
240
+ - POST
241
+ allowed_origins:
242
+ - "*"
243
+ upload:
244
+ # - source: "code/build"
245
+ - source: "functions"
246
+ destination: "/"
247
+
248
+ search_domains:
249
+ - name: domains-scan-data
250
+ elasticsearch_version: '7.4'
251
+ instance_count: 1
252
+ instance_type: r5.large.elasticsearch
253
+ ebs_size: 10
254
+ ebs_type: gp2
255
+ access_policies:
256
+ Version: '2012-10-17'
257
+ Statement:
258
+ - Effect: Allow
259
+ Principal:
260
+ AWS: "*"
261
+ Action: es:ESHttp*
262
+ nosqldbs:
263
+ - name: scan-data
264
+ read_capacity: 25
265
+ write_capacity: 25
266
+ attributes:
267
+ - name: domain
268
+ type: S
269
+ primary_partition: true
270
+ - name: last_scanned_date
271
+ type: S
272
+ primary_sort: true
273
+ stream: NEW_IMAGE
274
+ - name: domain-list
275
+ read_capacity: 100
276
+ write_capacity: 1
277
+ attributes:
278
+ - name: business_owner
279
+ type: S
280
+ primary_sort: true
281
+ - name: domain
282
+ type: S
283
+ primary_partition: true
284
+ populate:
285
+ - business_owner: TetraTech
286
+ staff_division: eGT
287
+ operational_division: eGTLabs
288
+ domain: egt-labs.com
@@ -28,7 +28,7 @@ databases:
28
28
  # name: rdstests
29
29
 
30
30
  - name: maria-base
31
- size: db.t2.small
31
+ size: db.t3.small
32
32
  engine: mariadb
33
33
  db_parameter_group_parameters:
34
34
  - name: autocommit
@@ -44,7 +44,7 @@ databases:
44
44
  multi_az_on_create: true
45
45
  master_user: Bob
46
46
  - name: maria-from-snap
47
- size: db.t2.small
47
+ size: db.t3.small
48
48
  engine: mariadb
49
49
  vpc:
50
50
  name: rdstests
@@ -86,12 +86,12 @@ databases:
86
86
  name: oracle-base
87
87
 
88
88
  - name: sqlserver-base
89
- size: db.t2.small
89
+ size: db.t3.small
90
90
  engine: sqlserver-ex
91
91
  vpc:
92
92
  name: rdstests
93
93
  - name: sqlserver-from-snap
94
- size: db.t2.small
94
+ size: db.t3.small
95
95
  engine: sqlserver-ex
96
96
  vpc:
97
97
  name: rdstests
@@ -99,7 +99,7 @@ databases:
99
99
  source:
100
100
  name: sqlserver-base
101
101
  - name: sqlserver-point-in-time
102
- size: db.t2.small
102
+ size: db.t3.small
103
103
  engine: sqlserver-ex
104
104
  vpc:
105
105
  name: rdstests