@hiiretail/gcp-infra-cli 0.82.2 → 0.83.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/generators/init/clan-infra/index.js +18 -0
  2. package/generators/init/clan-infra/templates/infra/common.hcl +3 -0
  3. package/generators/organization/clan-project/templates/clan-project/terragrunt.hcl +1 -1
  4. package/generators/resources/cloud-storage/templates/cloud-storage/storage.yaml +13 -13
  5. package/generators/resources/cloud-storage/templates/cloud-storage/terragrunt.hcl +5 -1
  6. package/generators/resources/cloudsql/templates/mssql/instance/terragrunt.hcl +5 -1
  7. package/generators/resources/cloudsql/templates/mssql/instance-secrets/terragrunt.hcl +6 -2
  8. package/generators/resources/cloudsql/templates/mysql/instance/terragrunt.hcl +5 -1
  9. package/generators/resources/cloudsql/templates/mysql/instance-secrets/terragrunt.hcl +6 -2
  10. package/generators/resources/cloudsql/templates/postgres/instance/terragrunt.hcl +5 -1
  11. package/generators/resources/cloudsql/templates/postgres/instance-secrets/terragrunt.hcl +6 -2
  12. package/generators/resources/kms/templates/kms/terragrunt.hcl +5 -1
  13. package/generators/resources/memorystore/templates/redis-instance/terragrunt.hcl +6 -2
  14. package/generators/resources/memorystore/templates/secrets/terragrunt.hcl +5 -1
  15. package/generators/resources/monitoring/templates/alerts/terragrunt.hcl +11 -7
  16. package/generators/resources/monitoring/templates/uptime-checks/terragrunt.hcl +12 -8
  17. package/generators/resources/pubsub/index.js +1 -1
  18. package/generators/resources/pubsub/templates/pubsub/terragrunt.hcl +10 -2
  19. package/generators/resources/pubsub/templates/pubsub-dlq/terragrunt.hcl +13 -4
  20. package/generators/resources/spanner/templates/spanner/terragrunt.hcl +6 -2
  21. package/generators/tribe-resources/tribe-project/templates/project/terragrunt.hcl +1 -1
  22. package/package.json +1 -1
@@ -37,6 +37,24 @@ module.exports = class extends BaseGenerator {
37
37
  message: 'Provide the cost center your tribe belongs to',
38
38
  validate: required,
39
39
  },
40
+ {
41
+ type: 'input',
42
+ name: 'product',
43
+ message: 'Provide the product your resources belongs to. Can be modified for a specific resource later on',
44
+ validate: required,
45
+ },
46
+ {
47
+ type: 'input',
48
+ name: 'component',
49
+ message: 'Provide the component your resources belongs to. Can be modified for a specific resource later on',
50
+ validate: required,
51
+ },
52
+ {
53
+ type: 'input',
54
+ name: 'tenantAlias',
55
+ message: 'Provide the tenant alias for the resources or use \'multi-tenant\'. Can be modified for a specific resource later on.',
56
+ validate: required,
57
+ },
40
58
  {
41
59
  type: 'input',
42
60
  name: 'jiraProjectKey',
@@ -13,4 +13,7 @@ locals {
13
13
  project_id_slack_token = "tf-admin-90301274"
14
14
  cost_center = "<%-costCenter%>"
15
15
  jira_project_key = "<%-jiraProjectKey%>"
16
+ component = "<%-costCenter%>"
17
+ product = "<%-product%>"
18
+ tenant_alias = "<%-tenantAlias%>"
16
19
  }
@@ -1,5 +1,5 @@
1
1
  terraform {
2
- source = "git::https://github.com/extenda/tf-module-gcp-project//?ref=v1.0.8"
2
+ source = "git::https://github.com/extenda/tf-module-gcp-project//?ref=v1.1.0"
3
3
  }
4
4
 
5
5
  dependency "parent_folder" {
@@ -8,16 +8,16 @@ versioning:
8
8
  "<%-bucketName%>": <%-versioning%>
9
9
  set_viewer_roles: true <% if (lifecycleRules == 'true') { %>
10
10
  lifecycle_rules:
11
- action:
12
- type: "<%-action%>" <% if (action == 'SetStorageClass') { %>
13
- storage_class: "<%-storageClass%>" <% } else { %>
14
- storage_class: null <% } %>
15
- condition:
16
- age: <%-age%> <% if (createdBefore != 'null') { %>
17
- created_before: "<%-createdBefore%>" <% } else { %>
18
- created_before: null <% } %> <% if (withState != 'null') { %>
19
- with_state: "<%-withState%>" <% } else { %>
20
- with_state: null <% } %> <% if (matchesStorageClass != 'null') { %>
21
- matches_storage_class: "<%-matchesStorageClass%>" <% } else { %>
22
- matches_storage_class: null <% } %>
23
- num_newer_versions: <%-numNewerVersions%> <% } %>
11
+ - action:
12
+ type: "<%-action%>" <% if (action == 'SetStorageClass') { %>
13
+ storage_class: "<%-storageClass%>" <% } else { %>
14
+ storage_class: null <% } %>
15
+ condition:
16
+ age: <%-age%> <% if (createdBefore != 'null') { %>
17
+ created_before: "<%-createdBefore%>" <% } else { %>
18
+ created_before: null <% } %> <% if (withState != 'null') { %>
19
+ with_state: "<%-withState%>" <% } else { %>
20
+ with_state: null <% } %> <% if (matchesStorageClass != 'null') { %>
21
+ matches_storage_class: "<%-matchesStorageClass%>" <% } else { %>
22
+ matches_storage_class: null <% } %>
23
+ num_newer_versions: <%-numNewerVersions%> <% } %>
@@ -23,7 +23,11 @@ inputs = merge(
23
23
  # IAM-style members who will be granted roles/storage.objectViewer on all buckets.
24
24
  viewers = ["group:${local.common_vars.locals.clan_group_email}"]
25
25
  labels = {
26
- cc = local.common_vars.locals.cost_center
26
+ cc = local.common_vars.locals.cost_center
27
+ component = local.common_vars.locals.component
28
+ product = local.common_vars.locals.product
29
+ tenant-alias = local.common_vars.locals.tenant_alias
30
+ environment = local.project_vars.locals.project_env
27
31
  }
28
32
  }
29
33
  )
@@ -29,7 +29,11 @@ inputs = merge(
29
29
  ## Uncomment and apply it before destroy in case of necessary to delete the instance
30
30
  # deletion_protection = false
31
31
  user_labels = {
32
- cc = local.common_vars.locals.cost_center
32
+ cc = local.common_vars.locals.cost_center
33
+ component = local.common_vars.locals.component
34
+ product = local.common_vars.locals.product
35
+ tenant-alias = local.common_vars.locals.tenant_alias
36
+ environment = local.project_vars.locals.project_env
33
37
  }
34
38
  }
35
39
  )
@@ -30,8 +30,12 @@ inputs = merge(
30
30
  mssql-common-address = dependency.mssql_address.outputs.private_address
31
31
  }
32
32
  labels = {
33
- terraform = ""
34
- cc = local.common_vars.locals.cost_center
33
+ terraform = ""
34
+ cc = local.common_vars.locals.cost_center
35
+ component = local.common_vars.locals.component
36
+ product = local.common_vars.locals.product
37
+ tenant-alias = local.common_vars.locals.tenant_alias
38
+ environment = local.project_vars.locals.project_env
35
39
  }
36
40
  }
37
41
  )
@@ -30,7 +30,11 @@ inputs = merge(
30
30
  ## Uncomment and apply it before destroy in case of necessary to delete the instance
31
31
  # deletion_protection = false
32
32
  user_labels = {
33
- cc = local.common_vars.locals.cost_center
33
+ cc = local.common_vars.locals.cost_center
34
+ component = local.common_vars.locals.component
35
+ product = local.common_vars.locals.product
36
+ tenant-alias = local.common_vars.locals.tenant_alias
37
+ environment = local.project_vars.locals.project_env
34
38
  }
35
39
  }
36
40
  )
@@ -30,8 +30,12 @@ inputs = merge(
30
30
  mysql_private_address = dependency.instance.outputs.private_ip_address
31
31
  }
32
32
  labels = {
33
- terraform = ""
34
- cc = local.common_vars.locals.cost_center
33
+ terraform = ""
34
+ cc = local.common_vars.locals.cost_center
35
+ component = local.common_vars.locals.component
36
+ product = local.common_vars.locals.product
37
+ tenant-alias = local.common_vars.locals.tenant_alias
38
+ environment = local.project_vars.locals.project_env
35
39
  }
36
40
  }
37
41
  )
@@ -29,7 +29,11 @@ inputs = merge(
29
29
  ## Uncomment and apply it before destroy in case of necessary to delete the instance
30
30
  # deletion_protection = false
31
31
  user_labels = {
32
- cc = local.common_vars.locals.cost_center
32
+ cc = local.common_vars.locals.cost_center
33
+ component = local.common_vars.locals.component
34
+ product = local.common_vars.locals.product
35
+ tenant-alias = local.common_vars.locals.tenant_alias
36
+ environment = local.project_vars.locals.project_env
33
37
  }
34
38
  }
35
39
  )
@@ -30,8 +30,12 @@ inputs = merge(
30
30
  postgresql_private_address = dependency.instance.outputs.private_ip_address
31
31
  }
32
32
  labels = {
33
- terraform = ""
34
- cc = local.common_vars.locals.cost_center
33
+ terraform = ""
34
+ cc = local.common_vars.locals.cost_center
35
+ component = local.common_vars.locals.component
36
+ product = local.common_vars.locals.product
37
+ tenant-alias = local.common_vars.locals.tenant_alias
38
+ environment = local.project_vars.locals.project_env
35
39
  }
36
40
  }
37
41
  )
@@ -21,7 +21,11 @@ inputs = merge(
21
21
  local.project_vars.locals,
22
22
  {
23
23
  labels = {
24
- cc = local.common_vars.locals.cost_center
24
+ cc = local.common_vars.locals.cost_center
25
+ component = local.common_vars.locals.component
26
+ product = local.common_vars.locals.product
27
+ tenant-alias = local.common_vars.locals.tenant_alias
28
+ environment = local.project_vars.locals.project_env
25
29
  }
26
30
  project_id = local.project_vars.locals.project_id
27
31
  prevent_destroy = false
@@ -26,8 +26,12 @@ inputs = merge(
26
26
  enable_apis = false
27
27
 
28
28
  labels = {
29
- project = local.project_vars.locals.project_name
30
- cc = local.common_vars.locals.cost_center
29
+ project = local.project_vars.locals.project_name
30
+ cc = local.common_vars.locals.cost_center
31
+ component = local.common_vars.locals.component
32
+ product = local.common_vars.locals.product
33
+ tenant-alias = local.common_vars.locals.tenant_alias
34
+ environment = local.project_vars.locals.project_env
31
35
  }
32
36
  }
33
37
  )
@@ -25,7 +25,11 @@ inputs = merge(
25
25
  }
26
26
  labels = {
27
27
  terraform = ""
28
- cc = local.common_vars.locals.cost_center
28
+ cc = local.common_vars.locals.cost_center
29
+ component = local.common_vars.locals.component
30
+ product = local.common_vars.locals.product
31
+ tenant-alias = local.common_vars.locals.tenant_alias
32
+ environment = local.project_vars.locals.project_env
29
33
  }
30
34
  }
31
35
  )
@@ -23,12 +23,16 @@ locals {
23
23
 
24
24
  # These are the variables we have to pass in to use the module specified in the terragrunt configuration above
25
25
  inputs = {
26
- monitoring_project_id = lookup(local.project_vars.locals, "monitoring_project_id", local.project_vars.locals.tribe_project_id),
27
- notification_channels = dependency.notification_channels.outputs.notification_channels,
28
- policies = yamldecode(file("${get_terragrunt_dir()}/alerts.yaml")),
29
- user_labels = {
30
- cc = local.common_vars.locals.cost_center
31
- clan = local.common_vars.locals.clan_name
32
- jira_project_key = lookup(local.common_vars.locals, "jira_project_key", null)
26
+ monitoring_project_id = lookup(local.project_vars.locals, "monitoring_project_id", local.project_vars.locals.tribe_project_id),
27
+ notification_channels = dependency.notification_channels.outputs.notification_channels,
28
+ policies = yamldecode(file("${get_terragrunt_dir()}/alerts.yaml")),
29
+ user_labels = {
30
+ cc = local.common_vars.locals.cost_center
31
+ clan = local.common_vars.locals.clan_name
32
+ jira_project_key = lookup(local.common_vars.locals, "jira_project_key", null)
33
+ component = local.common_vars.locals.component
34
+ product = local.common_vars.locals.product
35
+ tenant-alias = local.common_vars.locals.tenant_alias
36
+ environment = local.project_vars.locals.project_env
33
37
  },
34
38
  }
@@ -23,14 +23,18 @@ locals {
23
23
 
24
24
  # These are the variables we have to pass in to use the module specified in the terragrunt configuration above
25
25
  inputs = merge({
26
- project_id = local.project_vars.locals.project_id,
27
- project_id_alert = local.project_vars.locals.tribe_project_id,
28
- notification_channels = dependency.notification_channels.outputs.notification_channels,
29
- uptime_checks = yamldecode(file("${get_terragrunt_dir()}/uptime-checks.yaml")),
30
- labels = {
31
- clan = local.common_vars.locals.clan_name
32
- cc = local.common_vars.locals.cost_center
33
- jira_project_key = lookup(local.project_vars.locals, "jira_project_key", null)
26
+ project_id = local.project_vars.locals.project_id,
27
+ project_id_alert = local.project_vars.locals.tribe_project_id,
28
+ notification_channels = dependency.notification_channels.outputs.notification_channels,
29
+ uptime_checks = yamldecode(file("${get_terragrunt_dir()}/uptime-checks.yaml")),
30
+ labels = {
31
+ cc = local.common_vars.locals.cost_center
32
+ clan = local.common_vars.locals.clan_name
33
+ jira_project_key = lookup(local.common_vars.locals, "jira_project_key", null)
34
+ component = local.common_vars.locals.component
35
+ product = local.common_vars.locals.product
36
+ tenant-alias = local.common_vars.locals.tenant_alias
37
+ environment = local.project_vars.locals.project_env
34
38
  }
35
39
  }
36
40
  )
@@ -170,7 +170,7 @@ module.exports = class extends BaseGenerator {
170
170
  externalSub,
171
171
  } = this.answers;
172
172
 
173
- const dlqTopicName = `${getProjectId('prod').split('-')[0]}-common-dlq`;
173
+ const dlqTopicName = `dlq.${getProjectId('prod').split('-')[0]}.common`;
174
174
  let dlqTopic = `projects/${getProjectId('prod')}/topics/${dlqTopicName}`;
175
175
 
176
176
  const dlqTopicDirPath = path.join(process.cwd(), 'infra', 'prod', 'pubsub', dlqTopicName);
@@ -23,10 +23,18 @@ inputs = merge(<% if (createResource == 'topic') { %><% } else { %>
23
23
  local.project_vars.locals,
24
24
  {
25
25
  topic_labels = {
26
- cc = local.common_vars.locals.cost_center
26
+ cc = local.common_vars.locals.cost_center
27
+ component = local.common_vars.locals.component
28
+ product = local.common_vars.locals.product
29
+ tenant-alias = local.common_vars.locals.tenant_alias
30
+ environment = local.project_vars.locals.project_env
27
31
  }<% if (createResource == 'topic') { %><% } else { %>
28
32
  subscription_labels = {
29
- cc = local.common_vars.locals.cost_center
33
+ cc = local.common_vars.locals.cost_center
34
+ component = local.common_vars.locals.component
35
+ product = local.common_vars.locals.product
36
+ tenant-alias = local.common_vars.locals.tenant_alias
37
+ environment = local.project_vars.locals.project_env
30
38
  }<% } %>
31
39
  grant_token_creator = false
32
40
  }
@@ -18,23 +18,32 @@ locals {
18
18
  inputs = merge (
19
19
  local.project_vars.locals,
20
20
  {
21
- topic = "${local.common_vars.locals.clan_name}-common-dlq"
21
+ topic = "dlq.${local.common_vars.locals.clan_name}.common"
22
22
  create_subscriptions = true
23
23
  create_topic = true
24
24
  push_subscriptions = [
25
25
  {
26
- name = "dlq-message-handler-subscription",
26
+ name = "dlq.${local.common_vars.locals.clan_name}.common+dlq.message-handler",
27
27
  push_endpoint = "https://europe-west1-sre-prod-5462.cloudfunctions.net/dlq-message-handler",
28
28
  audience = "https://europe-west1-sre-prod-5462.cloudfunctions.net/dlq-message-handler",
29
29
  expiration_policy = "",
30
30
  oidc_service_account_email = "pubsub-dlq-handler@${local.project_vars.locals.project_id}.iam.gserviceaccount.com",
31
+ filter = "attributes.Consumer = \"dlq.${local.common_vars.locals.clan_name}.common+dlq.message-handler OR NOT attributes:Consumer\"",
31
32
  },
32
33
  ],
33
34
  topic_labels = {
34
- cc = local.common_vars.locals.cost_center
35
+ cc = local.common_vars.locals.cost_center
36
+ component = local.common_vars.locals.component
37
+ product = local.common_vars.locals.product
38
+ tenant-alias = local.common_vars.locals.tenant_alias
39
+ environment = local.project_vars.locals.project_env
35
40
  }
36
41
  subscription_labels = {
37
- cc = local.common_vars.locals.cost_center
42
+ cc = local.common_vars.locals.cost_center
43
+ component = local.common_vars.locals.component
44
+ product = local.common_vars.locals.product
45
+ tenant-alias = local.common_vars.locals.tenant_alias
46
+ environment = local.project_vars.locals.project_env
38
47
  }
39
48
  grant_token_creator = false,
40
49
  }
@@ -23,8 +23,12 @@ inputs = merge(
23
23
  local.project_vars.locals,
24
24
  {
25
25
  instance_labels = {
26
- cc = local.common_vars.locals.cost_center
27
- "created" = "terraform"
26
+ cc = local.common_vars.locals.cost_center
27
+ component = local.common_vars.locals.component
28
+ product = local.common_vars.locals.product
29
+ tenant-alias = local.common_vars.locals.tenant_alias
30
+ environment = local.project_vars.locals.project_env
31
+ "created" = "terraform"
28
32
  }
29
33
  }
30
34
  )
@@ -1,5 +1,5 @@
1
1
  terraform {
2
- source = "git::https://github.com/extenda/tf-module-gcp-project//?ref=v1.0.8"
2
+ source = "git::https://github.com/extenda/tf-module-gcp-project//?ref=v1.1.0"
3
3
  }
4
4
 
5
5
  dependency "tribe_folder" {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hiiretail/gcp-infra-cli",
3
- "version": "0.82.2",
3
+ "version": "0.83.0",
4
4
  "description": "Infrastructure as code generator for GCP.",
5
5
  "main": "src/cli.js",
6
6
  "bin": {