From 33120ff9ca362bfa0de93e4212a6097de420e8c4 Mon Sep 17 00:00:00 2001 From: Laura Pena Date: Fri, 7 Jul 2023 17:51:28 +0200 Subject: [PATCH 1/4] Enable codecommit repo creation --- examples/terraform.tfvars | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/terraform.tfvars b/examples/terraform.tfvars index 517eebe..8fc0a24 100644 --- a/examples/terraform.tfvars +++ b/examples/terraform.tfvars @@ -2,8 +2,9 @@ project_name = "tf-validate-project" environment = "dev" source_repo_name = "terraform-sample-repo" source_repo_branch = "main" -create_new_repo = false -repo_approvers_arn = "arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*" #Update ARN (IAM Role/User/Group) of Approval Members +create_new_repo = true +# repo_approvers_arn = "arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*" #Update ARN (IAM Role/User/Group) of Approval Members +repo_approvers_arn = "arn:aws:iam::641026500518:user/laura.pena" create_new_role = true #codepipeline_iam_role_name = - Use this to specify the role name to be used by codepipeline if the create_new_role flag is set to false. stage_input = [ From 5b774ba6fd5dccb70c3babe688d1cd99a41d4e11 Mon Sep 17 00:00:00 2001 From: Laura Pena Date: Fri, 7 Jul 2023 17:52:36 +0200 Subject: [PATCH 2/4] Enable codepipeline to list pipeline executions to get commit message --- modules/iam-role/main.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/iam-role/main.tf b/modules/iam-role/main.tf index dae33fd..7518b12 100644 --- a/modules/iam-role/main.tf +++ b/modules/iam-role/main.tf @@ -115,6 +115,13 @@ resource "aws_iam_policy" "codepipeline_policy" { "logs:PutLogEvents" ], "Resource": "arn:${data.aws_partition.current.partition}:logs:${data.aws_region.current.id}:${data.aws_caller_identity.current.account_id}:log-group:*" + }, + { + "Effect": "Allow", + "Action": [ + "codepipeline:ListPipelineExecutions" + ], + "Resource": "*" } ] } From 74833331319ca798471e95be90a2aff9f669ce58 Mon Sep 17 00:00:00 2001 From: Laura Pena Date: Fri, 7 Jul 2023 17:53:04 +0200 Subject: [PATCH 3/4] Change bucket region to eu-west-2 --- modules/s3/provider.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/s3/provider.tf b/modules/s3/provider.tf index 146f8ad..7e5c494 100644 --- a/modules/s3/provider.tf +++ b/modules/s3/provider.tf @@ -6,5 +6,5 @@ provider "aws" { alias = "replication" - region = "us-east-2" -} \ No newline at end of file + region = "eu-west-2" +} From 5814ca97cd202b9d9b727cf3a2aa239f553cb4f5 Mon Sep 17 00:00:00 2001 From: Laura Pena Date: Sat, 8 Jul 2023 02:53:00 +0200 Subject: [PATCH 4/4] remove codecomit rules, add new pipeline --- examples/terraform.tfvars | 15 ++++++--- main.tf | 29 ++++++++++++++++-- modules/codecommit/main.tf | 12 +++----- modules/codecommit/variables.tf | 17 +++++----- modules/codepipeline/main.tf | 2 +- ...troy.yml => buildspec_destroy_destroy.yml} | 0 tfplan | Bin 0 -> 44853 bytes variables.tf | 14 ++++++++- 8 files changed, 65 insertions(+), 24 deletions(-) rename templates/{buildspec_destroy.yml => buildspec_destroy_destroy.yml} (100%) create mode 100644 tfplan diff --git a/examples/terraform.tfvars b/examples/terraform.tfvars index 8fc0a24..a371b52 100644 --- a/examples/terraform.tfvars +++ b/examples/terraform.tfvars @@ -1,16 +1,21 @@ -project_name = "tf-validate-project" -environment = "dev" +## CodeCommit repository variables +create_new_repo = true source_repo_name = "terraform-sample-repo" source_repo_branch = "main" -create_new_repo = true +source_repo_description = "Terraform deployments repository" + +project_name = "tf-validate-project" +environment = "dev" # repo_approvers_arn = "arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*" #Update ARN (IAM Role/User/Group) of Approval Members -repo_approvers_arn = "arn:aws:iam::641026500518:user/laura.pena" +# repo_approvers_arn = "arn:aws:iam::641026500518:user/laura.pena" create_new_role = true #codepipeline_iam_role_name = - Use this to specify the role name to be used by codepipeline if the create_new_role flag is set to false. stage_input = [ { name = "validate", category = "Test", owner = "AWS", provider = "CodeBuild", input_artifacts = "SourceOutput", output_artifacts = "ValidateOutput" }, { name = "plan", category = "Test", owner = "AWS", provider = "CodeBuild", input_artifacts = "ValidateOutput", output_artifacts = "PlanOutput" }, { name = "apply", category = "Build", owner = "AWS", provider = "CodeBuild", input_artifacts = "PlanOutput", output_artifacts = "ApplyOutput" }, - { name = "destroy", category = "Build", owner = "AWS", provider = "CodeBuild", input_artifacts = "ApplyOutput", output_artifacts = "DestroyOutput" } +] +stage_destroy_input = [ + { name = "destroy", category = "Build", owner = "AWS", provider = "CodeBuild", input_artifacts = "SourceOutput", output_artifacts = "DestroyOutput" } ] build_projects = ["validate", "plan", "apply", "destroy"] diff --git a/main.tf b/main.tf index f2398c5..7d01443 100644 --- a/main.tf +++ b/main.tf @@ -39,8 +39,9 @@ module "codecommit_infrastructure_source_repo" { create_new_repo = var.create_new_repo source_repository_name = var.source_repo_name source_repository_branch = var.source_repo_branch - repo_approvers_arn = var.repo_approvers_arn - kms_key_arn = module.codepipeline_kms.arn + source_repository_description = var.source_repo_description + ## repo_approvers_arn = var.repo_approvers_arn + ## kms_key_arn = module.codepipeline_kms.arn tags = { Project_Name = var.project_name Environment = var.environment @@ -102,6 +103,7 @@ module "codepipeline_iam_role" { Region = local.region } } + # Module for Infrastructure Validate, Plan, Apply and Destroy - CodePipeline module "codepipeline_terraform" { depends_on = [ @@ -124,3 +126,26 @@ module "codepipeline_terraform" { Region = local.region } } + +# Module for Infrastructure Validate, Plan, Apply and Destroy - CodePipeline +module "codepipeline_terraform_destroy" { + depends_on = [ + module.codebuild_terraform, + module.s3_artifacts_bucket + ] + source = "./modules/codepipeline" + + project_name = "${var.project_name}-destroy" + source_repo_name = var.source_repo_name + source_repo_branch = var.source_repo_branch + s3_bucket_name = module.s3_artifacts_bucket.bucket + codepipeline_role_arn = module.codepipeline_iam_role.role_arn + stages = var.stage_destroy_input + kms_key_arn = module.codepipeline_kms.arn + tags = { + Project_Name = var.project_name + Environment = var.environment + Account_ID = local.account_id + Region = local.region + } +} diff --git a/modules/codecommit/main.tf b/modules/codecommit/main.tf index 1150c97..7b43b62 100644 --- a/modules/codecommit/main.tf +++ b/modules/codecommit/main.tf @@ -1,16 +1,12 @@ -#This solution, non-production-ready template describes AWS Codepipeline based CICD Pipeline for terraform code deployment. -#© 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved. -#This AWS Content is provided subject to the terms of the AWS Customer Agreement available at -#http://aws.amazon.com/agreement or other written agreement between Customer and either -#Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both. - resource "aws_codecommit_repository" "source_repository" { count = var.create_new_repo ? 1 : 0 repository_name = var.source_repository_name default_branch = var.source_repository_branch - description = "Code Repository for hosting the terraform code and pipeline configuration files" + description = var.source_repository_description tags = var.tags } + +/* resource "aws_codecommit_approval_rule_template" "source_repository_approval" { count = var.create_new_repo ? 1 : 0 name = "${var.source_repository_name}-${var.source_repository_branch}-Rule" @@ -34,3 +30,5 @@ resource "aws_codecommit_approval_rule_template_association" "source_repository_ approval_rule_template_name = aws_codecommit_approval_rule_template.source_repository_approval[0].name repository_name = aws_codecommit_repository.source_repository[0].repository_name } + +*/ diff --git a/modules/codecommit/variables.tf b/modules/codecommit/variables.tf index c082594..f324bd0 100644 --- a/modules/codecommit/variables.tf +++ b/modules/codecommit/variables.tf @@ -1,9 +1,3 @@ -#This solution, non-production-ready template describes AWS Codepipeline based CICD Pipeline for terraform code deployment. -#© 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved. -#This AWS Content is provided subject to the terms of the AWS Customer Agreement available at -#http://aws.amazon.com/agreement or other written agreement between Customer and either -#Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both. - variable "create_new_repo" { type = bool description = "Flag for deciding if a new repository needs to be created" @@ -20,17 +14,24 @@ variable "source_repository_branch" { description = "Branch of the Source CodeCommit repository used in pipeline" } +variable "source_repository_description" { + type = string + description = "Description of the Source CodeCommit repository used in pipeline" +} + +/* variable "repo_approvers_arn" { description = "ARN or ARN pattern for the IAM User/Role/Group etc that can be used for approving Pull Requests" type = string } +*/ variable "tags" { type = map(any) description = "Tags to be attached to the source CodeCommit repository" } -variable "kms_key_arn" { +/* variable "kms_key_arn" { description = "Name of the project to be prefixed to create the s3 bucket" type = string -} \ No newline at end of file +} */ diff --git a/modules/codepipeline/main.tf b/modules/codepipeline/main.tf index 6c882ec..ce52926 100644 --- a/modules/codepipeline/main.tf +++ b/modules/codepipeline/main.tf @@ -62,4 +62,4 @@ resource "aws_codepipeline" "terraform_pipeline" { } } -} \ No newline at end of file +} diff --git a/templates/buildspec_destroy.yml b/templates/buildspec_destroy_destroy.yml similarity index 100% rename from templates/buildspec_destroy.yml rename to templates/buildspec_destroy_destroy.yml diff --git a/tfplan b/tfplan new file mode 100644 index 0000000000000000000000000000000000000000..072b4b869a513e0ea930ed513becebe897c8655e GIT binary patch literal 44853 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�~ z?IF1TU^p9PB!$SAyJAV?{DQ{!mrm5QClShs3Yi{-m*^(ED32EBZPV>StkomEc@TiDG`?ec5-A(hm4sJj@(6IHQ3BNT0--8}NZ=O6 zqd#{xS<0zB6nj%#&x}^%O|-P)jrcCHUS{7|?O}y5c=El?34kBnWDS_e763sMFtt!+ zYrK3d5-@w+?4H^~q2(8pdFur9wny^Q2%FMa&VTCa_ZR|e=uD=Qc$m^OE+={Ia<(85 z(0+%axcDdi?__qR77un!72oJDdhqOk=B%_S93Q{AMgDc+8oFAMAHZ8b{J# znOG$Felu7io723VB#SqNF%G_*cRV>sUM5+lR46bqo%W7!93fqMjS>o-+WcD(U81eX zJO}B3rvW?1KgQXq0GF$cSz949HouCQVh^Yg0jfXMm!Gnkoo+J)LG+hbURnDxyzH$jr4~Kwgb1TH__;bEe^&l9iH4 zsU|gK4u@9n`(!-kQOdygf>6kCJle**f(%v}pE$x>Yezaz)u3hpQ_72`>gupo#!D2b zfAxOE)(OW2GN}rt|6Id`B-oxypgde4LUhOJ4?1hn>~kFG!DQce9~&j1{{5g?~%aMgN_qv-#9?hbw=l>C_s3*L1-{pPJ6{$8VZWzWr0v!D7WV!(z0zIw2|S z;(mHMNS9AfS3#fPx_I)tr{jS8&C{9v?&+dO{>jt%{qE^BmH*4rHS2$RI*v()B~G>% zHzzB%sPS*9B*W|}H`!86i049OF6`X>N59N5k-6aF9iO-T7nzH=(Hg#G>k?1g!XO^$ zW9x;i?Ul0`m!6!63#NUPM$&_~1_E!GsV7`9$;l+n-Yb)FkHwi%%NkD~_;9J8pQ&ly z3gw`Wc=JIb5ZINZ_A`R6tuO>>|jeNZBHOdZq6YxDtsMx zjwQ~qB8Qs=?qX}^J8><)iDxy|Myk0P+{bD8+;@-&YGSDb+Y)4gI?P|B%ljUD4B2NV z(u#rtg#~xIhIS8yD>hPfZu9wmNuZRhkls^h1v9Yo>#r|KkV=($ZoF�zK^pdK~qg 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 Mu=cW`B>1=g01eYPng9R* literal 0 HcmV?d00001 diff --git a/variables.tf b/variables.tf index 5e65300..0d4f3db 100644 --- a/variables.tf +++ b/variables.tf @@ -37,10 +37,17 @@ variable "source_repo_branch" { type = string } +variable "source_repo_description" { + type = string + description = "Description of the Source CodeCommit repository used in pipeline" +} + +/* variable "repo_approvers_arn" { description = "ARN or ARN pattern for the IAM User/Role/Group that can be used for approving Pull Requests" type = string -} +} +*/ variable "environment" { description = "Environment in which the script is run. Eg: dev, prod, etc" @@ -52,6 +59,11 @@ variable "stage_input" { type = list(map(any)) } +variable "stage_destroy_input" { + description = "Tags to be attached to the CodePipeline" + type = list(map(any)) +} + variable "build_projects" { description = "Tags to be attached to the CodePipeline" type = list(string)