Раньше 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.
115 lines
4.4 KiB
Terraform
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"
|
|
}
|