- Определена архитектура managed IoT service - Согласовано решение: RabbitMQ (MVP), потом Kafka; EMQX + CRD контроллер - Создан подробный план для Sonnet (doc/iot-mvp-plan.md) - Добавлено правило в copilot-instructions: лог мышления в doc/thinking/ по датам - Полный ход рассуждений в doc/thinking/2026-04-04.md Ключевые решения: - IoT код в iot/ (легко вынести потом) - CRD IoTDevice + контроллер (как все остальное в sless) - EMQX HTTP Auth Backend для динамической аутентификации устройств - Архитектура broker-agnostic (легко переключить на Kafka) - Terraform: расширяем текущий provider (sless_iot_device ресурс)
66 lines
2.0 KiB
Terraform
66 lines
2.0 KiB
Terraform
// 2026-03-17 17:05
|
|
// main.tf — провайдеры и переменные для Nubes + sless.
|
|
terraform {
|
|
required_providers {
|
|
nubes = {
|
|
source = "terra.k8c.ru/nubes/nubes"
|
|
version = "5.0.51"
|
|
}
|
|
sless = {
|
|
source = "terra.k8c.ru/naeel/sless"
|
|
version = "~> 0.1.19"
|
|
}
|
|
}
|
|
}
|
|
|
|
variable "api_token" {
|
|
type = string
|
|
sensitive = true
|
|
description = "Nubes API token"
|
|
}
|
|
variable "s3_uid" {
|
|
type = string
|
|
sensitive = true
|
|
description = "Nubes S3 UID"
|
|
}
|
|
variable "realm" {
|
|
type = string
|
|
sensitive = true
|
|
description = "resource_realm parameter for nubes_postgres resource"
|
|
}
|
|
|
|
// 2026-03-18 — pg_user/pg_password помечены optional (default="") для сверки.
|
|
// Реальные credentials берутся из vault_secrets через locals в resources.tf.
|
|
variable "pg_user" {
|
|
type = string
|
|
sensitive = true
|
|
default = ""
|
|
description = "Только для сверки. Реальный username из nubes_postgres_user.pg_user.username. Должен совпадать с vault."
|
|
}
|
|
|
|
variable "pg_password" {
|
|
type = string
|
|
sensitive = true
|
|
default = ""
|
|
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
|
|
log_level = "debug" # none | info | debug, default = "none"
|
|
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-api-test.ngcloud.ru/api/v1"
|
|
}
|
|
|
|
|