# ============================================================================= # PG — outputs для потребителей (папка ../apps/ и любые будущие папки) # ============================================================================= # # ЗАЧЕМ outputs: папки приложений — это ДРУГИЕ state, и Terraform между ними # значения сам не передаёт (у провайдера нет data-source, общего backend тоже нет). # Поэтому после создания БД юзер выгружает эти outputs в файл и кладёт его # в папку потребителя: # # cd TEST_STAND/CRUD/pg # terraform apply # terraform output -json > ../apps/creds.json # ← это и есть «передать креды» # # Папка apps/ читает creds.json (см. apps/locals.tf). Файл содержит пароль — # он в .gitignore папки apps/. # # ВАЖНО про порядок: outputs вычисляются В КОНЦЕ apply, уже после того как # созданы кластер, пользователь и база. Поэтому `terraform output -json` сразу # после первого apply отдаёт реальный пароль (в отличие от vault_secrets внутри # одного прогона — см. README, раздел «Почему нельзя одним apply»). # ============================================================================= output "pg_host" { description = "Внутренний хост master для подключения (state_out_flat.internalMaster)" value = nubes_postgres.main_pg.state_out_flat["internalMaster"] } output "pg_port" { description = "Порт PostgreSQL" value = "5432" } output "pg_username" { description = "Имя пользователя БД" value = nubes_postgres_user.crud_user_0.username } output "pg_db_name" { description = "Имя базы данных" value = nubes_postgres_database.pg_db.db_name } output "pg_password" { description = "Пароль пользователя БД (платформа генерирует его сама при create_user)" value = jsondecode(nubes_postgres.main_pg.vault_secrets["users"])[var.pg_username].password sensitive = true } output "pg_ssl_mode" { description = "Режим SSL для строки подключения" value = "require" }