From 29d541c185422e4f57706ff05681e72b2f470cd1 Mon Sep 17 00:00:00 2001 From: MJ Date: Tue, 23 Jan 2024 15:38:28 +0100 Subject: [PATCH 1/4] feat: Add aws budget preparation module --- .../budget-alert/preparation/README.md | 12 +++++++++++ .../budget-alert/preparation/main.tf | 20 +++++++++++++++++++ .../budget-alert/preparation/outputs.tf | 7 +++++++ .../budget-alert/preparation/variables.tf | 9 +++++++++ 4 files changed, 48 insertions(+) create mode 100644 aws/terraform/cloud-financial-management/budget-alert/preparation/README.md create mode 100644 aws/terraform/cloud-financial-management/budget-alert/preparation/main.tf create mode 100644 aws/terraform/cloud-financial-management/budget-alert/preparation/outputs.tf create mode 100644 aws/terraform/cloud-financial-management/budget-alert/preparation/variables.tf diff --git a/aws/terraform/cloud-financial-management/budget-alert/preparation/README.md b/aws/terraform/cloud-financial-management/budget-alert/preparation/README.md new file mode 100644 index 0000000..ce8ca8c --- /dev/null +++ b/aws/terraform/cloud-financial-management/budget-alert/preparation/README.md @@ -0,0 +1,12 @@ +--- +name: budget-bb-preparation +summary: | + deploys new cloud foundation infrastructure. + Add a concise description of the module's purpose here. +# optional: add additional metadata about implemented security controls +--- + +# budget-bb-preparation + +This documentation is intended as a reference documentation for cloud foundation or platform engineers using this module. + \ No newline at end of file diff --git a/aws/terraform/cloud-financial-management/budget-alert/preparation/main.tf b/aws/terraform/cloud-financial-management/budget-alert/preparation/main.tf new file mode 100644 index 0000000..3693e20 --- /dev/null +++ b/aws/terraform/cloud-financial-management/budget-alert/preparation/main.tf @@ -0,0 +1,20 @@ +resource "aws_iam_role" "deploy_budget" { + name = "deploy-budget" + + # Terraform's "jsonencode" function converts a + # Terraform expression result to valid JSON syntax. + assume_role_policy = jsonencode({ + "Version" : "2012-10-17", + "Statement" : [ + { + "Effect" : "Allow", + "Principal" : { + "AWS" : [ + "arn:aws:iam::${var.backend_account_id}:user/${var.iam_user_to_assume_this_role}" + ] + }, + "Action" : "sts:AssumeRole" + } + ] + }) +} diff --git a/aws/terraform/cloud-financial-management/budget-alert/preparation/outputs.tf b/aws/terraform/cloud-financial-management/budget-alert/preparation/outputs.tf new file mode 100644 index 0000000..0782cb8 --- /dev/null +++ b/aws/terraform/cloud-financial-management/budget-alert/preparation/outputs.tf @@ -0,0 +1,7 @@ +output "role_arn" { + value = aws_iam_role.deploy_budget.arn +} + +output "role_assume_policy" { + value = aws_iam_role.deploy_budget.assume_role_policy +} diff --git a/aws/terraform/cloud-financial-management/budget-alert/preparation/variables.tf b/aws/terraform/cloud-financial-management/budget-alert/preparation/variables.tf new file mode 100644 index 0000000..0457702 --- /dev/null +++ b/aws/terraform/cloud-financial-management/budget-alert/preparation/variables.tf @@ -0,0 +1,9 @@ +variable "backend_account_id" { + type = string + description = "ID of the account holding the backend" +} + +variable "iam_user_to_assume_this_role" { + type = string + description = "Name of the user whom should assume this role" +} From 8628aa9703c4c01bcb9222720f36f1e1c8d15da2 Mon Sep 17 00:00:00 2001 From: MJ Date: Wed, 24 Jan 2024 11:59:44 +0100 Subject: [PATCH 2/4] feat: Add aws budget preparation module --- .../cloud-financial-management/budget-alert/provider.tf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/aws/terraform/cloud-financial-management/budget-alert/provider.tf b/aws/terraform/cloud-financial-management/budget-alert/provider.tf index 1b56909..2608aa7 100644 --- a/aws/terraform/cloud-financial-management/budget-alert/provider.tf +++ b/aws/terraform/cloud-financial-management/budget-alert/provider.tf @@ -9,7 +9,7 @@ terraform { } } -provider "aws" { - # Configuration options -} +# provider "aws" { +# # Configuration options +# } From 445b64ba7ed707e1bdbc3ea584a861413b707721 Mon Sep 17 00:00:00 2001 From: MJ Date: Wed, 24 Jan 2024 12:28:45 +0100 Subject: [PATCH 3/4] feat: Add aws budget preparation module --- .../cloud-financial-management/budget-alert/variables.tf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/aws/terraform/cloud-financial-management/budget-alert/variables.tf b/aws/terraform/cloud-financial-management/budget-alert/variables.tf index 584a9bf..c2b1460 100644 --- a/aws/terraform/cloud-financial-management/budget-alert/variables.tf +++ b/aws/terraform/cloud-financial-management/budget-alert/variables.tf @@ -17,3 +17,8 @@ variable "contact_email" { type = list(string) description = "list of emails which should receive the budget alerts. e.g. ['devops@example.com']" } + +variable "aws_account_id" { + type = string + description = "The AWS Account ID. You can user 'Platform Tenant ID'" +} \ No newline at end of file From 00345fe61516ea322572f495e05a877ed526e5b9 Mon Sep 17 00:00:00 2001 From: MJ Date: Wed, 24 Jan 2024 13:35:35 +0100 Subject: [PATCH 4/4] feat: prepare the kit to be used with generated provider and backend file --- .../budget-alert/README.md | 6 ++++-- .../budget-alert/preparation/README.md | 12 ----------- .../budget-alert/preparation/main.tf | 20 ------------------- .../budget-alert/preparation/outputs.tf | 7 ------- .../budget-alert/preparation/variables.tf | 9 --------- .../{provider.tf => terraform.tf} | 9 +++------ .../budget-alert/variables.tf | 8 ++++---- 7 files changed, 11 insertions(+), 60 deletions(-) delete mode 100644 aws/terraform/cloud-financial-management/budget-alert/preparation/README.md delete mode 100644 aws/terraform/cloud-financial-management/budget-alert/preparation/main.tf delete mode 100644 aws/terraform/cloud-financial-management/budget-alert/preparation/outputs.tf delete mode 100644 aws/terraform/cloud-financial-management/budget-alert/preparation/variables.tf rename aws/terraform/cloud-financial-management/budget-alert/{provider.tf => terraform.tf} (64%) diff --git a/aws/terraform/cloud-financial-management/budget-alert/README.md b/aws/terraform/cloud-financial-management/budget-alert/README.md index 0e76d65..7f29885 100644 --- a/aws/terraform/cloud-financial-management/budget-alert/README.md +++ b/aws/terraform/cloud-financial-management/budget-alert/README.md @@ -1,10 +1,12 @@ # Budget Alert -This building block will set up a budget alert for your account. You can easily define an amount, threshold, and the alert receiver emails to keep an eye on you cost. +This building block will set up a budget alert for your account. You can easily define an amount, threshold, and the alert receiver emails to keep an eye on your cost. ## Requirements - You need a user with at least "AWSBudgetsActionsWithAWSResourceControlAccess" permission. -- "Access Key ID" and "Secret Access Key" for the authentication of the terraform provider +- "Access Key ID" and "Secret Access Key" for the authentication of the terraform provider and backend bucket - Terraform backend file (see the next section) +**Note**: Please either generate your provider information and use it as an input, or uncomment provider configuration section in terraform.tf file + ## Backend configuration Here you can find an example of how to create a backend.tf file on this [Wiki Page](https://github.com/meshcloud/building-blocks/wiki/%5BUser-Guide%5D-Setting-up-the-Backend-for-terraform-state#how-to-configure-backendtf-file-for-these-providers) \ No newline at end of file diff --git a/aws/terraform/cloud-financial-management/budget-alert/preparation/README.md b/aws/terraform/cloud-financial-management/budget-alert/preparation/README.md deleted file mode 100644 index ce8ca8c..0000000 --- a/aws/terraform/cloud-financial-management/budget-alert/preparation/README.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: budget-bb-preparation -summary: | - deploys new cloud foundation infrastructure. - Add a concise description of the module's purpose here. -# optional: add additional metadata about implemented security controls ---- - -# budget-bb-preparation - -This documentation is intended as a reference documentation for cloud foundation or platform engineers using this module. - \ No newline at end of file diff --git a/aws/terraform/cloud-financial-management/budget-alert/preparation/main.tf b/aws/terraform/cloud-financial-management/budget-alert/preparation/main.tf deleted file mode 100644 index 3693e20..0000000 --- a/aws/terraform/cloud-financial-management/budget-alert/preparation/main.tf +++ /dev/null @@ -1,20 +0,0 @@ -resource "aws_iam_role" "deploy_budget" { - name = "deploy-budget" - - # Terraform's "jsonencode" function converts a - # Terraform expression result to valid JSON syntax. - assume_role_policy = jsonencode({ - "Version" : "2012-10-17", - "Statement" : [ - { - "Effect" : "Allow", - "Principal" : { - "AWS" : [ - "arn:aws:iam::${var.backend_account_id}:user/${var.iam_user_to_assume_this_role}" - ] - }, - "Action" : "sts:AssumeRole" - } - ] - }) -} diff --git a/aws/terraform/cloud-financial-management/budget-alert/preparation/outputs.tf b/aws/terraform/cloud-financial-management/budget-alert/preparation/outputs.tf deleted file mode 100644 index 0782cb8..0000000 --- a/aws/terraform/cloud-financial-management/budget-alert/preparation/outputs.tf +++ /dev/null @@ -1,7 +0,0 @@ -output "role_arn" { - value = aws_iam_role.deploy_budget.arn -} - -output "role_assume_policy" { - value = aws_iam_role.deploy_budget.assume_role_policy -} diff --git a/aws/terraform/cloud-financial-management/budget-alert/preparation/variables.tf b/aws/terraform/cloud-financial-management/budget-alert/preparation/variables.tf deleted file mode 100644 index 0457702..0000000 --- a/aws/terraform/cloud-financial-management/budget-alert/preparation/variables.tf +++ /dev/null @@ -1,9 +0,0 @@ -variable "backend_account_id" { - type = string - description = "ID of the account holding the backend" -} - -variable "iam_user_to_assume_this_role" { - type = string - description = "Name of the user whom should assume this role" -} diff --git a/aws/terraform/cloud-financial-management/budget-alert/provider.tf b/aws/terraform/cloud-financial-management/budget-alert/terraform.tf similarity index 64% rename from aws/terraform/cloud-financial-management/budget-alert/provider.tf rename to aws/terraform/cloud-financial-management/budget-alert/terraform.tf index 2608aa7..053d1b8 100644 --- a/aws/terraform/cloud-financial-management/budget-alert/provider.tf +++ b/aws/terraform/cloud-financial-management/budget-alert/terraform.tf @@ -1,15 +1,12 @@ - - terraform { required_providers { aws = { source = "hashicorp/aws" - version = "5.31.0" + version = "> 5.3.0" } } } # provider "aws" { -# # Configuration options -# } - + +# } \ No newline at end of file diff --git a/aws/terraform/cloud-financial-management/budget-alert/variables.tf b/aws/terraform/cloud-financial-management/budget-alert/variables.tf index c2b1460..53519ad 100644 --- a/aws/terraform/cloud-financial-management/budget-alert/variables.tf +++ b/aws/terraform/cloud-financial-management/budget-alert/variables.tf @@ -5,12 +5,12 @@ variable "amount" { variable "actual_threshold" { type = string - description = "The actual threshold to trigger the alert when it's reached" + description = "The actual threshold to trigger the alert when it's reached. e.g '90' for 90%" } variable "forecasted_threshold" { type = string - description = "The forecasted threshold to trigger the alert when it's reached" + description = "The forecasted threshold to trigger the alert when it's reached. e.g '90' for 90%" } variable "contact_email" { @@ -19,6 +19,6 @@ variable "contact_email" { } variable "aws_account_id" { - type = string + type = string description = "The AWS Account ID. You can user 'Platform Tenant ID'" -} \ No newline at end of file +}