Skip to content

new terragrunt structure #1

Merged
merged 1 commit into from
May 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions lab/account.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
locals {
account_name = "lab-dev-ew"
aws_account_id = "224384469011"
environment = "development"
aws_profile = "224384469011-lab-dev-gov.inf-admin-t3"
domain_name = "dev.lab.csp2.census.gov"
}
3 changes: 3 additions & 0 deletions lab/us-gov-east-1/region.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
locals {
aws_region = "us-gov-east-1"
}
125 changes: 125 additions & 0 deletions lab/us-gov-east-1/vpc/cluster/eks/.terraform.lock.hcl

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

70 changes: 70 additions & 0 deletions lab/us-gov-east-1/vpc/cluster/eks/terragrunt.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
include "root" {
path = find_in_parent_folders()
expose = true
}

locals {
# In which AWS region are operations being performed
vpc_name = "vpc3-lab-dev"
cluster_name = "platform-eng-eks-test"
cluster_version = 1.29
domain = "dev.lab.csp2.census.gov"
eks_instance_disk_size = 40
eks_vpc_name = "vpc3-lab-dev"
eks_ng_desired_size = 1
eks_ng_max_size = 5
eks_ng_min_size = 1
operators_ns = "operators"
enable_cluster_creator_admin_permissions = true
cluster_endpoint_public_access = true
profile = "224384469011-lab-dev-gov.inf-admin-t3"

# Tags applied to AWS objects created
tags = {
"Environment" = "dev"
"slim:schedule" = "0800-1700"
"test" = "test"
}

aws_auth_roles = [
{
rolearn : "arn:aws-us-gov:iam::224384469011:role/AWSReservedSSO_inf-admin-t3_b200ae7af469cdc8"
aws_rolename : ""
username : "admin"
groups = ["system:masters"]
},
{
rolearn : "arn:aws-us-gov:iam::224384469011:role/AWSReservedSSO_inf-admin-t2_f3912d726991bbfa"
aws_rolename : ""
username : "admin"
groups = ["system:masters"]
}
]
}

terraform {
source = "git@github.e.it.census.gov:SCT-Engineering/tfmod-eks.git"
extra_arguments "retry_lock" {
commands = get_terraform_commands_that_need_locking()
arguments = ["-lock-timeout=20m"]
}
}

inputs = {
profile = local.profile
vpc_name = local.eks_vpc_name
cluster_name = local.cluster_name
cluster_version = local.cluster_version
eks_instance_disk_size = local.eks_instance_disk_size
eks_vpc_name = local.eks_vpc_name
#eks_instance_types = local.eks_instance_types
eks_ng_desired_size = local.eks_ng_desired_size
eks_ng_max_size = local.eks_ng_max_size
eks_ng_min_size = local.eks_ng_min_size
operators_ns = local.operators_ns
enable_cluster_creator_admin_permissions = local.enable_cluster_creator_admin_permissions
cluster_endpoint_public_access = local.cluster_endpoint_public_access
tags = local.tags
aws_auth_roles = local.aws_auth_roles
domain = local.domain
}
71 changes: 71 additions & 0 deletions terragrunt.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
locals {
# Automatically load _envcommon, cross account and environment common variables
# common_vars = read_terragrunt_config("${dirname(find_in_parent_folders())}/_envcommon/common-variables.hcl", "skip-account-if-does-not-exist")
// "${get_tfvars_dir()}/${find_in_parent_folders("account.tfvars", "skip-account-if-does-not-exist")}",

# Automatically load account-level variables (NOTE: In our environment account = environment so there is not separate environment layer)
account_vars = read_terragrunt_config(find_in_parent_folders("account.hcl"))

# Automatically load region-level variables
region_vars = read_terragrunt_config(find_in_parent_folders("region.hcl"))

# Automatically load vpc-level variables
# Not applicable in this demo, but including for reference, would be next level of variables and configurations
# vpc_vars = read_terragrunt_config(find_in_parent_folders("vpc.hcl", "skip-account-if-does-not-exist"))

# Extract the variables we need for easy access
account_name = local.account_vars.locals.account_name
account_id = local.account_vars.locals.aws_account_id
organization = "census:ocio:csvd"
project_number = "fs0000000078"
project_name = "csvd_platformbaseline"
project_role = "csvd_platformbaseline_app"
}

generate "provider" {
path = "provider.tf"
if_exists = "overwrite_terragrunt"
contents = <<EOF
provider "aws" {
region = "us-gov-east-1"
default_tags {
tags = {
project_number = "${local.project_number}"
project_name = "${local.project_name}"
project_role = "${local.project_role}"
organization = "${local.organization}"
created_by = "luther.coleman.mcginty@census.gov"
created_for = "luther.coleman.mcginty@census.gov"
created_reason = "Exploration of Terragrunt and Demonstration of CICD for Infrastructure"
Terraform = "true"
Terragrunt = "true"
}
}
# Only these AWS Account IDs may be operated on by this template
allowed_account_ids = ["${local.account_id}"]
}
EOF
}

remote_state {
backend = "s3"
generate = {
path = "backend.tf"
if_exists = "overwrite_terragrunt"
}
config = {
bucket = "tg-infrastructure-tf-state-lab-dev-ew-us-gov-east-1"
key = "platform-eks-test/terraform.tfstate"
region = "us-gov-east-1"
encrypt = true
#dynamodb_table = "my-lock-table"
}
}

inputs = merge(
# local.common_vars.locals,
local.account_vars.locals,
local.region_vars.locals,
# local.vpc_vars.locals,
)