# ============================================================================= # Flask Producer — генерирует IoT-события, шлёт в Kafka # ============================================================================= locals { producer_kafka_secrets = jsondecode(nubes_kafka.main.vault_secrets["users"]) producer_kafka_bootstrap = "${try(nubes_kafka.main.state_out_flat["internalConnect.bootstrap.fqdn"], "")}:${try(nubes_kafka.main.state_out_flat["internalConnect.bootstrap.port"], "9093")}" producer_kafka_password = try(nonsensitive(local.producer_kafka_secrets["iot-app"]["user.password"]), "") producer_kafka_ca_crt = try(nonsensitive(local.producer_kafka_secrets["ca"]["ca.crt"]), "") producer_kafka_user_crt = try(nonsensitive(local.producer_kafka_secrets["iot-app"]["user.crt"]), "") producer_kafka_user_key = try(nonsensitive(local.producer_kafka_secrets["iot-app"]["user.key"]), "") } resource "nubes_flask" "producer" { resource_name = local.producer_resource_name startup_configuration = { resource_realm = var.realm } cluster_configuration = { cpu = local.producer_cpu memory = local.producer_memory replicas = local.producer_replicas } access_configuration = { domain = local.producer_domain } app_configuration = { version = "3.12" git_path = local.producer_git_path health_path = "/health" } git_revision = local.producer_git_revision operation_timeout = local.producer_timeout json_env = jsonencode({ KAFKA_BROKERS = local.producer_kafka_bootstrap KAFKA_TOPIC = local.kafka_topic_name KAFKA_USERNAME = local.kafka_username KAFKA_PASSWORD = local.producer_kafka_password KAFKA_CA_CRT = local.producer_kafka_ca_crt KAFKA_USER_CRT = local.producer_kafka_user_crt KAFKA_USER_KEY = local.producer_kafka_user_key PRODUCE_INTERVAL = "3" }) depends_on = [nubes_kafka.main] }