File tree Expand file tree Collapse file tree 10 files changed +123
-6
lines changed Expand file tree Collapse file tree 10 files changed +123
-6
lines changed Original file line number Diff line number Diff line change 3838 TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY : ${{ secrets.TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY }}
3939 TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT : ${{ secrets.TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT }}
4040 TF_VAR_DELETION_PROTECTION : ${{ secrets.TF_VAR_DELETION_PROTECTION }}
41+ TF_VAR_DEPLOYMENT_ENVIRONMENTS : ${{ secrets.TF_VAR_DEPLOYMENT_ENVIRONMENTS }}
4142 TF_VAR_ENVIRONMENT : ${{ secrets.TF_VAR_ENVIRONMENT }}
4243 TF_VAR_EXPORT_EXPIRATION : ${{ secrets.TF_VAR_EXPORT_EXPIRATION }}
4344 TF_VAR_KEY_RECOVERY_PERIOD : ${{ secrets.TF_VAR_KEY_RECOVERY_PERIOD }}
8283 APPLY_DATABASE_UPDATES_IMMEDIATELY : ${{ secrets.TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY }}
8384 DATABASE_SKIP_FINAL_SNAPSHOT : ${{ secrets.TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT }}
8485 DELETION_PROTECTION : ${{ secrets.TF_VAR_DELETION_PROTECTION }}
86+ DEPLOYMENT_ENVIRONMENTS : ${{ secrets.TF_VAR_DEPLOYMENT_ENVIRONMENTS }}
8587 ENVIRONMENT : ${{ secrets.TF_VAR_ENVIRONMENT }}
8688 EXPORT_EXPIRATION : ${{ secrets.TF_VAR_EXPORT_EXPIRATION }}
8789 KEY_RECOVERY_PERIOD : ${{ secrets.TF_VAR_KEY_RECOVERY_PERIOD }}
9193 run : |
9294 variables=(
9395 "apply_database_updates_immediately" "database_skip_final_snapshot"
94- "deletion_protection" "environment" "export_expiration"
95- "key_recovery_period" "program" "project" "repository"
96+ "deletion_protection" "deployment_environments" "environment"
97+ "export_expiration" "key_recovery_period" "program" "project"
98+ "repository"
9699 )
97100 for var in ${variables[@]}; do
98101 name="$(echo $var | tr '[:lower:]' '[:upper:]')"
Original file line number Diff line number Diff line change 2222 required : false
2323 TF_VAR_DELETION_PROTECTION :
2424 required : false
25+ TF_VAR_DEPLOYMENT_ENVIRONMENTS :
26+ required : false
2527 TF_VAR_ENVIRONMENT :
2628 required : false
2729 TF_VAR_EXPORT_EXPIRATION :
9294 APPLY_DATABASE_UPDATES_IMMEDIATELY : ${{ secrets.TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY }}
9395 DATABASE_SKIP_FINAL_SNAPSHOT : ${{ secrets.TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT }}
9496 DELETION_PROTECTION : ${{ secrets.TF_VAR_DELETION_PROTECTION }}
97+ DEPLOYMENT_ENVIRONMENTS : ${{ secrets.TF_VAR_DEPLOYMENT_ENVIRONMENTS }}
9598 ENVIRONMENT : ${{ secrets.TF_VAR_ENVIRONMENT }}
9699 EXPORT_EXPIRATION : ${{ secrets.TF_VAR_EXPORT_EXPIRATION }}
97100 KEY_RECOVERY_PERIOD : ${{ secrets.TF_VAR_KEY_RECOVERY_PERIOD }}
@@ -101,8 +104,9 @@ jobs:
101104 run : |
102105 variables=(
103106 "apply_database_updates_immediately" "database_skip_final_snapshot"
104- "deletion_protection" "environment" "export_expiration"
105- "key_recovery_period" "program" "project" "repository"
107+ "deletion_protection" "deployment_environments" "environment"
108+ "export_expiration" "key_recovery_period" "program" "project"
109+ "repository"
106110 )
107111 for var in ${variables[@]}; do
108112 name="$(echo $var | tr '[:lower:]' '[:upper:]')"
Original file line number Diff line number Diff line change @@ -67,10 +67,12 @@ jobs:
6767 TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY : ${{ secrets.TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY }}
6868 TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT : ${{ secrets.TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT }}
6969 TF_VAR_DELETION_PROTECTION : ${{ secrets.TF_VAR_DELETION_PROTECTION }}
70+ TF_VAR_DEPLOYMENT_ENVIRONMENTS : ${{ secrets.TF_VAR_DEPLOYMENT_ENVIRONMENTS }}
7071 TF_VAR_EXPORT_EXPIRATION : ${{ secrets.TF_VAR_EXPORT_EXPIRATION }}
7172 TF_VAR_KEY_RECOVERY_PERIOD : ${{ secrets.TF_VAR_KEY_RECOVERY_PERIOD }}
7273 TF_VAR_PROGRAM : ${{ secrets.TF_VAR_PROGRAM }}
7374 TF_VAR_REPO_OIDC_ARN : ${{ secrets.TF_VAR_REPO_OIDC_ARN }}
75+ TF_VAR_REPOSITORY : ${{ secrets.TF_VAR_REPOSITORY }}
7476 TF_VAR_VPC_CIDR : ${{ secrets.TF_VAR_VPC_CIDR }}
7577 TF_VAR_VPC_PRIVATE_SUBNET_CIDRS : ${{ secrets.TF_VAR_VPC_PRIVATE_SUBNET_CIDRS }}
7678 TF_VAR_VPC_PUBLIC_SUBNET_CIDRS : ${{ secrets.TF_VAR_VPC_PUBLIC_SUBNET_CIDRS }}
Original file line number Diff line number Diff line change @@ -41,6 +41,19 @@ module "deployment" {
4141 tags = resource. aws_servicecatalogappregistry_application . application . application_tag
4242}
4343
44+ # Create deployment resources for any deployment environments specified.
45+ module "deployment_environments" {
46+ source = " ../../modules/deployment"
47+ for_each = toset (var. deployment_environments )
48+
49+ environment = " development"
50+ system_environment = each. value
51+ oidc_arn = var. repo_oidc_arn
52+ project = var. project
53+ repository = var. repository
54+ tags = resource. aws_servicecatalogappregistry_application . application . application_tag
55+ }
56+
4457module "outputs" {
4558 source = " ../../modules/outputs"
4659
Original file line number Diff line number Diff line change @@ -8,6 +8,11 @@ output "deployment_role_arn" {
88 description = " The ARN of the deployment role for system components."
99}
1010
11+ output "environment_deployment_roles" {
12+ value = { for env , mod in module . deployment_environments : env => mod . role_arn }
13+ description = " The ARN of the deployment role for the dev-cdii environment."
14+ }
15+
1116output "logging_bucket" {
1217 value = module. logging . bucket
1318 description = " The name of the S3 bucket for logging."
Original file line number Diff line number Diff line change 1+ variable "deployment_environments" {
2+ type = list (string )
3+ description = " List of deployment environments to create permissions for. This is useful if you'll be deploying multiple service environments within the same infrastructure environment."
4+ default = []
5+ }
6+
17variable "environment" {
28 type = string
39 description = " Environment for the deployment."
Original file line number Diff line number Diff line change 1+ locals {
2+ system_environment = coalesce (var. system_environment , var. environment )
3+ }
Original file line number Diff line number Diff line change 11resource "aws_iam_role" "deployment" {
2- name = " ${ var . project } -${ var . environment } -deployment-role"
2+ name = " ${ var . project } -${ local . system_environment } -deployment-role"
33 assume_role_policy = jsonencode (yamldecode (templatefile (" ${ path . module } /templates/assume-policy.yaml.tftpl" , {
44 oidc_arn : var.oidc_arn
55 repository : var.repository
@@ -9,7 +9,7 @@ resource "aws_iam_role" "deployment" {
99}
1010
1111resource "aws_iam_role_policy" "deployment" {
12- name = " ${ var . project } -${ var . environment } -deployment-policy"
12+ name = " ${ var . project } -${ local . system_environment } -deployment-policy"
1313 role = aws_iam_role. deployment . name
1414
1515 policy = jsonencode (yamldecode (templatefile (" ${ path . module } /templates/iam-policy.yaml.tftpl" , {
@@ -18,5 +18,6 @@ resource "aws_iam_role_policy" "deployment" {
1818 region : data.aws_region.current.region
1919 partition : data.aws_partition.current.partition
2020 project : var.project
21+ system_environment : local.system_environment
2122 })))
2223}
Original file line number Diff line number Diff line change 11Version: " 2012-10-17"
22Statement:
3+ - Sid: InfraStateAccess
4+ Effect: Allow
5+ Action:
6+ - s3: CreateBucket
7+ - s3: ListBucket
8+ - s3: GetBucketLocation
9+ - s3: GetObject
10+ - s3: PutObject
11+ - s3: DeleteObject
12+ Resource:
13+ - arn: ${partition}: s3::: ${project}- ${environment}- tfstate
14+ - arn: ${partition}: s3::: ${project}- ${environment}- tfstate/*
15+ - Sid: InfraLockAccess
16+ Effect: Allow
17+ Action:
18+ - dynamodb:CreateTable
19+ - dynamodb:DescribeTable
20+ - dynamodb:DeleteTable
21+ - dynamodb:UpdateTable
22+ - dynamodb:GetItem
23+ - dynamodb:PutItem
24+ - dynamodb:DeleteItem
25+ Resource:
26+ - arn:${partition}:dynamodb:${region}:${account_id}:table/${environment}.tfstate
27+
28+ - Sid: ServiceCatalogAccess
29+ Effect: Allow
30+ Action:
31+ - servicecatalog:CreateApplication
32+ - servicecatalog:GetApplication
33+ - servicecatalog:DeleteApplication
34+ - servicecatalog:ListTagsForResource
35+ - servicecatalog:TagResource
36+ - servicecatalog:UntagResource
37+ - servicecatalog:UpdateApplication
38+ Resource: "*"
39+ Condition:
40+ ForAnyValue:StringEquals:
41+ aws:ResourceTag/project: sqs-senzing
42+
43+ - Sid: SQSAccess
44+ Effect: Allow
45+ Action:
46+ - sqs:CreateQueue
47+ - sqs:DeleteQueue
48+ - sqs:GetQueueAttributes
49+ - sqs:GetQueueUrl
50+ - sqs:ListQueues
51+ - sqs:ListQueueTags
52+ - sqs:SetQueueAttributes
53+ - sqs:TagQueue
54+ - sqs:UntagQueue
55+ Resource: arn:${partition}:sqs:${region}:${account_id}:${project}-${system_environment}-*
56+
57+ - Sid: S3Access
58+ Effect: Allow
59+ Action:
60+ - s3:CreateBucket
61+ - s3:DeleteBucket
62+ - s3:DeleteObject
63+ - s3:GetBucketAcl
64+ - s3:GetBucketLocation
65+ - s3:GetBucketPolicy
66+ - s3:GetBucketTagging
67+ - s3:GetObject
68+ - s3:ListBucket
69+ - s3:PutBucketAcl
70+ - s3:PutBucketPolicy
71+ - s3:PutBucketTagging
72+ - s3:PutObject
73+ Resource:
74+ - arn:${partition}:s3:::${project}-${system_environment}-*
75+ - arn:${partition}:s3:::${project}-${system_environment}-*/ *
76+
377- Effect: Allow
478 Action:
579 - ec2: DescribeAddresses
Original file line number Diff line number Diff line change @@ -4,6 +4,12 @@ variable "environment" {
44 default = " development"
55}
66
7+ variable "system_environment" {
8+ type = string
9+ description = " Environment name for the system, if different from the deployment environment."
10+ default = null
11+ }
12+
713variable "oidc_arn" {
814 type = string
915 description = " ARN of the OpenID Connect provider for the GitHub repository."
You can’t perform that action at this time.
0 commit comments