Files
POE-sensor/poe-sensor.nomad

114 lines
3.1 KiB
HCL

job "poe-sensor" {
region = "global"
datacenters = ["hs"]
type = "service"
namespace = "production"
meta {
version = "20250617"
}
group "sensor-bridge" {
count = 1
# Network configuration - using host mode for better compatibility
network {
mode = "host"
port "health" {
static = 8080
}
}
# Restart policy
restart {
attempts = 3
interval = "30m"
delay = "15s"
mode = "fail"
}
# Update strategy
update {
max_parallel = 1
min_healthy_time = "90s"
healthy_deadline = "8m"
progress_deadline = "12m"
auto_revert = true
canary = 0
}
service {
name = "${NOMAD_JOB_NAME}"
port = "health"
tags = [
"sensor",
"modbus",
"mqtt",
"iot",
"health-check"
]
check {
type = "http"
path = "/health"
interval = "30s"
timeout = "20s"
initial_status = "critical"
check_restart {
limit = 2
grace = "20s"
}
}
}
task "poe-sensor" {
driver = "docker"
config {
image = "registry.dev.meisheng.group/ms_qc_db:20250409"
command = "/bin/bash"
args = [
"-c",
"cd local/poe-sensor && echo 'Starting POE Sensor...' && apt-get update -qq && apt-get install -y procps curl && python -m pip install --upgrade pip && python -m pip install -r requirements.txt && echo 'Dependencies installed' && python -c 'import pymodbus, paho.mqtt.client; print(\"Dependencies OK\")' && echo 'Starting application...' && python main.py"
]
}
# Git artifact
artifact {
source = "git::ssh://git@gitea.service.mesh:2222/Mei_Sheng_Textiles/POE-sensor.git"
destination = "local/poe-sensor"
options {
ref = "main"
sshkey = "LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFNd0FBQUF0emMyZ3RaVwpReU5UVXhPUUFBQUNEbWF6M0ZWdlE1YTRaalY4dUdobENleEFjN0VxbmVVN0FETnFBSXg0cUI4d0FBQUpqNGlkSVcrSW5TCkZnQUFBQXR6YzJndFpXUXlOVFV4T1FBQUFDRG1hejNGVnZRNWE0WmpWOHVHaGxDZXhBYzdFcW5lVTdBRE5xQUl4NHFCOHcKQUFBRURpRXM1ejJRb2dTempvVzdDUnZ3U2RONUpVMTNmZm14cnFIQjNOS3hXUmp1WnJQY1ZXOURscmhtTlh5NGFHVUo3RQpCenNTcWQ1VHNBTTJvQWpIaW9IekFBQUFFbUpoYmk1dVpFQnRjM1JsZUhadUxtTnZiUUVDQXc9PQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0K"
}
}
# Environment variables
env {
LOG_LEVEL = "INFO"
PYTHONUNBUFFERED = "1"
PYTHONDONTWRITEBYTECODE = "1"
PYTHONMALLOC = "malloc"
TZ = "Asia/Ho_Chi_Minh"
MQTT_BROKER = "mqtt.service.mesh"
MQTT_PORT = "1883"
MQTT_USERNAME = "relay"
MQTT_PASSWORD = "Sey@K9c&Q4^"
HEALTH_CHECK_ENABLED = "true"
HEALTH_CHECK_PORT = "8080"
}
# Resource allocation
resources {
cpu = 256
memory = 512
}
# Logs configuration
logs {
max_files = 10
max_file_size = 20
}
}
}
}