variable "repositories" { description = "Image names to create repositories for. Each becomes /, and each must match the basename of the IMAGE_NAME the pushing repo uses. Adding an image is adding a string." type = list(string) validation { condition = length(var.repositories) == length(toset(var.repositories)) error_message = "repositories must not contain duplicates." } validation { condition = alltrue([for r in var.repositories : can(regex("^[a-z0-9][a-z0-9._-]*$", r))]) error_message = "Each repository name must be lowercase alphanumeric, optionally with . _ or -, and must not start with a separator." } } variable "namespace" { description = "Prefix shared by every repository, giving names like lance-blue/arena. It is the last path segment of push_registry, so changing it changes what the pushing repos are told." type = string default = "lance-blue" } variable "image_tag_mutability" { description = "MUTABLE or IMMUTABLE, for every repository here. IMMUTABLE since arena started tagging per build; see the comment in main.tf. MUTABLE is an escape hatch, not a default to drift back to." type = string default = "IMMUTABLE" validation { condition = contains(["MUTABLE", "IMMUTABLE"], var.image_tag_mutability) error_message = "image_tag_mutability must be MUTABLE or IMMUTABLE." } } variable "retained_image_count" { description = "How many images to keep per repository. The arena image is around a gigabyte at $0.10/GB-month." type = number default = 10 } variable "untagged_expiry_days" { description = "Days before an untagged image is expired. Untagged images are what a re-pushed tag leaves behind." type = number default = 7 } variable "tags" { description = "Tags to merge into every resource." type = map(string) default = {} }