Adds postgres server and switches ttrss
This commit is contained in:
parent
cd33034826
commit
c44c8f0249
|
@ -1,6 +1,7 @@
|
||||||
resource "docker_network" "mariadb" {
|
resource "docker_network" "mariadb" {
|
||||||
name = "mariadb"
|
name = "mariadb"
|
||||||
driver = "bridge"
|
driver = "bridge"
|
||||||
|
internal = true
|
||||||
|
|
||||||
ipam_config {
|
ipam_config {
|
||||||
subnet = "172.19.0.0/28"
|
subnet = "172.19.0.0/28"
|
||||||
|
@ -9,11 +10,23 @@ resource "docker_network" "mariadb" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "docker_network" "mongorocks" {
|
resource "docker_network" "mongorocks" {
|
||||||
name = "mongorocks"
|
name = "mongorocks"
|
||||||
driver = "bridge"
|
driver = "bridge"
|
||||||
|
internal = true
|
||||||
|
|
||||||
ipam_config {
|
ipam_config {
|
||||||
subnet = "172.20.0.0/29"
|
subnet = "172.20.0.0/29"
|
||||||
gateway = "172.20.0.1"
|
gateway = "172.20.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "docker_network" "postgres" {
|
||||||
|
name = "postgres"
|
||||||
|
driver = "bridge"
|
||||||
|
internal = true
|
||||||
|
|
||||||
|
ipam_config {
|
||||||
|
subnet = "172.20.0.8/29"
|
||||||
|
gateway = "172.20.0.9"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -5,3 +5,7 @@ output "names-mariadb" {
|
||||||
output "networks-mongorocks" {
|
output "networks-mongorocks" {
|
||||||
value = "${docker_network.mongorocks.name}"
|
value = "${docker_network.mongorocks.name}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
output "postgres-network-id" {
|
||||||
|
value = "${docker_network.postgres.name}"
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
resource "docker_container" "postgres" {
|
||||||
|
name = "postgres"
|
||||||
|
image = "${docker_image.postgres.latest}"
|
||||||
|
|
||||||
|
volumes {
|
||||||
|
volume_name = "${docker_volume.postgres_volume.name}"
|
||||||
|
container_path = "/var/lib/postgresql/data"
|
||||||
|
host_path = "${docker_volume.postgres_volume.mountpoint}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is so that other host-only services can share this
|
||||||
|
ports {
|
||||||
|
internal = 5432
|
||||||
|
external = 5432
|
||||||
|
ip = "${var.ips["eth0"]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is a not-so-great idea
|
||||||
|
// TODO: Figure out a better way to make terraform SSH and then connect to localhost
|
||||||
|
ports {
|
||||||
|
internal = 5432
|
||||||
|
external = 5432
|
||||||
|
ip = "${var.ips["tun0"]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
memory = 256
|
||||||
|
restart = "unless-stopped"
|
||||||
|
destroy_grace_seconds = 10
|
||||||
|
must_run = true
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"POSTGRES_PASSWORD=${var.postgres-root-password}",
|
||||||
|
]
|
||||||
|
|
||||||
|
networks = ["${docker_network.postgres.id}"]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "postgres" {
|
||||||
|
name = "${data.docker_registry_image.postgres.name}"
|
||||||
|
pull_triggers = ["${data.docker_registry_image.postgres.sha256_digest}"]
|
||||||
|
}
|
||||||
|
|
||||||
|
data "docker_registry_image" "postgres" {
|
||||||
|
name = "postgres:${var.postgres-version}"
|
||||||
|
}
|
|
@ -3,8 +3,14 @@ variable "mariadb-version" {
|
||||||
default = "10.2.14"
|
default = "10.2.14"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "postgres-version" {
|
||||||
|
description = "postgres version to use for fetching the docker image"
|
||||||
|
default = "10-alpine"
|
||||||
|
}
|
||||||
|
|
||||||
variable "ips" {
|
variable "ips" {
|
||||||
type = "map"
|
type = "map"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "mysql_root_password" {}
|
variable "mysql_root_password" {}
|
||||||
|
variable "postgres-root-password" {}
|
||||||
|
|
|
@ -2,6 +2,10 @@ resource "docker_volume" "mariadb_volume" {
|
||||||
name = "mariadb_volume"
|
name = "mariadb_volume"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "docker_volume" "postgres_volume" {
|
||||||
|
name = "postgres_volume"
|
||||||
|
}
|
||||||
|
|
||||||
resource "docker_volume" "mongorocks_data_volume" {
|
resource "docker_volume" "mongorocks_data_volume" {
|
||||||
name = "mongorocks_data_volume"
|
name = "mongorocks_data_volume"
|
||||||
}
|
}
|
||||||
|
|
19
main.tf
19
main.tf
|
@ -26,9 +26,10 @@ module "docker" {
|
||||||
}
|
}
|
||||||
|
|
||||||
module "db" {
|
module "db" {
|
||||||
source = "db"
|
source = "db"
|
||||||
mysql_root_password = "${var.mysql_root_password}"
|
mysql_root_password = "${var.mysql_root_password}"
|
||||||
ips = "${var.ips}"
|
postgres-root-password = "${var.postgres-root-password}"
|
||||||
|
ips = "${var.ips}"
|
||||||
}
|
}
|
||||||
|
|
||||||
module "timemachine" {
|
module "timemachine" {
|
||||||
|
@ -71,12 +72,12 @@ module "radicale" {
|
||||||
}
|
}
|
||||||
|
|
||||||
module "tt-rss" {
|
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.db.names-mariadb}"
|
traefik-labels = "${var.traefik-common-labels}"
|
||||||
traefik-labels = "${var.traefik-common-labels}"
|
traefik-network-id = "${module.docker.traefik-network-id}"
|
||||||
traefik-network-id = "${module.docker.traefik-network-id}"
|
postgres-network-id = "${module.db.postgres-network-id}"
|
||||||
}
|
}
|
||||||
|
|
||||||
module "rss-bridge" {
|
module "rss-bridge" {
|
||||||
|
|
|
@ -14,6 +14,14 @@ provider "mysql" {
|
||||||
password = "${var.mysql_root_password}"
|
password = "${var.mysql_root_password}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
provider "postgresql" {
|
||||||
|
host = "postgres.in.bb8.fun"
|
||||||
|
port = 5432
|
||||||
|
username = "postgres"
|
||||||
|
password = "${var.postgres-root-password}"
|
||||||
|
sslmode = "disable"
|
||||||
|
}
|
||||||
|
|
||||||
provider "digitalocean" {
|
provider "digitalocean" {
|
||||||
token = "${var.digitalocean-token}"
|
token = "${var.digitalocean-token}"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
resource "postgresql_database" "ttrss" {
|
||||||
|
name = "ttrss"
|
||||||
|
owner = "ttrss"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "postgresql_role" "ttrss" {
|
||||||
|
name = "ttrss"
|
||||||
|
login = true
|
||||||
|
password = "${var.mysql_password}"
|
||||||
|
}
|
16
tt-rss/db.tf
16
tt-rss/db.tf
|
@ -1,16 +0,0 @@
|
||||||
resource "mysql_database" "ttrss" {
|
|
||||||
name = "ttrss"
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "mysql_user" "ttrss" {
|
|
||||||
user = "ttrss"
|
|
||||||
host = "%"
|
|
||||||
plaintext_password = "${var.mysql_password}"
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "mysql_grant" "ttrss" {
|
|
||||||
user = "${mysql_user.ttrss.user}"
|
|
||||||
host = "${mysql_user.ttrss.host}"
|
|
||||||
database = "${mysql_database.ttrss.name}"
|
|
||||||
privileges = ["ALL"]
|
|
||||||
}
|
|
|
@ -22,9 +22,7 @@ resource "docker_container" "tt-rss" {
|
||||||
container_path = "/config"
|
container_path = "/config"
|
||||||
}
|
}
|
||||||
|
|
||||||
networks = ["${var.traefik-network-id}"]
|
networks = ["${var.traefik-network-id}", "${var.postgres-network-id}"]
|
||||||
|
|
||||||
links = ["mariadb"]
|
|
||||||
|
|
||||||
env = [
|
env = [
|
||||||
"TZ=Asia/Kolkata",
|
"TZ=Asia/Kolkata",
|
||||||
|
|
|
@ -3,7 +3,7 @@ variable "domain" {
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "mysql_password" {}
|
variable "mysql_password" {}
|
||||||
variable "links-db" {}
|
variable "postgres-network-id" {}
|
||||||
|
|
||||||
variable "traefik-labels" {
|
variable "traefik-labels" {
|
||||||
type = "map"
|
type = "map"
|
||||||
|
|
|
@ -15,6 +15,10 @@ variable "mysql_root_password" {
|
||||||
type = "string"
|
type = "string"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "postgres-root-password" {
|
||||||
|
type = "string"
|
||||||
|
}
|
||||||
|
|
||||||
variable "mysql_lychee_password" {}
|
variable "mysql_lychee_password" {}
|
||||||
|
|
||||||
variable "mysql_airsonic_password" {}
|
variable "mysql_airsonic_password" {}
|
||||||
|
|
Loading…
Reference in New Issue