@@ -85,7 +85,7 @@ data "aws_iam_policy_document" "elasticsearch-log-publishing-policy" {
85
85
# Module : Elasticsearch
86
86
# Description : Terraform module to create Elasticsearch resource on AWS.
87
87
resource "aws_elasticsearch_domain" "default" {
88
- count = var. enabled && var. zone_awareness_enabled ? 1 : 0
88
+ count = var. enabled && var. zone_awareness_enabled && var . public_enabled == false ? 1 : 0
89
89
domain_name = var. domain_name != " " ? var. domain_name : module. labels . id
90
90
elasticsearch_version = var. elasticsearch_version
91
91
@@ -157,10 +157,78 @@ resource "aws_elasticsearch_domain" "default" {
157
157
depends_on = [aws_iam_service_linked_role . default ]
158
158
}
159
159
160
+ resource "aws_elasticsearch_domain" "default-public" {
161
+ count = var. enabled && var. zone_awareness_enabled && var. public_enabled ? 1 : 0
162
+ domain_name = var. domain_name != " " ? var. domain_name : module. labels . id
163
+ elasticsearch_version = var. elasticsearch_version
164
+
165
+ advanced_options = var. advanced_options
166
+
167
+ ebs_options {
168
+ ebs_enabled = var. volume_size > 0 ? true : false
169
+ volume_size = var. volume_size
170
+ volume_type = var. volume_type
171
+ iops = var. iops
172
+ }
173
+
174
+ encrypt_at_rest {
175
+ enabled = false
176
+ kms_key_id = var. kms_key_id
177
+ }
178
+
179
+ cluster_config {
180
+ instance_count = var. instance_count
181
+ instance_type = var. instance_type
182
+ dedicated_master_enabled = var. dedicated_master_enabled
183
+ dedicated_master_count = var. dedicated_master_count
184
+ dedicated_master_type = var. dedicated_master_type
185
+ zone_awareness_enabled = var. zone_awareness_enabled
186
+
187
+ zone_awareness_config {
188
+ availability_zone_count = var. availability_zone_count
189
+ }
190
+ }
191
+
192
+ node_to_node_encryption {
193
+ enabled = var. encryption_enabled
194
+ }
195
+
196
+ snapshot_options {
197
+ automated_snapshot_start_hour = var. automated_snapshot_start_hour
198
+ }
199
+
200
+ log_publishing_options {
201
+ enabled = var. log_publishing_index_enabled
202
+ log_type = " INDEX_SLOW_LOGS"
203
+ cloudwatch_log_group_arn = format (" %s:*" , join (" " , aws_cloudwatch_log_group. cloudwatch . * . arn ))
204
+ }
205
+
206
+ log_publishing_options {
207
+ enabled = var. log_publishing_search_enabled
208
+ log_type = " SEARCH_SLOW_LOGS"
209
+ cloudwatch_log_group_arn = format (" %s:*" , join (" " , aws_cloudwatch_log_group. cloudwatch . * . arn ))
210
+ }
211
+
212
+ log_publishing_options {
213
+ enabled = var. log_publishing_application_enabled
214
+ log_type = " ES_APPLICATION_LOGS"
215
+ cloudwatch_log_group_arn = format (" %s:*" , join (" " , aws_cloudwatch_log_group. cloudwatch . * . arn ))
216
+ }
217
+
218
+ domain_endpoint_options {
219
+ enforce_https = var. enforce_https
220
+ tls_security_policy = var. tls_security_policy
221
+ }
222
+
223
+ tags = module. labels . tags
224
+
225
+ depends_on = [aws_iam_service_linked_role . default ]
226
+ }
227
+
160
228
# Module : Elasticsearch
161
229
# Description : Terraform module to create Elasticsearch resource on AWS.
162
230
resource "aws_elasticsearch_domain" "single" {
163
- count = var. enabled && var. zone_awareness_enabled == false ? 1 : 0
231
+ count = var. enabled && var. zone_awareness_enabled == false && var . public_enabled == false ? 1 : 0
164
232
domain_name = var. domain_name != " " ? var. domain_name : module. labels . id
165
233
elasticsearch_version = var. elasticsearch_version
166
234
@@ -227,6 +295,69 @@ resource "aws_elasticsearch_domain" "single" {
227
295
depends_on = [aws_iam_service_linked_role . default ]
228
296
}
229
297
298
+ resource "aws_elasticsearch_domain" "single-public" {
299
+ count = var. enabled && var. zone_awareness_enabled == false && var. public_enabled ? 1 : 0
300
+ domain_name = var. domain_name != " " ? var. domain_name : module. labels . id
301
+ elasticsearch_version = var. elasticsearch_version
302
+
303
+ advanced_options = var. advanced_options
304
+
305
+ ebs_options {
306
+ ebs_enabled = var. volume_size > 0 ? true : false
307
+ volume_size = var. volume_size
308
+ volume_type = var. volume_type
309
+ iops = var. iops
310
+ }
311
+
312
+ encrypt_at_rest {
313
+ enabled = false
314
+ kms_key_id = var. kms_key_id
315
+ }
316
+
317
+ cluster_config {
318
+ instance_count = var. instance_count
319
+ instance_type = var. instance_type
320
+ dedicated_master_enabled = var. dedicated_master_enabled
321
+ dedicated_master_count = var. dedicated_master_count
322
+ dedicated_master_type = var. dedicated_master_type
323
+ }
324
+
325
+ node_to_node_encryption {
326
+ enabled = var. encryption_enabled
327
+ }
328
+
329
+ snapshot_options {
330
+ automated_snapshot_start_hour = var. automated_snapshot_start_hour
331
+ }
332
+
333
+ log_publishing_options {
334
+ enabled = var. log_publishing_index_enabled
335
+ log_type = " INDEX_SLOW_LOGS"
336
+ cloudwatch_log_group_arn = format (" %s:*" , join (" " , aws_cloudwatch_log_group. cloudwatch . * . arn ))
337
+ }
338
+
339
+ log_publishing_options {
340
+ enabled = var. log_publishing_search_enabled
341
+ log_type = " SEARCH_SLOW_LOGS"
342
+ cloudwatch_log_group_arn = format (" %s:*" , join (" " , aws_cloudwatch_log_group. cloudwatch . * . arn ))
343
+ }
344
+
345
+ log_publishing_options {
346
+ enabled = var. log_publishing_application_enabled
347
+ log_type = " ES_APPLICATION_LOGS"
348
+ cloudwatch_log_group_arn = format (" %s:*" , join (" " , aws_cloudwatch_log_group. cloudwatch . * . arn ))
349
+ }
350
+
351
+ domain_endpoint_options {
352
+ enforce_https = var. enforce_https
353
+ tls_security_policy = var. tls_security_policy
354
+ }
355
+
356
+ tags = module. labels . tags
357
+
358
+ depends_on = [aws_iam_service_linked_role . default ]
359
+ }
360
+
230
361
# Module : Elasticsearch Role Policy
231
362
# Description : Terraform module to create Elasticsearch resource on AWS.
232
363
data "aws_iam_policy_document" "default" {
@@ -236,8 +367,8 @@ data "aws_iam_policy_document" "default" {
236
367
actions = distinct (compact (var. iam_actions ))
237
368
238
369
resources = [
239
- var . zone_awareness_enabled ? join (" " , aws_elasticsearch_domain. default . * . arn ) : join (" " , aws_elasticsearch_domain. single . * . arn ),
240
- var . zone_awareness_enabled ? format (" %s/*" , join (" " , aws_elasticsearch_domain. default . * . arn )) : format (" %s/*" , join (" " , aws_elasticsearch_domain. single . * . arn ))
370
+ var . zone_awareness_enabled ? (var . public_enabled ? join (" " , aws_elasticsearch_domain. default-public . * . arn ) : join (" " , aws_elasticsearch_domain. default . * . arn )) : (var . public_enabled ? join ( " " , aws_elasticsearch_domain . single-public . * . arn ) : join ( " " , aws_elasticsearch_domain . single . * . arn ) ),
371
+ var . zone_awareness_enabled ? (var . public_enabled ? format (" %s/*" , join (" " , aws_elasticsearch_domain. default-public . * . arn )) : format (" %s/*" , join (" " , aws_elasticsearch_domain. default . * . arn ))) : (var . public_enabled ? format ( " %s/* " , join ( " " , aws_elasticsearch_domain . single-public . * . arn )) : format ( " %s/* " , join ( " " , aws_elasticsearch_domain . single . * . arn ) ))
241
372
]
242
373
243
374
principals {
@@ -264,7 +395,7 @@ module "es_dns" {
264
395
name = var. es_hostname
265
396
type = var. type
266
397
ttl = var. ttl
267
- values = var. zone_awareness_enabled ? join (" " , aws_elasticsearch_domain. default . * . endpoint ) : join (" " , aws_elasticsearch_domain. single . * . endpoint )
398
+ values = var. zone_awareness_enabled ? (var . public_enabled ? join (" " , aws_elasticsearch_domain. default-public . * . endpoint ) : join (" " , aws_elasticsearch_domain. default . * . endpoint )) : (var . public_enabled ? join ( " " , aws_elasticsearch_domain . single-public . * . endpoint ) : join ( " " , aws_elasticsearch_domain . single . * . endpoint ) )
268
399
}
269
400
# Module : ROUTE53
270
401
# Description : Provides a Route53 record resource.
@@ -275,5 +406,5 @@ module "kibana_dns" {
275
406
name = var. kibana_hostname
276
407
type = var. type
277
408
ttl = var. ttl
278
- values = var. zone_awareness_enabled ? join (" " , aws_elasticsearch_domain. default . * . kibana_endpoint ) : join (" " , aws_elasticsearch_domain. single . * . kibana_endpoint )
409
+ values = var. zone_awareness_enabled ? (var . public_enabled ? join (" " , aws_elasticsearch_domain. default-public . * . endpoint ) : join (" " , aws_elasticsearch_domain. default . * . endpoint )) : (var . public_enabled ? join ( " " , aws_elasticsearch_domain . single-public . * . endpoint ) : join ( " " , aws_elasticsearch_domain . single . * . endpoint ) )
279
410
}
0 commit comments