Skip to content

Commit 66193be

Browse files
Terraform state bucket for workload account deployments (#69)
1 parent 733a197 commit 66193be

File tree

15 files changed

+220
-10
lines changed

15 files changed

+220
-10
lines changed

docs/architecture.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ However, as CloudFormation is a declarative syntax for provisioning resources, e
1717
- Deployment helper SNS topic
1818
- Deployment helper Lambda function
1919
- AWS Backup Service-linked IAM Role
20+
- S3 Terraform state bucket for deployments to workload accounts
2021

2122
## Central account resources per deployment
2223

docs/index.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ module "immutable_aws_backup" {
2727
2828
central_account_resource_name_prefix = "immutable-aws-backup-"
2929
member_account_resource_name_prefix = "orgdeploy-immutable-aws-backup-"
30-
terraform_state_bucket_name = "my-terraform-state-bucket"
3130
3231
deployments = {
3332
"website-service" = {

examples/tags/main.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ module "aws_backup" {
55

66
central_account_resource_name_prefix = local.resource_name_prefix
77
member_account_resource_name_prefix = "org-${local.resource_name_prefix}"
8-
terraform_state_bucket_name = var.terraform_state_bucket
98
deployments = {
109
"ca-prod" = {
1110
backup_targets = [module.ou_data_lookup.by_name_path["Workloads / Serverless / CA / RSA CA"].id]

examples/tags/variables.tf

Lines changed: 0 additions & 4 deletions
This file was deleted.

main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ module "deployment_helper" {
2020
}
2121
deployment_regions = local.deployment_regions
2222
lambda_function_name = join("", [var.central_account_resource_name_prefix, "deployment-helper"])
23+
central_account_resource_name_prefix = var.central_account_resource_name_prefix
2324
member_account_deployment_helper_role_arn_patterns = [for i in local.member_account_deployment_helper_role_names : join("", ["arn:", local.partition_id, ":iam::*:role/", i])]
2425
terraform_state_bucket_name = var.terraform_state_bucket_name
2526
}

modules/deployment-helper/iam.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ module "lambda_role" {
2424
"s3:GetBucketLocation",
2525
"s3:ListBucket"
2626
]
27-
Resource : "arn:${var.current.partition}:s3:::${var.terraform_state_bucket_name}"
27+
Resource : local.terraform_state_bucket_arn
2828
},
2929
{
3030
Effect : "Allow"
@@ -33,7 +33,7 @@ module "lambda_role" {
3333
"s3:PutObject",
3434
"s3:DeleteObject"
3535
]
36-
Resource : "arn:${var.current.partition}:s3:::${var.terraform_state_bucket_name}/*"
36+
Resource : "${local.terraform_state_bucket_arn}/*"
3737
},
3838
{
3939
Effect : "Allow"
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
locals {
2+
bucket_prefix = "${lower(var.central_account_resource_name_prefix)}tf-state-"
3+
4+
terraform_state_bucket_name = (
5+
var.terraform_state_bucket_name != "" ? var.terraform_state_bucket_name :
6+
module.tf_state_bucket[0].s3_bucket_name
7+
)
8+
9+
terraform_state_bucket_arn = (
10+
var.terraform_state_bucket_name != "" ? "arn:${var.current.partition}:s3:::${var.terraform_state_bucket_name}" :
11+
module.tf_state_bucket[0].s3_bucket_arn
12+
)
13+
}

modules/deployment-helper/regional.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ module "deployment_helper_regional" {
99
}
1010
lambda_function_name = var.lambda_function_name
1111
lambda_role_arn = module.lambda_role.role.arn
12-
terraform_state_bucket_name = var.terraform_state_bucket_name
12+
terraform_state_bucket_name = local.terraform_state_bucket_name
1313
}

modules/deployment-helper/s3.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module "tf_state_bucket" {
2+
source = "../s3"
3+
count = var.terraform_state_bucket_name == "" ? 1 : 0
4+
5+
bucket_prefix = local.bucket_prefix
6+
}

modules/deployment-helper/variables.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ variable "lambda_function_name" {
1717
type = string
1818
}
1919

20+
variable "central_account_resource_name_prefix" {
21+
type = string
22+
description = "Prefix to be used for resource names in the central account."
23+
}
24+
2025
variable "member_account_deployment_helper_role_arn_patterns" {
2126
description = "The patterns to use to restrict role assumption to the member account Deployment Helper roles."
2227
type = list(string)

0 commit comments

Comments
 (0)