2020-05-26 03:03:15 -07:00
# Google Cloud Artifact Registry Module
This module simplifies the creation of repositories using Google Cloud Artifact Registry.
2023-07-28 05:18:28 -07:00
<!-- BEGIN TOC -->
- [Standard Repository ](#standard-repository )
- [Remote and Virtual Repositories ](#remote-and-virtual-repositories )
2023-07-28 07:38:26 -07:00
- [Additional Docker and Maven Options ](#additional-docker-and-maven-options )
2023-12-01 02:33:02 -08:00
- [Cleanup Policies ](#cleanup-policies )
2023-07-28 05:18:28 -07:00
- [Variables ](#variables )
- [Outputs ](#outputs )
<!-- END TOC -->
2023-07-28 02:54:36 -07:00
## Standard Repository
2020-05-26 03:03:15 -07:00
```hcl
module "docker_artifact_registry" {
2022-09-06 08:46:09 -07:00
source = "./fabric/modules/artifact-registry"
2020-05-26 03:03:15 -07:00
project_id = "myproject"
location = "europe-west1"
2023-07-28 02:54:36 -07:00
name = "myregistry"
2023-06-19 22:53:37 -07:00
iam = {
2020-05-26 03:03:15 -07:00
"roles/artifactregistry.admin" = ["group:cicd@example.com"]
}
}
2022-01-28 11:15:35 -08:00
# tftest modules=1 resources=2
2020-05-26 03:03:15 -07:00
```
2023-07-28 02:54:36 -07:00
## Remote and Virtual Repositories
```hcl
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
}
}
}
}
2023-07-28 07:38:26 -07:00
# tftest modules=3 resources=3 inventory=remote-virtual.yaml
2023-07-28 02:54:36 -07:00
```
2023-07-28 07:38:26 -07:00
## Additional Docker and Maven Options
2023-07-28 02:54:36 -07:00
2023-07-28 07:38:26 -07:00
```hcl
2023-07-28 02:54:36 -07:00
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
```
2023-12-01 02:33:02 -08:00
## Cleanup Policies
```hcl
module "registry-docker" {
source = "./fabric/modules/artifact-registry"
project_id = var.project_id
location = "europe-west1"
name = "docker-cleanup-policies"
format = { docker = {} }
cleanup_policy_dry_run = false
cleanup_policies = {
keep-5-versions = {
action = "KEEP"
most_recent_versions = {
package_name_prefixes = ["test"]
keep_count = 5
}
}
keep-tagged-release = {
action = "KEEP"
condition = {
tag_state = "TAGGED"
tag_prefixes = ["release"]
package_name_prefixes = ["webapp", "mobile"]
}
}
}
}
# tftest modules=1 resources=1 inventory=cleanup-policies.yaml
```
2020-05-26 03:03:15 -07:00
<!-- BEGIN TFDOC -->
## Variables
| name | description | type | required | default |
2021-12-20 23:51:51 -08:00
|---|---|:---:|:---:|:---:|
2023-12-01 02:33:02 -08:00
| [cleanup_policies ](variables.tf#L17 ) | Object containing details about the cleanup policies for an Artifact Registry repository. | < code title = "map(object({ action = string condition = optional(object({ tag_state = optional(string) tag_prefixes = optional(list(string)) older_than = optional(string) newer_than = optional(string) package_name_prefixes = optional(list(string)) version_name_prefixes = optional(list(string)) })) most_recent_versions = optional(object({ package_name_prefixes = optional(list(string)) keep_count = optional(number) })) })) default = null" > map( object({… default = null</ code > | ✓ | |
| [location ](variables.tf#L95 ) | Registry location. Use `gcloud beta artifacts locations list' to get valid values. | < code > string</ code > | ✓ | |
| [name ](variables.tf#L120 ) | Registry name. | < code > string</ code > | ✓ | |
| [project_id ](variables.tf#L125 ) | Registry project id. | < code > string</ code > | ✓ | |
| [cleanup_policy_dry_run ](variables.tf#L38 ) | If true, the cleanup pipeline is prevented from deleting versions in this repository. | < code > bool</ code > | | < code > null</ code > |
| [description ](variables.tf#L44 ) | An optional description for the repository. | < code > string</ code > | | < code > " Terraform-managed registry" </ code > |
| [encryption_key ](variables.tf#L50 ) | The KMS key name to use for encryption at rest. | < code > string</ code > | | < code > null</ code > |
| [format ](variables.tf#L56 ) | Repository format. | < code title = "object({ apt = optional(object({})) docker = optional(object({ immutable_tags = optional(bool) })) kfp = optional(object({})) go = optional(object({})) maven = optional(object({ allow_snapshot_overwrites = optional(bool) version_policy = optional(string) })) npm = optional(object({})) python = optional(object({})) yum = optional(object({})) })" > object({…}) </ code > | | < code > { docker = {} } </ code > |
| [iam ](variables.tf#L83 ) | IAM bindings in {ROLE => [MEMBERS]} format. | < code > map( list( string)) </ code > | | < code > {} </ code > |
| [labels ](variables.tf#L89 ) | Labels to be attached to the registry. | < code > map( string) </ code > | | < code > {} </ code > |
| [mode ](variables.tf#L100 ) | Repository mode. | < code title = "object({ standard = optional(bool) remote = optional(bool) virtual = optional(map(object({ repository = string priority = number }))) })" > object({…}) </ code > | | < code > { standard = true } </ code > |
2020-05-26 03:03:15 -07:00
## Outputs
| name | description | sensitive |
|---|---|:---:|
2023-06-02 07:07:22 -07:00
| [id ](outputs.tf#L17 ) | Fully qualified repository id. | |
2023-07-31 02:34:01 -07:00
| [image_path ](outputs.tf#L22 ) | Repository path for images. | |
| [name ](outputs.tf#L32 ) | Repository name. | |
2020-05-26 03:03:15 -07:00
<!-- END TFDOC -->