Skip to content

Commit 97b0814

Browse files
docs: add examples for extra modules (#36)
1 parent 990e7d8 commit 97b0814

File tree

27 files changed

+843
-17
lines changed

27 files changed

+843
-17
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
api_version: v1
3+
product: Forge
4+
version: v1.0.0
5+
metadata:
6+
use_local_repos: true
7+
spec:
8+
# Versions of our IaC/Terraform modules.
9+
iac:
10+
modules:
11+
cloud_custodian:
12+
local_path: ../forge
13+
repo: git@github.com:cisco-open/forge.git
14+
module_path: modules/infra/cloud_custodian
15+
ref: main
16+
cloud_formation:
17+
local_path: ../forge
18+
repo: git@github.com:cisco-open/forge.git
19+
module_path: modules/infra/cloud_formation
20+
ref: main
21+
ecr:
22+
local_path: ../forge
23+
repo: git@github.com:cisco-open/forge.git
24+
module_path: modules/infra/ecr
25+
ref: main
26+
storage:
27+
local_path: ../forge
28+
repo: git@github.com:cisco-open/forge.git
29+
module_path: modules/infra/storage
30+
ref: main
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
locals {
2+
team_name = "forgeMT" # <REPLACE WITH YOUR VALUE> # e.g., "DevOps Team"
3+
product_name = "forgeMT" # <REPLACE WITH YOUR VALUE> # e.g., "Internal Platform"
4+
project_name = "forgemt" # <REPLACE WITH YOUR VALUE> # e.g., "intplat"
5+
aws_account_prefix = "forge" # <REPLACE WITH YOUR VALUE> # e.g., "intplat-ops"
6+
7+
# GitHub organization for GitOps repo.
8+
git_org = "forgemt" # <REPLACE WITH YOUR VALUE> e.g., "my-org"
9+
10+
# Team information.
11+
group_email = "forgemt@cisco.com" # <REPLACE WITH YOUR VALUE> e.g., "devops@example.com"
12+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
locals {
2+
# ─────────────────────────────────────────────────────────────────────────────
3+
# Global Settings
4+
# ─────────────────────────────────────────────────────────────────────────────
5+
global_data = read_terragrunt_config(find_in_parent_folders("_global_settings/_global.hcl"))
6+
group_email = local.global_data.locals.group_email
7+
team_name = local.global_data.locals.team_name
8+
product_name = local.global_data.locals.product_name
9+
project_name = local.global_data.locals.project_name
10+
11+
# ─────────────────────────────────────────────────────────────────────────────
12+
# Environment Settings
13+
# ─────────────────────────────────────────────────────────────────────────────
14+
env_data = read_terragrunt_config(find_in_parent_folders("_environment_wide_settings/_environment.hcl"))
15+
default_aws_region = local.env_data.locals.default_aws_region
16+
default_aws_profile = local.env_data.locals.default_aws_profile
17+
18+
# ─────────────────────────────────────────────────────────────────────────────
19+
# Tags
20+
# ─────────────────────────────────────────────────────────────────────────────
21+
tags = {
22+
TeamName = local.team_name
23+
TechnicalContact = local.group_email
24+
SecurityContact = local.group_email
25+
}
26+
27+
default_tags = {
28+
ApplicationName = local.project_name
29+
ResourceOwner = local.team_name
30+
ProductFamilyName = local.product_name
31+
IntendedPublic = "No"
32+
LastRevalidatedBy = "Terraform"
33+
LastRevalidatedAt = "2025-05-15"
34+
}
35+
36+
cloud_custodian_data = read_terragrunt_config(find_in_parent_folders("cloud_custodian/config.hcl"))
37+
}
38+
39+
inputs = {
40+
# Core Environment
41+
aws_account_id = local.aws_account_id
42+
aws_profile = local.default_aws_profile
43+
aws_region = local.default_aws_region
44+
45+
# Cloud Custodian Configuration
46+
forge_role_arn = local.cloud_custodian_data.locals.forge_role_arn
47+
48+
# Misc
49+
tags = local.tags
50+
default_tags = local.default_tags
51+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
locals {
2+
# ─────────────────────────────────────────────────────────────────────────────
3+
# Global Settings
4+
# ─────────────────────────────────────────────────────────────────────────────
5+
global_data = read_terragrunt_config(find_in_parent_folders("_global_settings/_global.hcl"))
6+
group_email = local.global_data.locals.group_email
7+
team_name = local.global_data.locals.team_name
8+
product_name = local.global_data.locals.product_name
9+
project_name = local.global_data.locals.project_name
10+
11+
# ─────────────────────────────────────────────────────────────────────────────
12+
# Environment Settings
13+
# ─────────────────────────────────────────────────────────────────────────────
14+
env_data = read_terragrunt_config(find_in_parent_folders("_environment_wide_settings/_environment.hcl"))
15+
default_aws_region = local.env_data.locals.default_aws_region
16+
default_aws_profile = local.env_data.locals.default_aws_profile
17+
18+
# ─────────────────────────────────────────────────────────────────────────────
19+
# Tags
20+
# ─────────────────────────────────────────────────────────────────────────────
21+
tags = {
22+
TeamName = local.team_name
23+
TechnicalContact = local.group_email
24+
SecurityContact = local.group_email
25+
}
26+
27+
default_tags = {
28+
ApplicationName = local.project_name
29+
ResourceOwner = local.team_name
30+
ProductFamilyName = local.product_name
31+
IntendedPublic = "No"
32+
LastRevalidatedBy = "Terraform"
33+
LastRevalidatedAt = "2025-05-15"
34+
}
35+
}
36+
37+
inputs = {
38+
# Core Environment
39+
aws_account_id = local.aws_account_id
40+
aws_profile = local.default_aws_profile
41+
aws_region = local.default_aws_region
42+
43+
# Misc
44+
tags = local.tags
45+
default_tags = local.default_tags
46+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
locals {
2+
# ─────────────────────────────────────────────────────────────────────────────
3+
# Global Settings
4+
# ─────────────────────────────────────────────────────────────────────────────
5+
global_data = read_terragrunt_config(find_in_parent_folders("_global_settings/_global.hcl"))
6+
group_email = local.global_data.locals.group_email
7+
team_name = local.global_data.locals.team_name
8+
product_name = local.global_data.locals.product_name
9+
project_name = local.global_data.locals.project_name
10+
11+
# ─────────────────────────────────────────────────────────────────────────────
12+
# Environment Settings
13+
# ─────────────────────────────────────────────────────────────────────────────
14+
env_data = read_terragrunt_config(find_in_parent_folders("_environment_wide_settings/_environment.hcl"))
15+
default_aws_region = local.env_data.locals.default_aws_region
16+
default_aws_profile = local.env_data.locals.default_aws_profile
17+
18+
# ─────────────────────────────────────────────────────────────────────────────
19+
# Region Settings.
20+
# ─────────────────────────────────────────────────────────────────────────────
21+
region_data = read_terragrunt_config(find_in_parent_folders("_region_wide_settings/_region.hcl"))
22+
region = local.region_data.locals.region_aws
23+
24+
# ─────────────────────────────────────────────────────────────────────────────
25+
# Tags
26+
# ─────────────────────────────────────────────────────────────────────────────
27+
tags = {
28+
TeamName = local.team_name
29+
TechnicalContact = local.group_email
30+
SecurityContact = local.group_email
31+
}
32+
33+
default_tags = {
34+
ApplicationName = local.project_name
35+
ResourceOwner = local.team_name
36+
ProductFamilyName = local.product_name
37+
IntendedPublic = "No"
38+
LastRevalidatedBy = "Terraform"
39+
LastRevalidatedAt = "2025-05-15"
40+
}
41+
42+
ecr_data = read_terragrunt_config(find_in_parent_folders("ecr/config.hcl"))
43+
}
44+
45+
inputs = {
46+
# Core Environment
47+
aws_profile = local.default_aws_profile
48+
aws_region = local.region
49+
50+
# Cloud Custodian Configuration
51+
repositories = local.ecr_data.locals.repositories
52+
53+
# Misc
54+
tags = local.tags
55+
default_tags = local.default_tags
56+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
locals {
2+
# ─────────────────────────────────────────────────────────────────────────────
3+
# Global Settings
4+
# ─────────────────────────────────────────────────────────────────────────────
5+
global_data = read_terragrunt_config(find_in_parent_folders("_global_settings/_global.hcl"))
6+
group_email = local.global_data.locals.group_email
7+
team_name = local.global_data.locals.team_name
8+
product_name = local.global_data.locals.product_name
9+
project_name = local.global_data.locals.project_name
10+
11+
# ─────────────────────────────────────────────────────────────────────────────
12+
# Environment Settings
13+
# ─────────────────────────────────────────────────────────────────────────────
14+
env_data = read_terragrunt_config(find_in_parent_folders("_environment_wide_settings/_environment.hcl"))
15+
default_aws_region = local.env_data.locals.default_aws_region
16+
default_aws_profile = local.env_data.locals.default_aws_profile
17+
18+
# ─────────────────────────────────────────────────────────────────────────────
19+
# Tags
20+
# ─────────────────────────────────────────────────────────────────────────────
21+
tags = {
22+
TeamName = local.team_name
23+
TechnicalContact = local.group_email
24+
SecurityContact = local.group_email
25+
}
26+
27+
default_tags = {
28+
ApplicationName = local.project_name
29+
ResourceOwner = local.team_name
30+
ProductFamilyName = local.product_name
31+
IntendedPublic = "No"
32+
LastRevalidatedBy = "Terraform"
33+
LastRevalidatedAt = "2025-05-15"
34+
}
35+
36+
forge_subscription_data = read_terragrunt_config(find_in_parent_folders("forge_subscription/config.hcl"))
37+
38+
}
39+
40+
inputs = {
41+
# Core Environment
42+
aws_profile = local.default_aws_profile
43+
aws_region = local.default_aws_region
44+
45+
forge = local.forge_subscription_data.locals.forge
46+
47+
# Misc
48+
tags = local.tags
49+
default_tags = local.default_tags
50+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
locals {
2+
# ─────────────────────────────────────────────────────────────────────────────
3+
# Global Settings
4+
# ─────────────────────────────────────────────────────────────────────────────
5+
global_data = read_terragrunt_config(find_in_parent_folders("_global_settings/_global.hcl"))
6+
group_email = local.global_data.locals.group_email
7+
team_name = local.global_data.locals.team_name
8+
product_name = local.global_data.locals.product_name
9+
project_name = local.global_data.locals.project_name
10+
11+
# ─────────────────────────────────────────────────────────────────────────────
12+
# Environment Settings
13+
# ─────────────────────────────────────────────────────────────────────────────
14+
env_data = read_terragrunt_config(find_in_parent_folders("_environment_wide_settings/_environment.hcl"))
15+
default_aws_region = local.env_data.locals.default_aws_region
16+
default_aws_profile = local.env_data.locals.default_aws_profile
17+
18+
# ─────────────────────────────────────────────────────────────────────────────
19+
# Tags
20+
# ─────────────────────────────────────────────────────────────────────────────
21+
tags = {
22+
TeamName = local.team_name
23+
TechnicalContact = local.group_email
24+
SecurityContact = local.group_email
25+
}
26+
27+
default_tags = {
28+
ApplicationName = local.project_name
29+
ResourceOwner = local.team_name
30+
ProductFamilyName = local.product_name
31+
IntendedPublic = "No"
32+
LastRevalidatedBy = "Terraform"
33+
LastRevalidatedAt = "2025-05-15"
34+
}
35+
}
36+
37+
inputs = {
38+
# Core Environment
39+
aws_account_id = local.aws_account_id
40+
aws_profile = local.default_aws_profile
41+
aws_region = local.default_aws_region
42+
43+
# Misc
44+
tags = local.tags
45+
default_tags = local.default_tags
46+
}

examples/deployments/extras/terragrunt/_global_settings/terragrunt.hcl

Whitespace-only changes.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
locals {
2+
global_settings = read_terragrunt_config(find_in_parent_folders("_global_settings/_global.hcl"))
3+
4+
# Environment name.
5+
env = "prod" # <REPLACE WITH YOUR VALUE>
6+
7+
# Prefix used throughout various bits of code involving auth. Must only
8+
# contain letters, numbers, and hyphens (valid hostname characters).
9+
prefix = "prod" # <REPLACE WITH YOUR VALUE>
10+
11+
# Default region in which we store critical infra such as secrets, DynamoDB
12+
# tables, etc.
13+
default_aws_region = "eu-west-1" # <REPLACE WITH YOUR VALUE>
14+
15+
runner_group_name_suffix = "cicd-forge" # <REPLACE WITH YOUR VALUE>
16+
17+
# AWS account associated with this environment.
18+
aws_account_id = "123456789012" # <REPLACE WITH YOUR VALUE>
19+
aws_account_name = "${local.global_settings.locals.aws_account_prefix}-${local.env}"
20+
default_aws_profile = "${local.aws_account_name}"
21+
22+
# Sanitized values
23+
sanitized_project_name = replace(local.global_settings.locals.project_name, "_", "-")
24+
sanitized_git_org = replace(local.global_settings.locals.git_org, "_", "-")
25+
26+
# Default security tags.
27+
# <REPLACE WITH YOUR VALUE>
28+
default_tags = {
29+
TeamName = local.global_settings.locals.team_name
30+
ApplicationName = local.global_settings.locals.product_name
31+
Environment = local.env
32+
ResourceOwner = local.global_settings.locals.team_name
33+
ProductFamilyName = local.global_settings.locals.product_name
34+
}
35+
36+
remote_state_config = {
37+
backend = "s3"
38+
config = {
39+
bucket = "${local.aws_account_id}.${local.sanitized_git_org}.${local.sanitized_project_name}"
40+
key = "${path_relative_to_include("root")}/terraform.tfstate"
41+
region = local.default_aws_region
42+
encrypt = true
43+
dynamodb_table = "${local.aws_account_id}.${local.sanitized_git_org}.${local.sanitized_project_name}"
44+
profile = local.default_aws_profile
45+
s3_bucket_tags = local.default_tags
46+
dynamodb_table_tags = local.default_tags
47+
}
48+
}
49+
}

examples/deployments/extras/terragrunt/environments/prod/_environment_wide_settings/terragrunt.hcl

Whitespace-only changes.

0 commit comments

Comments
 (0)