Files
terraform-authentik/modules/authentik/variables.tf
T
unkinben 7636d45f21
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Fix self-referential authentik_group parents
Adding the first managed group (argocd-admins) exposed a dormant bug: the
groups resource resolved `parents` by indexing authentik_group.this itself,
which OpenTofu rejects as a self-referential block. config/groups/ had been
empty, so `tofu plan` never hit it before.

Pass `parents` through as literal group PKs instead (the resource cannot
reference itself, so parent-by-map-key was never viable). Plan is clean:
3 to add (argocd provider, application, argocd-admins group).
2026-07-12 22:42:17 +10:00

69 lines
2.3 KiB
Terraform

variable "groups" {
type = map(object({
name = string
is_superuser = optional(bool, false)
# PKs of existing parent groups. These must be literal group PKs, not keys
# into this map: authentik_group cannot reference itself.
parents = optional(list(string), null)
attributes = optional(map(string), {})
}))
default = {}
}
variable "providers_saml" {
type = map(object({
name = string
authorization_flow = string
invalidation_flow = string
acs_url = string
sp_binding = optional(string, "redirect")
audience = optional(string, "")
name_id_mapping = optional(string, null)
signing_kp = optional(string, null)
}))
default = {}
}
variable "providers_oauth2" {
type = map(object({
name = string
authorization_flow = string # flow slug, resolved to id via data.authentik_flow
invalidation_flow = string # flow slug, resolved to id via data.authentik_flow
client_type = optional(string, "confidential")
client_id = string
# client_secret is never committed. Point at a Vault kv-v2 secret whose
# `client_secret` key holds the value (seeded out of band); TF reads it.
client_secret_vault = optional(object({
mount = string
path = string
}), null)
# Managed identifiers of scope property mappings (e.g.
# goauthentik.io/providers/oauth2/scope-openid). Resolved to ids.
scope_mappings = optional(list(string), [])
redirect_uris = optional(list(object({
matching_mode = optional(string, "strict")
url = string
})), [])
signing_key = optional(string, null)
access_token_validity = optional(string, "minutes=10")
}))
default = {}
}
variable "providers_ldap" {
type = map(object({
name = string
bind_flow = string
unbind_flow = string
base_dn = string
certificate = optional(string, null)
tls_server_name = optional(string, null)
uid_start_number = optional(number, 2000)
gid_start_number = optional(number, 4000)
search_mode = optional(string, "direct")
bind_mode = optional(string, "direct")
mfa_support = optional(bool, true)
}))
default = {}
}