applications/main.tf

205 lines
4.3 KiB
Terraform
Raw Permalink Normal View History

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}"
]
}