-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathsolr-on-ecs.yml
299 lines (296 loc) · 9.74 KB
/
solr-on-ecs.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
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
version: 1
name: solr-on-ecs
id: 182612a5-e2b7-4afc-b2b2-9f9d066875d1
description: Independent indexing and searching using Apache Solr
display_name: Solr on ECS
image_url: https://lucene.apache.org/theme/images/solr/identity/Solr_Logo_on_white.png
documentation_url: https://lucene.apache.org/solr/resources.html
support_url: https://github.com/GSA/datagov-brokerpak-solr
tags: [apache, search, index, k8s]
plans:
- name: base
id: 4d7f0501-77d6-4d21-a37a-8b80a0ea9c0d
description: Provision a standalone leader/follower Solr deployment for use by applications
display_name: Provision and use standalone Solr in your app
bullets:
- "REQUIRED prerequisite: An AWS Account into which Solr resources with be launched."
properties: {}
provision:
plan_inputs: []
user_inputs:
- field_name: solrImageRepo
required: false
type: string
details: "Repo for the Solr Docker image to use, defaults to docker.io/solr"
- field_name: solrImageTag
required: false
type: string
details: "Tag for the Solr Docker image to use, defaults to 8.11. See https://hub.docker.com/_/solr?tab=tags (or your configured solrImageRepo) for options"
- field_name: solrMem
required: false
type: number
details: "How much memory to request for each replica (default is '6G')"
- field_name: solrCpu
required: false
type: number
details: "How much vCPU to request for each replica (default is '2000m' aka '2 vCPUs')"
- field_name: setupLink
required: false
type: string
details: "The Solr setup file for initialization of cores/authentication/et cetera..."
- field_name: efsProvisionedThroughput
required: false
type: number
details: "The throughput, measured in MiB/s, that you want to provision for the file system"
- field_name: efsProvisionedThroughputFollower
required: false
type: number
details: "The throughput, measured in MiB/s, that you want to provision for the file system of the followers"
- field_name: efsPerformanceMode
required: false
type: string
details: "The file system performance mode. Can be either \"generalPurpose\" or \"maxIO\" (Default: \"generalPurpose\")"
- field_name: disableEfs
required: false
type: boolean
details: "Launch Solr with local storage"
- field_name: disableEfsFollower
required: false
type: boolean
details: "Launch Solr Followers with local storage"
- field_name: solrFollowerCount
required: false
type: number
details: "How many Solr Followers should be created"
- field_name: solrFollowerCpu
required: false
type: number
details: "How much vCPU to request for each follower replica (default is '2048' aka '2 vCPUs')"
- field_name: solrFollowerMem
required: false
type: number
details: "How much memory to request for each follower replica (default is '12G')"
- field_name: solrFollowerDiskSize
required: false
type: number
details: "How much ephemeral storage disk space Solr Followers will have"
- field_name: setupFollowerLink
required: false
type: string
details: "The Solr setup file for follower to initialize cores/authentication/et cetera..."
- field_name: slackNotification
required: false
type: boolean
details: "Enable slack notifications for Solr Errors/restarts via webhook integration"
- field_name: emailNotification
required: false
type: string
details: "Enable email notifications for Solr Errors/restarts"
computed_inputs:
- name: instance_name
type: string
details: "The name of the cloud to create (used only for demo purposes)"
overwrite: true
default: ${request.instance_id}
- name: labels
default: ${json.marshal(request.default_labels)}
overwrite: true
type: object
details: "Labels with the org, space, and instance ID"
- name: solrImageRepo
default: "ghcr.io/gsa/catalog.data.gov.solr"
overwrite: false
type: string
- name: solrImageTag
default: "8-stunnel-root"
overwrite: false
type: string
- name: solrMem
default: 14336
overwrite: false
type: number
- name: solrCpu
default: 4096
overwrite: false
type: number
- name: setupLink
default: "https://raw.githubusercontent.com/GSA/catalog.data.gov/main/solr/solr_setup.sh"
overwrite: false
type: string
- name: efsProvisionedThroughput
default: 1
overwrite: false
type: number
- name: efsProvisionedThroughputFollower
default: 1
overwrite: false
type: number
- name: efsPerformanceMode
default: "generalPurpose"
overwrite: false
type: string
- name: disableEfs
default: false
overwrite: false
type: boolean
- name: disableEfsFollower
default: false
overwrite: false
type: boolean
- name: solrFollowerMem
default: 14336
overwrite: false
type: number
- name: solrFollowerCpu
default: 4096
overwrite: false
type: number
- name: solrFollowerCount
default: 0
overwrite: false
type: number
- name: solrFollowerDiskSize
default: 50
overwrite: false
type: number
- name: setupFollowerLink
default: "https://raw.githubusercontent.com/GSA/catalog.data.gov/main/solr/solr_setup.sh"
overwrite: false
type: string
- name: slackNotification
default: false
overwrite: false
type: boolean
- name: emailNotification
default: ""
overwrite: false
type: string
- name: region
type: string
details: "The AWS region in which to create all AWS resources"
overwrite: true
default: ${config("aws.default_region")}
- name: zone
type: string
details: "The Route53 zone in which to create k8s instances"
overwrite: true
default: ${config("aws.zone")}
outputs:
- field_name: solr_leader_url
details: "The Solr Leader url for the created instance"
type: string
required: true
- field_name: solr_follower_url
details: "The Solr Follower url for the created instance (routes to all follower instances randomly)"
type: string
required: true
- field_name: solr_follower_individual_urls
details: "The Solr Follower urls for each follower instance"
type: string
required: true
- field_name: solr_admin_user
details: "The admin username for access to the Solr Instance"
type: string
required: true
- field_name: solr_admin_pass
details: "The admin password for access to the Solr Instance"
type: string
required: true
template_refs:
admin: terraform/ecs/provision/admin.tf
app-template: terraform/ecs/provision/app_template.tf
cloudwatch: terraform/ecs/provision/cloudwatch.tf
dns: terraform/ecs/provision/dns.tf
private-dns: terraform/ecs/provision/private-dns.tf
leader: terraform/ecs/provision/leader.tf
efs: terraform/ecs/provision/efs-leader.tf
iam: terraform/ecs/provision/iam.tf
lb: terraform/ecs/provision/lb-leader.tf
logging: terraform/ecs/provision/logging.tf
restarts: terraform/ecs/provision/restarts.tf
ssl: terraform/ecs/provision/ssl.tf
vpc: terraform/ecs/provision/vpc.tf
outputs: terraform/ecs/provision/outputs.tf
variables: terraform/ecs/provision/variables.tf
versions: terraform/ecs/provision/versions.tf
# Separate configuration for solr followers
follower: terraform/ecs/provision/follower.tf
lb-follower: terraform/ecs/provision/lb-follower.tf
efs-follower: terraform/ecs/provision/efs-follower.tf
bind:
plan_inputs: []
user_inputs: []
computed_inputs:
- name: instance_name
default: ${request.instance_id}
overwrite: true
type: string
- name: solr_admin_pass
default: ${instance.details["solr_admin_pass"]}
overwrite: true
type: string
- name: solr_admin_user
default: ${instance.details["solr_admin_user"]}
overwrite: true
type: string
- name: solr_leader_url
default: ${instance.details["solr_leader_url"]}
overwrite: true
type: string
- name: solr_follower_url
default: ${instance.details["solr_follower_url"]}
overwrite: true
type: string
- name: solr_follower_individual_urls
default: ${instance.details["solr_follower_individual_urls"]}
overwrite: true
type: string
outputs:
- field_name: domain
required: false
type: string
details: The domain of the Solr Leader instance that was created
- field_name: domain_replica
required: false
type: string
details: The domain of the Solr Follower instances that were created
- field_name: username
required: false
type: string
details: The username of the Solr instances (leader + followers) that were created
- field_name: password
required: false
type: string
details: The password of the Solr instances (leader + followers) that were created
- field_name: uri
required: true
type: string
details: The URL to use for working with the Solr Leader instance
- field_name: solr_leader_url
details: "The Solr Leader url for the created instance"
type: string
required: true
- field_name: solr_follower_url
details: "The Solr Follower url for the created instance (routes to all follower instances randomly)"
type: string
required: true
- field_name: solr_follower_individual_urls
details: "The Solr Follower urls for each follower instance"
type: string
required: true
- field_name: solr_admin_user
details: "The admin username for access to the Solr instances (leader + followers)"
type: string
required: false
- field_name: solr_admin_pass
details: "The admin password for access to the Solr instances (leader + followers)"
type: string
required: false
template_refs:
main: terraform/ecs/bind/main.tf
outputs: terraform/ecs/bind/outputs.tf
variables: terraform/ecs/bind/variables.tf
versions: terraform/ecs/bind/versions.tf
examples: []
plan_updateable: false
requiredenvvars: []