@hiiretail/gcp-infra-cli 0.103.1 → 1.0.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 (215) hide show
  1. package/README.md +9 -46
  2. package/bin/gcp-infra +5 -2
  3. package/package.json +7 -30
  4. package/src/gcp-infra.js +87 -0
  5. package/LICENSE +0 -21
  6. package/generators/clan-resources/clan-project/generator.json +0 -4
  7. package/generators/clan-resources/clan-project/index.js +0 -135
  8. package/generators/clan-resources/clan-project/templates/clan-resources/cloud-nat/terragrunt.hcl +0 -52
  9. package/generators/clan-resources/clan-project/templates/clan-resources/cloud-nat-static-ip/spec.hcl +0 -7
  10. package/generators/clan-resources/clan-project/templates/clan-resources/cloud-nat-static-ip/terragrunt.hcl +0 -25
  11. package/generators/clan-resources/clan-project/templates/clan-resources/cloud-router/terragrunt.hcl +0 -34
  12. package/generators/clan-resources/clan-project/templates/clan-resources/gke/gke-resources/terragrunt.hcl +0 -40
  13. package/generators/clan-resources/clan-project/templates/clan-resources/gke/spec.hcl +0 -18
  14. package/generators/clan-resources/clan-project/templates/clan-resources/gke/terragrunt.hcl +0 -52
  15. package/generators/clan-resources/clan-project/templates/clan-resources/network/firewall-rules/config/main.tf +0 -41
  16. package/generators/clan-resources/clan-project/templates/clan-resources/network/firewall-rules/config/vars.tf +0 -9
  17. package/generators/clan-resources/clan-project/templates/clan-resources/network/firewall-rules/terragrunt.hcl +0 -32
  18. package/generators/clan-resources/clan-project/templates/clan-resources/network/spec.hcl +0 -54
  19. package/generators/clan-resources/clan-project/templates/clan-resources/network/terragrunt.hcl +0 -29
  20. package/generators/clan-resources/clan-project/templates/clan-resources/private-vpc-connection/config/main.tf +0 -18
  21. package/generators/clan-resources/clan-project/templates/clan-resources/private-vpc-connection/config/vars.tf +0 -27
  22. package/generators/clan-resources/clan-project/templates/clan-resources/private-vpc-connection/terragrunt.hcl +0 -35
  23. package/generators/clan-resources/clan-project/templates/clan-resources/serverless-vpc-connector/terragrunt.hcl +0 -40
  24. package/generators/clan-resources/clan-project/templates/clan-resources/terragrunt.hcl +0 -3
  25. package/generators/clan-resources/command.json +0 -7
  26. package/generators/common-resources/bigquery/generator.json +0 -4
  27. package/generators/common-resources/bigquery/index.js +0 -284
  28. package/generators/common-resources/bigquery/templates/bigquery/spec.hcl +0 -8
  29. package/generators/common-resources/bigquery/templates/bigquery/terragrunt.hcl +0 -53
  30. package/generators/common-resources/bigquery/templates/scheduled-queries/terragrunt.hcl +0 -56
  31. package/generators/common-resources/bigquery/templates/schema/schema.json +0 -14
  32. package/generators/common-resources/budget/generator.json +0 -4
  33. package/generators/common-resources/budget/index.js +0 -89
  34. package/generators/common-resources/budget/templates/budget/terragrunt.hcl +0 -45
  35. package/generators/common-resources/cloud-armor/generator.json +0 -4
  36. package/generators/common-resources/cloud-armor/index.js +0 -45
  37. package/generators/common-resources/cloud-armor/templates/policies.yaml +0 -53
  38. package/generators/common-resources/cloud-armor/templates/terragrunt.hcl +0 -30
  39. package/generators/common-resources/cloud-storage/generator.json +0 -4
  40. package/generators/common-resources/cloud-storage/index.js +0 -156
  41. package/generators/common-resources/cloud-storage/templates/cloud-storage/storage.yaml +0 -26
  42. package/generators/common-resources/cloud-storage/templates/cloud-storage/terragrunt.hcl +0 -32
  43. package/generators/common-resources/cloudsql/generator.json +0 -4
  44. package/generators/common-resources/cloudsql/index.js +0 -106
  45. package/generators/common-resources/cloudsql/templates/mssql/instance/spec.hcl +0 -76
  46. package/generators/common-resources/cloudsql/templates/mssql/instance/terragrunt.hcl +0 -38
  47. package/generators/common-resources/cloudsql/templates/mssql/instance-secrets/terragrunt.hcl +0 -37
  48. package/generators/common-resources/cloudsql/templates/mysql/instance/spec.hcl +0 -73
  49. package/generators/common-resources/cloudsql/templates/mysql/instance/terragrunt.hcl +0 -40
  50. package/generators/common-resources/cloudsql/templates/mysql/instance-secrets/terragrunt.hcl +0 -38
  51. package/generators/common-resources/cloudsql/templates/postgres-clan/instance/spec.hcl +0 -102
  52. package/generators/common-resources/cloudsql/templates/postgres-clan/instance/terragrunt.hcl +0 -36
  53. package/generators/common-resources/cloudsql/templates/postgres-clan/instance-secrets/terragrunt.hcl +0 -44
  54. package/generators/common-resources/cloudsql-database/generator.json +0 -4
  55. package/generators/common-resources/cloudsql-database/index.js +0 -70
  56. package/generators/common-resources/cloudsql-database/templates/mysql/database/proxy_port.hcl +0 -4
  57. package/generators/common-resources/cloudsql-database/templates/mysql/database/terragrunt.hcl +0 -69
  58. package/generators/common-resources/cloudsql-database/templates/mysql/outputs.json +0 -5
  59. package/generators/common-resources/cloudsql-database/templates/mysql/secrets/terragrunt.hcl +0 -30
  60. package/generators/common-resources/cloudsql-database/templates/postgres/database/proxy_port.hcl +0 -4
  61. package/generators/common-resources/cloudsql-database/templates/postgres/database/spec.hcl +0 -17
  62. package/generators/common-resources/cloudsql-database/templates/postgres/database/terragrunt.hcl +0 -74
  63. package/generators/common-resources/cloudsql-database/templates/postgres/outputs.json +0 -5
  64. package/generators/common-resources/cloudsql-database/templates/postgres/secrets/terragrunt.hcl +0 -30
  65. package/generators/common-resources/command.json +0 -8
  66. package/generators/common-resources/confluent-cluster/generator.json +0 -4
  67. package/generators/common-resources/confluent-cluster/index.js +0 -52
  68. package/generators/common-resources/confluent-cluster/templates/confluent/spec.hcl +0 -5
  69. package/generators/common-resources/confluent-cluster/templates/confluent/terragrunt.hcl +0 -25
  70. package/generators/common-resources/datastore/generator.json +0 -4
  71. package/generators/common-resources/datastore/index.js +0 -91
  72. package/generators/common-resources/datastore/templates/datastore/indexes.yaml +0 -6
  73. package/generators/common-resources/datastore/templates/datastore/terragrunt.hcl +0 -23
  74. package/generators/common-resources/elastic-cloud/generator.json +0 -4
  75. package/generators/common-resources/elastic-cloud/index.js +0 -52
  76. package/generators/common-resources/elastic-cloud/templates/elastic/spec.hcl +0 -27
  77. package/generators/common-resources/elastic-cloud/templates/elastic/terragrunt.hcl +0 -27
  78. package/generators/common-resources/elastic-index-policy/generator.json +0 -4
  79. package/generators/common-resources/elastic-index-policy/handle-yaml.js +0 -76
  80. package/generators/common-resources/elastic-index-policy/index.js +0 -210
  81. package/generators/common-resources/elastic-index-policy/templates/policy/policy.yaml +0 -28
  82. package/generators/common-resources/elastic-index-policy/templates/policy/terragrunt.hcl +0 -25
  83. package/generators/common-resources/elastic-template/generator.json +0 -4
  84. package/generators/common-resources/elastic-template/index.js +0 -84
  85. package/generators/common-resources/elastic-template/templates/elastic-template/mappings.json +0 -1
  86. package/generators/common-resources/elastic-template/templates/elastic-template/terragrunt.hcl +0 -35
  87. package/generators/common-resources/firestore/generator.json +0 -4
  88. package/generators/common-resources/firestore/index.js +0 -81
  89. package/generators/common-resources/firestore/templates/firestore/indexes.yaml +0 -10
  90. package/generators/common-resources/firestore/templates/firestore/terragrunt.hcl +0 -25
  91. package/generators/common-resources/iam/generator.json +0 -4
  92. package/generators/common-resources/iam/index.js +0 -62
  93. package/generators/common-resources/iam/templates/github/workflows/iam.yml +0 -18
  94. package/generators/common-resources/iam/templates/iam.yaml +0 -8
  95. package/generators/common-resources/iam/valid-prefix.js +0 -8
  96. package/generators/common-resources/kafka-connect/generator.json +0 -4
  97. package/generators/common-resources/kafka-connect/index.js +0 -75
  98. package/generators/common-resources/kafka-connect/templates/elastic/terragrunt.hcl +0 -92
  99. package/generators/common-resources/kafka-connect/templates/pubsub/terragrunt.hcl +0 -75
  100. package/generators/common-resources/kafka-topics/generator.json +0 -4
  101. package/generators/common-resources/kafka-topics/index.js +0 -54
  102. package/generators/common-resources/kafka-topics/templates/kafka/kafka.yaml +0 -20
  103. package/generators/common-resources/kafka-topics/templates/kafka/terragrunt.hcl +0 -21
  104. package/generators/common-resources/kms/generator.json +0 -4
  105. package/generators/common-resources/kms/index.js +0 -69
  106. package/generators/common-resources/kms/templates/kms/spec.hcl +0 -5
  107. package/generators/common-resources/kms/templates/kms/terragrunt.hcl +0 -33
  108. package/generators/common-resources/memorystore/generator.json +0 -4
  109. package/generators/common-resources/memorystore/index.js +0 -69
  110. package/generators/common-resources/memorystore/templates/outputs.json +0 -3
  111. package/generators/common-resources/memorystore/templates/redis-instance/spec.hcl +0 -16
  112. package/generators/common-resources/memorystore/templates/redis-instance/terragrunt.hcl +0 -35
  113. package/generators/common-resources/memorystore/templates/secrets/terragrunt.hcl +0 -31
  114. package/generators/common-resources/monitoring/generator.json +0 -4
  115. package/generators/common-resources/monitoring/handle-yaml.js +0 -48
  116. package/generators/common-resources/monitoring/index.js +0 -192
  117. package/generators/common-resources/monitoring/templates/alerts/generic-infra.yaml +0 -633
  118. package/generators/common-resources/monitoring/templates/alerts/terragrunt.hcl +0 -37
  119. package/generators/common-resources/monitoring/templates/service/service.yaml +0 -16
  120. package/generators/common-resources/monitoring/templates/service/terragrunt.hcl +0 -37
  121. package/generators/common-resources/monitoring/templates/uptime-checks/terragrunt.hcl +0 -36
  122. package/generators/common-resources/monitoring/templates/uptime-checks/uptime-checks.yaml +0 -3
  123. package/generators/common-resources/monitoring/validate.js +0 -58
  124. package/generators/common-resources/pubsub/append.js +0 -120
  125. package/generators/common-resources/pubsub/generator.json +0 -4
  126. package/generators/common-resources/pubsub/get-gcp-projects.js +0 -34
  127. package/generators/common-resources/pubsub/handle-subscribers.js +0 -63
  128. package/generators/common-resources/pubsub/index.js +0 -316
  129. package/generators/common-resources/pubsub/templates/pubsub/spec.hcl +0 -7
  130. package/generators/common-resources/pubsub/templates/pubsub/subscribers.yaml +0 -16
  131. package/generators/common-resources/pubsub/templates/pubsub/terragrunt.hcl +0 -34
  132. package/generators/common-resources/pubsub/templates/pubsub-dlq/terragrunt.hcl +0 -42
  133. package/generators/common-resources/pubsub/templates/pubsub-external/spec.hcl +0 -10
  134. package/generators/common-resources/pubsub/templates/pubsub-external/subscribers.yaml +0 -16
  135. package/generators/common-resources/pubsub/templates/pubsub-external/terragrunt.hcl +0 -31
  136. package/generators/common-resources/pubsub/validate.js +0 -44
  137. package/generators/common-resources/scheduler/append.js +0 -83
  138. package/generators/common-resources/scheduler/generator.json +0 -4
  139. package/generators/common-resources/scheduler/index.js +0 -103
  140. package/generators/common-resources/scheduler/templates/scheduler/terragrunt.hcl +0 -44
  141. package/generators/common-resources/spanner/append.js +0 -27
  142. package/generators/common-resources/spanner/generator.json +0 -4
  143. package/generators/common-resources/spanner/index.js +0 -169
  144. package/generators/common-resources/spanner/templates/spanner/databases.yaml +0 -5
  145. package/generators/common-resources/spanner/templates/spanner/spec.hcl +0 -22
  146. package/generators/common-resources/spanner/templates/spanner/terragrunt.hcl +0 -33
  147. package/generators/common-resources/spanner/validate.js +0 -38
  148. package/generators/docs/command.json +0 -7
  149. package/generators/docs/rca/generator.json +0 -4
  150. package/generators/docs/rca/index.js +0 -50
  151. package/generators/docs/rca/templates/docs/rca_external.md +0 -43
  152. package/generators/docs/rca/templates/docs/rca_internal.md +0 -88
  153. package/generators/docs/runbook/generator.json +0 -4
  154. package/generators/docs/runbook/index.js +0 -42
  155. package/generators/docs/runbook/templates/docs/runbook.md +0 -106
  156. package/generators/docs/srb/generator.json +0 -4
  157. package/generators/docs/srb/index.js +0 -62
  158. package/generators/docs/srb/templates/docs/README.md +0 -42
  159. package/generators/docs/srb/templates/docs/adr.cmd +0 -3
  160. package/generators/docs/srb/templates/docs/adr.sh +0 -4
  161. package/generators/docs/srb/templates/docs/architecture.md +0 -68
  162. package/generators/docs/srb/templates/docs/cost-estimates.md +0 -39
  163. package/generators/docs/srb/templates/docs/dsl2png.cmd +0 -3
  164. package/generators/docs/srb/templates/docs/dsl2png.sh +0 -4
  165. package/generators/docs/srb/templates/docs/sre.md +0 -43
  166. package/generators/docs/srb/templates/sample.dsl +0 -36
  167. package/generators/init/clan-infra/gcp-projects.js +0 -36
  168. package/generators/init/clan-infra/generator.json +0 -4
  169. package/generators/init/clan-infra/index.js +0 -170
  170. package/generators/init/clan-infra/templates/.yamllint +0 -17
  171. package/generators/init/clan-infra/templates/env/project.hcl +0 -15
  172. package/generators/init/clan-infra/templates/env/secrets/secrets.yaml +0 -4
  173. package/generators/init/clan-infra/templates/env/secrets/terragrunt.hcl +0 -31
  174. package/generators/init/clan-infra/templates/github/CODEOWNERS +0 -1
  175. package/generators/init/clan-infra/templates/github/workflows/infra-verify.yml +0 -16
  176. package/generators/init/clan-infra/templates/github/workflows/infra.yml +0 -17
  177. package/generators/init/clan-infra/templates/github/workflows/release-notes.yml +0 -33
  178. package/generators/init/clan-infra/templates/github/workflows/sync-docs.yml +0 -29
  179. package/generators/init/clan-infra/templates/infra/.terraform-version +0 -1
  180. package/generators/init/clan-infra/templates/infra/.terragrunt-version +0 -1
  181. package/generators/init/clan-infra/templates/infra/README.md +0 -5
  182. package/generators/init/clan-infra/templates/infra/common.hcl +0 -24
  183. package/generators/init/clan-infra/templates/infra/terragrunt_root.hcl +0 -44
  184. package/generators/init/clan-infra/templates/notification-channels/notification-channels.yaml +0 -7
  185. package/generators/init/clan-infra/templates/notification-channels/terragrunt.hcl +0 -29
  186. package/generators/init/clan-infra/templates/release-notes/example-service.yaml +0 -23
  187. package/generators/init/clan-infra/templates/release-notes-schema/release-notes.schema.json +0 -63
  188. package/generators/init/clan-infra/tribe-clan-repo.js +0 -38
  189. package/generators/init/clan-infra/validate.js +0 -8
  190. package/generators/init/command.json +0 -7
  191. package/generators/maintenance/command.json +0 -7
  192. package/generators/maintenance/manage-states/generator.json +0 -4
  193. package/generators/maintenance/manage-states/index.js +0 -188
  194. package/generators/maintenance/update-modules/generator.json +0 -4
  195. package/generators/maintenance/update-modules/index.js +0 -102
  196. package/generators/organization/clan-project/__tests__/__snapshots__/googlecloud.test.js.snap +0 -27
  197. package/generators/organization/clan-project/generator.json +0 -4
  198. package/generators/organization/clan-project/googlecloud.js +0 -119
  199. package/generators/organization/clan-project/index.js +0 -139
  200. package/generators/organization/clan-project/templates/clan/clan.yaml +0 -22
  201. package/generators/organization/clan-project/templates/clan/terragrunt.hcl +0 -39
  202. package/generators/organization/clan-project/templates/clan-project/project.yaml +0 -14
  203. package/generators/organization/clan-project/templates/clan-project/terragrunt.hcl +0 -51
  204. package/generators/organization/clan-project/templates/clans-folder/terragrunt.hcl +0 -3
  205. package/generators/organization/clan-project/templates/department/terragrunt.hcl +0 -32
  206. package/generators/organization/clan-project/templates/tribe/terragrunt.hcl +0 -67
  207. package/generators/organization/clan-project/templates/tribe/tribe.yaml +0 -19
  208. package/generators/organization/command.json +0 -8
  209. package/src/BaseGenerator.js +0 -73
  210. package/src/SecretsGenerator.js +0 -105
  211. package/src/cli.js +0 -73
  212. package/src/dependency-check.js +0 -48
  213. package/src/update-check.js +0 -30
  214. package/src/validators.js +0 -32
  215. package/src/yeoman.js +0 -71
@@ -1,9 +0,0 @@
1
- variable "network" {
2
- description = "The name or self_link of the network to attach this firewall to"
3
- type = string
4
- }
5
-
6
- variable "project" {
7
- description = "The ID of the project in which the resource belongs"
8
- type = string
9
- }
@@ -1,32 +0,0 @@
1
- # Terragrunt will copy the Terraform configurations specified by the source parameter, along with any files in the
2
- # working directory, into a temporary folder, and execute your Terraform commands in that folder.
3
- terraform {
4
- source = "config/"
5
- }
6
-
7
- # Include all settings from the root terragrunt.hcl file
8
- include {
9
- path = find_in_parent_folders("terragrunt_root.hcl")
10
- }
11
-
12
- dependency "network" {
13
- config_path = "../"
14
- mock_outputs = {
15
- network_self_link = "dummy-net"
16
- }
17
- }
18
-
19
- dependency "clan_project" {
20
- config_path = "../../../"
21
- mock_outputs = {
22
- project_id = "dummy-id"
23
- }
24
- }
25
-
26
- # These are the variables we have to pass in to use the module specified in the terragrunt configuration above
27
- inputs = merge(
28
- {
29
- network = dependency.network.outputs.network_self_link
30
- project = dependency.clan_project.outputs.project_id
31
- }
32
- )
@@ -1,54 +0,0 @@
1
- locals {
2
- network_name = "clan-network"
3
-
4
- subnets = [
5
- {
6
- subnet_name = "k8s-subnet"
7
- subnet_ip = "10.152.16.0/23"
8
- subnet_region = "europe-west1"
9
- subnet_private_access = true
10
- },
11
- {
12
- subnet_name = "clan-resources"
13
- subnet_ip = "10.152.20.0/22"
14
- subnet_region = "europe-west1"
15
- subnet_private_access = true
16
- },
17
- {
18
- subnet_name = "vpc-connector-subnet"
19
- subnet_ip = "10.8.0.0/28"
20
- subnet_region = "europe-west1"
21
- description = "The subnet must be used only for Serverless VPC connector"
22
- subnet_private_access = true
23
- },
24
- {
25
- subnet_name = "internal-lb-subnet"
26
- subnet_ip = "10.10.0.0/23"
27
- subnet_region = "europe-west1"
28
- purpose = "REGIONAL_MANAGED_PROXY"
29
- role = "ACTIVE"
30
- description = "Reserved proxy-only subnet for Internal load balancing"
31
- },
32
- {
33
- subnet_name = "psc-subnet"
34
- subnet_ip = "10.12.0.0/22"
35
- subnet_region = "europe-west1"
36
- purpose = "PRIVATE_SERVICE_CONNECT"
37
- role = "ACTIVE"
38
- description = "Subnet for private service connections"
39
- }
40
- ]
41
-
42
- secondary_ranges = {
43
- "k8s-subnet" = [
44
- {
45
- range_name = "pods-cidr"
46
- ip_cidr_range = "172.18.0.0/20"
47
- },
48
- {
49
- range_name = "services-cidr"
50
- ip_cidr_range = "172.19.0.0/20"
51
- }
52
- ]
53
- }
54
- }
@@ -1,29 +0,0 @@
1
- # Terragrunt will copy the Terraform configurations specified by the source parameter, along with any files in the
2
- # working directory, into a temporary folder, and execute your Terraform commands in that folder.
3
- terraform {
4
- source = "git::https://github.com/terraform-google-modules/terraform-google-network//?ref=v9.1.0"
5
- }
6
-
7
- # Include all settings from the root terragrunt.hcl file
8
- include {
9
- path = find_in_parent_folders("terragrunt_root.hcl")
10
- }
11
-
12
- dependency "project" {
13
- config_path = "../../"
14
- mock_outputs = {
15
- project_id = "project-dummy-id"
16
- }
17
- }
18
-
19
- locals {
20
- spec_vars = read_terragrunt_config("${get_terragrunt_dir()}/spec.hcl")
21
- }
22
-
23
- # These are the variables we have to pass in to use the module specified in the terragrunt configuration above
24
- inputs = merge(
25
- local.spec_vars.locals,
26
- {
27
- project_id = dependency.project.outputs.project_id
28
- }
29
- )
@@ -1,18 +0,0 @@
1
- resource "google_compute_global_address" "private_ip_alloc" {
2
- provider = google-beta
3
-
4
- project = var.project
5
- name = "private-ip-peering"
6
- description = "VPC Private connection"
7
- purpose = var.purpose
8
- address_type = var.address_type
9
- prefix_length = var.prefix_length
10
- network = var.network
11
- labels = var.address_labels
12
- }
13
-
14
- resource "google_service_networking_connection" "peering" {
15
- network = var.network
16
- service = "servicenetworking.googleapis.com"
17
- reserved_peering_ranges = [google_compute_global_address.private_ip_alloc.name]
18
- }
@@ -1,27 +0,0 @@
1
- variable purpose {
2
- type = string
3
- default = "VPC_PEERING"
4
- }
5
-
6
- variable address_type {
7
- type = string
8
- default = "INTERNAL"
9
- }
10
-
11
- variable project {
12
- type = string
13
- }
14
-
15
- variable prefix_length {
16
- type = number
17
- default = 20
18
- }
19
-
20
- variable network {
21
- type = string
22
- }
23
-
24
- variable address_labels {
25
- type = map
26
- default = {}
27
- }
@@ -1,35 +0,0 @@
1
- terraform {
2
- source = "config/"
3
- }
4
-
5
- dependency "project" {
6
- config_path = "../../"
7
- mock_outputs = {
8
- project_id = "project-dummy-id"
9
- }
10
- }
11
-
12
- dependency "network" {
13
- config_path = "../network"
14
- mock_outputs = {
15
- network_self_link = "network-dummy-name"
16
- }
17
- }
18
-
19
- include {
20
- path = find_in_parent_folders("terragrunt_root.hcl")
21
- }
22
-
23
- locals {
24
- tribe_yaml = yamldecode(file(find_in_parent_folders("tribe.yaml")))
25
- }
26
-
27
- inputs = merge(
28
- {
29
- project = dependency.project.outputs.project_id
30
- network = dependency.network.outputs.network_self_link
31
- address_labels = {
32
- cc = local.tribe_yaml.costcenter
33
- }
34
- }
35
- )
@@ -1,40 +0,0 @@
1
- # Terragrunt will copy the Terraform configurations specified by the source parameter, along with any files in the
2
- # working directory, into a temporary folder, and execute your Terraform commands in that folder.
3
- terraform {
4
- source = "git::https://github.com/terraform-google-modules/terraform-google-network//modules/vpc-serverless-connector-beta?ref=v9.1.0"
5
- }
6
-
7
- # Include all settings from the root terragrunt.hcl file
8
- include {
9
- path = find_in_parent_folders("terragrunt_root.hcl")
10
- }
11
-
12
- dependency "project" {
13
- config_path = "../../"
14
- mock_outputs = {
15
- project_id = "project-dummy-id"
16
- }
17
- }
18
-
19
- locals {
20
- clan_name = basename(dirname(dirname(dirname(get_terragrunt_dir()))))
21
- }
22
-
23
- # These are the variables we have to pass in to use the module specified in the terragrunt configuration above
24
- inputs = merge(
25
- {
26
- project_id = dependency.project.outputs.project_id
27
- vpc_connectors = [
28
- {
29
- name = "${local.clan_name}-vpc-connector"
30
- region = "europe-west1"
31
- subnet_name = "vpc-connector-subnet"
32
- host_project_id = dependency.project.outputs.project_id
33
- machine_type = "e2-micro"
34
- min_instances = 2
35
- max_instances = 3
36
- max_throughput = 300
37
- }
38
- ]
39
- }
40
- )
@@ -1,3 +0,0 @@
1
- include {
2
- path = find_in_parent_folders("terragrunt_root.hcl")
3
- }
@@ -1,7 +0,0 @@
1
- {
2
- "description": "Create clan resources with GKE Autopilot cluster.",
3
- "query": "What do you want to create?",
4
- "require": [
5
- "org"
6
- ]
7
- }
@@ -1,4 +0,0 @@
1
- {
2
- "name": "BigQuery",
3
- "description": "Create a BigQuery resource"
4
- }
@@ -1,284 +0,0 @@
1
- const path = require('path');
2
- const chalk = require('chalk');
3
- const { required } = require('../../../src/validators');
4
- const BaseGenerator = require('../../../src/BaseGenerator');
5
-
6
- module.exports = class extends BaseGenerator {
7
- prompting() {
8
- const prompts = [
9
- {
10
- type: 'list',
11
- name: 'resourceType',
12
- message: 'Select type of resource you want to create',
13
- default: 'datasets',
14
- choices: ['scheduledQueries', 'datasets'],
15
- },
16
- {
17
- when: (response) => response.resourceType === 'scheduledQueries',
18
- type: 'input',
19
- name: 'queryName',
20
- message: 'Please provide the name for the transfer config',
21
- validate: required,
22
- },
23
- {
24
- when: (response) => response.resourceType === 'scheduledQueries',
25
- type: 'input',
26
- name: 'dataSourceId',
27
- message: 'Please provide the data source id. Cannot be changed once the transfer config is created.',
28
- validate: required,
29
- },
30
- {
31
- when: (response) => response.resourceType === 'scheduledQueries',
32
- type: 'input',
33
- name: 'destinationDatasetId',
34
- message: 'Please provide the BigQuery target dataset id. Leave empty to specify later',
35
- },
36
- {
37
- when: (response) => response.resourceType === 'scheduledQueries',
38
- type: 'input',
39
- name: 'schedule',
40
- message: 'Please provide the data transfer schedule. Format here: https://cloud.google.com/appengine/docs/flexible/python/scheduling-jobs-with-cron-yaml#the_schedule_format',
41
- validate: required,
42
- },
43
- {
44
- when: (response) => response.resourceType === 'scheduledQueries',
45
- type: 'input',
46
- name: 'notificationPubsubTopic',
47
- message: 'Please provide Pub/Sub topic full name where notifications will be sent after transfer finish. Leave empty to specify later',
48
- },
49
- {
50
- when: (response) => response.resourceType === 'scheduledQueries',
51
- type: 'input',
52
- name: 'dataRefreshWindow',
53
- message: 'Please provide the number of days to look back to automatically refresh the data. Leave empty to specify later',
54
- },
55
- {
56
- when: (response) => response.resourceType === 'scheduledQueries',
57
- type: 'list',
58
- name: 'enableFailureEmail',
59
- message: 'Select if you want to enable notifications to be sent to the email address of the user who owns this transfer config if the run fails',
60
- default: 'false',
61
- choices: ['false', 'true'],
62
- },
63
- {
64
- when: (response) => response.resourceType === 'scheduledQueries',
65
- type: 'input',
66
- name: 'dataPathTemplate',
67
- message: 'Please provide the Cloud Storage URI that contains your files to be transferred',
68
- validate: required,
69
- },
70
- {
71
- when: (response) => response.resourceType === 'scheduledQueries',
72
- type: 'input',
73
- name: 'destinationTableTemplate',
74
- message: 'Please provide the name of your destination table',
75
- validate: required,
76
- },
77
- {
78
- when: (response) => response.resourceType === 'scheduledQueries',
79
- type: 'input',
80
- name: 'fileFormat',
81
- message: 'Please provide the type of files you want to transfe. Supported values CSV, JSON, AVRO, PARQUET, or ORC',
82
- validate: required,
83
- },
84
- {
85
- when: (response) => response.resourceType === 'datasets',
86
- type: 'input',
87
- name: 'datasetId',
88
- message: 'Please provide the dataset ID (must be alphanumeric, plus underscores)',
89
- validate: required,
90
- },
91
- {
92
- when: (response) => response.resourceType === 'datasets',
93
- type: 'input',
94
- name: 'datasetName',
95
- message: 'Please provide the user-frienldy name for the dataset',
96
- validate: required,
97
- },
98
- {
99
- when: (response) => response.resourceType === 'datasets',
100
- type: 'input',
101
- name: 'description',
102
- message: 'Please provide the description for the dataset',
103
- validate: required,
104
- },
105
- {
106
- when: (response) => response.resourceType === 'datasets',
107
- type: 'list',
108
- name: 'createTable',
109
- message: 'Do you want to create a table?',
110
- default: 'no',
111
- choices: ['yes', 'no'],
112
- },
113
- {
114
- when: (response) => response.createTable === 'yes' && response.resourceType === 'datasets',
115
- type: 'input',
116
- name: 'tableId',
117
- message: 'Please provide the ID for the table',
118
- validate: required,
119
- },
120
- {
121
- when: (response) => response.createTable === 'yes' && response.resourceType === 'datasets',
122
- type: 'input',
123
- name: 'expirationTime',
124
- message: 'Please provide the time when the table expires (in milliseconds since the epoch). If set to `null`, the table will persist indefinitely.',
125
- validate: required,
126
- },
127
- {
128
- when: (response) => response.resourceType === 'datasets',
129
- type: 'list',
130
- name: 'createRoutine',
131
- message: 'Do you want to create a routine?',
132
- default: 'no',
133
- choices: ['yes', 'no'],
134
- },
135
- {
136
- when: (response) => response.createRoutine === 'yes' && response.resourceType === 'datasets',
137
- type: 'input',
138
- name: 'routineId',
139
- message: 'Please provide the ID of the routine. The ID must contain only letters, numbers, or underscores',
140
- validate: required,
141
- },
142
- {
143
- when: (response) => response.createRoutine === 'yes' && response.resourceType === 'datasets',
144
- type: 'input',
145
- name: 'routineDescription',
146
- message: 'Please provide the description of the routine',
147
- validate: required,
148
- },
149
- {
150
- when: (response) => response.createRoutine === 'yes' && response.resourceType === 'datasets',
151
- type: 'list',
152
- name: 'routineType',
153
- message: 'Please select a routine type',
154
- default: 'PROCEDURE',
155
- choices: ['SCALAR_FUNCTION', 'PROCEDURE'],
156
- },
157
- {
158
- when: (response) => response.createRoutine === 'yes' && response.resourceType === 'datasets',
159
- type: 'list',
160
- name: 'language',
161
- message: 'Please select a language of the routine',
162
- default: 'SQL',
163
- choices: ['SQL', 'JAVASCRIPT'],
164
- },
165
- {
166
- when: (response) => response.createRoutine === 'yes' && response.resourceType === 'datasets',
167
- type: 'input',
168
- name: 'definitionBody',
169
- message: 'Please provide the body of the routine, specify null if not needed',
170
- validate: required,
171
- },
172
- ];
173
-
174
- return this.prompt(prompts).then((props) => {
175
- this.answers = props;
176
- });
177
- }
178
-
179
- writing() {
180
- const {
181
- datasetId,
182
- datasetName,
183
- description,
184
- createTable,
185
- tableId,
186
- expirationTime,
187
- createRoutine,
188
- routineId,
189
- routineType,
190
- language,
191
- definitionBody,
192
- routineDescription,
193
- resourceType,
194
- dataSourceId,
195
- queryName,
196
- destinationDatasetId,
197
- schedule,
198
- notificationPubsubTopic,
199
- dataRefreshWindow,
200
- enableFailureEmail,
201
- dataPathTemplate,
202
- destinationTableTemplate,
203
- fileFormat,
204
- } = this.answers;
205
-
206
- ['prod', 'staging'].forEach((env) => {
207
- if (createTable === 'no' && resourceType === 'datasets') {
208
- this.copyDir(
209
- 'bigquery',
210
- path.join('infra', env, 'bigquery', datasetId),
211
- {
212
- ...this.answers,
213
- env,
214
- datasetId,
215
- datasetName,
216
- description,
217
- createTable,
218
- createRoutine,
219
- routineId,
220
- routineType,
221
- language,
222
- definitionBody,
223
- routineDescription,
224
- },
225
- );
226
- }
227
-
228
- if (createTable === 'yes' && resourceType === 'datasets') {
229
- ['schema', 'bigquery'].forEach((folder) => {
230
- this.copyDir(
231
- folder,
232
- path.join('infra', env, 'bigquery', datasetId),
233
- {
234
- ...this.answers,
235
- env,
236
- datasetId,
237
- datasetName,
238
- description,
239
- createTable,
240
- tableId,
241
- expirationTime,
242
- createRoutine,
243
- routineId,
244
- routineType,
245
- language,
246
- definitionBody,
247
- routineDescription,
248
- },
249
- );
250
- });
251
- }
252
-
253
- if (resourceType === 'scheduledQueries') {
254
- this.copyDir(
255
- 'scheduled-queries',
256
- path.join('infra', env, 'scheduled-queries'),
257
- {
258
- ...this.answers,
259
- env,
260
- dataSourceId,
261
- queryName,
262
- destinationDatasetId,
263
- schedule,
264
- notificationPubsubTopic,
265
- dataRefreshWindow,
266
- enableFailureEmail,
267
- dataPathTemplate,
268
- destinationTableTemplate,
269
- fileFormat,
270
- },
271
- );
272
- }
273
- });
274
- }
275
-
276
- end() {
277
- this.log(`
278
- ${chalk.green(`Your BigQuery resources have now been created. To finalize your configuration, please continue
279
- with manual editing of the generated files.`)}
280
- ${chalk.green('1.')} Review and add modify schema.json file, change null values to needed ones.
281
- ${chalk.green('2.')} Push this change in a feature branch and open a pull request.
282
- `);
283
- }
284
- };
@@ -1,8 +0,0 @@
1
- locals {
2
- #Dataset IDs must be alphanumeric (plus underscores) and must be at most 1024 characters long
3
- dataset_id = "<%-datasetId%>"
4
- dataset_name = "<%-datasetName%>"
5
- description = "<%-description%>"
6
- location = "EU"
7
- delete_contents_on_destroy = true
8
- }
@@ -1,53 +0,0 @@
1
- # Terragrunt will copy the Terraform configurations specified by the source parameter, along with any files in the
2
- # working directory, into a temporary folder, and execute your Terraform commands in that folder.
3
- terraform {
4
- source = "git::https://github.com/terraform-google-modules/terraform-google-bigquery?ref=v8.0.0"
5
- }
6
-
7
- # Include all settings from the root terragrunt.hcl file
8
- include {
9
- path = find_in_parent_folders("terragrunt_root.hcl")
10
- }
11
-
12
- locals {
13
- spec_vars = read_terragrunt_config("${get_terragrunt_dir()}/spec.hcl")
14
- project_vars = read_terragrunt_config(find_in_parent_folders("project.hcl"))
15
- }
16
-
17
- # These are the variables we have to pass in to use the module specified in the terragrunt configuration above
18
- inputs = merge(
19
- local.spec_vars.locals,
20
- local.project_vars.locals,
21
- {
22
- project_id = local.project_vars.locals.project_id
23
- tables = <% if (createTable == 'no') { %>[]<% } else { %>[
24
- {
25
- table_id = "<%-tableId%>",
26
- schema = "./schema.json",
27
- time_partitioning = {
28
- type = "DAY",
29
- field = null,
30
- require_partition_filter = false,
31
- expiration_ms = null,
32
- },
33
- range_partitioning = null,
34
- clustering = null,
35
- expiration_time = <%-expirationTime%>,
36
- labels = {
37
- env = "<%-env%>"
38
- },
39
- ]<% } %>
40
-
41
- routines = <% if (createRoutine == 'no') { %>[]<% } else { %>[
42
- {
43
- routine_id = "<%-routineId%>",
44
- routine_type = "<%-routineType%>",
45
- language = "<%-language%>",
46
- definition_body = "<%-definitionBody%>",
47
- return_type = null,
48
- description = "<%-routineDescription%>",
49
- arguments = null,
50
- },
51
- ]<% } %>
52
- }
53
- )
@@ -1,56 +0,0 @@
1
- # Terragrunt will copy the Terraform configurations specified by the source parameter, along with any files in the
2
- # working directory, into a temporary folder, and execute your Terraform commands in that folder.
3
- terraform {
4
- source = "git::https://github.com/extenda/terraform-google-bigquery//modules/scheduled_queries"
5
- }
6
-
7
- # Include all settings from the root terragrunt.hcl file
8
- include {
9
- path = find_in_parent_folders("terragrunt_root.hcl")
10
- }
11
-
12
- locals {
13
- project_vars = read_terragrunt_config(find_in_parent_folders("project.hcl"))
14
- }
15
-
16
- # These are the variables we have to pass in to use the module specified in the terragrunt configuration above
17
- inputs = merge(
18
- local.project_vars.locals,
19
- {
20
- project_id = local.project_vars.locals.project_id
21
- queries = [
22
- {
23
- name = "<%-queryName%>"
24
- location = "EU"
25
- data_source_id = "<%-dataSourceId%>" # Cannot be changed once the transfer config is created.
26
- <% if (destinationDatasetId == '') { %> destination_dataset_id = null <% } else { %>
27
- destination_dataset_id = "<%-destinationDatasetId%>" <% } %>
28
-
29
- # If the data source does not support a custom schedule, this should be empty.
30
- # If it is empty, the default value for the data source will be used. The specified times are in UTC.
31
- schedule = "<%-schedule%>"
32
-
33
- # Pub/Sub topic where notifications will be sent after transfer runs associated with this transfer config finish.
34
- <% if (notificationPubsubTopic == '') { %>
35
- notification_pubsub_topic = null <% } else { %> notification_pubsub_topic = "<%-notificationPubsubTopic%>" <% } %>
36
-
37
- # The number of days to look back to automatically refresh the data. Only valid if the data source supports the feature.
38
- <% if (dataRefreshWindow == '') { %> data_refresh_window_days = null <% } else { %>
39
- data_refresh_window_days = "<%-dataRefreshWindow%>" <% } %>
40
-
41
- # When set to true, no runs are scheduled for a given transfer.
42
- disabled = false
43
-
44
- # Required parameters for Cloud Storage
45
- params = {
46
- data_path_template = "<%-dataPathTemplate%>"
47
- destination_table_name_template = "<%-destinationTableTemplate%>"
48
- file_format = "<%-fileFormat%>"
49
- }
50
-
51
- # Email notifications will be sent according to these preferences to the email address of the user who owns this transfer config
52
- enable_failure_email = <%-enableFailureEmail%>
53
- }
54
- ]
55
- }
56
- )