Skip to content

Commit

Permalink
OPS-5217 Use optional from TF-1.3 (#79)
Browse files Browse the repository at this point in the history
* OPS-5217 Use `optional` from TF-1.3

* OPS-5217 Fix version in CI

* OPS-5217 Remove default value for `expiration`
  • Loading branch information
snovikov authored Mar 3, 2023
1 parent 544652e commit 7e88234
Show file tree
Hide file tree
Showing 19 changed files with 74 additions and 41 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ TF_MODULES = $(sort $(dir $(wildcard $(CURRENT_DIR)modules/*/)))
# -------------------------------------------------------------------------------------------------
# Container versions
# -------------------------------------------------------------------------------------------------
TF_VERSION = 1.0.11
TF_VERSION = 1.3.9
TFDOCS_VERSION = 0.16.0-0.31
FL_VERSION = 0.4
JL_VERSION = 1.6.0-0.5
Expand Down
24 changes: 22 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ This Terraform module can create typical resources needed for most microservices
* [IAM](examples/iam/)
* [RDS](examples/rds/)
* [Redis](examples/redis/)
* [S3](examples/s3/)
* [SQS](examples/sqs/)

## Usage

Expand Down Expand Up @@ -260,7 +262,7 @@ The following resources _CAN_ be created:

| Name | Version |
|------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.3 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | ~> 4.0 |
| <a name="requirement_null"></a> [null](#requirement\_null) | ~> 3.0 |
| <a name="requirement_random"></a> [random](#requirement\_random) | ~> 3.0 |
Expand Down Expand Up @@ -1742,7 +1744,25 @@ Default: `"Enabled"`

Description: S3 Lifecycle rules

Type: `any`
Type:

```hcl
list(object({
id = string
status = optional(string, "Enabled")
prefix = string
expiration = optional(list(object({
days = optional(number)
date = optional(string)
expired_object_delete_marker = optional(bool, true)
})), [])
transition = optional(list(object({
days = optional(number)
date = optional(string)
storage_class = string
})), [])
}))
```

Default: `[]`

Expand Down
2 changes: 1 addition & 1 deletion examples/dynamodb/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

| Name | Version |
|------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~> 1.0 |
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~> 1.3 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | ~> 4.10 |

## Providers
Expand Down
2 changes: 1 addition & 1 deletion examples/dynamodb/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ terraform {
version = "~> 4.10"
}
}
required_version = "~> 1.0"
required_version = "~> 1.3"
}
2 changes: 1 addition & 1 deletion examples/iam/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

| Name | Version |
|------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~> 1.0 |
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~> 1.3 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | ~> 4.10 |

## Providers
Expand Down
2 changes: 1 addition & 1 deletion examples/iam/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ terraform {
version = "~> 4.10"
}
}
required_version = "~> 1.0"
required_version = "~> 1.3"
}
2 changes: 1 addition & 1 deletion examples/rds/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

| Name | Version |
|------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~> 1.0 |
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~> 1.3 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | ~> 4.10 |

## Providers
Expand Down
2 changes: 1 addition & 1 deletion examples/rds/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ terraform {
version = "~> 4.10"
}
}
required_version = "~> 1.0"
required_version = "~> 1.3"
}
2 changes: 1 addition & 1 deletion examples/redis/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

| Name | Version |
|------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~> 1.0 |
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~> 1.3 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | ~> 4.10 |

## Providers
Expand Down
2 changes: 1 addition & 1 deletion examples/redis/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ terraform {
version = "~> 4.10"
}
}
required_version = "~> 1.0"
required_version = "~> 1.3"
}
2 changes: 1 addition & 1 deletion examples/s3/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

| Name | Version |
|------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~> 1.0 |
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~> 1.3 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | ~> 4.10 |

## Providers
Expand Down
26 changes: 13 additions & 13 deletions examples/s3/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,25 @@ module "ms_sample_s3" {

s3_lifecycle_rules = [
{
id = "all-cleanup"
status = "Enabled"
prefix = ""
expiration = {
id = "all-cleanup"
status = "Enabled"
prefix = ""
expiration = [{
days = 90
}
}]
},
{
id = "tmp"
status = "Enabled"
prefix = "tmp/"
expiration = {
id = "tmp"
status = "Enabled"
prefix = "tmp/"
expiration = [{
days = 1
}
}]
},
{
id = "MoveAllToGlacierAfterTwoWeeks"
status = "Enabled"
prefix = ""
id = "MoveAllToGlacierAfterTwoWeeks"
status = "Enabled"
prefix = ""
transition = [
{
days = 28
Expand Down
2 changes: 1 addition & 1 deletion examples/s3/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ terraform {
version = "~> 4.10"
}
}
required_version = "~> 1.0"
required_version = "~> 1.3"
}
2 changes: 1 addition & 1 deletion examples/sqs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

| Name | Version |
|------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~> 1.0 |
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~> 1.3 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | ~> 4.10 |

## Providers
Expand Down
2 changes: 1 addition & 1 deletion examples/sqs/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ terraform {
version = "~> 4.10"
}
}
required_version = "~> 1.0"
required_version = "~> 1.3"
}
2 changes: 0 additions & 2 deletions locals.tf
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ locals {
flatten(data.aws_security_groups.for_rds[*].ids),
)

length_s3_lifecycle_rules = length(var.s3_lifecycle_rules)

dynamodb_iam_enabled = var.dynamodb_enabled || var.dynamodb2_enabled || var.dynamodb3_enabled || var.dynamodb4_enabled
dynamodb_tables_arns = concat(
var.dynamodb_enabled && var.iam_role_enabled ? ["arn:aws:dynamodb:*:*:table/${module.dynamodb.table_id}"] : [],
Expand Down
19 changes: 10 additions & 9 deletions s3.tf
Original file line number Diff line number Diff line change
Expand Up @@ -52,33 +52,34 @@ resource "aws_s3_bucket_versioning" "this" {
resource "aws_s3_bucket_lifecycle_configuration" "this" {
depends_on = [aws_s3_bucket_versioning.this]

count = var.s3_enabled && local.length_s3_lifecycle_rules > 0 ? 1 : 0
count = var.s3_enabled && length(var.s3_lifecycle_rules) > 0 ? 1 : 0
bucket = aws_s3_bucket.this[count.index].id

dynamic "rule" {
for_each = var.s3_lifecycle_rules

content {
id = rule.value.id
status = lookup(rule.value, "status", "Enabled")
status = rule.value.status
filter {
prefix = rule.value.prefix
}

dynamic "expiration" {
for_each = length(keys(lookup(rule.value, "expiration", {}))) == 0 ? [] : [lookup(rule.value, "expiration", {})]
for_each = rule.value.expiration

content {
date = lookup(expiration.value, "date", null)
days = lookup(expiration.value, "days", null)
expired_object_delete_marker = lookup(expiration.value, "expired_object_delete_marker", null)
date = expiration.value.date
days = expiration.value.days
expired_object_delete_marker = expiration.value.expired_object_delete_marker
}
}

dynamic "transition" {
for_each = lookup(rule.value, "transition", [])
for_each = rule.value.transition
content {
date = lookup(transition.value, "date", null)
days = lookup(transition.value, "days", null)
date = transition.value.date
days = transition.value.days
storage_class = transition.value.storage_class
}
}
Expand Down
16 changes: 15 additions & 1 deletion variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -1137,7 +1137,21 @@ variable "s3_versioning_enabled" {
variable "s3_lifecycle_rules" {
description = "S3 Lifecycle rules"
default = []
type = any
type = list(object({
id = string
status = optional(string, "Enabled")
prefix = string
expiration = optional(list(object({
days = optional(number)
date = optional(string)
expired_object_delete_marker = optional(bool, true)
})), [])
transition = optional(list(object({
days = optional(number)
date = optional(string)
storage_class = string
})), [])
}))
}

# -------------------------------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ terraform {
version = "~> 3.0"
}
}
required_version = ">= 1.0"
required_version = ">= 1.3"
}

0 comments on commit 7e88234

Please sign in to comment.