Files
tf_examples/iot-rmq-demo/consumer.tf
T
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

66 lines
3.1 KiB
Terraform

# =============================================================================
# Consumer (Node.js) — читает RabbitMQ, сохраняет в Redis + MongoDB
# Использует amqplib для AMQP-подключения к RabbitMQ
# =============================================================================
locals {
# Подключение к RabbitMQ (AMQP, порт 5672)
cons_rmq_host = nubes_rabbitmq.main.state_out_flat["internalConnect"] # K8s-хост
cons_rmq_user = nonsensitive(nubes_rabbitmq.main.vault_secrets["adminUser"]) # логин
cons_rmq_pass = nonsensitive(nubes_rabbitmq.main.vault_secrets["adminPass"]) # пароль
# Подключение к Redis (порт 6379)
cons_rds_host = nubes_redis.main.state_out_flat["internalConnect.master"] # K8s-хост
cons_rds_pass = nonsensitive(nubes_redis.main.vault_secrets["adminPass"]) # пароль
# Подключение к MongoDB (порт 27017) — без аутентификации (vault пустой)
cons_mgo_host = nubes_mongodb.main.state_out_flat["internalConnect"] # K8s-хост
cons_mgo_user = "admin" # дефолтный пользователь
cons_mgo_pass = "" # без пароля
}
resource "nubes_nodejs" "consumer" {
resource_name = local.cons_resource_name # имя в личном кабинете
startup_configuration = {
resource_realm = var.realm # K8s-кластер
}
cluster_configuration = {
cpu = local.cons_cpu # CPU millicores
memory = local.cons_memory # память MB
replicas = local.cons_replicas # количество подов
}
access_configuration = {
domain = local.cons_domain # поддомен для HTTP
}
app_configuration = {
version = "22" # версия Node.js
git_path = local.cons_git_path # Git-репо с кодом
health_path = "/" # health-check эндпоинт
}
git_revision = local.cons_git_revision # коммит для деплоя
operation_timeout = local.cons_timeout # таймаут
adopt_existing_on_create = true # подхватить suspended инстанс при повторном apply
# Переменные окружения для K8s пода
json_env = jsonencode({
RMQ_HOST = local.cons_rmq_host # хост RabbitMQ
RMQ_PORT = "5672" # порт AMQP
RMQ_USER = local.cons_rmq_user # логин RabbitMQ
RMQ_PASS = local.cons_rmq_pass # пароль RabbitMQ
RMQ_QUEUE = local.rmq_queue # имя очереди
REDIS_HOST = local.cons_rds_host # хост Redis
REDIS_PORT = "6379" # порт Redis
REDIS_PASS = local.cons_rds_pass # пароль Redis
MONGO_URI = "mongodb://${local.cons_mgo_user}:${local.cons_mgo_pass}@${local.cons_mgo_host}:27017/iot?authSource=admin"
MONGO_DB = "iot" # имя базы MongoDB
})
# Ждать создания всех трёх сервисов
depends_on = [nubes_rabbitmq.main, nubes_redis.main, nubes_mongodb.main]
}