google_gar/main.tf (44 lines of code) (raw):
/**
* # Terraform Module: Google Artifact Registry repository
* Creates a GAR repository and a service account to access it.
*/
resource "google_project_service" "gar" {
project = var.project
disable_on_destroy = "false"
service = "artifactregistry.googleapis.com"
}
resource "google_artifact_registry_repository" "repository" {
provider = google-beta
depends_on = [google_project_service.gar]
repository_id = local.repository_id
format = var.format
location = var.location
description = var.description
project = var.project
labels = {
app_code = var.application
realm = var.realm
}
}
resource "google_artifact_registry_repository_iam_member" "reader" {
provider = google-beta
for_each = toset(var.repository_readers)
project = var.project
location = var.location
repository = google_artifact_registry_repository.repository.name
role = "roles/artifactregistry.reader"
member = each.key
}
resource "google_service_account" "writer_service_account" {
account_id = var.writer_service_account_id
display_name = "Artifact Writer"
project = var.project
}
resource "google_artifact_registry_repository_iam_member" "writer" {
provider = google-beta
project = var.project
location = var.location
repository = google_artifact_registry_repository.repository.name
role = "roles/artifactregistry.writer"
member = "serviceAccount:${google_service_account.writer_service_account.email}"
}