From 15ab816808f78b2947e3532ab888b6c21b08149b Mon Sep 17 00:00:00 2001
From: Jan David Mol <mol@astron.nl>
Date: Mon, 9 Sep 2024 15:35:03 +0200
Subject: [PATCH] Deploy station software by specifying region

---
 .deploy.gitlab-ci.yml                             | 13 +++++++++----
 infra/jobs/station/device-server.levant.nomad     |  1 +
 infra/jobs/station/dsconfig.levant.nomad          |  1 +
 infra/jobs/station/ec-sim.levant.nomad            |  1 +
 infra/jobs/station/jupyter.levant.nomad           |  1 +
 infra/jobs/station/landing-page.levant.nomad      |  1 +
 infra/jobs/station/logging.levant.nomad           |  1 +
 infra/jobs/station/mesh-gateway.levant.nomad      |  1 +
 infra/jobs/station/monitoring.levant.nomad        |  1 +
 infra/jobs/station/object-storage.levant.nomad    |  1 +
 infra/jobs/station/rpc-server.levant.nomad        |  1 +
 infra/jobs/station/sdptr.levant.nomad             |  1 +
 infra/jobs/station/server-monitoring.levant.nomad |  1 +
 infra/jobs/station/simulators.levant.nomad        |  1 +
 infra/jobs/station/snmp-exporter.levant.nomad     |  1 +
 infra/jobs/station/tango.levant.nomad             |  1 +
 16 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/.deploy.gitlab-ci.yml b/.deploy.gitlab-ci.yml
index a89c64ead..199bd6a77 100644
--- a/.deploy.gitlab-ci.yml
+++ b/.deploy.gitlab-ci.yml
@@ -29,26 +29,31 @@ deploy_nomad:
     name: $STATION
   script:
     - |
+      NOMAD_HOSTNAME="monitor.control.lofar"
+      NOMAD_REGION="lofar-${STATION}"
+
       if [ "${STATION}" == "dts-lab" ]; then
           # dts-lab test station
-          HOSTNAME="dts-lab.lofar.net"
+          NOMAD_HOSTNAME="dts-lab.lofar.net"
+          NOMAD_REGION="global"
           EXTRA_VARFILES="-var-file=infra/env/cs.yaml"
       elif [ "${STATION::2}" == "rs" ]; then
           # remote station
-          HOSTNAME="${STATION}c.control.lofar"
+          HOSTNAME="monitor.control.lofar"
+          REGION="lofar-${STATION}"
           EXTRA_VARFILES="-var-file=infra/env/rs.yaml"
       else
           # core station
-          HOSTNAME="${STATION}c.control.lofar"
           EXTRA_VARFILES="-var-file=infra/env/cs.yaml"
       fi
 
       # To deploy manually, get the env.yaml and the .levant.nomad file,
       # and run docker run --rm -i --net=host -v /path/to/env.yaml:/env.yaml:ro hashicorp/levant deploy --var-file=/env.yaml /dev/stdin < /path/to/file.levant.nomad
       levant deploy \
-        -address="http://${HOSTNAME}:4646" \
+        -address="http://${NOMAD_HOSTNAME}:4646" \
         -var-file=infra/env/common.yaml ${EXTRA_VARFILES} \
         -var image_tag="${CI_COMMIT_REF_SLUG}" \
+        -var region="${NOMAD_REGION}" \
         -var station="${STATION}" \
         -ignore-no-changes \
         infra/jobs/station/${COMPONENT}.levant.nomad
diff --git a/infra/jobs/station/device-server.levant.nomad b/infra/jobs/station/device-server.levant.nomad
index 9959b62ea..5d4572eba 100644
--- a/infra/jobs/station/device-server.levant.nomad
+++ b/infra/jobs/station/device-server.levant.nomad
@@ -1,4 +1,5 @@
 job "device-servers" {
+    region      = "[[.region]]"
     datacenters = ["stat"]
     type        = "service"
 
diff --git a/infra/jobs/station/dsconfig.levant.nomad b/infra/jobs/station/dsconfig.levant.nomad
index 8d39dcd2e..f7cbbcd91 100644
--- a/infra/jobs/station/dsconfig.levant.nomad
+++ b/infra/jobs/station/dsconfig.levant.nomad
@@ -3,6 +3,7 @@ job "dsconfig" {
     payload = "required"
   }
 
+  region      = "[[.region]]"
   datacenters = ["stat"]
   type        = "batch"
 
diff --git a/infra/jobs/station/ec-sim.levant.nomad b/infra/jobs/station/ec-sim.levant.nomad
index 641ccac6c..0435b8654 100644
--- a/infra/jobs/station/ec-sim.levant.nomad
+++ b/infra/jobs/station/ec-sim.levant.nomad
@@ -1,4 +1,5 @@
 job "ec-sim" {
+  region      = "[[.region]]"
   datacenters = ["stat"]
   type        = "service"
 
diff --git a/infra/jobs/station/jupyter.levant.nomad b/infra/jobs/station/jupyter.levant.nomad
index 003c9984d..5213a5b6e 100644
--- a/infra/jobs/station/jupyter.levant.nomad
+++ b/infra/jobs/station/jupyter.levant.nomad
@@ -1,4 +1,5 @@
 job "jupyter" {
+  region      = "[[.region]]"
   datacenters = ["stat"]
   type        = "service"
 
diff --git a/infra/jobs/station/landing-page.levant.nomad b/infra/jobs/station/landing-page.levant.nomad
index 1944b344d..c24885db7 100644
--- a/infra/jobs/station/landing-page.levant.nomad
+++ b/infra/jobs/station/landing-page.levant.nomad
@@ -1,4 +1,5 @@
 job "landing-page" {
+  region      = "[[.region]]"
   datacenters = ["stat"]
   type        = "service"
 
diff --git a/infra/jobs/station/logging.levant.nomad b/infra/jobs/station/logging.levant.nomad
index 5fc213d1d..20edff100 100644
--- a/infra/jobs/station/logging.levant.nomad
+++ b/infra/jobs/station/logging.levant.nomad
@@ -1,4 +1,5 @@
 job "log-scraping" {
+    region      = "[[.region]]"
     datacenters = ["stat"]
 [[ if ne .station "dev" ]]
     type        = "system"
diff --git a/infra/jobs/station/mesh-gateway.levant.nomad b/infra/jobs/station/mesh-gateway.levant.nomad
index 72dcdf20f..58c0e52e7 100644
--- a/infra/jobs/station/mesh-gateway.levant.nomad
+++ b/infra/jobs/station/mesh-gateway.levant.nomad
@@ -1,4 +1,5 @@
 job "mesh-gateway" {
+  region      = "[[.region]]"
   datacenters = ["stat"]
   type        = "service"
   group "mesh" {
diff --git a/infra/jobs/station/monitoring.levant.nomad b/infra/jobs/station/monitoring.levant.nomad
index ef9726335..607ada18f 100644
--- a/infra/jobs/station/monitoring.levant.nomad
+++ b/infra/jobs/station/monitoring.levant.nomad
@@ -1,4 +1,5 @@
 job "monitoring" {
+  region      = "[[.region]]"
   datacenters = ["stat"]
   type        = "service"
 
diff --git a/infra/jobs/station/object-storage.levant.nomad b/infra/jobs/station/object-storage.levant.nomad
index b7f8f85fe..8d839791e 100644
--- a/infra/jobs/station/object-storage.levant.nomad
+++ b/infra/jobs/station/object-storage.levant.nomad
@@ -1,4 +1,5 @@
 job "object-storage" {
+  region      = "[[.region]]"
   datacenters = ["stat"]
   type        = "service"
 
diff --git a/infra/jobs/station/rpc-server.levant.nomad b/infra/jobs/station/rpc-server.levant.nomad
index 97f928702..fe214c070 100644
--- a/infra/jobs/station/rpc-server.levant.nomad
+++ b/infra/jobs/station/rpc-server.levant.nomad
@@ -1,4 +1,5 @@
 job "rpc-server" {
+  region      = "[[.region]]"
   datacenters = ["stat"]
   type        = "service"
   reschedule {
diff --git a/infra/jobs/station/sdptr.levant.nomad b/infra/jobs/station/sdptr.levant.nomad
index 28341708e..532af359d 100644
--- a/infra/jobs/station/sdptr.levant.nomad
+++ b/infra/jobs/station/sdptr.levant.nomad
@@ -1,4 +1,5 @@
 job "sdptr" {
+    region      = "[[.region]]"
     datacenters = ["stat"]
     type        = "service"
 
diff --git a/infra/jobs/station/server-monitoring.levant.nomad b/infra/jobs/station/server-monitoring.levant.nomad
index aa5aee391..a71dcb7b6 100644
--- a/infra/jobs/station/server-monitoring.levant.nomad
+++ b/infra/jobs/station/server-monitoring.levant.nomad
@@ -1,4 +1,5 @@
 job "server-monitoring" {
+  region      = "[[.region]]"
   datacenters = ["stat"]
   type        = "service"
 
diff --git a/infra/jobs/station/simulators.levant.nomad b/infra/jobs/station/simulators.levant.nomad
index ee0385b97..c1b606da4 100644
--- a/infra/jobs/station/simulators.levant.nomad
+++ b/infra/jobs/station/simulators.levant.nomad
@@ -1,4 +1,5 @@
 job "simulators" {
+  region      = "[[.region]]"
   datacenters = ["stat"]
   type        = "service"
 
diff --git a/infra/jobs/station/snmp-exporter.levant.nomad b/infra/jobs/station/snmp-exporter.levant.nomad
index e3a585127..ab6588023 100644
--- a/infra/jobs/station/snmp-exporter.levant.nomad
+++ b/infra/jobs/station/snmp-exporter.levant.nomad
@@ -1,4 +1,5 @@
 job "snmp-exporter" {
+  region      = "[[.region]]"
   datacenters = ["stat"]
   type        = "service"
 
diff --git a/infra/jobs/station/tango.levant.nomad b/infra/jobs/station/tango.levant.nomad
index d68f8a3cc..3bba681d1 100644
--- a/infra/jobs/station/tango.levant.nomad
+++ b/infra/jobs/station/tango.levant.nomad
@@ -1,4 +1,5 @@
 job "tango" {
+  region      = "[[.region]]"
   datacenters = ["stat"]
   type        = "service"
 
-- 
GitLab