TEST_STAND/PG: clean structure with README, variables.tf, .gitignore, terraform.tfvars.example
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
# Secrets
|
||||||
|
terraform.tfvars
|
||||||
|
|
||||||
|
# Terraform state and cache
|
||||||
|
.terraform/
|
||||||
|
.terraform.lock.hcl
|
||||||
|
terraform.tfstate
|
||||||
|
terraform.tfstate.backup
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
# PostgreSQL `pg` — TEST стенд
|
||||||
|
|
||||||
|
Terraform-манифест для создания PostgreSQL + пользователь + база данных через провайдер `nubes-test/nubes`.
|
||||||
|
|
||||||
|
## Быстрый старт
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Скопируй шаблон переменных
|
||||||
|
cp terraform.tfvars.example terraform.tfvars
|
||||||
|
|
||||||
|
# 2. Подставь свои значения в terraform.tfvars:
|
||||||
|
# api_token — Nubes API токен (TEST)
|
||||||
|
# s3_uid — UUID существующего S3 Object Storage (для бэкапов)
|
||||||
|
# realm — платформа/K8s-кластер (например k8s-3-sandbox-nubes-ru)
|
||||||
|
|
||||||
|
# 3. В resources.tf замени:
|
||||||
|
# - resource_name = "pg4tf033777" → своё имя
|
||||||
|
# - имена ресурсов "npg", "pg_user", "db2_app" → свои
|
||||||
|
|
||||||
|
# 4. Инициализация
|
||||||
|
terraform init
|
||||||
|
|
||||||
|
# 5. Проверка
|
||||||
|
terraform plan
|
||||||
|
|
||||||
|
# 6. Создать
|
||||||
|
terraform apply
|
||||||
|
|
||||||
|
# 7. Приостановить (suspend, не удаление)
|
||||||
|
terraform destroy
|
||||||
|
```
|
||||||
|
|
||||||
|
## Переменные
|
||||||
|
|
||||||
|
| Переменная | Описание | Где взять |
|
||||||
|
|---|---|---|
|
||||||
|
| `api_token` | API-токен Nubes (TEST) | Личный кабинет → Профиль → Токены |
|
||||||
|
| `s3_uid` | UUID S3 Object Storage | `terraform state list` существующего S3 |
|
||||||
|
| `realm` | Платформа развёртывания | `k8s-3-sandbox-nubes-ru` / `iot-naeel` / `naeel-test-3` |
|
||||||
|
|
||||||
|
## Провайдер
|
||||||
|
|
||||||
|
- **Источник**: `terra.k8c.ru/nubes-test/nubes`
|
||||||
|
- **Версия**: `5.0.57`
|
||||||
|
- **API**: `https://lk-api-gateway-test.ngcloud.ru/api/v1/svc`
|
||||||
|
|
||||||
|
## Структура параметров
|
||||||
|
|
||||||
|
Параметры PostgreSQL сгруппированы в JSON-блоки (map-fixed):
|
||||||
|
|
||||||
|
| Блок | Поля |
|
||||||
|
|---|---|
|
||||||
|
| `startup_configuration` | `resourceRealm` |
|
||||||
|
| `cluster_configuration` | `cpu`, `memory`, `replicas`, `disk` |
|
||||||
|
| `access_configuration` | `masterIpSpace`, `masterAccessList`, `slaveIpSpace`, `slaveAccessList` |
|
||||||
|
| `postgres_configuration` | `version`, `sslRequired`, `poolerMaster`, `poolerSlave` |
|
||||||
|
| `postgres_conf` | `[{paramName, paramValue}]` (массив) |
|
||||||
|
| `backup_configuration` | `s3Uid`, `retain`, `schedule` |
|
||||||
|
| `autoscale_configuration` | `enabled`, `schedule`, `percent`, `quota` |
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
nubes = {
|
||||||
|
source = "terra.k8c.ru/nubes-test/nubes"
|
||||||
|
version = "5.0.57"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "nubes" {
|
||||||
|
api_token = var.api_token
|
||||||
|
api_endpoint = "https://lk-api-gateway-test.ngcloud.ru/api/v1/svc"
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
resource "nubes_postgres" "npg" {
|
||||||
|
resource_name = "pg4tf033777"
|
||||||
|
|
||||||
|
startup_configuration = jsonencode({
|
||||||
|
resourceRealm = var.realm
|
||||||
|
})
|
||||||
|
|
||||||
|
cluster_configuration = jsonencode({
|
||||||
|
cpu = "500"
|
||||||
|
memory = "512"
|
||||||
|
replicas = "1"
|
||||||
|
disk = "10"
|
||||||
|
})
|
||||||
|
|
||||||
|
access_configuration = jsonencode({
|
||||||
|
masterIpSpace = "no-needed"
|
||||||
|
masterAccessList = []
|
||||||
|
slaveIpSpace = "no-needed"
|
||||||
|
slaveAccessList = []
|
||||||
|
})
|
||||||
|
|
||||||
|
postgres_configuration = jsonencode({
|
||||||
|
version = "17"
|
||||||
|
sslRequired = true
|
||||||
|
poolerMaster = false
|
||||||
|
poolerSlave = false
|
||||||
|
})
|
||||||
|
|
||||||
|
postgres_conf = jsonencode([
|
||||||
|
{
|
||||||
|
paramName = "log_connections"
|
||||||
|
paramValue = "''"
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
|
backup_configuration = jsonencode({
|
||||||
|
s3Uid = var.s3_uid
|
||||||
|
retain = "7"
|
||||||
|
schedule = "0 0 * * *"
|
||||||
|
})
|
||||||
|
|
||||||
|
autoscale_configuration = jsonencode({
|
||||||
|
enabled = false
|
||||||
|
schedule = "0"
|
||||||
|
percent = "10"
|
||||||
|
quota = "100"
|
||||||
|
})
|
||||||
|
|
||||||
|
operation_timeout = "11m"
|
||||||
|
adopt_existing_on_create = true
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "nubes_postgres_user" "pg_user" {
|
||||||
|
postgres_id = nubes_postgres.npg.id
|
||||||
|
username = "user0"
|
||||||
|
role = "ddl_user"
|
||||||
|
adopt_existing_on_create = true
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "nubes_postgres_database" "db2_app" {
|
||||||
|
postgres_id = nubes_postgres.npg.id
|
||||||
|
db_name = "dbterra"
|
||||||
|
db_owner = nubes_postgres_user.pg_user.username
|
||||||
|
adopt_existing_on_create = true
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# ───────────────────────────────────────────────────────────
|
||||||
|
# Terraform variables — TEST stand (nubes-test)
|
||||||
|
# Скопируй в terraform.tfvars и подставь реальные значения
|
||||||
|
# ───────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
# Nubes API токен для TEST
|
||||||
|
api_token = "вставь_свой_токен"
|
||||||
|
|
||||||
|
# UUID существующего экземпляра S3 Object Storage (для бэкапов)
|
||||||
|
s3_uid = "вставь_s3_user_uid"
|
||||||
|
|
||||||
|
# Платформа/K8s-кластер для развёртывания
|
||||||
|
realm = "k8s-3-sandbox-nubes-ru"
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
variable "api_token" {
|
||||||
|
description = "Nubes API token for TEST stand"
|
||||||
|
type = string
|
||||||
|
sensitive = true
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "s3_uid" {
|
||||||
|
description = "UUID существующего экземпляра S3 Object Storage (для бэкапов)"
|
||||||
|
type = string
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "realm" {
|
||||||
|
description = "Платформа/K8s-кластер для развёртывания PostgreSQL"
|
||||||
|
type = string
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user