provisioning/terraform/jobs.tf (81 lines of code) (raw):
resource "google_cloud_run_v2_job" "setup" {
name = "setup"
location = var.region
template {
template {
service_account = google_service_account.automation.email
containers {
image = local.server_image_sha
command = ["setup"]
env {
name = "DJANGO_ENV"
value_source {
secret_key_ref {
secret = google_secret_manager_secret.django_settings.secret_id
version = "latest"
}
}
}
env {
# https://docs.djangoproject.com/en/4.2/ref/django-admin/#createsuperuser
name = "DJANGO_SUPERUSER_PASSWORD"
value_source {
secret_key_ref {
secret = google_secret_manager_secret.django_admin_password.secret_id
version = "latest"
}
}
}
volume_mounts {
name = "cloudsql"
mount_path = "/cloudsql"
}
}
volumes {
name = "cloudsql"
cloud_sql_instance {
instances = [google_sql_database_instance.postgres.connection_name]
}
}
}
}
depends_on = [
google_secret_manager_secret_version.django_settings,
google_project_service.enabled
]
}
resource "google_cloud_run_v2_job" "migrate" {
name = "migrate"
location = var.region
template {
template {
service_account = google_service_account.automation.email
containers {
image = local.server_image_sha
command = ["migrate"]
env {
name = "DJANGO_ENV"
value_source {
secret_key_ref {
secret = google_secret_manager_secret.django_settings.secret_id
version = "latest"
}
}
}
volume_mounts {
name = "cloudsql"
mount_path = "/cloudsql"
}
}
volumes {
name = "cloudsql"
cloud_sql_instance {
instances = [google_sql_database_instance.postgres.connection_name]
}
}
}
}
depends_on = [
google_secret_manager_secret_version.django_settings,
google_project_service.enabled
]
}