Files
naeel 5511546534 IoT Demo: Terraform-конфиг для 6 сервисов Nubes Cloud
Producer -> RabbitMQ -> Consumer -> Redis+MongoDB -> Dashboard

Подробная инструкция в README.md:
- Что заменить в locals.tf (домены, git_path, ресурсы)
- Как заполнить terraform.tfvars
- Как форкнуть репо приложений
2026-07-22 10:19:24 +04:00

53 lines
2.5 KiB
Terraform
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =============================================================================
# Producer (Node.js) — генерирует IoT-события и шлёт в RabbitMQ
# Каждые 3 сек создаёт случайное событие от одного из 8 датчиков
# Переменные окружения попадают в K8s под через json_env
# =============================================================================
locals {
# Достаём реальные значения из созданного RabbitMQ (state_out_flat + vault_secrets)
prod_rmq_host = nubes_rabbitmq.main.state_out_flat["internalConnect"] # K8s-хост RabbitMQ
prod_rmq_user = nonsensitive(nubes_rabbitmq.main.vault_secrets["adminUser"]) # логин RabbitMQ
prod_rmq_pass = nonsensitive(nubes_rabbitmq.main.vault_secrets["adminPass"]) # пароль RabbitMQ
}
resource "nubes_nodejs" "producer" {
resource_name = local.prod_resource_name # имя в личном кабинете
startup_configuration = {
resource_realm = var.realm # K8s-кластер
}
cluster_configuration = {
cpu = local.prod_cpu # CPU millicores
memory = local.prod_memory # память MB
replicas = local.prod_replicas # количество подов
}
access_configuration = {
domain = local.prod_domain # поддомен для HTTP-доступа
}
app_configuration = {
version = "22" # версия Node.js
git_path = local.prod_git_path # Git-репо с кодом
health_path = "/" # эндпоинт для health-check'а
}
git_revision = local.prod_git_revision # коммит для деплоя
operation_timeout = local.prod_timeout # таймаут
adopt_existing_on_create = true # подхватить suspended инстанс при повторном apply
# Переменные окружения в K8s поде (доступны через process.env)
json_env = jsonencode({
RABBIT_HOST = local.prod_rmq_host # хост RabbitMQ
RABBIT_PORT = "5672" # порт AMQP
RABBIT_USER = local.prod_rmq_user # логин
RABBIT_PASS = local.prod_rmq_pass # пароль
RABBIT_QUEUE = local.rmq_queue # имя очереди
PRODUCE_INTERVAL = "3" # интервал между событиями (сек)
})
depends_on = [nubes_rabbitmq.main] # ждать создания RabbitMQ
}