resource "random_password" "zitadel" { length = 32 special = false } resource "postgresql_role" "zitadel" { name = "zitadel" login = true password = random_password.zitadel.result lifecycle { ignore_changes = [password] } } resource "postgresql_database" "zitadel" { name = "zitadel" owner = postgresql_role.zitadel.name } # Allows vault_db_admin to ALTER ROLE zitadel PASSWORD '...' for credential rotation. resource "postgresql_grant_role" "vault_db_admin_zitadel" { role = postgresql_role.vault_db_admin.name grant_role = postgresql_role.zitadel.name with_admin_option = true }