diff --git a/terraform/main.tf b/terraform/main.tf index 8a8c540..e38eb87 100644 --- a/terraform/main.tf +++ b/terraform/main.tf @@ -20,6 +20,13 @@ module "postgree" { } } +module "redis" { + source = "./modules/redis" + providers = { + nomad = nomad + } +} + module "keycloak" { source = "./modules/keycloak" postgree_user = var.postgree_user @@ -48,4 +55,4 @@ module "twitchminer" { providers = { nomad = nomad } -} \ No newline at end of file +} diff --git a/terraform/modules/redis/conf/redis.hcl b/terraform/modules/redis/conf/redis.hcl new file mode 100644 index 0000000..2e9f3f7 --- /dev/null +++ b/terraform/modules/redis/conf/redis.hcl @@ -0,0 +1,57 @@ +job "redis" { + datacenters = ["dc"] + type = "service" + + group "redis" { + count = 1 + + network { + port "redis" { + static = 6379 + to = 6379 + } + } + + restart { + attempts = 2 + interval = "5m" + delay = "30s" + mode = "delay" + } + + task "redis" { + driver = "docker" + + config { + image = "redis:7.2" + ports = ["redis"] + volumes = [ + "${NOMAD_ALLOC_DIR}/postiz-redis-data:/data" + ] + } + + resources { + cpu = 500 + memory = 512 + } + + service { + name = "redis" + port = "redis" + provider = "nomad" + check { + name = "redis-check" + type = "tcp" + port = "redis" + interval = "10s" + timeout = "3s" + } + } + + logs { + max_files = 5 + max_file_size = 15 + } + } + } +} diff --git a/terraform/modules/redis/job.tf b/terraform/modules/redis/job.tf new file mode 100644 index 0000000..99679af --- /dev/null +++ b/terraform/modules/redis/job.tf @@ -0,0 +1,5 @@ +resource "nomad_job" "app" { + jobspec = templatefile("${path.module}/conf/redis.hcl", { + NOMAD_ALLOC_DIR = "/alloc" + }) +} diff --git a/terraform/modules/redis/providers..tf b/terraform/modules/redis/providers..tf new file mode 100644 index 0000000..c693f1d --- /dev/null +++ b/terraform/modules/redis/providers..tf @@ -0,0 +1,9 @@ +terraform { + required_providers { + nomad = { + source = "hashicorp/nomad" + version = "2.0.0-rc.1" + } + } + required_version = ">= 0.14" +} \ No newline at end of file