test_stand/crud(pg): пароль берётся из выхода подресурса, а не из vault_secrets кластера

output pg_password = nubes_postgres_user.crud_user_0.password — значение известно в том
же apply, где создан пользователь, поэтому ни try(), ни двух apply в pg/ больше не
требуется. Обновлён комментарий про порядок вычисления.
This commit is contained in:
Repinoid
2026-10-01 17:15:20 +03:00
parent 58c519e712
commit 066d6b472b
+6 -5
View File
@@ -14,9 +14,10 @@
# Папка apps/ читает creds.json (см. apps/locals.tf). Файл содержит пароль — # Папка apps/ читает creds.json (см. apps/locals.tf). Файл содержит пароль —
# он в .gitignore папки apps/. # он в .gitignore папки apps/.
# #
# ВАЖНО про порядок: outputs вычисляются В КОНЦЕ apply, после того как созданы # ВАЖНО про порядок: пароль берётся из ВЫХОДА подресурса nubes_postgres_user, а не из
# кластер, пользователь и база — поэтому `terraform output -json` сразу после # vault_secrets кластера. Внутри одного apply vault_secrets кластера ещё пуст (пароль
# первого apply отдаёт реальный пароль. # появляется после create_user и обновляется в state кластера только при его чтении),
# поэтому надёжный источник — сам подресурс.
# ============================================================================= # =============================================================================
output "pg_host" { output "pg_host" {
@@ -40,8 +41,8 @@ output "pg_db_name" {
} }
output "pg_password" { output "pg_password" {
description = "Пароль пользователя БД (платформа генерирует его сама при create_user)" description = "Пароль пользователя БД (платформа генерирует его сама при create_user; провайдер читает его из Vault и отдаёт выходом подресурса)"
value = jsondecode(nubes_postgres.main_pg.vault_secrets["users"])[var.pg_username].password value = nubes_postgres_user.crud_user_0.password
sensitive = true sensitive = true
} }