infra/project.tf
Rama main · réplica de lectura del repositorio original.
locals {
apis = toset([
"artifactregistry.googleapis.com",
"billingbudgets.googleapis.com",
"certificatemanager.googleapis.com",
"cloudkms.googleapis.com",
"cloudresourcemanager.googleapis.com",
"cloudscheduler.googleapis.com",
"compute.googleapis.com",
"iamcredentials.googleapis.com",
"logging.googleapis.com",
"monitoring.googleapis.com",
"networksecurity.googleapis.com",
"redis.googleapis.com",
"run.googleapis.com",
"secretmanager.googleapis.com",
"servicenetworking.googleapis.com",
"serviceusage.googleapis.com",
"sqladmin.googleapis.com",
"sts.googleapis.com",
])
}
resource "google_project_service" "this" {
for_each = local.apis
service = each.value
disable_on_destroy = false
}
resource "google_artifact_registry_repository" "tamery" {
repository_id = "tamery"
location = local.region
format = "DOCKER"
# Rollback puts a service on an earlier image, so the newest ones stay however old they are.
cleanup_policies {
id = "keep-recent"
action = "KEEP"
most_recent_versions {
keep_count = 10
}
}
cleanup_policies {
id = "delete-old"
action = "DELETE"
condition {
older_than = "2592000s"
}
}
}
resource "google_billing_budget" "monthly" {
billing_account = var.billing_account
display_name = "Tamery monthly"
budget_filter {
projects = ["projects/${data.google_project.current.number}"]
calendar_period = "MONTH"
credit_types_treatment = "INCLUDE_ALL_CREDITS"
}
amount {
specified_amount {
currency_code = "USD"
units = "250"
}
}
dynamic "threshold_rules" {
for_each = [[0.5, "CURRENT_SPEND"], [0.9, "CURRENT_SPEND"], [1.0, "CURRENT_SPEND"], [1.0, "FORECASTED_SPEND"]]
content {
threshold_percent = threshold_rules.value[0]
spend_basis = threshold_rules.value[1]
}
}
}