Google Cloud Artifact Registry Module
This module simplifies the creation of repositories using Google Cloud Artifact Registry.
Standard Repository
module "docker_artifact_registry" {
source = "./fabric/modules/artifact-registry"
project_id = "myproject"
location = "europe-west1"
name = "myregistry"
iam = {
"roles/artifactregistry.admin" = ["group:cicd@example.com"]
}
}
# tftest modules=1 resources=2
Remote and Virtual Repositories
module "registry-local" {
source = "./fabric/modules/artifact-registry"
project_id = var.project_id
location = "europe-west1"
name = "local"
format = { python = {} }
}
module "registry-remote" {
source = "./fabric/modules/artifact-registry"
project_id = var.project_id
location = "europe-west1"
name = "remote"
format = { python = {} }
mode = { remote = true }
}
module "registry-virtual" {
source = "./fabric/modules/artifact-registry"
project_id = var.project_id
location = "europe-west1"
name = "virtual"
format = { python = {} }
mode = {
virtual = {
remote = {
repository = module.registry-remote.id
priority = 1
}
local = {
repository = module.registry-local.id
priority = 10
}
}
}
}
# tftest modules=3 resources=3 inventory=remote-virtual.yaml
Additional Docker and Maven Options
module "registry-docker" {
source = "./fabric/modules/artifact-registry"
project_id = var.project_id
location = "europe-west1"
name = "docker"
format = {
docker = {
immutable_tags = true
}
}
}
module "registry-maven" {
source = "./fabric/modules/artifact-registry"
project_id = var.project_id
location = "europe-west1"
name = "maven"
format = {
maven = {
allow_snapshot_overwrites = true
version_policy = "RELEASE"
}
}
}
# tftest modules=2 resources=2
Variables
name |
description |
type |
required |
default |
location |
Registry location. Use `gcloud beta artifacts locations list' to get valid values. |
string |
✓ |
|
name |
Registry name. |
string |
✓ |
|
project_id |
Registry project id. |
string |
✓ |
|
description |
An optional description for the repository. |
string |
|
"Terraform-managed registry" |
encryption_key |
The KMS key name to use for encryption at rest. |
string |
|
null |
format |
Repository format. |
object({…}) |
|
{ docker = {} } |
iam |
IAM bindings in {ROLE => [MEMBERS]} format. |
map(list(string)) |
|
{} |
labels |
Labels to be attached to the registry. |
map(string) |
|
{} |
mode |
Repository mode. |
object({…}) |
|
{ standard = true } |
Outputs
name |
description |
sensitive |
id |
Fully qualified repository id. |
|
image_path |
Repository path for images. |
|
name |
Repository name. |
|