re-arch into media directory
This commit is contained in:
parent
8efb575290
commit
1a714d87b2
|
@ -1,26 +1,3 @@
|
||||||
resource "docker_container" "mongorocks" {
|
|
||||||
name = "mongorocks"
|
|
||||||
image = "${docker_image.percona-mongodb-server.latest}"
|
|
||||||
|
|
||||||
restart = "unless-stopped"
|
|
||||||
destroy_grace_seconds = 30
|
|
||||||
must_run = true
|
|
||||||
memory = 256
|
|
||||||
|
|
||||||
volumes {
|
|
||||||
volume_name = "${docker_volume.mongorocks_data_volume.name}"
|
|
||||||
container_path = "/data/db"
|
|
||||||
host_path = "${docker_volume.mongorocks_data_volume.mountpoint}"
|
|
||||||
}
|
|
||||||
|
|
||||||
command = [
|
|
||||||
"--storageEngine=rocksdb",
|
|
||||||
"--httpinterface",
|
|
||||||
"--rest",
|
|
||||||
"--master",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_container" "mariadb" {
|
resource "docker_container" "mariadb" {
|
||||||
name = "mariadb"
|
name = "mariadb"
|
||||||
image = "${docker_image.mariadb.latest}"
|
image = "${docker_image.mariadb.latest}"
|
||||||
|
@ -59,3 +36,12 @@ resource "docker_container" "mariadb" {
|
||||||
"--version=${var.mariadb-version}-MariaDB",
|
"--version=${var.mariadb-version}-MariaDB",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "mariadb" {
|
||||||
|
name = "${data.docker_registry_image.mariadb.name}"
|
||||||
|
pull_triggers = ["${data.docker_registry_image.mariadb.sha256_digest}"]
|
||||||
|
}
|
||||||
|
|
||||||
|
data "docker_registry_image" "mariadb" {
|
||||||
|
name = "mariadb:${var.mariadb-version}"
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
resource "docker_container" "mongorocks" {
|
||||||
|
name = "mongorocks"
|
||||||
|
image = "${docker_image.percona-mongodb-server.latest}"
|
||||||
|
|
||||||
|
restart = "unless-stopped"
|
||||||
|
destroy_grace_seconds = 30
|
||||||
|
must_run = true
|
||||||
|
memory = 256
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
volume_name = "${docker_volume.mongorocks_data_volume.name}"
|
||||||
|
container_path = "/data/db"
|
||||||
|
host_path = "${docker_volume.mongorocks_data_volume.mountpoint}"
|
||||||
|
}
|
||||||
|
|
||||||
|
command = [
|
||||||
|
"--storageEngine=rocksdb",
|
||||||
|
"--httpinterface",
|
||||||
|
"--rest",
|
||||||
|
"--master",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "percona-mongodb-server" {
|
||||||
|
name = "${data.docker_registry_image.percona-mongodb-server.name}"
|
||||||
|
pull_triggers = ["${data.docker_registry_image.percona-mongodb-server.sha256_digest}"]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Database versions shouldn't be upgraded
|
||||||
|
data "docker_registry_image" "percona-mongodb-server" {
|
||||||
|
name = "percona/percona-server-mongodb:3.4"
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
output "names-mariadb" {
|
||||||
|
value = "${docker_container.mariadb.name}"
|
||||||
|
}
|
||||||
|
|
||||||
|
output "names-mongorocks" {
|
||||||
|
value = "${docker_container.mongorocks.name}"
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
variable "mariadb-version" {
|
||||||
|
description = "mariadb version to use for fetching the docker image"
|
||||||
|
default = "10.2.14"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "ips" {
|
||||||
|
type = "map"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "mysql_root_password" {}
|
|
@ -0,0 +1,7 @@
|
||||||
|
resource "docker_volume" "mariadb_volume" {
|
||||||
|
name = "mariadb_volume"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_volume" "mongorocks_data_volume" {
|
||||||
|
name = "mongorocks_data_volume"
|
||||||
|
}
|
|
@ -1,28 +1,9 @@
|
||||||
# Database versions shouldn't be upgraded
|
|
||||||
|
|
||||||
data "docker_registry_image" "mariadb" {
|
|
||||||
name = "mariadb:${var.mariadb-version}"
|
|
||||||
}
|
|
||||||
|
|
||||||
data "docker_registry_image" "percona-mongodb-server" {
|
|
||||||
name = "percona/percona-server-mongodb:3.4"
|
|
||||||
}
|
|
||||||
|
|
||||||
data "docker_registry_image" "traefik" {
|
data "docker_registry_image" "traefik" {
|
||||||
# Critical and I like upgrading it
|
# Critical and I like upgrading it
|
||||||
# for updating config for new features
|
# for updating config for new features
|
||||||
name = "traefik:1.6-alpine"
|
name = "traefik:1.6-alpine"
|
||||||
}
|
}
|
||||||
|
|
||||||
# YOLO everything else
|
|
||||||
data "docker_registry_image" "emby" {
|
|
||||||
name = "emby/embyserver:latest"
|
|
||||||
}
|
|
||||||
|
|
||||||
data "docker_registry_image" "transmission" {
|
|
||||||
name = "linuxserver/transmission:latest"
|
|
||||||
}
|
|
||||||
|
|
||||||
data "docker_registry_image" "wikijs" {
|
data "docker_registry_image" "wikijs" {
|
||||||
name = "requarks/wiki:latest"
|
name = "requarks/wiki:latest"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,3 @@
|
||||||
resource "docker_image" "emby" {
|
|
||||||
name = "${data.docker_registry_image.emby.name}"
|
|
||||||
pull_triggers = ["${data.docker_registry_image.emby.sha256_digest}"]
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_image" "mariadb" {
|
|
||||||
name = "${data.docker_registry_image.mariadb.name}"
|
|
||||||
pull_triggers = ["${data.docker_registry_image.mariadb.sha256_digest}"]
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_image" "transmission" {
|
|
||||||
name = "${data.docker_registry_image.transmission.name}"
|
|
||||||
pull_triggers = ["${data.docker_registry_image.transmission.sha256_digest}"]
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_image" "traefik16" {
|
resource "docker_image" "traefik16" {
|
||||||
name = "${data.docker_registry_image.traefik.name}"
|
name = "${data.docker_registry_image.traefik.name}"
|
||||||
pull_triggers = ["${data.docker_registry_image.traefik.sha256_digest}"]
|
pull_triggers = ["${data.docker_registry_image.traefik.sha256_digest}"]
|
||||||
|
@ -23,11 +8,6 @@ resource "docker_image" "wikijs" {
|
||||||
pull_triggers = ["${data.docker_registry_image.wikijs.sha256_digest}"]
|
pull_triggers = ["${data.docker_registry_image.wikijs.sha256_digest}"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "docker_image" "percona-mongodb-server" {
|
|
||||||
name = "${data.docker_registry_image.percona-mongodb-server.name}"
|
|
||||||
pull_triggers = ["${data.docker_registry_image.percona-mongodb-server.sha256_digest}"]
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_image" "ubooquity" {
|
resource "docker_image" "ubooquity" {
|
||||||
name = "${data.docker_registry_image.ubooquity.name}"
|
name = "${data.docker_registry_image.ubooquity.name}"
|
||||||
pull_triggers = ["${data.docker_registry_image.ubooquity.sha256_digest}"]
|
pull_triggers = ["${data.docker_registry_image.ubooquity.sha256_digest}"]
|
||||||
|
|
|
@ -33,5 +33,5 @@ resource "docker_container" "lychee" {
|
||||||
"PGID=984",
|
"PGID=984",
|
||||||
]
|
]
|
||||||
|
|
||||||
links = ["${docker_container.mariadb.name}"]
|
links = ["${var.links-mariadb}"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1,6 @@
|
||||||
|
// This is the default network we use
|
||||||
|
// for any new container
|
||||||
|
resource "docker_network" "bb8-default" {
|
||||||
|
name = "bb8"
|
||||||
|
driver = "bridge"
|
||||||
|
}
|
||||||
|
|
|
@ -2,18 +2,6 @@ output "lychee-ip" {
|
||||||
value = "${docker_container.lychee.ip_address}"
|
value = "${docker_container.lychee.ip_address}"
|
||||||
}
|
}
|
||||||
|
|
||||||
output "names-transmission" {
|
|
||||||
value = "${docker_container.transmission.name}"
|
|
||||||
}
|
|
||||||
|
|
||||||
output "names-emby" {
|
|
||||||
value = "${docker_container.emby.name}"
|
|
||||||
}
|
|
||||||
|
|
||||||
output "names-mariadb" {
|
|
||||||
value = "${docker_container.mariadb.name}"
|
|
||||||
}
|
|
||||||
|
|
||||||
output "names-traefik" {
|
output "names-traefik" {
|
||||||
value = "${docker_container.traefik.name}"
|
value = "${docker_container.traefik.name}"
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,10 +6,6 @@ variable "web_password" {
|
||||||
type = "string"
|
type = "string"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "mysql_root_password" {
|
|
||||||
type = "string"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "cloudflare_key" {
|
variable "cloudflare_key" {
|
||||||
type = "string"
|
type = "string"
|
||||||
description = "cloudflare API Key"
|
description = "cloudflare API Key"
|
||||||
|
@ -54,7 +50,6 @@ variable "ips" {
|
||||||
type = "map"
|
type = "map"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "mariadb-version" {
|
variable "links-mariadb" {}
|
||||||
description = "mariadb version to use for fetching the docker image"
|
|
||||||
default = "10.2.14"
|
variable "links-mongorocks" {}
|
||||||
}
|
|
||||||
|
|
|
@ -1,7 +1 @@
|
||||||
resource "docker_volume" "mariadb_volume" {
|
|
||||||
name = "mariadb_volume"
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_volume" "mongorocks_data_volume" {
|
|
||||||
name = "mongorocks_data_volume"
|
|
||||||
}
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ resource "docker_container" "wiki" {
|
||||||
"traefik.port", 9999,
|
"traefik.port", 9999,
|
||||||
"traefik.frontend.headers.customResponseHeaders", "${var.xpoweredby}||Referrer-Policy:${var.refpolicy}||X-Frame-Options:${var.xfo_allow}",
|
"traefik.frontend.headers.customResponseHeaders", "${var.xpoweredby}||Referrer-Policy:${var.refpolicy}||X-Frame-Options:${var.xfo_allow}",
|
||||||
))}"
|
))}"
|
||||||
links = ["${docker_container.mongorocks.name}"]
|
links = ["${var.links-mongorocks}"]
|
||||||
env = [
|
env = [
|
||||||
"WIKI_ADMIN_EMAIL=me@captnemo.in",
|
"WIKI_ADMIN_EMAIL=me@captnemo.in",
|
||||||
"SESSION_SECRET=${var.wiki_session_secret}",
|
"SESSION_SECRET=${var.wiki_session_secret}",
|
||||||
|
|
27
main.tf
27
main.tf
|
@ -17,14 +17,21 @@ module "docker" {
|
||||||
source = "docker"
|
source = "docker"
|
||||||
web_username = "${var.web_username}"
|
web_username = "${var.web_username}"
|
||||||
web_password = "${var.web_password}"
|
web_password = "${var.web_password}"
|
||||||
mysql_root_password = "${var.mysql_root_password}"
|
|
||||||
cloudflare_key = "${var.cloudflare_key}"
|
cloudflare_key = "${var.cloudflare_key}"
|
||||||
cloudflare_email = "bb8@captnemo.in"
|
cloudflare_email = "bb8@captnemo.in"
|
||||||
wiki_session_secret = "${var.wiki_session_secret}"
|
wiki_session_secret = "${var.wiki_session_secret}"
|
||||||
|
links-mariadb = "${module.db.names-mariadb}"
|
||||||
|
links-mongorocks = "${module.db.names-mongorocks}"
|
||||||
ips = "${var.ips}"
|
ips = "${var.ips}"
|
||||||
domain = "bb8.fun"
|
domain = "bb8.fun"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module "db" {
|
||||||
|
source = "db"
|
||||||
|
mysql_root_password = "${var.mysql_root_password}"
|
||||||
|
ips = "${var.ips}"
|
||||||
|
}
|
||||||
|
|
||||||
module "timemachine" {
|
module "timemachine" {
|
||||||
source = "timemachine"
|
source = "timemachine"
|
||||||
ips = "${var.ips}"
|
ips = "${var.ips}"
|
||||||
|
@ -56,7 +63,7 @@ module "tt-rss" {
|
||||||
source = "tt-rss"
|
source = "tt-rss"
|
||||||
domain = "rss.captnemo.in"
|
domain = "rss.captnemo.in"
|
||||||
mysql_password = "${var.mysql-ttrss-password}"
|
mysql_password = "${var.mysql-ttrss-password}"
|
||||||
links-db = "${module.docker.names-mariadb}"
|
links-db = "${module.db.names-mariadb}"
|
||||||
traefik-labels = "${var.traefik-common-labels}"
|
traefik-labels = "${var.traefik-common-labels}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,21 +88,25 @@ module "heimdall" {
|
||||||
}
|
}
|
||||||
|
|
||||||
module "media" {
|
module "media" {
|
||||||
source = "media"
|
source = "media"
|
||||||
domain = "bb8.fun"
|
domain = "bb8.fun"
|
||||||
links-emby = "${module.docker.names-emby}"
|
|
||||||
links-transmission = "${module.docker.names-transmission}"
|
// TODO: remove self links
|
||||||
links-mariadb = "${module.docker.names-mariadb}"
|
links-emby = "${module.media.names-emby}"
|
||||||
|
links-transmission = "${module.media.names-transmission}"
|
||||||
|
links-mariadb = "${module.db.names-mariadb}"
|
||||||
|
links-mongorocks = "${module.db.names-mongorocks}"
|
||||||
traefik-labels = "${var.traefik-common-labels}"
|
traefik-labels = "${var.traefik-common-labels}"
|
||||||
airsonic-smtp-password = "${var.airsonic-smtp-password}"
|
airsonic-smtp-password = "${var.airsonic-smtp-password}"
|
||||||
airsonic-db-password = "${var.mysql_airsonic_password}"
|
airsonic-db-password = "${var.mysql_airsonic_password}"
|
||||||
|
ips = "${var.ips}"
|
||||||
}
|
}
|
||||||
|
|
||||||
module "monitoring" {
|
module "monitoring" {
|
||||||
source = "monitoring"
|
source = "monitoring"
|
||||||
gf-security-admin-password = "${var.gf-security-admin-password}"
|
gf-security-admin-password = "${var.gf-security-admin-password}"
|
||||||
domain = "bb8.fun"
|
domain = "bb8.fun"
|
||||||
transmission = "${module.docker.names-transmission}"
|
transmission = "${module.media.names-transmission}"
|
||||||
traefik-labels = "${var.traefik-common-labels}"
|
traefik-labels = "${var.traefik-common-labels}"
|
||||||
ips = "${var.ips}"
|
ips = "${var.ips}"
|
||||||
links-traefik = "${module.docker.names-traefik}"
|
links-traefik = "${module.docker.names-traefik}"
|
||||||
|
|
|
@ -13,7 +13,7 @@ resource "docker_container" "emby" {
|
||||||
}
|
}
|
||||||
|
|
||||||
labels = "${merge(
|
labels = "${merge(
|
||||||
local.traefik_common_labels,
|
var.traefik-labels,
|
||||||
map(
|
map(
|
||||||
"traefik.frontend.rule", "Host:emby.in.${var.domain},emby.${var.domain}",
|
"traefik.frontend.rule", "Host:emby.in.${var.domain},emby.${var.domain}",
|
||||||
"traefik.frontend.passHostHeader", "true",
|
"traefik.frontend.passHostHeader", "true",
|
||||||
|
@ -34,3 +34,12 @@ resource "docker_container" "emby" {
|
||||||
"TZ=Asia/Kolkata",
|
"TZ=Asia/Kolkata",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "emby" {
|
||||||
|
name = "${data.docker_registry_image.emby.name}"
|
||||||
|
pull_triggers = ["${data.docker_registry_image.emby.sha256_digest}"]
|
||||||
|
}
|
||||||
|
|
||||||
|
data "docker_registry_image" "emby" {
|
||||||
|
name = "emby/embyserver:latest"
|
||||||
|
}
|
|
@ -43,5 +43,5 @@ resource "docker_container" "lidarr" {
|
||||||
"TZ=Asia/Kolkata",
|
"TZ=Asia/Kolkata",
|
||||||
]
|
]
|
||||||
|
|
||||||
links = ["${var.links-emby}", "${var.links-transmission}"]
|
networks = ["${docker_network.media.id}"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
resource "docker_network" "media" {
|
||||||
|
name = "media"
|
||||||
|
driver = "bridge"
|
||||||
|
|
||||||
|
ipam_config {
|
||||||
|
subnet = "172.18.0.0/16"
|
||||||
|
gateway = "172.18.0.1"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
output "names-transmission" {
|
||||||
|
value = "${docker_container.transmission.name}"
|
||||||
|
}
|
||||||
|
|
||||||
|
output "names-emby" {
|
||||||
|
value = "${docker_container.emby.name}"
|
||||||
|
}
|
|
@ -44,5 +44,5 @@ resource "docker_container" "radarr" {
|
||||||
"TZ=Asia/Kolkata",
|
"TZ=Asia/Kolkata",
|
||||||
]
|
]
|
||||||
|
|
||||||
links = ["${var.links-emby}", "${var.links-transmission}"]
|
networks = ["${docker_network.media.id}"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,5 +43,5 @@ resource "docker_container" "sonarr" {
|
||||||
"TZ=Asia/Kolkata",
|
"TZ=Asia/Kolkata",
|
||||||
]
|
]
|
||||||
|
|
||||||
links = ["${var.links-emby}", "${var.links-transmission}"]
|
networks = ["${docker_network.media.id}"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ resource "docker_container" "transmission" {
|
||||||
image = "${docker_image.transmission.latest}"
|
image = "${docker_image.transmission.latest}"
|
||||||
|
|
||||||
labels = "${merge(
|
labels = "${merge(
|
||||||
local.traefik_common_labels,
|
var.traefik-labels,
|
||||||
map(
|
map(
|
||||||
"traefik.frontend.auth.basic", "${var.basic_auth}",
|
"traefik.frontend.auth.basic", "${var.basic_auth}",
|
||||||
"traefik.port", 9091,
|
"traefik.port", 9091,
|
||||||
|
@ -42,8 +42,19 @@ resource "docker_container" "transmission" {
|
||||||
"TZ=Asia/Kolkata",
|
"TZ=Asia/Kolkata",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
networks = ["${docker_network.media.id}"]
|
||||||
|
|
||||||
memory = 1024
|
memory = 1024
|
||||||
restart = "unless-stopped"
|
restart = "unless-stopped"
|
||||||
destroy_grace_seconds = 10
|
destroy_grace_seconds = 10
|
||||||
must_run = true
|
must_run = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "transmission" {
|
||||||
|
name = "${data.docker_registry_image.transmission.name}"
|
||||||
|
pull_triggers = ["${data.docker_registry_image.transmission.sha256_digest}"]
|
||||||
|
}
|
||||||
|
|
||||||
|
data "docker_registry_image" "transmission" {
|
||||||
|
name = "linuxserver/transmission:latest"
|
||||||
|
}
|
|
@ -5,9 +5,19 @@ variable "domain" {
|
||||||
variable "links-emby" {}
|
variable "links-emby" {}
|
||||||
variable "links-transmission" {}
|
variable "links-transmission" {}
|
||||||
variable "links-mariadb" {}
|
variable "links-mariadb" {}
|
||||||
|
variable "links-mongorocks" {}
|
||||||
variable "airsonic-smtp-password" {}
|
variable "airsonic-smtp-password" {}
|
||||||
variable "airsonic-db-password" {}
|
variable "airsonic-db-password" {}
|
||||||
|
|
||||||
variable "traefik-labels" {
|
variable "traefik-labels" {
|
||||||
type = "map"
|
type = "map"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Remove duplication
|
||||||
|
variable "basic_auth" {
|
||||||
|
default = "tatooine:$2y$05$iPbatint3Gulbs6kUtyALO9Yq5sBJ..aiF82bcIziH4ytz9nFoPr6,reddit:$2y$05$ghKxSydYCpAT8r2VVMDmWO/BBecghGfLsRJUkr3ii7XxPyxBqp8Oy"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "ips" {
|
||||||
|
type = "map"
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue