Skip to content

Commit 4791e7f

Browse files
authored
Up to date for msk-cluster module (#35)
1 parent 5f25d5b commit 4791e7f

File tree

6 files changed

+348
-310
lines changed

6 files changed

+348
-310
lines changed

modules/msk-cluster/cluster.tf

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ resource "aws_msk_configuration" "this" {
4444
# MSK Cluster
4545
###################################################
4646

47-
# TODO: public access cidrs
4847
resource "aws_msk_cluster" "this" {
4948
cluster_name = var.name
5049
kafka_version = var.kafka_version
@@ -55,10 +54,12 @@ resource "aws_msk_cluster" "this" {
5554
az_distribution = "DEFAULT"
5655
client_subnets = var.broker_subnets
5756
security_groups = concat(
58-
module.security_group[*].id,
57+
[module.security_group.id],
5958
var.broker_additional_security_groups
6059
)
6160

61+
# TODO: `vpc_connectivity`
62+
# TODO: public access cidrs
6263
connectivity_info {
6364
public_access {
6465
type = var.broker_public_access_enabled ? "SERVICE_PROVIDED_EIPS" : "DISABLED"
@@ -67,52 +68,53 @@ resource "aws_msk_cluster" "this" {
6768

6869
storage_info {
6970
ebs_storage_info {
70-
volume_size = var.broker_volume_size
71+
volume_size = var.broker_storage.volume_size
7172

7273
dynamic "provisioned_throughput" {
73-
for_each = var.broker_volume_provisioned_throughput_enabled ? ["go"] : []
74+
for_each = var.broker_storage.provisioned_throughput.enabled ? [var.broker_storage.provisioned_throughput] : []
7475

7576
content {
76-
enabled = true
77-
volume_throughput = var.broker_volume_provisioned_throughput
77+
enabled = provisioned_throughput.value.enabled
78+
volume_throughput = provisioned_throughput.value.throughput
7879
}
7980
}
8081
}
8182
}
8283
}
84+
storage_mode = var.cluster_storage_mode
8385

8486
configuration_info {
8587
arn = aws_msk_configuration.this.arn
8688
revision = aws_msk_configuration.this.latest_revision
8789
}
8890

8991

90-
## Auth
92+
## Authentiation
9193
client_authentication {
92-
unauthenticated = var.auth_unauthenticated_access_enabled
94+
unauthenticated = var.authentication.unauthenticated_access.enabled
9395

9496
sasl {
95-
iam = var.auth_sasl_iam_enabled
96-
scram = var.auth_sasl_scram_enabled
97+
iam = var.authentication.sasl_iam.enabled
98+
scram = var.authentication.sasl_scram.enabled
9799
}
98100

99101
dynamic "tls" {
100-
for_each = var.auth_tls_enabled ? ["go"] : []
102+
for_each = var.authentication.tls.enabled ? [var.authentication.tls] : []
101103

102104
content {
103-
certificate_authority_arns = var.auth_tls_acm_ca_arns
105+
certificate_authority_arns = tls.value.acm_private_certificate_authorities
104106
}
105107
}
106108
}
107109

108110

109111
## Encryption
110112
encryption_info {
111-
encryption_at_rest_kms_key_arn = var.encryption_at_rest_kms_key
113+
encryption_at_rest_kms_key_arn = var.encryption_at_rest.kms_key
112114

113115
encryption_in_transit {
114-
in_cluster = var.encryption_in_transit_in_cluster_enabled
115-
client_broker = var.encryption_in_transit_client_mode
116+
in_cluster = var.encryption_in_transit.in_cluster_enabled
117+
client_broker = var.encryption_in_transit.client_mode
116118
}
117119
}
118120

@@ -121,33 +123,33 @@ resource "aws_msk_cluster" "this" {
121123
logging_info {
122124
broker_logs {
123125
cloudwatch_logs {
124-
enabled = var.logging_cloudwatch_enabled
125-
log_group = var.logging_cloudwatch_log_group
126+
enabled = var.logging.cloudwatch_logs.enabled
127+
log_group = var.logging.cloudwatch_logs.log_group
126128
}
127129
firehose {
128-
enabled = var.logging_firehose_enabled
129-
delivery_stream = var.logging_firehose_delivery_stream
130+
enabled = var.logging.firehose.enabled
131+
delivery_stream = var.logging.firehose.delivery_stream
130132
}
131133
s3 {
132-
enabled = var.logging_s3_enabled
133-
bucket = var.logging_s3_bucket
134-
prefix = var.logging_s3_prefix
134+
enabled = var.logging.s3.enabled
135+
bucket = var.logging.s3.bucket
136+
prefix = var.logging.s3.key_prefix
135137
}
136138
}
137139
}
138140

139141

140142
## Monitoring
141-
enhanced_monitoring = var.monitoring_cloudwatch_level
143+
enhanced_monitoring = var.cloudwatch_metrics.monitoring_level
142144

143145
open_monitoring {
144146
prometheus {
145147
jmx_exporter {
146-
enabled_in_broker = var.monitoring_prometheus_jmx_exporter_enabled
148+
enabled_in_broker = var.prometheus.jmx_exporter_enabled
147149
}
148150

149151
node_exporter {
150-
enabled_in_broker = var.monitoring_prometheus_node_exporter_enabled
152+
enabled_in_broker = var.prometheus.node_exporter_enabled
151153
}
152154
}
153155
}

modules/msk-cluster/outputs.tf

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ output "broker" {
4646
4747
`public_access_enabled` - Whether public access to MSK brokers is enabled.
4848
`security_groups` - A list of the security groups associated with the MSK cluster.
49-
50-
`volume` - A EBS volume information for MSK brokers.
5149
EOF
5250
value = {
5351
size = aws_msk_cluster.this.number_of_broker_nodes
@@ -56,19 +54,27 @@ output "broker" {
5654
subnets = aws_msk_cluster.this.broker_node_group_info[0].client_subnets
5755
public_access_enabled = var.broker_public_access_enabled
5856
security_groups = aws_msk_cluster.this.broker_node_group_info[0].security_groups
59-
default_security_group_id = try(module.security_group[*].id[0], null)
57+
default_security_group_id = module.security_group.id
58+
}
59+
}
6060

61-
volume = {
62-
size = aws_msk_cluster.this.broker_node_group_info[0].storage_info[0].ebs_storage_info[0].volume_size
63-
provisioned_throughput = {
64-
enabled = try(aws_msk_cluster.this.broker_node_group_info[0].storage_info[0].ebs_storage_info[0].provisioned_throughput[0].enabled, false)
65-
throughput = try(aws_msk_cluster.this.broker_node_group_info[0].storage_info[0].ebs_storage_info[0].provisioned_throughput[0].volume_throughput, null)
66-
}
61+
output "broker_storage" {
62+
description = "The configuration for broker storage of the MSK cluster."
63+
value = {
64+
volume_size = aws_msk_cluster.this.broker_node_group_info[0].storage_info[0].ebs_storage_info[0].volume_size
65+
provisioned_throughput = {
66+
enabled = try(aws_msk_cluster.this.broker_node_group_info[0].storage_info[0].ebs_storage_info[0].provisioned_throughput[0].enabled, false)
67+
throughput = try(aws_msk_cluster.this.broker_node_group_info[0].storage_info[0].ebs_storage_info[0].provisioned_throughput[0].volume_throughput, null)
6768
}
6869
}
6970
}
7071

71-
output "auth" {
72+
output "cluster_storage_mode" {
73+
description = "The storage mode of the MSK cluster."
74+
value = aws_msk_cluster.this.storage_mode
75+
}
76+
77+
output "authentication" {
7278
description = "A configuration for authentication of the Kafka cluster."
7379
value = {
7480
unauthenticated_access = {
@@ -80,31 +86,33 @@ output "auth" {
8086
}
8187
scram = {
8288
enabled = aws_msk_cluster.this.client_authentication[0].sasl[0].scram
83-
kms_key = var.auth_sasl_scram_kms_key
84-
users = var.auth_sasl_scram_users
89+
kms_key = var.authentication.sasl_scram.kms_key
90+
users = var.authentication.sasl_scram.users
8591
}
8692
}
8793
tls = {
88-
enabled = var.auth_tls_enabled
89-
acm_ca_arns = try(aws_msk_cluster.this.client_authentication[0].tls[0].certificate_authority_arns, [])
94+
enabled = var.authentication.tls.enabled
95+
acm_private_certificate_authorities = try(aws_msk_cluster.this.client_authentication[0].tls[0].certificate_authority_arns, [])
9096
}
9197
}
9298
}
9399

94-
output "encryption" {
100+
output "encryption_at_rest" {
95101
description = <<EOF
96-
A configuration for encryption of the Kafka cluster.
97-
`at_rest` - The configuration for encryption at rest.
98-
`in_transit` - The configuration for encryption in transit.
102+
The configuration for encryption at rest of the Kafka cluster.
99103
EOF
100104
value = {
101-
at_rest = {
102-
kms_key = aws_msk_cluster.this.encryption_info[0].encryption_at_rest_kms_key_arn
103-
}
104-
in_transit = {
105-
in_cluster_enabled = aws_msk_cluster.this.encryption_info[0].encryption_in_transit[0].in_cluster
106-
client_mode = aws_msk_cluster.this.encryption_info[0].encryption_in_transit[0].client_broker
107-
}
105+
kms_key = aws_msk_cluster.this.encryption_info[0].encryption_at_rest_kms_key_arn
106+
}
107+
}
108+
109+
output "encryption_in_transit" {
110+
description = <<EOF
111+
The configuration for encryption in transit of the Kafka cluster.
112+
EOF
113+
value = {
114+
in_cluster_enabled = aws_msk_cluster.this.encryption_info[0].encryption_in_transit[0].in_cluster
115+
client_mode = aws_msk_cluster.this.encryption_info[0].encryption_in_transit[0].client_broker
108116
}
109117
}
110118

@@ -125,22 +133,22 @@ output "logging" {
125133
delivery_stream = aws_msk_cluster.this.logging_info[0].broker_logs[0].firehose[0].delivery_stream
126134
}
127135
s3 = {
128-
enabled = aws_msk_cluster.this.logging_info[0].broker_logs[0].s3[0].enabled
129-
bucket = aws_msk_cluster.this.logging_info[0].broker_logs[0].s3[0].bucket
130-
prefix = aws_msk_cluster.this.logging_info[0].broker_logs[0].s3[0].prefix
136+
enabled = aws_msk_cluster.this.logging_info[0].broker_logs[0].s3[0].enabled
137+
bucket = aws_msk_cluster.this.logging_info[0].broker_logs[0].s3[0].bucket
138+
key_prefix = aws_msk_cluster.this.logging_info[0].broker_logs[0].s3[0].prefix
131139
}
132140
}
133141
}
134142

135143
output "monitoring" {
136144
description = <<EOF
137145
A configuration for monitoring of the Kafka cluster.
138-
`cloudwatch` - The configuration for MSK CloudWatch Metrics.
146+
`cloudwatch_metrics` - The configuration for MSK CloudWatch Metrics.
139147
`prometheus` - The configuration for Prometheus open monitoring.
140148
EOF
141149
value = {
142-
cloudwatch = {
143-
level = aws_msk_cluster.this.enhanced_monitoring
150+
cloudwatch_metrics = {
151+
monitoring_level = aws_msk_cluster.this.enhanced_monitoring
144152
}
145153
prometheus = {
146154
jmx_exporter_enabled = aws_msk_cluster.this.open_monitoring[0].prometheus[0].jmx_exporter[0].enabled_in_broker

modules/msk-cluster/scram-secrets.tf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
resource "random_password" "this" {
2-
for_each = var.auth_sasl_scram_users
2+
for_each = var.authentication.sasl_scram.users
33

44
length = 16
55

@@ -19,9 +19,9 @@ resource "random_password" "this" {
1919
# TODO: Create an independant module for msk-scram-users
2020
module "secret" {
2121
source = "tedilabs/secret/aws//modules/secrets-manager-secret"
22-
version = "~> 0.2.0"
22+
version = "~> 0.5.0"
2323

24-
for_each = var.auth_sasl_scram_users
24+
for_each = var.authentication.sasl_scram.users
2525

2626
name = "AmazonMSK_SCRAM/${var.name}/${each.key}"
2727
description = "The SASL/SCRAM secret to provide username and password for MSK cluster authenticaiton."
@@ -32,7 +32,7 @@ module "secret" {
3232
password = random_password.this[each.key].result
3333
}
3434

35-
kms_key = var.auth_sasl_scram_kms_key
35+
kms_key = var.authentication.sasl_scram.kms_key
3636
policy = null
3737
block_public_policy = true
3838

0 commit comments

Comments
 (0)