2023-01-30 15:03:15 +01:00
|
|
|
terraform {
|
|
|
|
required_providers {
|
|
|
|
docker = {
|
|
|
|
source = "kreuzwerker/docker"
|
|
|
|
version = "3.0.1"
|
|
|
|
}
|
|
|
|
postgresql = {
|
|
|
|
source = "cyrilgdn/postgresql"
|
|
|
|
version = "1.18.0"
|
|
|
|
}
|
|
|
|
time = {
|
|
|
|
source = "hashicorp/time"
|
|
|
|
version = "0.9.1"
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
backend "http" {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
provider "docker" {
|
|
|
|
host = "ssh://root@${var.server_ip}:22"
|
|
|
|
ssh_opts = [
|
|
|
|
"-o", "StrictHostKeyChecking=no",
|
|
|
|
"-o", "UserKnownHostsFile=/dev/null",
|
|
|
|
"-i", "../infrastructure/tf-key"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "docker_network" "internal-network" {
|
|
|
|
name = "internal-network"
|
|
|
|
driver = "bridge"
|
|
|
|
internal = true
|
|
|
|
}
|
|
|
|
|
2023-01-30 21:38:55 +01:00
|
|
|
resource "docker_network" "external-network" {
|
|
|
|
name = "external-network"
|
|
|
|
driver = "bridge"
|
|
|
|
internal = false
|
|
|
|
}
|
|
|
|
|
2023-01-30 15:03:15 +01:00
|
|
|
resource "docker_volume" "timescaledb-data" {
|
|
|
|
name = "timescaledb-data"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "docker_image" "timescaledb-image" {
|
|
|
|
name = "timescale/timescaledb:latest-pg12"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "docker_container" "timescaledb-server" {
|
|
|
|
name = "timescaledb-server"
|
|
|
|
image = docker_image.timescaledb-image.image_id
|
|
|
|
volumes {
|
|
|
|
container_path = "/var/lib/postgresql/data"
|
|
|
|
volume_name = docker_volume.timescaledb-data.name
|
|
|
|
}
|
|
|
|
restart = "always"
|
|
|
|
hostname = "timescaledb"
|
|
|
|
networks_advanced {
|
|
|
|
name = docker_network.internal-network.name
|
|
|
|
}
|
|
|
|
env = [
|
|
|
|
"POSTGRES_USER=root",
|
|
|
|
"POSTGRES_PASSWORD=${var.postgres_password}"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2023-01-30 21:38:55 +01:00
|
|
|
resource "docker_volume" "grafana-data" {
|
|
|
|
name = "grafana-data"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "docker_volume" "grafana-conf" {
|
|
|
|
name = "grafana-conf"
|
|
|
|
}
|
2023-01-30 15:03:15 +01:00
|
|
|
|
|
|
|
resource "docker_image" "grafana-image" {
|
2023-01-30 21:38:55 +01:00
|
|
|
name = "grafana/grafana:8.5.16"
|
2023-01-30 15:03:15 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
resource "docker_container" "grafana-server" {
|
|
|
|
name = "grafana-server"
|
|
|
|
image = docker_image.grafana-image.image_id
|
|
|
|
restart = "always"
|
|
|
|
hostname = "grafana"
|
|
|
|
networks_advanced {
|
|
|
|
name = docker_network.internal-network.name
|
|
|
|
}
|
2023-01-30 21:38:55 +01:00
|
|
|
volumes {
|
|
|
|
container_path = "/etc/grafana"
|
|
|
|
volume_name = docker_volume.grafana-conf.name
|
|
|
|
}
|
|
|
|
volumes {
|
|
|
|
container_path = "/var/lib/grafana"
|
|
|
|
volume_name = docker_volume.grafana-data.name
|
2023-01-30 15:03:15 +01:00
|
|
|
}
|
|
|
|
env = [
|
|
|
|
"GF_SECURITY_ADMIN_USER=admin",
|
|
|
|
"GF_SECURITY_ADMIN_PASSWORD=${var.grafana_password}"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
resource "docker_volume" "gitlab-runner-data" {
|
|
|
|
name = "gitlab-runner-data"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "docker_image" "gitlab-runner-image" {
|
|
|
|
name = "gitlab/gitlab-runner:v15.5.2"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "docker_container" "gitlab-runner" {
|
|
|
|
name = "gitlab-runner"
|
|
|
|
image = docker_image.gitlab-runner-image.image_id
|
|
|
|
restart = "always"
|
|
|
|
volumes {
|
|
|
|
container_path = "/etc/gitlab-runner"
|
|
|
|
volume_name = docker_volume.gitlab-runner-data.name
|
|
|
|
}
|
|
|
|
volumes {
|
|
|
|
container_path = "/var/run/docker.sock"
|
|
|
|
host_path = "/var/run/docker.sock"
|
|
|
|
}
|
|
|
|
env = [
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2023-01-30 21:38:55 +01:00
|
|
|
|
|
|
|
resource "docker_volume" "dispatcher-conf" {
|
|
|
|
name = "dispatcher-conf"
|
|
|
|
}
|
|
|
|
resource "docker_volume" "dispatcher-log" {
|
|
|
|
name = "dispatcher-log"
|
|
|
|
}
|
|
|
|
resource "docker_volume" "dispatcher-ssl" {
|
|
|
|
name = "dispatcher-ssl"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "docker_image" "dispatcher-image" {
|
|
|
|
name = "registry.hottis.de/dockerized/httpdispatcher:2.0.3-2.4.54"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
resource "docker_container" "dispatcher" {
|
|
|
|
name = "dispatcher"
|
|
|
|
image = docker_image.dispatcher-image.image_id
|
|
|
|
restart = "always"
|
|
|
|
volumes {
|
|
|
|
container_path = "/usr/local/apache2/conf/editable"
|
|
|
|
volume_name = docker_volume.dispatcher-conf.name
|
|
|
|
}
|
|
|
|
volumes {
|
|
|
|
container_path = "/usr/local/apache2/conf/ssl"
|
|
|
|
volume_name = docker_volume.dispatcher-ssl.name
|
|
|
|
}
|
|
|
|
volumes {
|
|
|
|
container_path = "/usr/local/apache2/logs"
|
|
|
|
volume_name = docker_volume.dispatcher-log.name
|
|
|
|
}
|
|
|
|
networks_advanced {
|
|
|
|
name = docker_network.internal-network.name
|
|
|
|
}
|
|
|
|
networks_advanced {
|
|
|
|
name = docker_network.external-network.name
|
|
|
|
}
|
|
|
|
ports {
|
|
|
|
internal = 80
|
|
|
|
external = 80
|
|
|
|
}
|
|
|
|
ports {
|
|
|
|
internal = 443
|
|
|
|
external = 443
|
|
|
|
}
|
|
|
|
env = [
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2023-03-09 15:10:58 +01:00
|
|
|
|
|
|
|
resource "docker_image" "mailrelay-image" {
|
|
|
|
name = "devture/exim-relay:latest"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "docker_container" "mailrelay" {
|
|
|
|
name = "mailrelay"
|
|
|
|
image = docker_image.mailrelay-image.image_id
|
|
|
|
restart = "always"
|
|
|
|
networks_advanced {
|
|
|
|
name = docker_network.internal-network.name
|
|
|
|
}
|
|
|
|
networks_advanced {
|
|
|
|
name = docker_network.external-network.name
|
|
|
|
}
|
|
|
|
ports {
|
|
|
|
internal = 8025
|
|
|
|
external = 25
|
|
|
|
ip = "127.0.0.1"
|
|
|
|
}
|
|
|
|
env = [
|
|
|
|
"SMARTHOST=smtprelaypool.ispgateway.de",
|
|
|
|
"SMTP_USERNAME=pseudosmarthostuser@hottis.de",
|
|
|
|
"SMTP_PASSWORD=${var.smarthost_password}"
|
|
|
|
]
|
|
|
|
}
|