Files
tf_examples/CRUD/pg/main.tf
T
Repinoid eb65f8b0d3 CRUD: пример переведён на схему pg/ + apps/ (как в документации)
Раньше CRUD лежал плоской схемой (main.tf, locals.tf, postgres*.tf, три
приложения в одной папке) и версия провайдера в нём была 5.1.16 — из-за этого
опубликованная страница документации не могла ссылаться на этот репозиторий
(в ней описаны два каталога pg/ и apps/).
Что сделано:
- старые файлы плоской схемы удалены;
- добавлены pg/{main.tf,postgres.tf,postgres_user_db.tf,outputs.tf,
  terraform.tfvars.example} и apps/{main.tf,locals.tf,lucee.tf,flask.tf,
  nodejs.tf,.gitignore,terraform.tfvars.example} — из стенда TEST_STAND/CRUD;
- README.md — тот же пользовательский текст, но клонирование теперь
  git clone https://gitea.services.ngcloud.ru/Nail/tf_examples.git && cd tf_examples/CRUD;
- провайдер в pg/main.tf и apps/main.tf: nubes-test/nubes 3.0.0.
Секреты не переносились: взяты только отслеживаемые git файлы стенда,
terraform.tfvars и apps/creds.json в репозиторий не попадали.
Проверено: 13 файлов в CRUD, .gitignore закрывает terraform.tfvars, creds.json,
tfstate.
2026-10-02 09:07:54 +03:00

115 lines
4.4 KiB
Terraform

# =============================================================================
# PG — провайдер и переменные
# =============================================================================
#
# Здесь только БД: кластер + пользователь + база. Приложения — в ../apps/.
# Почему так разделено — см. README.md в родительской папке CRUD/.
# =============================================================================
terraform {
required_providers {
nubes = {
source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
version = "3.0.0"
}
}
}
provider "nubes" {
api_token = var.api_token
api_endpoint = "https://lk-api-gateway-test.ngcloud.ru/api/v1/svc"
# log_level = "debug" # none | info | debug, default = "none"
}
# ─────────────────────────────────────────────────────────────────────────────
# Обязательные (заполняются в terraform.tfvars)
# ─────────────────────────────────────────────────────────────────────────────
variable "api_token" {
type = string
sensitive = true
description = "Nubes API token (ЛК → Профиль → Токены → создать «Технический»)"
}
variable "realm" {
type = string
description = "resource_realm: ресурсная платформа (кластер Kubernetes), например k8s-4-sandbox-nubes-ru"
}
variable "s3_name" {
type = string
description = "Имя (или UUID) S3-экземпляра для бэкапов PostgreSQL: ЛК → S3"
}
# ─────────────────────────────────────────────────────────────────────────────
# Кластер — значения по умолчанию можно не задавать
# ─────────────────────────────────────────────────────────────────────────────
variable "pg_resource_name" {
type = string
default = "pg4crud2"
description = "Имя ресурса кластера в Nubes (по нему же ищется существующий — adopt)"
}
variable "pg_cpu" {
type = number
default = 500
}
variable "pg_memory" {
type = number
default = 512
}
variable "pg_replicas" {
type = number
default = 1
}
variable "pg_disk" {
type = number
default = 10
}
variable "pg_version" {
type = string
default = "17"
}
variable "pg_retain" {
type = number
default = 14
}
variable "pg_schedule" {
type = string
default = "0 0 * * *"
}
variable "pg_timeout" {
type = string
default = "11m"
description = "Таймаут операций кластера (create/modify/suspend)"
}
# ─────────────────────────────────────────────────────────────────────────────
# Пользователь и база — имена константны: по ним приложения собирают подключение
# ─────────────────────────────────────────────────────────────────────────────
variable "pg_username" {
type = string
default = "user4crudpg"
description = "Имя пользователя БД. Защищённые имена (admin/postgres/standby) платформа не примет"
}
variable "pg_role" {
type = string
default = "ddl_user"
description = "app_user = только DML, ddl_user = плюс создание баз/ролей (нужно приложению для CREATE TABLE)"
}
variable "pg_db_name" {
type = string
default = "db4crudpg"
}