# KV v2 secrets engine — canonical store for application secrets. resource "vault_mount" "secret" { path = "secret" type = "kv" options = { version = "2" } } resource "vault_kv_secret_v2" "project_delivery_quay_reader" { mount = vault_mount.secret.path name = "quay/oauth/project-delivery-reader" data_json_wo_version = 1 data_json_wo = jsonencode({ token = "PLACEHOLDER" }) } resource "vault_kv_secret_v2" "project_delivery_quay_writer" { mount = vault_mount.secret.path name = "quay/oauth/project-delivery-writer" data_json_wo_version = 1 data_json_wo = jsonencode({ token = "PLACEHOLDER" }) } resource "vault_kv_secret_v2" "apk_signing" { mount = vault_mount.secret.path name = "project-delivery/apk-signing" data_json_wo_version = 1 data_json_wo = jsonencode({ private = "PLACEHOLDER" public = "PLACEHOLDER" }) } resource "vault_kv_secret_v2" "cloudflare_cert_manager_dns01" { mount = vault_mount.secret.path name = "cloudflare/cert-manager-dns01" data_json_wo_version = 1 data_json_wo = jsonencode({}) } resource "vault_kv_secret_v2" "oci_l4_relay_wan_controller_api" { mount = vault_mount.secret.path name = "oci/relay/wan-controller-api" data_json_wo_version = 1 data_json_wo = jsonencode({}) } resource "vault_kv_secret_v2" "opnsense_certificate_rotator" { mount = vault_mount.secret.path name = "opnsense/certificate-rotator" data_json_wo_version = 1 data_json_wo = jsonencode({}) } resource "vault_kv_secret_v2" "cloudflare_oci_relay_dns" { mount = vault_mount.secret.path name = "cloudflare/oci-relay-dns" data_json_wo_version = 1 data_json_wo = jsonencode({}) } resource "vault_kv_secret_v2" "cloudflare_pages_infrastructure" { mount = vault_mount.secret.path name = "cloudflare/pages-infrastructure" data_json_wo_version = 1 data_json_wo = jsonencode({}) } resource "vault_kv_secret_v2" "cloudflare_pages_publisher" { mount = vault_mount.secret.path name = "cloudflare/pages-publisher" data_json_wo_version = 1 data_json_wo = jsonencode({}) } resource "vault_kv_secret_v2" "forge_cache" { mount = vault_mount.secret.path name = "cloudflare/forge-cache" data_json_wo_version = 2 data_json_wo = jsonencode({ api-token = "PLACEHOLDER" }) } resource "vault_kv_secret_v2" "waf_edit" { mount = vault_mount.secret.path name = "cloudflare/waf-edit" data_json_wo_version = 1 data_json_wo = jsonencode({ api-token = "PLACEHOLDER" }) } resource "vault_kv_secret_v2" "cloudflare_radar" { mount = vault_mount.secret.path name = "cloudflare/radar" data_json_wo_version = 1 data_json_wo = jsonencode({}) } resource "vault_kv_secret_v2" "cloudflare_tier_o_tunnel_config" { mount = vault_mount.secret.path name = "cloudflare/tier-o-tunnel-config" data_json_wo_version = 1 data_json_wo = jsonencode({}) } resource "vault_kv_secret_v2" "cloudflare_tunnel_connector" { mount = vault_mount.secret.path name = "cloudflare/tunnel-connector" data_json_wo_version = 1 data_json_wo = jsonencode({}) } # Zitadel resource "random_password" "zitadel_master_key" { length = 32 special = false } resource "vault_kv_secret_v2" "zitadel_master_key" { mount = vault_mount.secret.path name = "zitadel/master-key" data_json_wo_version = 1 data_json_wo = jsonencode({ masterkey = random_password.zitadel_master_key.result }) } # VersityGW resource "random_password" "versitygw_root_access_key_id" { length = 32 special = false } resource "random_password" "versitygw_root_secret_access_key" { length = 64 special = false } resource "vault_kv_secret_v2" "versitygw_root" { mount = vault_mount.secret.path name = "versitygw/root" data_json_wo_version = 1 data_json_wo = jsonencode({ rootAccessKeyId = random_password.versitygw_root_access_key_id.result rootSecretAccessKey = random_password.versitygw_root_secret_access_key.result }) # Vault is source of truth after first write. Re-runs do not rotate root credentials. } resource "random_password" "versitygw_canary_secret_access_key" { length = 48 special = false } resource "vault_kv_secret_v2" "versitygw_canary_user" { mount = vault_mount.secret.path name = "versitygw/users/canary" data_json_wo_version = 1 data_json_wo = jsonencode({ secretAccessKey = random_password.versitygw_canary_secret_access_key.result }) # Vault is source of truth after first write. Re-runs do not rotate user credentials. } resource "random_password" "versitygw_terraform_state_secret_access_key" { length = 48 special = false } resource "vault_kv_secret_v2" "versitygw_terraform_state_user" { mount = vault_mount.secret.path name = "versitygw/users/terraform-state" data_json_wo_version = 1 data_json_wo = jsonencode({ secretAccessKey = random_password.versitygw_terraform_state_secret_access_key.result }) # Vault is source of truth after first write. Re-runs do not rotate user credentials. } # VictoriaMetrics resource "random_password" "victoriametrics_vmauth_query_token" { length = 48 special = false } resource "vault_kv_secret_v2" "victoriametrics_vmauth_query" { mount = vault_mount.secret.path name = "victoriametrics/vmauth/query" data_json_wo_version = 1 data_json_wo = jsonencode({ token = random_password.victoriametrics_vmauth_query_token.result }) # Vault is source of truth after first write. Re-runs do not rotate the token. } resource "random_password" "victorialogs_vmauth_query_token" { length = 48 special = false } resource "vault_kv_secret_v2" "victorialogs_vmauth_query" { mount = vault_mount.secret.path name = "victorialogs/vmauth/query" data_json_wo_version = 1 data_json_wo = jsonencode({ token = random_password.victorialogs_vmauth_query_token.result }) # Vault is source of truth after first write. Re-runs do not rotate the token. } resource "random_password" "victorialogs_vmauth_relay_ingest_token" { length = 48 special = false } resource "vault_kv_secret_v2" "victorialogs_vmauth_relay_ingest" { mount = vault_mount.secret.path name = "victorialogs/vmauth/relay-ingest" data_json_wo_version = 1 data_json_wo = jsonencode({ token = random_password.victorialogs_vmauth_relay_ingest_token.result }) } # Policies resource "vault_policy" "cloudflare_cert_manager_dns01" { name = "cloudflare-cert-manager-dns01" policy = <<-EOT path "secret/data/cloudflare/cert-manager-dns01" { capabilities = ["read"] } EOT } resource "vault_policy" "cloudflare_oci_relay_dns" { name = "cloudflare-oci-relay-dns" policy = <<-EOT path "secret/data/cloudflare/oci-relay-dns" { capabilities = ["read"] } EOT } resource "vault_policy" "cloudflare_pages_infrastructure" { name = "cloudflare-pages-infrastructure" policy = <<-EOT path "secret/data/cloudflare/pages-infrastructure" { capabilities = ["read"] } EOT } resource "vault_policy" "cloudflare_pages_publisher" { name = "cloudflare-pages-publisher" policy = <<-EOT path "secret/data/cloudflare/pages-publisher" { capabilities = ["read"] } EOT } resource "vault_policy" "forge_cache" { name = "forge-cache" policy = <<-EOT path "secret/data/cloudflare/forge-cache" { capabilities = ["read"] } EOT } resource "vault_policy" "waf_edit" { name = "waf-edit" policy = <<-EOT path "secret/data/cloudflare/waf-edit" { capabilities = ["read"] } EOT } resource "vault_policy" "cloudflare_radar" { name = "cloudflare-radar" policy = <<-EOT path "secret/data/cloudflare/radar" { capabilities = ["read"] } EOT } resource "vault_policy" "bot_redirect" { name = "bot-redirect" policy = <<-EOT path "secret/data/quay/robots/cluster_pull" { capabilities = ["read"] } EOT } resource "vault_policy" "cloudflare_tier_o_tunnel_config" { name = "cloudflare-tier-o-tunnel-config" policy = <<-EOT path "secret/data/cloudflare/tier-o-tunnel-config" { capabilities = ["read"] } EOT } resource "vault_policy" "cloudflare_tunnel_connector" { name = "cloudflare-tunnel-connector" policy = <<-EOT path "secret/data/cloudflare/tunnel-connector" { capabilities = ["read"] } EOT } resource "vault_policy" "oci_l4_relay_wan_controller" { name = "oci-l4-relay-wan-controller" policy = <<-EOT path "secret/data/opnsense/interface-watcher" { capabilities = ["read"] } path "secret/data/ca/opnsense" { capabilities = ["read"] } path "secret/data/oci/relay/wan-controller-api" { capabilities = ["read"] } EOT } resource "vault_policy" "zitadel" { name = "zitadel" policy = <<-EOT path "secret/data/zitadel/*" { capabilities = ["read"] } path "database/static-creds/zitadel" { capabilities = ["read"] } EOT } resource "vault_policy" "forgejo" { name = "forgejo" policy = <<-EOT path "secret/data/forgejo/*" { capabilities = ["read"] } path "database/static-creds/forgejo" { capabilities = ["read"] } EOT } resource "vault_policy" "forgejo_public" { name = "forgejo-public" policy = <<-EOT path "secret/data/forgejo-public/*" { capabilities = ["read"] } path "database/static-creds/forgejo-public" { capabilities = ["read"] } EOT } resource "vault_policy" "versitygw" { name = "versitygw" policy = <<-EOT path "secret/data/versitygw/*" { capabilities = ["read"] } EOT } resource "vault_policy" "victoriametrics" { name = "victoriametrics" policy = <<-EOT path "secret/data/victoriametrics/*" { capabilities = ["read"] } path "secret/data/victorialogs/*" { capabilities = ["read"] } EOT } resource "vault_policy" "grafana" { name = "grafana" policy = <<-EOT path "secret/data/grafana/*" { capabilities = ["read"] } path "secret/data/versitygw/users/grafana" { capabilities = ["read"] } path "secret/data/minecraft/rcon" { capabilities = ["read"] } path "secret/data/quay/oauth/project-delivery-reader" { capabilities = ["read"] } path "pki/cert/ca" { capabilities = ["read"] } path "secret/data/victoriametrics/vmauth/query" { capabilities = ["read"] } path "secret/data/victorialogs/vmauth/query" { capabilities = ["read"] } path "database/static-creds/grafana" { capabilities = ["read"] } EOT } resource "vault_policy" "longhorn" { name = "longhorn" policy = <<-EOT path "secret/data/longhorn/*" { capabilities = ["read"] } EOT } resource "vault_policy" "quay" { name = "quay" policy = <<-EOT path "secret/data/quay/*" { capabilities = ["read"] } path "database/static-creds/quay" { capabilities = ["read"] } path "database/static-creds/quay_clair" { capabilities = ["read"] } EOT } resource "vault_policy" "dragonfly" { name = "dragonfly" policy = <<-EOT path "secret/data/dragonfly/quay/acl" { capabilities = ["read"] } path "secret/data/dragonfly/forgejo/acl" { capabilities = ["read"] } path "secret/data/dragonfly/forgejo-public/acl" { capabilities = ["read"] } path "secret/data/dragonfly/stalwart/acl" { capabilities = ["read"] } EOT } resource "vault_policy" "flux" { name = "flux" policy = <<-EOT path "secret/data/flux/*" { capabilities = ["read"] } EOT } resource "vault_policy" "oci_l4_relay" { name = "oci-l4-relay" policy = <<-EOT path "secret/data/oci/relay/home-wireguard" { capabilities = ["read"] } path "secret/data/oci/relay/peer" { capabilities = ["read"] } path "secret/data/quay/robots/cluster_pull" { capabilities = ["read"] } EOT } resource "vault_policy" "argo" { name = "argo" policy = <<-EOT path "secret/data/argo/*" { capabilities = ["read"] } path "database/static-creds/argo" { capabilities = ["read"] } EOT } resource "vault_policy" "project_delivery_artifacts" { name = "project-delivery-artifacts" policy = <<-EOT path "secret/data/argo/artifacts" { capabilities = ["read"] } EOT } resource "vault_policy" "apk_signing" { name = "apk-signing" policy = <<-EOT path "secret/data/project-delivery/apk-signing" { capabilities = ["read"] } EOT } resource "vault_policy" "project_delivery_cache_reader" { name = "project-delivery-cache-reader" policy = <<-EOT path "secret/data/versitygw/users/project-delivery-cache-reader" { capabilities = ["read"] } EOT } resource "vault_policy" "project_delivery_cache_writer" { name = "project-delivery-cache-writer" policy = <<-EOT path "secret/data/versitygw/users/project-delivery-cache-writer" { capabilities = ["read"] } EOT } resource "vault_policy" "lazaret_publisher" { name = "lazaret-publisher" policy = <<-EOT path "secret/data/forgejo-public/tokens/lazaret-publisher" { capabilities = ["read"] } EOT } resource "vault_policy" "quorate_pull" { name = "quorate-pull" policy = <<-EOT path "secret/data/forgejo/tokens/quorate-pull" { capabilities = ["read"] } EOT } resource "vault_policy" "quorate_push" { name = "quorate-push" policy = <<-EOT path "secret/data/forgejo-public/tokens/quorate-push" { capabilities = ["read"] } EOT } resource "vault_policy" "remora_qualification_artifacts" { name = "remora-qualification-artifacts" policy = <<-EOT path "secret/data/argo/artifacts" { capabilities = ["read"] } EOT } resource "vault_policy" "remora_qualification_quay_reader" { name = "remora-qualification-quay-reader" policy = <<-EOT path "secret/data/quay/oauth/project-delivery-reader" { capabilities = ["read"] } EOT } resource "vault_policy" "project_delivery_source" { name = "project-delivery-source" policy = <<-EOT path "secret/data/forgejo-public/tokens/project-delivery-source" { capabilities = ["read"] } EOT } resource "vault_policy" "project_delivery_quay_reader" { name = "project-delivery-quay-reader" policy = <<-EOT path "secret/data/quay/oauth/project-delivery-reader" { capabilities = ["read"] } EOT } resource "vault_policy" "project_delivery_quay_writer" { name = "project-delivery-quay-writer" policy = <<-EOT path "secret/data/quay/oauth/project-delivery-writer" { capabilities = ["read"] } EOT } resource "vault_policy" "argo_relay_admission" { name = "argo-relay-admission" policy = <<-EOT path "secret/data/mindmax" { capabilities = ["read"] } path "secret/data/ip2location" { capabilities = ["read"] } path "secret/data/oci/relay/publisher-api" { capabilities = ["read"] } path "secret/data/quay/robots/cluster_pull" { capabilities = ["read"] } EOT } resource "vault_policy" "argo_relay_smtp_deny" { name = "argo-relay-smtp-deny" policy = <<-EOT path "secret/data/oci/relay/smtp-deny-publisher-api" { capabilities = ["read"] } path "secret/data/quay/robots/cluster_pull" { capabilities = ["read"] } EOT } resource "vault_policy" "argo_opnsense_certificate_kv" { name = "argo-opnsense-certificate-kv" policy = <<-EOT path "secret/data/opnsense/certificate-rotator" { capabilities = ["read"] } path "secret/data/opnsense/web-certificate" { capabilities = ["read"] } path "pki_opnsense/cert/ca" { capabilities = ["read"] } path "pki/cert/ca" { capabilities = ["read"] } path "secret/data/quay/robots/cluster_pull" { capabilities = ["read"] } EOT } # K8s auth roles (used by VSO to authenticate and pull KV secrets) # cert-manager SA reads the Cloudflare token for Let's Encrypt DNS-01. resource "vault_kubernetes_auth_backend_role" "cert_manager_kv" { backend = vault_auth_backend.kubernetes.path role_name = "cert-manager-kv" bound_service_account_names = ["cert-manager"] bound_service_account_namespaces = ["cert-manager"] token_policies = [vault_policy.cloudflare_cert_manager_dns01.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "cloudflare_tunnel_vso" { backend = vault_auth_backend.kubernetes.path role_name = "cloudflare-tunnel-vso" bound_service_account_names = ["cloudflare-tunnel-vso"] bound_service_account_namespaces = ["cloudflare-tunnel"] token_policies = [vault_policy.cloudflare_tunnel_connector.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "oci_l4_relay_wan_controller" { backend = vault_auth_backend.kubernetes.path role_name = "oci-l4-relay-wan-controller" bound_service_account_names = ["oci-l4-relay-wan-controller"] bound_service_account_namespaces = ["kube-system"] token_policies = [vault_policy.oci_l4_relay_wan_controller.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "zitadel" { backend = vault_auth_backend.kubernetes.path role_name = "zitadel" bound_service_account_names = ["zitadel"] bound_service_account_namespaces = ["zitadel"] token_policies = [vault_policy.zitadel.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "forgejo" { backend = vault_auth_backend.kubernetes.path role_name = "forgejo" bound_service_account_names = ["forgejo"] bound_service_account_namespaces = ["forgejo"] token_policies = [vault_policy.forgejo.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "forgejo_public" { backend = vault_auth_backend.kubernetes.path role_name = "forgejo-public" bound_service_account_names = ["forgejo-public"] bound_service_account_namespaces = ["forgejo-public"] token_policies = [vault_policy.forgejo_public.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "versitygw" { backend = vault_auth_backend.kubernetes.path role_name = "versitygw" bound_service_account_names = ["versitygw"] bound_service_account_namespaces = ["versitygw"] token_policies = [vault_policy.versitygw.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "victoriametrics" { backend = vault_auth_backend.kubernetes.path role_name = "victoriametrics" bound_service_account_names = ["victoriametrics-vso"] bound_service_account_namespaces = ["victoriametrics"] token_policies = [vault_policy.victoriametrics.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "grafana" { backend = vault_auth_backend.kubernetes.path role_name = "grafana" bound_service_account_names = ["grafana-vso"] bound_service_account_namespaces = ["grafana"] token_policies = [vault_policy.grafana.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "longhorn" { backend = vault_auth_backend.kubernetes.path role_name = "longhorn" bound_service_account_names = ["longhorn-vso"] bound_service_account_namespaces = ["longhorn"] token_policies = [vault_policy.longhorn.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "quay" { backend = vault_auth_backend.kubernetes.path role_name = "quay" bound_service_account_names = ["quay-vso"] bound_service_account_namespaces = ["quay"] token_policies = [vault_policy.quay.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "dragonfly" { backend = vault_auth_backend.kubernetes.path role_name = "dragonfly" bound_service_account_names = ["dragonfly-vso"] bound_service_account_namespaces = ["dragonfly"] token_policies = [vault_policy.dragonfly.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "flux" { backend = vault_auth_backend.kubernetes.path role_name = "flux" bound_service_account_names = ["flux-vso"] bound_service_account_namespaces = ["flux-system"] token_policies = [vault_policy.flux.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "oci_l4_relay" { backend = vault_auth_backend.kubernetes.path role_name = "oci-l4-relay" bound_service_account_names = ["oci-l4-relay"] bound_service_account_namespaces = ["kube-system"] token_policies = [vault_policy.oci_l4_relay.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "argo" { backend = vault_auth_backend.kubernetes.path role_name = "argo" bound_service_account_names = ["argo-vso"] bound_service_account_namespaces = ["argo"] token_policies = [vault_policy.argo.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "project_delivery_artifacts" { backend = vault_auth_backend.kubernetes.path role_name = "project-delivery-artifacts" bound_service_account_names = ["project-delivery-artifacts-vso"] bound_service_account_namespaces = ["project-delivery"] token_policies = [vault_policy.project_delivery_artifacts.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "apk_signing" { backend = vault_auth_backend.kubernetes.path role_name = "apk-signing" bound_service_account_names = ["apk-signing-vso"] bound_service_account_namespaces = ["project-delivery"] token_policies = [vault_policy.apk_signing.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "project_delivery_cache_reader" { backend = vault_auth_backend.kubernetes.path role_name = "project-delivery-cache-reader" bound_service_account_names = ["project-delivery-cache-reader-vso"] bound_service_account_namespaces = ["project-delivery"] token_policies = [vault_policy.project_delivery_cache_reader.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "project_delivery_cache_writer" { backend = vault_auth_backend.kubernetes.path role_name = "project-delivery-cache-writer" bound_service_account_names = ["project-delivery-cache-writer-vso"] bound_service_account_namespaces = ["project-delivery"] token_policies = [vault_policy.project_delivery_cache_writer.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "lazaret_publisher" { backend = vault_auth_backend.kubernetes.path role_name = "lazaret-publisher" bound_service_account_names = ["lazaret-publisher-vso"] bound_service_account_namespaces = ["project-delivery"] token_policies = [vault_policy.lazaret_publisher.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "quorate_pull" { backend = vault_auth_backend.kubernetes.path role_name = "quorate-pull" bound_service_account_names = ["quorate-pull-vso"] bound_service_account_namespaces = ["project-delivery"] token_policies = [vault_policy.quorate_pull.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "quorate_push" { backend = vault_auth_backend.kubernetes.path role_name = "quorate-push" bound_service_account_names = ["quorate-push-vso"] bound_service_account_namespaces = ["project-delivery"] token_policies = [vault_policy.quorate_push.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "remora_qualification_artifacts" { backend = vault_auth_backend.kubernetes.path role_name = "remora-qualification-artifacts" bound_service_account_names = ["remora-qualification-artifacts-vso"] bound_service_account_namespace_selector = jsonencode({ matchLabels = { "qualification.quorate.dev/project" = "remora" } }) token_policies = [vault_policy.remora_qualification_artifacts.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "remora_qualification_quay_reader" { backend = vault_auth_backend.kubernetes.path role_name = "remora-qualification-quay-reader" bound_service_account_names = ["remora-qualification-quay-reader-vso"] bound_service_account_namespace_selector = jsonencode({ matchLabels = { "qualification.quorate.dev/project" = "remora" } }) token_policies = [vault_policy.remora_qualification_quay_reader.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "bot_redirect" { backend = vault_auth_backend.kubernetes.path role_name = "bot-redirect" bound_service_account_names = ["bot-redirect-vso"] bound_service_account_namespaces = ["argo"] token_policies = [vault_policy.cloudflare_radar.name, vault_policy.bot_redirect.name] token_ttl = 3600 } moved { from = vault_kubernetes_auth_backend_role.home_pages to = vault_kubernetes_auth_backend_role.locutory_pages } resource "vault_kubernetes_auth_backend_role" "locutory_pages" { backend = vault_auth_backend.kubernetes.path role_name = "locutory-pages" bound_service_account_names = ["locutory-pages-vso"] bound_service_account_namespaces = ["project-delivery"] token_policies = [vault_policy.cloudflare_pages_publisher.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "project_delivery_source" { backend = vault_auth_backend.kubernetes.path role_name = "project-delivery-source" bound_service_account_names = ["project-delivery-source-vso"] bound_service_account_namespaces = ["project-delivery"] token_policies = [vault_policy.project_delivery_source.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "project_delivery_quay_reader" { backend = vault_auth_backend.kubernetes.path role_name = "project-delivery-quay-reader" bound_service_account_names = ["project-delivery-quay-reader-vso"] bound_service_account_namespaces = ["project-delivery"] token_policies = [vault_policy.project_delivery_quay_reader.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "project_delivery_quay_writer" { backend = vault_auth_backend.kubernetes.path role_name = "project-delivery-quay-writer" bound_service_account_names = ["project-delivery-quay-writer-vso"] bound_service_account_namespaces = ["project-delivery"] token_policies = [vault_policy.project_delivery_quay_writer.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "argo_relay_admission" { backend = vault_auth_backend.kubernetes.path role_name = "argo-relay-admission" bound_service_account_names = ["relay-admission-vso"] bound_service_account_namespaces = ["argo-relay-admission"] token_policies = [vault_policy.argo_relay_admission.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "argo_relay_smtp_deny" { backend = vault_auth_backend.kubernetes.path role_name = "argo-relay-smtp-deny" bound_service_account_names = ["relay-smtp-deny-vso"] bound_service_account_namespaces = ["argo-relay-smtp-deny"] token_policies = [vault_policy.argo_relay_smtp_deny.name] token_ttl = 3600 token_max_ttl = 3600 } resource "vault_kubernetes_auth_backend_role" "argo_opnsense_certificate_kv" { backend = vault_auth_backend.kubernetes.path role_name = "argo-opnsense-certificate-kv" bound_service_account_names = ["opnsense-certificate-vso"] bound_service_account_namespaces = ["argo-opnsense-certificate"] token_policies = [vault_policy.argo_opnsense_certificate_kv.name] token_ttl = 3600 token_max_ttl = 3600 }