From 8bb05fec661170cf4db9feda85bb4f6de1759fd6 Mon Sep 17 00:00:00 2001
From: Nemo <me@captnemo.in>
Date: Sun, 18 Feb 2018 05:04:09 +0530
Subject: [PATCH] Airsonic is back

---
 main.tf                            | 13 ++++++++-----
 variables.tf                       |  1 +
 docker/airsonic.tf                 | 37 -------------------------------------
 docker/data.tf                     |  4 ----
 docker/images.tf                   |  5 -----
 media/airsonic.tf                  | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 media/variables.tf                 |  3 +++
 monitoring/prometheus.tf           |  2 +-
 media/conf/airsonic.properties.tpl | 41 +++++++++++++++++++++++++++++++++++++++++
 9 files changed, 120 insertions(+), 52 deletions(-)

diff --git a/main.tf b/main.tf
index 8cb4123..0a23e58 100644
--- a/main.tf
+++ a/main.tf
@@ -50,11 +50,14 @@
 }
 
 module "media" {
-  source             = "media"
-  domain             = "bb8.fun"
-  links-emby         = "${module.docker.names-emby}"
-  links-transmission = "${module.docker.names-transmission}"
-  traefik-labels     = "${var.traefik-common-labels}"
+  source                 = "media"
+  domain                 = "bb8.fun"
+  links-emby             = "${module.docker.names-emby}"
+  links-transmission     = "${module.docker.names-transmission}"
+  links-mariadb          = "${module.docker.names-mariadb}"
+  traefik-labels         = "${var.traefik-common-labels}"
+  airsonic-smtp-password = "${var.airsonic-smtp-password}"
+  airsonic-db-password   = "${var.mysql_airsonic_password}"
 }
 
 module "monitoring" {
diff --git a/variables.tf b/variables.tf
index e10fad1..1a5b9bf 100644
--- a/variables.tf
+++ a/variables.tf
@@ -45,6 +45,7 @@
 variable "gitea-internal-token" {}
 variable "gitea-smtp-password" {}
 variable "digitalocean-token" {}
+variable "airsonic-smtp-password" {}
 
 variable "traefik-common-labels" {
   type = "map"
diff --git a/docker/airsonic.tf b/docker/airsonic.tf
index 5b9ed33..8b13789 100644
--- a/docker/airsonic.tf
+++ a/docker/airsonic.tf
@@ -1,38 +1,1 @@
-# resource "docker_container" "airsonic" {
-#   name  = "airsonic"
-#   image = "${docker_image.airsonic.latest}"
-#   restart               = "unless-stopped"
-#   destroy_grace_seconds = 30
-#   must_run              = true
-#   memory                = 800
-#   volumes {
-#     host_path      = "/mnt/xwing/config/airsonic/data"
-#     container_path = "/config"
-#   }
-#   volumes {
-#     host_path      = "/mnt/xwing/media/Music"
-#     container_path = "/music"
-#   }
-#   volumes {
-#     host_path      = "/mnt/xwing/config/airsonic/playlists"
-#     container_path = "/playlists"
-#   }
-#   volumes {
-#     host_path      = "/mnt/xwing/config/airsonic/podcasts"
-#     container_path = "/podcasts"
-#   }
-#   labels {
-#     "traefik.enable"                  = "true"
-#     "traefik.port"                    = "4040"
-#     "traefik.frontend.rule"           = "Host:airsonic.in.${var.domain},airsonic.${var.domain}"
-#     "traefik.frontend.passHostHeader" = "true"
-#   }
-#   # lounge:tatooine
-#   env = [
-#     "PUID=1004",
-#     "PGID=1003",
-#     "TZ=Asia/Kolkata",
-#     "CONTEXT_PATH=https://airsonic.bb8.fun",
-#   ]
-# }
 
diff --git a/docker/data.tf b/docker/data.tf
index 8a4e1a5..2e27ee8 100644
--- a/docker/data.tf
+++ a/docker/data.tf
@@ -20,10 +20,6 @@
   name = "traefik:cancoillotte-alpine"
 }
 
-data "docker_registry_image" "airsonic" {
-  name = "linuxserver/airsonic:latest"
-}
-
 data "docker_registry_image" "wikijs" {
   name = "requarks/wiki:latest"
 }
diff --git a/docker/images.tf b/docker/images.tf
index 0cc9e9f..9c7a260 100644
--- a/docker/images.tf
+++ a/docker/images.tf
@@ -18,11 +18,6 @@
   pull_triggers = ["${data.docker_registry_image.traefik.sha256_digest}"]
 }
 
-resource "docker_image" "airsonic" {
-  name          = "${data.docker_registry_image.airsonic.name}"
-  pull_triggers = ["${data.docker_registry_image.airsonic.sha256_digest}"]
-}
-
 resource "docker_image" "wikijs" {
   name          = "${data.docker_registry_image.wikijs.name}"
   pull_triggers = ["${data.docker_registry_image.wikijs.sha256_digest}"]
diff --git a/media/airsonic.tf b/media/airsonic.tf
new file mode 100644
index 0000000..37d5fee 100644
--- /dev/null
+++ a/media/airsonic.tf
@@ -1,0 +1,66 @@
+resource "docker_container" "airsonic" {
+  name                  = "airsonic"
+  image                 = "${docker_image.airsonic.latest}"
+  restart               = "unless-stopped"
+  destroy_grace_seconds = 30
+  must_run              = true
+
+  upload {
+    content = "${data.template_file.airsonic-properties-file.rendered}"
+    file    = "/usr/lib/jvm/java-1.8-openjdk/jre/lib/airsonic.properties"
+  }
+
+  volumes {
+    host_path      = "/mnt/xwing/config/airsonic/data"
+    container_path = "/config"
+  }
+
+  volumes {
+    host_path      = "/mnt/xwing/media/Music"
+    container_path = "/music"
+  }
+
+  volumes {
+    host_path      = "/mnt/xwing/config/airsonic/playlists"
+    container_path = "/playlists"
+  }
+
+  volumes {
+    host_path      = "/mnt/xwing/config/airsonic/podcasts"
+    container_path = "/podcasts"
+  }
+
+  labels {
+    "traefik.enable"                  = "true"
+    "traefik.port"                    = "4040"
+    "traefik.frontend.rule"           = "Host:airsonic.in.${var.domain},airsonic.${var.domain}"
+    "traefik.frontend.passHostHeader" = "true"
+  }
+
+  # lounge:tatooine
+  env = [
+    "PUID=1004",
+    "PGID=1003",
+    "TZ=Asia/Kolkata",
+  ]
+
+  links = ["${var.links-mariadb}"]
+}
+
+resource "docker_image" "airsonic" {
+  name          = "${data.docker_registry_image.airsonic.name}"
+  pull_triggers = ["${data.docker_registry_image.airsonic.sha256_digest}"]
+}
+
+data "docker_registry_image" "airsonic" {
+  name = "linuxserver/airsonic:latest"
+}
+
+data "template_file" "airsonic-properties-file" {
+  template = "${file("${path.module}/conf/airsonic.properties.tpl")}"
+
+  vars {
+    smtp-password = "${var.airsonic-smtp-password}"
+    db-password   = "${var.airsonic-db-password}"
+  }
+}
diff --git a/media/variables.tf b/media/variables.tf
index 641eb20..eb8eac9 100644
--- a/media/variables.tf
+++ a/media/variables.tf
@@ -1,9 +1,12 @@
 variable "domain" {
   type = "string"
 }
 
 variable "links-emby" {}
 variable "links-transmission" {}
+variable "links-mariadb" {}
+variable "airsonic-smtp-password" {}
+variable "airsonic-db-password" {}
 
 variable "traefik-labels" {
   type = "map"
diff --git a/monitoring/prometheus.tf b/monitoring/prometheus.tf
index c7fbd71..2ff8930 100644
--- a/monitoring/prometheus.tf
+++ a/monitoring/prometheus.tf
@@ -27,7 +27,7 @@
     "${docker_container.nodeexporter.name}",
     "${docker_container.cadvisor.name}",
     "${docker_container.transmission-exporter.name}",
-    "${var.links-traefik}"
+    "${var.links-traefik}",
   ]
 
   restart               = "unless-stopped"
diff --git a/media/conf/airsonic.properties.tpl b/media/conf/airsonic.properties.tpl
new file mode 100644
index 0000000..adbe0ec 100644
--- /dev/null
+++ a/media/conf/airsonic.properties.tpl
@@ -1,0 +1,41 @@
+MediaLibraryStatistics=1512 4850 62662 486912890569 15485585
+IndexString=A B C D E F G H I J K L M N O P Q R S T U V W X-Z(XYZ)
+IgnoredArticles=The El La Los Las Le Les
+Shortcuts=New Incoming Podcast
+PlaylistFolder=/var/playlists
+MusicFileTypes=mp3 ogg oga aac m4a flac wav wma aif aiff ape mpc shn
+VideoFileTypes=flv avi mpg mpeg mp4 m4v mkv mov wmv ogv divx m2ts
+CoverArtFileTypes2=cover.jpg cover.png cover.gif folder.jpg jpg jpeg gif png
+SortAlbumsByYear=true
+GettingStartedEnabled=false
+WelcomeTitle=Airsonic
+WelcomeSubtitle=
+WelcomeMessage2=
+LoginMessage=
+Theme=default
+LocaleLanguage=en
+LocaleCountry=in
+LocaleVariant=
+IndexCreationInterval=3
+IndexCreationHour=3
+FastCacheEnabled=false
+OrganizeByFolderStructure=true
+DownloadBitrateLimit=0
+UploadBitrateLimit=0
+LdapEnabled=false
+LdapUrl=ldap://host.domain.com:389/cn=Users,dc=domain,dc=com
+LdapSearchFilter=(sAMAccountName={0})
+LdapManagerDn=
+LdapAutoShadowing=false
+SmtpServer=smtp.mailgun.com
+SmtpEncryption=SSL/TLS
+SmtpPort=465
+SmtpUser=airsonic@captnemo.in
+SmtpFrom=airsonic@captnemo.in
+SmtpPassword=${smtp-password}
+
+DatabaseConfigType=embed
+DatabaseConfigEmbedDriver=org.hsqldb.jdbcDriver
+DatabaseConfigEmbedUrl=jdbc:mysql://mariadb:3306/airsonic
+DatabaseConfigEmbedUsername=airsonic
+DatabaseConfigEmbedPassword=${db-password}
--
rgit 0.1.5