From d9d4c16f172e88aa1c707aa11c8d7e3330923f0b Mon Sep 17 00:00:00 2001
From: Ben Morrice <ben.morrice@cern.ch>
Date: Wed, 17 Mar 2021 08:54:55 +0100
Subject: [PATCH] add gitlabci/nomad configuration

---
 .gitlab-ci.yml        | 31 +++++++++++++++++++++++
 dev.variables.sh      |  7 ++++++
 prod.variables.sh     |  7 ++++++
 stream8_backups.nomad | 58 +++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 103 insertions(+)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 dev.variables.sh
 create mode 100644 prod.variables.sh
 create mode 100644 stream8_backups.nomad

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..cafb485
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,31 @@
+---
+include: 'https://gitlab.cern.ch/linuxsupport/cronjobs/base/raw/master/gitlab-ci.yml'
+
+
+build_stream8_backups:
+  stage: build
+  tags:
+    - docker-image-build
+  script: "echo" # unused but this line is required by GitLab CI
+  variables:
+    CONTEXT_DIR: stream8_backups
+    TO: $CI_REGISTRY_IMAGE/stream8_backups:$CI_COMMIT_REF_NAME
+
+deploy:
+  extends: .nomad
+  stage: deploy
+  script:
+    - for j in *.nomad; do echo -e "\n${j}:"; nomad job run <(envsubst < $j); done
+  only:
+    - tags
+    - master
+
+deploy_dev:
+  extends: .nomad
+  stage: deploy
+  script:
+    - for j in *.nomad; do echo -e "\n${j}:"; nomad job run <(envsubst < $j); done
+  except:
+    - tags
+    - master
+  when: manual
diff --git a/dev.variables.sh b/dev.variables.sh
new file mode 100644
index 0000000..7e68e7a
--- /dev/null
+++ b/dev.variables.sh
@@ -0,0 +1,7 @@
+SCHEDULE="15 9 * * 1"
+DATA="/mnt/data1/dist"
+PATH_SNAPSHOTS="tmp"
+S3_REPOSITORY="s8-backups-testing"
+PRUNE_SNAPSHOTS_OLDER_THAN="2d"
+EMAIL_FROM="Linux.Support@cern.ch"
+EMAIL_ADMIN="morrice@cern.ch"
diff --git a/prod.variables.sh b/prod.variables.sh
new file mode 100644
index 0000000..5e1a4bb
--- /dev/null
+++ b/prod.variables.sh
@@ -0,0 +1,7 @@
+SCHEDULE="15 9 * * *"
+DATA="/mnt/data1/dist"
+PATH_SNAPSHOTS="cern/centos"
+S3_REPOSITORY="s8-backups-production"
+PRUNE_SNAPSHOTS_OLDER_THAN="730d"
+EMAIL_FROM="Linux.Support@cern.ch"
+EMAIL_ADMIN="lxsoft-admins@cern.ch"
diff --git a/stream8_backups.nomad b/stream8_backups.nomad
new file mode 100644
index 0000000..ee82da9
--- /dev/null
+++ b/stream8_backups.nomad
@@ -0,0 +1,58 @@
+job "${PREFIX}_stream8_backups" {
+  datacenters = ["meyrin"]
+
+  type = "batch"
+
+  periodic {
+    cron = "${SCHEDULE}"
+    time_zone = "Europe/Zurich"
+    prohibit_overlap = false
+  }
+
+  reschedule {
+    attempts       = 276
+    interval       = "23h"
+    unlimited      = false
+    delay          = "5m"
+    delay_function = "constant"
+  }
+
+  task "${PREFIX}_stream8_backups" {
+    driver = "docker"
+
+    config {
+      image = "https://gitlab-registry.cern.ch/linuxsupport/cronjobs/stream8_backups/stream8_backups:${CI_COMMIT_REF_NAME}"
+      force_pull = ${FORCE_PULL}
+      logging {
+        config {
+          tag = "${PREFIX}_stream8_backups"
+        }
+      }
+      volumes = [
+        "$DATA:/data",
+      ]
+    }
+
+    env {
+      RESTIC_PASSWORD = "$RESTIC_PASSWORD"
+      AWS_ACCESS_KEY_ID = "$AWS_ACCESS_KEY_ID"
+      AWS_SECRET_ACCESS_KEY = "$AWS_SECRET_ACCESS_KEY"
+      RESTIC_REPOSITORY = "s3:s3.cern.ch/$S3_REPOSITORY"
+      PRUNE_SNAPSHOTS_OLDER_THAN = "$PRUNE_SNAPSHOTS_OLDER_THAN"
+      PATH_SNAPSHOTS = "$PATH_SNAPSHOTS"
+      EMAIL_FROM = "$EMAIL_FROM"
+      EMAIL_ADMIN = "$EMAIL_ADMIN"
+      NOMAD_ADDR = "$NOMAD_ADDR"
+    }
+
+    resources {
+      cpu = 6000 # Mhz
+      memory = 1024 # MB
+
+      network {
+        mbits = 10
+      }
+    }
+
+  }
+}
-- 
GitLab