Skip to content

Commit 1a89eb6

Browse files
authored
Merge pull request #18 from samstav/0.12upgrade-part2
0.12 upgrade
2 parents 3e6a0f3 + a477f83 commit 1a89eb6

File tree

4 files changed

+59
-48
lines changed

4 files changed

+59
-48
lines changed

main.tf

Lines changed: 35 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -29,57 +29,53 @@
2929
*
3030
*/
3131

32-
terraform {
33-
required_version = ">= 0.9.0"
32+
data "aws_caller_identity" "current" {
3433
}
3534

36-
data "aws_caller_identity" "current" {}
37-
3835
resource "aws_dynamodb_table" "tf_backend_state_lock_table" {
39-
count = "${var.dynamodb_lock_table_enabled ? 1 : 0}"
40-
name = "${var.dynamodb_lock_table_name}"
41-
read_capacity = "${var.lock_table_read_capacity}"
42-
write_capacity = "${var.lock_table_write_capacity}"
43-
hash_key = "LockID"
44-
stream_enabled = "${var.dynamodb_lock_table_stream_enabled}"
45-
stream_view_type = "${var.dynamodb_lock_table_stream_enabled ? var.dynamodb_lock_table_stream_view_type : ""}"
36+
count = var.dynamodb_lock_table_enabled ? 1 : 0
37+
name = var.dynamodb_lock_table_name
38+
read_capacity = var.lock_table_read_capacity
39+
write_capacity = var.lock_table_write_capacity
40+
hash_key = "LockID"
41+
stream_enabled = var.dynamodb_lock_table_stream_enabled
42+
stream_view_type = var.dynamodb_lock_table_stream_enabled ? var.dynamodb_lock_table_stream_view_type : ""
4643

4744
attribute {
4845
name = "LockID"
4946
type = "S"
5047
}
51-
tags {
52-
Description = "Terraform state locking table for account ${data.aws_caller_identity.current.account_id}."
48+
tags = {
49+
Description = "Terraform state locking table for account ${data.aws_caller_identity.current.account_id}."
5350
ManagedByTerraform = "true"
54-
TerraformModule = "terraform-aws-backend"
51+
TerraformModule = "terraform-aws-backend"
5552
}
5653

5754
lifecycle {
5855
prevent_destroy = true
5956
}
60-
6157
}
6258

6359
resource "aws_s3_bucket" "tf_backend_bucket" {
64-
bucket = "${var.backend_bucket}"
65-
acl = "private"
60+
bucket = var.backend_bucket
61+
acl = "private"
6662
versioning {
6763
enabled = true
6864
}
6965
logging {
70-
target_bucket = "${aws_s3_bucket.tf_backend_logs_bucket.id}"
66+
target_bucket = aws_s3_bucket.tf_backend_logs_bucket.id
7167
target_prefix = "log/"
7268
}
73-
tags {
74-
Description = "Terraform S3 Backend bucket which stores the terraform state for account ${data.aws_caller_identity.current.account_id}."
69+
tags = {
70+
Description = "Terraform S3 Backend bucket which stores the terraform state for account ${data.aws_caller_identity.current.account_id}."
7571
ManagedByTerraform = "true"
76-
TerraformModule = "terraform-aws-backend"
72+
TerraformModule = "terraform-aws-backend"
7773
}
7874
server_side_encryption_configuration {
7975
rule {
8076
apply_server_side_encryption_by_default {
81-
kms_master_key_id = "${var.kms_key_id}"
82-
sse_algorithm = "${var.kms_key_id == "" ? "AES256" : "aws:kms"}"
77+
kms_master_key_id = var.kms_key_id
78+
sse_algorithm = var.kms_key_id == "" ? "AES256" : "aws:kms"
8379
}
8480
}
8581
}
@@ -90,68 +86,68 @@ resource "aws_s3_bucket" "tf_backend_bucket" {
9086

9187
data "aws_iam_policy_document" "tf_backend_bucket_policy" {
9288
statement {
93-
sid = "RequireEncryptedTransport"
89+
sid = "RequireEncryptedTransport"
9490
effect = "Deny"
9591
actions = [
9692
"s3:*",
9793
]
9894
resources = [
99-
"${aws_s3_bucket.tf_backend_bucket.arn}/*"
95+
"${aws_s3_bucket.tf_backend_bucket.arn}/*",
10096
]
10197
condition {
102-
test = "Bool"
98+
test = "Bool"
10399
variable = "aws:SecureTransport"
104100
values = [
105101
false,
106102
]
107103
}
108104
principals {
109-
type = "*"
105+
type = "*"
110106
identifiers = ["*"]
111107
}
112108
}
113109

114110
statement {
115-
sid = "RequireEncryptedStorage"
111+
sid = "RequireEncryptedStorage"
116112
effect = "Deny"
117113
actions = [
118114
"s3:PutObject",
119115
]
120116
resources = [
121-
"${aws_s3_bucket.tf_backend_bucket.arn}/*"
117+
"${aws_s3_bucket.tf_backend_bucket.arn}/*",
122118
]
123119
condition {
124-
test = "StringNotEquals"
120+
test = "StringNotEquals"
125121
variable = "s3:x-amz-server-side-encryption"
126122
values = [
127-
"${var.kms_key_id == "" ? "AES256" : "aws:kms" }"
123+
var.kms_key_id == "" ? "AES256" : "aws:kms",
128124
]
129125
}
130126
principals {
131-
type = "*"
127+
type = "*"
132128
identifiers = ["*"]
133129
}
134130
}
135131
}
136132

137-
138133
resource "aws_s3_bucket_policy" "tf_backend_bucket_policy" {
139-
bucket = "${aws_s3_bucket.tf_backend_bucket.id}"
140-
policy = "${data.aws_iam_policy_document.tf_backend_bucket_policy.json}"
134+
bucket = aws_s3_bucket.tf_backend_bucket.id
135+
policy = data.aws_iam_policy_document.tf_backend_bucket_policy.json
141136
}
142137

143138
resource "aws_s3_bucket" "tf_backend_logs_bucket" {
144139
bucket = "${var.backend_bucket}-logs"
145-
acl = "log-delivery-write"
140+
acl = "log-delivery-write"
146141
versioning {
147142
enabled = true
148143
}
149-
tags {
150-
Purpose = "Logging bucket for ${var.backend_bucket}"
144+
tags = {
145+
Purpose = "Logging bucket for ${var.backend_bucket}"
151146
ManagedByTerraform = "true"
152-
TerraformModule = "terraform-aws-backend"
147+
TerraformModule = "terraform-aws-backend"
153148
}
154149
lifecycle {
155150
prevent_destroy = true
156151
}
157152
}
153+

outputs.tf

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,26 @@
1212
*/
1313

1414
output "s3_backend_bucket_name" {
15-
value = "${ join("", aws_s3_bucket.tf_backend_bucket.*.id, aws_s3_bucket.tf_backend_bucket.*.id)}"
15+
value = join(
16+
"",
17+
aws_s3_bucket.tf_backend_bucket.*.id,
18+
aws_s3_bucket.tf_backend_bucket.*.id,
19+
)
1620
}
1721

1822
output "dynamodb_lock_table_name" {
19-
value = "${aws_dynamodb_table.tf_backend_state_lock_table.*.id}"
23+
value = aws_dynamodb_table.tf_backend_state_lock_table.*.id
2024
}
2125

2226
output "dynamodb_lock_table_arn" {
23-
value = "${aws_dynamodb_table.tf_backend_state_lock_table.*.arn}"
27+
value = aws_dynamodb_table.tf_backend_state_lock_table.*.arn
2428
}
2529

2630
output "dynamodb_lock_stream_arn" {
27-
value = "${aws_dynamodb_table.tf_backend_state_lock_table.*.stream_arn}"
31+
value = aws_dynamodb_table.tf_backend_state_lock_table.*.stream_arn
2832
}
2933

3034
output "dynamodb_lock_stream_label" {
31-
value = "${aws_dynamodb_table.tf_backend_state_lock_table.*.stream_label}"
35+
value = aws_dynamodb_table.tf_backend_state_lock_table.*.stream_label
3236
}
37+

variables.tf

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1-
variable "backend_bucket" {}
1+
variable "backend_bucket" {
2+
}
23

34
variable "dynamodb_lock_table_enabled" {
4-
default = 1
5+
type = bool
6+
default = true
57
description = "Affects terraform-aws-backend module behavior. Set to false or 0 to prevent this module from creating the DynamoDB table to use for terraform state locking and consistency. More info on locking for aws/s3 backends: https://www.terraform.io/docs/backends/types/s3.html. More information about how terraform handles booleans here: https://www.terraform.io/docs/configuration/variables.html"
68
}
79

810
variable "dynamodb_lock_table_stream_enabled" {
9-
default = 0
11+
type = bool
12+
default = false
1013
description = "Affects terraform-aws-backend module behavior. Set to false or 0 to disable DynamoDB Streams for the table. More info on DynamoDB streams: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html. More information about how terraform handles booleans here: https://www.terraform.io/docs/configuration/variables.html"
1114
}
1215

@@ -19,15 +22,18 @@ variable "dynamodb_lock_table_name" {
1922
}
2023

2124
variable "lock_table_read_capacity" {
25+
type = number
2226
default = 1
2327
}
2428

2529
variable "lock_table_write_capacity" {
30+
type = number
2631
default = 1
2732
}
2833

2934
variable "kms_key_id" {
3035
# Default to absent/blank to use the default aws/s3 aws kms master key
31-
default = ""
36+
default = ""
3237
description = "The AWS KMS master key ID used for the SSE-KMS encryption on the tf state s3 bucket. If the kms_key_id is specified, the bucket default encryption key management method will be set to aws-kms. If the kms_key_id is not specified (the default), then the default encryption key management method will be set to aes-256 (also known as aws-s3 key management). The default aws/s3 AWS KMS master key is used if this element is absent (the default)."
3338
}
39+

versions.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
terraform {
3+
required_version = ">= 0.12"
4+
}

0 commit comments

Comments
 (0)