terraform: add scheduler job
Add a Cloud Scheduler job that will trigger a triage
run every hour.
Change-Id: I52f29cd66b143689dcd80b97577b7dc4d04d7168
Reviewed-on: https://go-review.googlesource.com/c/vuln/+/372179
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Julie Qiu <julie@golang.org>
diff --git a/terraform/environment/worker.tf b/terraform/environment/worker.tf
index f2092ab..26b97c0 100644
--- a/terraform/environment/worker.tf
+++ b/terraform/environment/worker.tf
@@ -32,12 +32,12 @@
type = number
}
-variable "client_id" {
+variable "oauth_client_id" {
description = "OAuth 2 client ID (visit APIs & Services > Credentials)"
type = string
}
-variable "client_secret" {
+variable "oauth_client_secret" {
description = "OAuth 2 client ID (visit APIs & Services > Credentials, click on client)"
type = string
}
@@ -132,7 +132,7 @@
# Load balancer for Cloud Run service.
resource "google_compute_region_network_endpoint_group" "worker" {
- count = var.client_id == ""? 0: 1
+ count = var.oauth_client_secret == ""? 0: 1
name = "${var.env}-vuln-worker-neg"
network_endpoint_type = "SERVERLESS"
project = var.project
@@ -143,7 +143,7 @@
}
module "worker_lb" {
- count = var.client_id == ""? 0: 1
+ count = var.oauth_client_secret == ""? 0: 1
source = "GoogleCloudPlatform/lb-http/google//modules/serverless_negs"
version = "~> 6.1.1"
@@ -169,8 +169,8 @@
iap_config = {
enable = true
- oauth2_client_id = var.client_id
- oauth2_client_secret = var.client_secret
+ oauth2_client_id = var.oauth_client_id
+ oauth2_client_secret = var.oauth_client_secret
}
log_config = {
enable = false
@@ -180,6 +180,39 @@
}
}
+output "worker_url" {
+ value = data.google_cloud_run_service.worker.status[0].url
+}
+
output "load_balancer_ip" {
- value = var.client_id == ""? "": module.worker_lb[0].external_ip
+ value = var.oauth_client_secret == ""? "": module.worker_lb[0].external_ip
+}
+
+################################################################
+# Other components.
+
+locals {
+ tz = "America/New_York"
+}
+
+data "google_compute_default_service_account" "default" {
+ project = var.project
+}
+
+resource "google_cloud_scheduler_job" "issue_triage" {
+ name = "${var.env}-issue-triage"
+ description = "Updates the DB and files issues."
+ schedule = "0 * * * *" # every hour
+ time_zone = local.tz
+ project = var.project
+ attempt_deadline = format("%ds", 60 * 60)
+
+ http_target {
+ http_method = "POST"
+ uri = "${google_cloud_run_service.worker.status[0].url}/update-and-issues"
+ oidc_token {
+ service_account_email = data.google_compute_default_service_account.default.email
+ audience = var.oauth_client_id
+ }
+ }
}
diff --git a/terraform/main.tf b/terraform/main.tf
index 386d1bb..6739480 100644
--- a/terraform/main.tf
+++ b/terraform/main.tf
@@ -50,8 +50,8 @@
region = local.region
use_profiler = false
min_frontend_instances = 0
- client_id = "" # go-discovery-exp does not allow external load balancers
- client_secret = ""
+ oauth_client_id = "55665122702-tk2rogkaalgru7pqibvbltqs7geev8j5.apps.googleusercontent.com"
+ oauth_client_secret = "" # go-discovery-exp does not allow external load balancers
}
# module "prod" {