cloud-mu 3.2.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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