terraform-contour-mirror/modules/k8s-secret/variables.tf

162 lines
5.2 KiB
HCL

variable "secrets" {
description = "Список секретов. Форма и данные декларируются в одном месте (infrastructure-secrets.yaml)."
type = list(object({
name = string
namespace = string
type = string
registry_url = optional(string, "")
data = optional(map(string), {}) # Явные значения (adopt/static), base64 как в k8s .data
depends_on = optional(object({
cluster = optional(string, "")
cluster_ref = optional(string, "")
db = optional(string, "")
user = optional(string, "")
valkey_cluster = optional(string, "")
valkey_user = optional(string, "")
kafka_ref = optional(string, "")
kafka_user = optional(string, "")
vhost = optional(string, "")
bucket = optional(string, "") # Имя бакета для s3 секретов
service_account = optional(string, "") # Имя YC Service Account для yc_sa секретов
rabbitmq_ref = optional(string, "default")
rabbitmq_vhost = optional(string, "")
rabbitmq_user = optional(string, "")
}), {})
yc_sa_key_names = optional(object({
access_key = optional(string, "access_key")
secret_key = optional(string, "secret_key")
service_account_id = optional(string, "service_account_id")
}), {})
custom_keys = optional(map(string), {})
constant_keys = optional(map(string), {})
random_keys = optional(map(object({
length = optional(number, 32)
special = optional(bool, false)
})), {}) # Случайные ключи
credential_keys = optional(map(string), {})
labels = optional(map(string), {})
annotations = optional(map(string), {})
ignore_changes = optional(bool, false)
# Sink: where the resolved secret data lands. "k8s" (default) writes a
# Kubernetes Secret; "vault" writes a Vault KV v2 entry instead. Keys and
# resolution (static/dynamic from module outputs) are identical either way.
sink = optional(string, "k8s")
vault_path = optional(string, "") # KV name relative to mount; default <vault_path_prefix>/<name>
}))
}
variable "vault_kv_mount" {
description = "Vault KV v2 mount for secrets with sink=vault"
type = string
default = "secrets"
}
variable "vault_path_prefix" {
description = "Default path prefix under the KV mount for sink=vault secrets (used when vault_path is unset)"
type = string
default = "vault"
}
variable "s3_outputs" {
description = "Outputs от модуля S3 (default/первый бакет)"
type = object({
bucket_name = optional(string, "")
access_key = optional(string, "")
secret_key = optional(string, "")
})
default = {
bucket_name = ""
access_key = ""
secret_key = ""
}
}
variable "s3_buckets_map" {
description = "Map всех бакетов (name => data)"
type = map(object({
bucket_name = string
access_key = string
secret_key = string
service_account_id = optional(string, "")
}))
default = {}
}
variable "yc_service_accounts_map" {
description = "Map YC service accounts (name => data)"
type = map(object({
service_account_id = string
access_key = optional(string, "")
secret_key = optional(string, "")
folder_roles = optional(list(string), [])
}))
default = {}
}
variable "database_outputs_map" {
description = "Outputs от модулей Database, ключ = cluster_id:database_name:user_name"
type = map(object({
host = string
database_name = string
user_name = string
password = string
}))
default = {}
}
variable "valkey_outputs_map" {
description = "Outputs от модулей Valkey/Redis users, ключ = cluster_id:user_name"
type = map(object({
cluster_id = string
host = string
port = string
user_name = string
password = string
}))
default = {}
}
variable "rabbitmq_outputs_map" {
description = "Outputs от модуля RabbitMQ, ключ = rabbitmq_ref:vhost:user"
type = map(object({
host = string
port = string
vhost = string
username = string
password = string
uri = string
management_endpoint = string
}))
default = {}
}
variable "kafka_outputs_map" {
description = "Outputs от модуля Kafka, ключ = kafka_ref:user"
type = map(object({
host = string
hostname = string
port = string
username = string
password = string
sasl_mechanism = string
security_protocol = string
bootstrap_server = string
bootstrap_servers = string
bootstrap_servers_json = string
}))
default = {}
}
variable "constants" {
description = "Константные значения (CA сертификаты, endpoints и т.д.)"
type = map(string)
default = {}
}
variable "env_vars" {
description = "Environment variables"
type = map(string)
default = {}
}