From b9965f20928ef4942df57e4bd6d0e224095238d2 Mon Sep 17 00:00:00 2001
From: Nemo <me@captnemo.in>
Date: Fri, 01 Jun 2018 02:25:49 +0530
Subject: [PATCH] Changes for OPML-gen deployment

---
 main.tf           |  8 ++++++++
 variables.tf      |  3 +++
 opml/data.tf      |  7 +++++++
 opml/main.tf      | 28 ++++++++++++++++++++++++++++
 opml/network.tf   |  4 ++++
 opml/redis.tf     | 21 +++++++++++++++++++++
 opml/variables.tf |  7 +++++++
 7 files changed, 78 insertions(+)

diff --git a/main.tf b/main.tf
index 99ef4c3..cbd3eb4 100644
--- a/main.tf
+++ a/main.tf
@@ -53,6 +53,14 @@
   mysql-password = "${var.gitea-mysql-password}"
 }
 
+module "opml" {
+  source         = "opml"
+  domain         = "opml.bb8.fun"
+  client-id      = "${var.opml-github-client-id}"
+  client-secret  = "${var.opml-github-client-secret}"
+  traefik-labels = "${var.traefik-common-labels}"
+}
+
 module "radicale" {
   source         = "radicale"
   domain         = "radicale.bb8.fun"
diff --git a/variables.tf b/variables.tf
index 0b94e74..e124c0e 100644
--- a/variables.tf
+++ a/variables.tf
@@ -72,3 +72,6 @@
 
 variable "timemachine-password-2" {}
 variable "timemachine-password-1" {}
+
+variable "opml-github-client-id" {}
+variable "opml-github-client-secret" {}
diff --git a/opml/data.tf b/opml/data.tf
new file mode 100644
index 0000000..ee0c40a 100644
--- /dev/null
+++ a/opml/data.tf
@@ -1,0 +1,7 @@
+data "docker_registry_image" "opml" {
+  name = "captn3m0/opml-gen:latest"
+}
+
+data "docker_registry_image" "redis" {
+  name = "redis:alpine"
+}
diff --git a/opml/main.tf b/opml/main.tf
new file mode 100644
index 0000000..dd7563c 100644
--- /dev/null
+++ a/opml/main.tf
@@ -1,0 +1,28 @@
+resource "docker_container" "opml" {
+  name  = "opml"
+  image = "${docker_image.opml.latest}"
+
+  labels = "${merge(
+    var.traefik-labels, map(
+      "traefik.port", 80,
+      "traefik.frontend.rule","Host:${var.domain}"
+  ))}"
+
+  env = [
+    "GITHUB_CLIENT_ID=${var.client-id}",
+    "GITHUB_CLIENT_SECRET=${var.client-secret}",
+    "REDIS_URL=redis://opml-redis:6379/1",
+  ]
+
+  memory                = 256
+  restart               = "unless-stopped"
+  destroy_grace_seconds = 10
+  must_run              = true
+
+  networks = ["${docker_network.opml.id}"]
+}
+
+resource "docker_image" "opml" {
+  name          = "${data.docker_registry_image.opml.name}"
+  pull_triggers = ["${data.docker_registry_image.opml.sha256_digest}"]
+}
diff --git a/opml/network.tf b/opml/network.tf
new file mode 100644
index 0000000..dc17e53 100644
--- /dev/null
+++ a/opml/network.tf
@@ -1,0 +1,4 @@
+resource "docker_network" "opml" {
+  name   = "opml"
+  driver = "bridge"
+}
diff --git a/opml/redis.tf b/opml/redis.tf
new file mode 100644
index 0000000..4b5e176 100644
--- /dev/null
+++ a/opml/redis.tf
@@ -1,0 +1,21 @@
+resource "docker_container" "redis" {
+  name  = "opml-redis"
+  image = "${docker_image.redis.latest}"
+
+  volumes {
+    host_path      = "/mnt/xwing/cache/opml-redis"
+    container_path = "/data"
+  }
+
+  memory                = 256
+  restart               = "unless-stopped"
+  destroy_grace_seconds = 10
+  must_run              = true
+
+  networks = ["${docker_network.opml.id}"]
+}
+
+resource "docker_image" "redis" {
+  name          = "${data.docker_registry_image.redis.name}"
+  pull_triggers = ["${data.docker_registry_image.redis.sha256_digest}"]
+}
diff --git a/opml/variables.tf b/opml/variables.tf
new file mode 100644
index 0000000..11b5f6f 100644
--- /dev/null
+++ a/opml/variables.tf
@@ -1,0 +1,7 @@
+variable "traefik-labels" {
+  type = "map"
+}
+
+variable "domain" {}
+variable "client-id" {}
+variable "client-secret" {}
--
rgit 0.1.5