Skip to content

Commit 09f7644

Browse files
committed
Split resources by service (for now)
1 parent 06eba57 commit 09f7644

File tree

6 files changed

+79
-85
lines changed

6 files changed

+79
-85
lines changed

packages/ping-home/terraform/alerts.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ data "google_secret_manager_secret_version" "email" {
66
resource "google_monitoring_notification_channel" "email" {
77
display_name = "Home LAN Alerts"
88
type = "email"
9-
labels = { email_address = data.google_secret_manager_secret_version.email.secret_data }
9+
labels = { email_address = data.google_secret_manager_secret_version.email.secret_data }
1010
}
1111

1212
resource "google_monitoring_alert_policy" "lan_down" {
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
resource "google_artifact_registry_repository" "repo" {
2+
location = var.google_region
3+
repository_id = "lan-checker-repo"
4+
description = "Docker repository for the Home LAN Checker"
5+
format = "DOCKER"
6+
depends_on = [google_project_service.apis]
7+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
resource "google_cloud_run_v2_service" "checker" {
2+
name = "home-lan-checker"
3+
location = var.google_region
4+
template {
5+
service_account = google_service_account.cloudrun.email
6+
scaling {
7+
min_instance_count = 0
8+
max_instance_count = 1
9+
}
10+
max_instance_request_concurrency = 1
11+
containers {
12+
image = "us-docker.pkg.dev/cloudrun/container/hello"
13+
resources {
14+
limits = {
15+
cpu = "1000m"
16+
memory = "256Mi"
17+
}
18+
cpu_idle = true
19+
}
20+
env {
21+
name = "HOME_LAN_ENDPOINT"
22+
value_source {
23+
secret_key_ref {
24+
secret = "home-lan-endpoint"
25+
version = "latest"
26+
}
27+
}
28+
}
29+
env {
30+
name = "TS_AUTHKEY"
31+
value_source {
32+
secret_key_ref {
33+
secret = "tailscale-auth-key"
34+
version = "latest"
35+
}
36+
}
37+
}
38+
env {
39+
name = "TS_HOSTNAME"
40+
value = "gcp-health-checker"
41+
}
42+
env {
43+
name = "TS_SOCKS5_SERVER"
44+
value = "localhost:1055"
45+
}
46+
}
47+
}
48+
lifecycle { ignore_changes = [template[0].containers[0].image] }
49+
depends_on = [
50+
google_project_service.apis,
51+
google_secret_manager_secret_iam_member.cloudrun_home_lan_endpoint,
52+
google_secret_manager_secret_iam_member.cloudrun_tailscale_auth_key,
53+
]
54+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
resource "google_cloud_scheduler_job" "cron" {
2+
depends_on = [google_project_service.apis]
3+
name = "trigger-lan-check"
4+
region = "europe-west1"
5+
description = "Pings the home LAN every 5 minutes"
6+
schedule = "*/5 * * * *"
7+
time_zone = "UTC"
8+
attempt_deadline = "30s"
9+
http_target {
10+
http_method = "GET"
11+
uri = google_cloud_run_v2_service.checker.uri
12+
oidc_token {
13+
service_account_email = google_service_account.cloudrun.email
14+
audience = "${google_cloud_run_v2_service.checker.uri}/"
15+
}
16+
}
17+
}

packages/ping-home/terraform/main.tf

Lines changed: 0 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -34,84 +34,3 @@ resource "google_project_service" "apis" {
3434
service = each.value
3535
disable_on_destroy = false
3636
}
37-
38-
resource "google_artifact_registry_repository" "repo" {
39-
location = var.google_region
40-
repository_id = "lan-checker-repo"
41-
description = "Docker repository for the Home LAN Checker"
42-
format = "DOCKER"
43-
depends_on = [google_project_service.apis]
44-
}
45-
46-
resource "google_cloud_run_v2_service" "checker" {
47-
name = "home-lan-checker"
48-
location = var.google_region
49-
template {
50-
service_account = google_service_account.cloudrun.email
51-
scaling {
52-
min_instance_count = 0
53-
max_instance_count = 1
54-
}
55-
max_instance_request_concurrency = 1
56-
containers {
57-
image = "us-docker.pkg.dev/cloudrun/container/hello"
58-
resources {
59-
limits = {
60-
cpu = "1000m"
61-
memory = "256Mi"
62-
}
63-
cpu_idle = true
64-
}
65-
env {
66-
name = "HOME_LAN_ENDPOINT"
67-
value_source {
68-
secret_key_ref {
69-
secret = "home-lan-endpoint"
70-
version = "latest"
71-
}
72-
}
73-
}
74-
env {
75-
name = "TS_AUTHKEY"
76-
value_source {
77-
secret_key_ref {
78-
secret = "tailscale-auth-key"
79-
version = "latest"
80-
}
81-
}
82-
}
83-
env {
84-
name = "TS_HOSTNAME"
85-
value = "gcp-health-checker"
86-
}
87-
env {
88-
name = "TS_SOCKS5_SERVER"
89-
value = "localhost:1055"
90-
}
91-
}
92-
}
93-
lifecycle { ignore_changes = [template[0].containers[0].image] }
94-
depends_on = [
95-
google_project_service.apis,
96-
google_secret_manager_secret_iam_member.cloudrun_home_lan_endpoint,
97-
google_secret_manager_secret_iam_member.cloudrun_tailscale_auth_key,
98-
]
99-
}
100-
101-
resource "google_cloud_scheduler_job" "cron" {
102-
depends_on = [google_project_service.apis]
103-
name = "trigger-lan-check"
104-
region = "europe-west1"
105-
description = "Pings the home LAN every 5 minutes"
106-
schedule = "*/5 * * * *"
107-
time_zone = "UTC"
108-
attempt_deadline = "30s"
109-
http_target {
110-
http_method = "GET"
111-
uri = google_cloud_run_v2_service.checker.uri
112-
oidc_token {
113-
service_account_email = google_service_account.cloudrun.email
114-
audience = "${google_cloud_run_v2_service.checker.uri}/"
115-
}
116-
}
117-
}

packages/ping-home/terraform/secrets.tf renamed to packages/ping-home/terraform/secret-manager.tf

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
# GCP Secrets for the application.
2-
# Terraform creates the secret resources; populate values using populate-secrets.sh.
3-
41
resource "google_secret_manager_secret" "home_lan_endpoint" {
52
secret_id = "home-lan-endpoint"
63
replication {

0 commit comments

Comments
 (0)