Skip to content

Commit a0c6ee9

Browse files
authored
Refactor terraform modules (#51)
* Refactor terraform modules * Update `tls_private_key` security notice in secretmanager module * Update `tls_private_key` security notice in secretmanager module * Remove reference to undeclared resources * Remove backend configuration in storage module
1 parent df7e2e0 commit a0c6ee9

File tree

8 files changed

+120
-77
lines changed

8 files changed

+120
-77
lines changed

deployment/live/gcp/test/terragrunt.hcl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
terraform {
2-
source = "${get_repo_root()}/deployment/modules/gcp//storage"
2+
source = "${get_repo_root()}/deployment/modules/gcp//conformance"
33
}
44

55
locals {
6-
project_id = get_env("GOOGLE_PROJECT", "phboneff-dev")
7-
location = get_env("GOOGLE_REGION", "us-central1")
8-
base_name = get_env("TESSERA_BASE_NAME", "tessera-staticct")
6+
project_id = get_env("GOOGLE_PROJECT", "phboneff-dev")
7+
location = get_env("GOOGLE_REGION", "us-central1")
8+
base_name = get_env("TESSERA_BASE_NAME", "tessera-staticct")
99
}
1010

1111
inputs = local
@@ -20,7 +20,7 @@ remote_state {
2020
prefix = "terraform.tfstate"
2121

2222
gcs_bucket_labels = {
23-
name = "terraform_state_storage"
23+
name = "terraform_state_conformance"
2424
}
2525
}
2626
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
terraform {
2+
backend "gcs" {}
3+
}
4+
5+
module "storage" {
6+
source = "../storage"
7+
8+
project_id = var.project_id
9+
base_name = var.base_name
10+
location = var.location
11+
}
12+
13+
module "secretmanager" {
14+
source = "../secretmanager"
15+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
output "ecdsa_p256_public_key_id" {
2+
description = "Signer public key (P256_SHA256)"
3+
value = module.secretmanager.ecdsa_p256_public_key_id
4+
}
5+
6+
output "ecdsa_p256_private_key_id" {
7+
description = "Signer private key (P256_SHA256)"
8+
value = module.secretmanager.ecdsa_p256_private_key_id
9+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
variable "project_id" {
2+
description = "GCP project ID where the log is hosted"
3+
type = string
4+
}
5+
6+
variable "base_name" {
7+
description = "Base name to use when naming resources"
8+
type = string
9+
}
10+
11+
variable "location" {
12+
description = "Location in which to create resources"
13+
type = string
14+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
terraform {
2+
required_providers {
3+
google = {
4+
source = "registry.terraform.io/hashicorp/google"
5+
version = "6.1.0"
6+
}
7+
}
8+
}
9+
10+
# Secret Manager
11+
12+
resource "google_project_service" "secretmanager_googleapis_com" {
13+
service = "secretmanager.googleapis.com"
14+
disable_on_destroy = false
15+
}
16+
17+
# ECDSA key with P256 elliptic curve. Do NOT use this in production environment.
18+
#
19+
# Security Notice
20+
# The private key generated by this resource will be stored unencrypted in your
21+
# Terraform state file. Use of this resource for production deployments is not
22+
# recommended.
23+
#
24+
# See https://registry.terraform.io/providers/hashicorp/tls/latest/docs/resources/private_key.
25+
resource "tls_private_key" "sctfe_ecdsa_p256" {
26+
algorithm = "ECDSA"
27+
ecdsa_curve = "P256"
28+
}
29+
30+
resource "google_secret_manager_secret" "sctfe_ecdsa_p256_public_key" {
31+
secret_id = "sctfe-ecdsa-p256-public-key"
32+
33+
labels = {
34+
label = "sctfe-public-key"
35+
}
36+
37+
replication {
38+
auto {}
39+
}
40+
41+
depends_on = [google_project_service.secretmanager_googleapis_com]
42+
}
43+
44+
resource "google_secret_manager_secret_version" "sctfe_ecdsa_p256_public_key" {
45+
secret = google_secret_manager_secret.sctfe_ecdsa_p256_public_key.id
46+
47+
secret_data = tls_private_key.sctfe_ecdsa_p256.public_key_pem
48+
}
49+
50+
resource "google_secret_manager_secret" "sctfe_ecdsa_p256_private_key" {
51+
secret_id = "sctfe-ecdsa-p256-private-key"
52+
53+
labels = {
54+
label = "sctfe-private-key"
55+
}
56+
57+
replication {
58+
auto {}
59+
}
60+
61+
depends_on = [google_project_service.secretmanager_googleapis_com]
62+
}
63+
64+
resource "google_secret_manager_secret_version" "sctfe_ecdsa_p256_private_key" {
65+
secret = google_secret_manager_secret.sctfe_ecdsa_p256_private_key.id
66+
67+
secret_data = tls_private_key.sctfe_ecdsa_p256.private_key_pem
68+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
output "ecdsa_p256_public_key_id" {
2+
description = "Signer public key (P256_SHA256)"
3+
value = google_secret_manager_secret_version.sctfe_ecdsa_p256_public_key.id
4+
}
5+
6+
output "ecdsa_p256_private_key_id" {
7+
description = "Signer private key (P256_SHA256)"
8+
value = google_secret_manager_secret_version.sctfe_ecdsa_p256_private_key.id
9+
}
Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
terraform {
2-
backend "gcs" {}
3-
42
required_providers {
53
google = {
64
source = "registry.terraform.io/hashicorp/google"
@@ -27,10 +25,6 @@ resource "google_project_service" "storage_googleapis_com" {
2725
service = "storage.googleapis.com"
2826
disable_on_destroy = false
2927
}
30-
resource "google_project_service" "secretmanager_googleapis_com" {
31-
service = "secretmanager.googleapis.com"
32-
disable_on_destroy = false
33-
}
3428

3529
## Resources
3630

@@ -69,59 +63,3 @@ resource "google_spanner_database" "dedup_db" {
6963
"CREATE TABLE IDSeq (id INT64 NOT NULL, h BYTES(MAX) NOT NULL, idx INT64 NOT NULL,) PRIMARY KEY (id, h)",
7064
]
7165
}
72-
73-
# Secret Manager
74-
75-
# ECDSA key with P256 elliptic curve. Do NOT use this in production environment.
76-
#
77-
# Security Notice
78-
# The private key generated by this resource will be stored unencrypted in your
79-
# Terraform state file. Use of this resource for production deployments is not
80-
# recommended. Instead, generate a private key file outside of Terraform and
81-
# distribute it securely to the system where Terraform will be run.
82-
#
83-
# See https://registry.terraform.io/providers/hashicorp/tls/latest/docs/resources/private_key.
84-
resource "tls_private_key" "sctfe_ecdsa_p256" {
85-
algorithm = "ECDSA"
86-
ecdsa_curve = "P256"
87-
}
88-
89-
resource "google_secret_manager_secret" "sctfe_ecdsa_p256_public_key" {
90-
secret_id = "sctfe-ecdsa-p256-public-key"
91-
92-
labels = {
93-
label = "sctfe-public-key"
94-
}
95-
96-
replication {
97-
auto {}
98-
}
99-
100-
depends_on = [google_project_service.secretmanager_googleapis_com]
101-
}
102-
103-
resource "google_secret_manager_secret_version" "sctfe_ecdsa_p256_public_key" {
104-
secret = google_secret_manager_secret.sctfe_ecdsa_p256_public_key.id
105-
106-
secret_data = tls_private_key.sctfe_ecdsa_p256.public_key_pem
107-
}
108-
109-
resource "google_secret_manager_secret" "sctfe_ecdsa_p256_private_key" {
110-
secret_id = "sctfe-ecdsa-p256-private-key"
111-
112-
labels = {
113-
label = "sctfe-private-key"
114-
}
115-
116-
replication {
117-
auto {}
118-
}
119-
120-
depends_on = [google_project_service.secretmanager_googleapis_com]
121-
}
122-
123-
resource "google_secret_manager_secret_version" "sctfe_ecdsa_p256_private_key" {
124-
secret = google_secret_manager_secret.sctfe_ecdsa_p256_private_key.id
125-
126-
secret_data = tls_private_key.sctfe_ecdsa_p256.private_key_pem
127-
}

deployment/modules/gcp/storage/outputs.tf

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,3 @@ output "dedup_spanner_db" {
1717
description = "Dedup Spanner database"
1818
value = google_spanner_database.dedup_db
1919
}
20-
21-
output "ecdsa_p256_public_key_id" {
22-
description = "Signer public key (P256_SHA256)"
23-
value = google_secret_manager_secret_version.sctfe_ecdsa_p256_public_key.id
24-
}
25-
26-
output "ecdsa_p256_private_key_id" {
27-
description = "Signer private key (P256_SHA256)"
28-
value = google_secret_manager_secret_version.sctfe_ecdsa_p256_private_key.id
29-
}

0 commit comments

Comments
 (0)