From fd907cf621162e6dc66ff0b29c60d59f3cbd6451 Mon Sep 17 00:00:00 2001
From: Sergey Yakubov <sergey.yakubov@desy.de>
Date: Wed, 4 Sep 2019 14:12:25 +0200
Subject: [PATCH] add terraform scripts

---
 .gitignore                                    |  2 +
 deploy/docker/cluster/Dockerfile              |  3 ++
 .../{asapo-nginx.nmd => asapo-nginx.nmd.tpl}  |  2 +-
 ...po-services.nmd => asapo-services.nmd.tpl} | 14 +++---
 deploy/docker/cluster/jobs/asapo.auto.tfvars  |  6 +++
 deploy/docker/cluster/jobs/asapo.tf           | 50 +++++++++++++++++++
 deploy/docker/cluster/jobs/auth_secret.key    |  1 +
 .../docker/cluster/jobs/authorizer.json.tpl   |  4 +-
 deploy/docker/cluster/run.sh                  |  1 +
 deploy/docker/cluster/supervisord.conf        |  2 +-
 10 files changed, 73 insertions(+), 12 deletions(-)
 rename deploy/docker/cluster/jobs/{asapo-nginx.nmd => asapo-nginx.nmd.tpl} (96%)
 rename deploy/docker/cluster/jobs/{asapo-services.nmd => asapo-services.nmd.tpl} (85%)
 create mode 100644 deploy/docker/cluster/jobs/asapo.auto.tfvars
 create mode 100644 deploy/docker/cluster/jobs/asapo.tf
 create mode 100644 deploy/docker/cluster/jobs/auth_secret.key

diff --git a/.gitignore b/.gitignore
index 46ab8a011..316a81632 100644
--- a/.gitignore
+++ b/.gitignore
@@ -139,3 +139,5 @@ common/go/src/asapo_common/version/version_lib.go
 
 
 !sphinx/*
+.terraform
+terraform.tfstate*
diff --git a/deploy/docker/cluster/Dockerfile b/deploy/docker/cluster/Dockerfile
index 1b8cdcd67..94c777c5b 100644
--- a/deploy/docker/cluster/Dockerfile
+++ b/deploy/docker/cluster/Dockerfile
@@ -4,6 +4,7 @@ MAINTAINER DESY IT
 
 ENV CONSUL_VERSION=1.6.0
 ENV NOMAD_VERSION=0.9.5
+ENV TERRAFORM_VERSION=0.12.7
 
 ENV HASHICORP_RELEASES=https://releases.hashicorp.com
 
@@ -30,6 +31,8 @@ RUN set -eux && \
     unzip -d /bin consul_${CONSUL_VERSION}_linux_amd64.zip && \
     wget ${HASHICORP_RELEASES}/nomad/${NOMAD_VERSION}/nomad_${NOMAD_VERSION}_linux_amd64.zip && \
     unzip -d /bin nomad_${NOMAD_VERSION}_linux_amd64.zip && \
+    wget ${HASHICORP_RELEASES}/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \
+    unzip -d /bin terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \
     cd /tmp && \
     rm -rf /tmp/build && \
 # tiny smoke test to ensure the binary we downloaded runs
diff --git a/deploy/docker/cluster/jobs/asapo-nginx.nmd b/deploy/docker/cluster/jobs/asapo-nginx.nmd.tpl
similarity index 96%
rename from deploy/docker/cluster/jobs/asapo-nginx.nmd
rename to deploy/docker/cluster/jobs/asapo-nginx.nmd.tpl
index 3e17c3739..79c972024 100644
--- a/deploy/docker/cluster/jobs/asapo-nginx.nmd
+++ b/deploy/docker/cluster/jobs/asapo-nginx.nmd.tpl
@@ -25,7 +25,7 @@ job "asapo-nginx" {
 
       config {
         network_mode = "host"
-        image = "nginx:1.14"
+        image = "nginx:${nginx_version}"
         volumes = ["local/nginx.conf:/etc/nginx/nginx.conf"]
       }
 
diff --git a/deploy/docker/cluster/jobs/asapo-services.nmd b/deploy/docker/cluster/jobs/asapo-services.nmd.tpl
similarity index 85%
rename from deploy/docker/cluster/jobs/asapo-services.nmd
rename to deploy/docker/cluster/jobs/asapo-services.nmd.tpl
index 483adb57f..38056a13e 100644
--- a/deploy/docker/cluster/jobs/asapo-services.nmd
+++ b/deploy/docker/cluster/jobs/asapo-services.nmd.tpl
@@ -12,11 +12,10 @@ job "asapo-services" {
       config {
         network_mode = "host"
         dns_servers = ["127.0.0.1"]
-        image = "yakser/asapo-authorizer-dev:feature_virtualized-deployment.latest"
-	    force_pull = true
-        volumes = ["local/config.json:/var/lib/authorizer/config.json",
-                   "/bldocuments/support/asapo/beamtime_beamline_mapping.txt:/var/lib/authorizer/beamtime_beamline_mapping.txt",
-                   "/bldocuments/support/asapo/ip_beamtime_mapping:/var/lib/authorizer/ip_beamtime_mapping"]
+        image = "yakser/asapo-authorizer${image_suffix}"
+	force_pull = true
+        volumes = ["local/config.json:/var/lib/authorizer/config.json"]
+	%{ if fluentd_logs }
         logging {
             type = "fluentd"
             config {
@@ -25,6 +24,7 @@ job "asapo-services" {
                 tag = "asapo.docker"
             }
         }
+	%{endif}
       }
 
       resources {
@@ -62,7 +62,7 @@ job "asapo-services" {
       }
       template {
         source        = "/usr/local/nomad_jobs/auth_secret.key"
-        destination   = "secrets/secret.key"
+        destination   = "local/secret.key"
         change_mode   = "restart"
       }
    }
@@ -76,7 +76,7 @@ job "asapo-services" {
       config {
         network_mode = "host"
         dns_servers = ["127.0.0.1"]
-        image = "yakser/asapo-discovery-dev:feature_virtualized-deployment.latest"
+        image = "yakser/asapo-discovery${image_suffix}"
 	    force_pull = true
         volumes = ["local/config.json:/var/lib/discovery/config.json"]
         logging {
diff --git a/deploy/docker/cluster/jobs/asapo.auto.tfvars b/deploy/docker/cluster/jobs/asapo.auto.tfvars
new file mode 100644
index 000000000..060182276
--- /dev/null
+++ b/deploy/docker/cluster/jobs/asapo.auto.tfvars
@@ -0,0 +1,6 @@
+nginx_version = "1.14"
+asapo_imagename_suffix="-dev"
+asapo_image_tag = "feature_virtualized-deployment.latest"
+
+
+
diff --git a/deploy/docker/cluster/jobs/asapo.tf b/deploy/docker/cluster/jobs/asapo.tf
new file mode 100644
index 000000000..8e0496b35
--- /dev/null
+++ b/deploy/docker/cluster/jobs/asapo.tf
@@ -0,0 +1,50 @@
+provider "nomad" {
+  address = "http://localhost:4646"
+}
+
+variable "fluentd_logs" {
+ default = true
+}
+
+variable "nginx_version" {
+  default = "latest"
+}
+
+variable "asapo_imagename_suffix" {
+  default = ""
+}
+
+variable "asapo_image_tag" {
+  default = "latest"
+}
+
+variable "shared_dir" {
+  default = "/tmp"
+}
+
+data "template_file" "nginx" {
+  template = "${file("./asapo-nginx.nmd.tpl")}"
+  vars = {
+    nginx_version = "${var.nginx_version}"
+  }
+}
+
+data "template_file" "asapo_services" {
+  template = "${file("./asapo-services.nmd.tpl")}"
+  vars = {
+    image_suffix = "${var.asapo_imagename_suffix}:${var.asapo_image_tag}"
+    shared_dir = "${var.shared_dir}"
+    fluentd_logs = "${var.fluentd_logs}"
+  }
+}
+
+resource "nomad_job" "asapo-nginx" {
+  jobspec = "${data.template_file.nginx.rendered}"
+}
+
+resource "nomad_job" "asapo-services" {
+  jobspec = "${data.template_file.asapo_services.rendered}"
+}
+
+
+
diff --git a/deploy/docker/cluster/jobs/auth_secret.key b/deploy/docker/cluster/jobs/auth_secret.key
new file mode 100644
index 000000000..a953ac63b
--- /dev/null
+++ b/deploy/docker/cluster/jobs/auth_secret.key
@@ -0,0 +1 @@
+sadhfi334yxan
\ No newline at end of file
diff --git a/deploy/docker/cluster/jobs/authorizer.json.tpl b/deploy/docker/cluster/jobs/authorizer.json.tpl
index 838627963..69628bf81 100644
--- a/deploy/docker/cluster/jobs/authorizer.json.tpl
+++ b/deploy/docker/cluster/jobs/authorizer.json.tpl
@@ -4,9 +4,7 @@
   "AlwaysAllowedBeamtimes":[{"BeamtimeId":"asapo_test","Beamline":"test"},
   {"BeamtimeId":"asapo_test1","Beamline":"test1"},
   {"BeamtimeId":"asapo_test2","Beamline":"test2"}],
-  "BeamtimeBeamlineMappingFile":"//var//lib//authorizer//beamtime_beamline_mapping.txt",
-  "IpBeamlineMappingFolder":"//var//lib//authorizer//ip_beamtime_mapping",
-  "SecretFile":"/secrets/secret.key"
+  "SecretFile":"/local/secret.key"
 }
 
 
diff --git a/deploy/docker/cluster/run.sh b/deploy/docker/cluster/run.sh
index a704681f7..64d07fb89 100755
--- a/deploy/docker/cluster/run.sh
+++ b/deploy/docker/cluster/run.sh
@@ -1 +1,2 @@
 docker run --privileged --rm -v /var/run/docker.sock:/var/run/docker.sock -v `pwd`/jobs:/usr/local/nomad_jobs --name asapo --net=host -v /tmp/nomad:/tmp/nomad -v /var/lib/docker:/var/lib/docker -d yakser/asapo-cluster
+
diff --git a/deploy/docker/cluster/supervisord.conf b/deploy/docker/cluster/supervisord.conf
index cabe55263..0c5c6c7ba 100644
--- a/deploy/docker/cluster/supervisord.conf
+++ b/deploy/docker/cluster/supervisord.conf
@@ -8,7 +8,7 @@ childlogdir=/var/log/supervisord/               ; where child log files will liv
 use=root
 
 [program:consul]
-command=/bin/consul agent -dev -client 0.0.0.0
+command=/bin/consul agent -dev -client 0.0.0.0 -domain asapo -recursor=8.8.8.8
 #-config-dir=/etc/consul.d
 
 [program:nomad]
-- 
GitLab