fix(postgres): исправлен api_endpoint nubes, try() для vault_secrets, стресс-скрипт, документация ошибок
This commit is contained in:
@@ -45,14 +45,18 @@ variable "pg_password" {
|
||||
description = "Только для сверки. Реальный пароль из vault_secrets. Должен совпадать с tfvars."
|
||||
}
|
||||
|
||||
# Nubes endpoints — не путать:
|
||||
# API Dashboard (для Terraform-провайдеров): https://deck-api-test.ngcloud.ru/api/v1/index.cfm
|
||||
# UI облака (только браузер, не для кода): https://deck-test.ngcloud.ru/
|
||||
# ВАЖНО: nubes и sless провайдеры требуют API endpoint, НЕ UI!
|
||||
provider "nubes" {
|
||||
api_token = var.api_token
|
||||
api_endpoint = "https://deck-test.ngcloud.ru/api/v1/index.cfm"
|
||||
api_endpoint = "https://deck-api-test.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
|
||||
provider "sless" {
|
||||
endpoint = "https://sless.kube5s.ru"
|
||||
token = var.api_token
|
||||
nubes_endpoint = "https://deck-test.ngcloud.ru/api/v1"
|
||||
nubes_endpoint = "https://deck-api-test.ngcloud.ru/api/v1"
|
||||
}
|
||||
|
||||
|
||||
@@ -2,16 +2,20 @@
|
||||
|
||||
# Актуальные credentials из vault_secrets (authoritatively) — vault синхронизирован с кластером.
|
||||
# Структура vault_secrets["users"]: JSON-строка {"username": {"password": "...", "username": "..."}}
|
||||
|
||||
locals {
|
||||
pg_creds_map = jsondecode(nubes_postgres.npg.vault_secrets["users"])
|
||||
# try() нужен: vault_secrets["users"] появляется только ПОСЛЕ создания первого пользователя.
|
||||
# На первом apply ключа ещё нет → пустая map. Пароль подтянется при следующем apply.
|
||||
pg_creds_map = try(jsondecode(lookup(nubes_postgres.npg.vault_secrets, "users", "{}")), {})
|
||||
pg_username = nubes_postgres_user.pg_user.username
|
||||
pg_password = local.pg_creds_map[local.pg_username]["password"]
|
||||
pg_password = try(local.pg_creds_map[local.pg_username]["password"], "")
|
||||
pg_host = nubes_postgres.npg.state_out_flat["internalConnect.master"]
|
||||
pg_database = nubes_postgres_database.db.db_name
|
||||
}
|
||||
|
||||
|
||||
resource "nubes_postgres" "npg" {
|
||||
resource_name = "teststand-pg-2"
|
||||
resource_name = "pg-sless-demo"
|
||||
# s3_uid = "s01325"
|
||||
s3_uid = var.s3_uid
|
||||
resource_realm = var.realm
|
||||
@@ -40,14 +44,14 @@ resource "nubes_postgres" "npg" {
|
||||
|
||||
resource "nubes_postgres_user" "pg_user" {
|
||||
postgres_id = nubes_postgres.npg.id
|
||||
username = "u-user0"
|
||||
username = "user0"
|
||||
role = "ddl_user"
|
||||
adopt_existing_on_create = true
|
||||
}
|
||||
|
||||
resource "nubes_postgres_database" "db" {
|
||||
postgres_id = nubes_postgres.npg.id
|
||||
db_name = "db_terra"
|
||||
db_name = "db0"
|
||||
db_owner = nubes_postgres_user.pg_user.username
|
||||
adopt_existing_on_create = true
|
||||
# suspend_on_destroy = false
|
||||
|
||||
Executable
+46
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
# 2026-03-20
|
||||
# stress_destroy_apply.sh — 5 итераций terraform destroy + apply для проверки lifecycle PG.
|
||||
# Запускать вручную с VM: bash stress_destroy_apply.sh
|
||||
# Логи каждой итерации пишутся в stress_log_N.txt
|
||||
|
||||
set -e
|
||||
|
||||
ITERATIONS=5
|
||||
DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
cd "$DIR"
|
||||
|
||||
echo "=== Старт stress-теста: $ITERATIONS итераций destroy+apply ==="
|
||||
echo "Workdir: $DIR"
|
||||
echo ""
|
||||
|
||||
for i in $(seq 1 $ITERATIONS); do
|
||||
LOG="stress_log_${i}.txt"
|
||||
echo "--- Итерация $i/$ITERATIONS ---"
|
||||
echo "Лог: $LOG"
|
||||
|
||||
echo "[$i] DESTROY — $(date)" | tee "$LOG"
|
||||
terraform destroy -auto-approve 2>&1 | tee -a "$LOG"
|
||||
DESTROY_CODE=${PIPESTATUS[0]}
|
||||
|
||||
if [ $DESTROY_CODE -ne 0 ]; then
|
||||
echo "[!] destroy завершился с ошибкой (код $DESTROY_CODE), итерация $i. Прерывание." | tee -a "$LOG"
|
||||
exit $DESTROY_CODE
|
||||
fi
|
||||
|
||||
echo "" | tee -a "$LOG"
|
||||
echo "[$i] APPLY — $(date)" | tee -a "$LOG"
|
||||
terraform apply -auto-approve 2>&1 | tee -a "$LOG"
|
||||
APPLY_CODE=${PIPESTATUS[0]}
|
||||
|
||||
if [ $APPLY_CODE -ne 0 ]; then
|
||||
echo "[!] apply завершился с ошибкой (код $APPLY_CODE), итерация $i. Прерывание." | tee -a "$LOG"
|
||||
exit $APPLY_CODE
|
||||
fi
|
||||
|
||||
echo "" | tee -a "$LOG"
|
||||
echo "[$i] Итерация завершена успешно — $(date)" | tee -a "$LOG"
|
||||
echo ""
|
||||
done
|
||||
|
||||
echo "=== Все $ITERATIONS итераций прошли успешно ==="
|
||||
Reference in New Issue
Block a user