diff --git a/config/config.hcl b/config/config.hcl index 8d42e51..b7b90f1 100644 --- a/config/config.hcl +++ b/config/config.hcl @@ -32,11 +32,31 @@ locals { trimsuffix(basename(file_path), ".yaml") => content if startswith(file_path, "remote_helm/") } + remote_pypi = { + for file_path, content in local.all_configs : + trimsuffix(basename(file_path), ".yaml") => content + if startswith(file_path, "remote_pypi/") + } remote_rpm = { for file_path, content in local.all_configs : trimsuffix(basename(file_path), ".yaml") => content if startswith(file_path, "remote_rpm/") } + local_terraform = { + for file_path, content in local.all_configs : + trimsuffix(basename(file_path), ".yaml") => content + if startswith(file_path, "local_terraform/") + } + local_pypi = { + for file_path, content in local.all_configs : + trimsuffix(basename(file_path), ".yaml") => content + if startswith(file_path, "local_pypi/") + } + local_rpm = { + for file_path, content in local.all_configs : + trimsuffix(basename(file_path), ".yaml") => content + if startswith(file_path, "local_rpm/") + } virtual = { for file_path, content in local.all_configs : trimsuffix(basename(file_path), ".yaml") => content diff --git a/config/local_pypi/pypi-internal.yaml b/config/local_pypi/pypi-internal.yaml new file mode 100644 index 0000000..3cee927 --- /dev/null +++ b/config/local_pypi/pypi-internal.yaml @@ -0,0 +1 @@ +description: "Internal PyPI packages" diff --git a/config/local_rpm/rpm-internal.yaml b/config/local_rpm/rpm-internal.yaml new file mode 100644 index 0000000..4d6a76a --- /dev/null +++ b/config/local_rpm/rpm-internal.yaml @@ -0,0 +1 @@ +description: "Internal RPM packages" diff --git a/config/local_terraform/terraform-unkin.yaml b/config/local_terraform/terraform-unkin.yaml new file mode 100644 index 0000000..cd94eb0 --- /dev/null +++ b/config/local_terraform/terraform-unkin.yaml @@ -0,0 +1 @@ +description: "Unkin Terraform modules" diff --git a/config/remote_pypi/pypi.yaml b/config/remote_pypi/pypi.yaml new file mode 100644 index 0000000..da8b24c --- /dev/null +++ b/config/remote_pypi/pypi.yaml @@ -0,0 +1,5 @@ +base_url: https://pypi.org +description: "PyPI — Python Package Index" +immutable_ttl: 0 +mutable_ttl: 3600 +stale_on_error: true diff --git a/config/virtual/pypi.yaml b/config/virtual/pypi.yaml new file mode 100644 index 0000000..8a9b189 --- /dev/null +++ b/config/virtual/pypi.yaml @@ -0,0 +1,5 @@ +package_type: pypi +description: "Virtual PyPI repository merging internal packages and upstream PyPI" +members: + - pypi-internal + - pypi diff --git a/environments/au/syd1/terragrunt.hcl b/environments/au/syd1/terragrunt.hcl index 983252f..e4e820a 100644 --- a/environments/au/syd1/terragrunt.hcl +++ b/environments/au/syd1/terragrunt.hcl @@ -17,11 +17,15 @@ terraform { } inputs = { - remote_alpine = local.config.remote_alpine - remote_docker = local.config.remote_docker - remote_generic = local.config.remote_generic - remote_goproxy = local.config.remote_goproxy - remote_helm = local.config.remote_helm - remote_rpm = local.config.remote_rpm - virtual = local.config.virtual + remote_alpine = local.config.remote_alpine + remote_docker = local.config.remote_docker + remote_generic = local.config.remote_generic + remote_goproxy = local.config.remote_goproxy + remote_helm = local.config.remote_helm + remote_pypi = local.config.remote_pypi + remote_rpm = local.config.remote_rpm + local_terraform = local.config.local_terraform + local_pypi = local.config.local_pypi + local_rpm = local.config.local_rpm + virtual = local.config.virtual } diff --git a/modules/artifactapi/main.tf b/modules/artifactapi/main.tf index 46a8d65..f68b0bf 100644 --- a/modules/artifactapi/main.tf +++ b/modules/artifactapi/main.tf @@ -76,6 +76,40 @@ resource "artifactapi_remote_rpm" "this" { stale_on_error = each.value.stale_on_error } +resource "artifactapi_remote_pypi" "this" { + for_each = var.remote_pypi + + name = each.key + base_url = each.value.base_url + description = each.value.description + immutable_ttl = each.value.immutable_ttl + mutable_ttl = each.value.mutable_ttl + patterns = each.value.patterns + mutable_patterns = each.value.mutable_patterns + stale_on_error = each.value.stale_on_error +} + +resource "artifactapi_local_terraform" "this" { + for_each = var.local_terraform + + name = each.key + description = each.value.description +} + +resource "artifactapi_local_pypi" "this" { + for_each = var.local_pypi + + name = each.key + description = each.value.description +} + +resource "artifactapi_local_rpm" "this" { + for_each = var.local_rpm + + name = each.key + description = each.value.description +} + resource "artifactapi_virtual" "this" { for_each = var.virtual diff --git a/modules/artifactapi/variables.tf b/modules/artifactapi/variables.tf index 7331db4..238b421 100644 --- a/modules/artifactapi/variables.tf +++ b/modules/artifactapi/variables.tf @@ -82,6 +82,44 @@ variable "remote_rpm" { default = {} } +variable "remote_pypi" { + description = "Map of PyPI remote repositories" + type = map(object({ + base_url = string + description = optional(string, "") + immutable_ttl = optional(number, 0) + mutable_ttl = optional(number, 3600) + patterns = optional(list(string), []) + mutable_patterns = optional(list(string), []) + stale_on_error = optional(bool, true) + })) + default = {} +} + +variable "local_terraform" { + description = "Map of local Terraform registry repositories" + type = map(object({ + description = optional(string, "") + })) + default = {} +} + +variable "local_pypi" { + description = "Map of local PyPI repositories" + type = map(object({ + description = optional(string, "") + })) + default = {} +} + +variable "local_rpm" { + description = "Map of local RPM repositories" + type = map(object({ + description = optional(string, "") + })) + default = {} +} + variable "virtual" { description = "Map of virtual repositories" type = map(object({