diff --git a/templates/nomad_jobs/readarr.hcl b/templates/nomad_jobs/readarr.hcl new file mode 100644 index 0000000..2525c61 --- /dev/null +++ b/templates/nomad_jobs/readarr.hcl @@ -0,0 +1,136 @@ +job "readarr" { + region = "global" + datacenters = ["{{ datacenter_name }}"] + type = "service" + + // constraint { + // attribute = "${node.unique.name}" + // operator = "regexp" + // value = "rpi4" + // } + + update { + max_parallel = 1 + health_check = "checks" + min_healthy_time = "10s" + healthy_deadline = "5m" + progress_deadline = "10m" + auto_revert = true + canary = 0 + stagger = "30s" + } + + group "readarrGroup" { + + restart { + attempts = 0 + delay = "10m" + } + + network { + port "readarr" { + to = "8787" + } + } + + task "create_filesystem" { + // Copy the most recent backup into place on the local computer. sonarr will not work with + // its database in an NFS share + + driver = "raw_exec" + config { + # When running a binary that exists on the host, the path must be absolute + command = "${meta.restoreCommand}" + args = [ + "${meta.restoreCommand1}", + "${meta.restoreCommand2}", + "${NOMAD_JOB_NAME}", + "${meta.restoreCommand3}" + ] + } + + lifecycle { + hook = "prestart" + sidecar = false + } + + } // /task create_filesystem + + task "readarr" { + + env { + PUID = "${meta.PUID}" + PGID = "${meta.PGID}" + TZ = "America/New_York" + //DOCKER_MODS = "linuxserver/mods:universal-cron|linuxserver/mods:universal-mod2" + //UMASK_SET = 022 #optional + } + + driver = "docker" + config { + image = "lscr.io/linuxserver/readarr:develop" + hostname = "${NOMAD_JOB_NAME}" + force_pull = true + ports = ["readarr"] + volumes = [ + "${meta.localStorageRoot}/${NOMAD_JOB_NAME}:/config", + "${meta.nfsStorageRoot}/media:/books" + ] + } // docker config + + service { + port = "readarr" + name = "${NOMAD_JOB_NAME}" + tags = [ + "traefik.enable=true", + "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", + "traefik.http.routers.${NOMAD_JOB_NAME}.entryPoints=web,websecure", + "traefik.http.routers.${NOMAD_JOB_NAME}.service=${NOMAD_JOB_NAME}", + "traefik.http.routers.${NOMAD_JOB_NAME}.tls=true", + "traefik.http.routers.${NOMAD_JOB_NAME}.tls.certresolver=cloudflare" + ] + + check { + type = "tcp" + port = "readarr" + interval = "30s" + timeout = "4s" + } + + check_restart { + limit = 0 + grace = "1m" + ignore_warnings = true + } + } // service + + resources { + cpu = 2000 # MHz + memory = 400 # MB + } // resources + + } // /task readarr + + task "save_configuration" { + driver = "raw_exec" + config { + # When running a binary that exists on the host, the path must be absolute + command = "${meta.backupCommand}" + args = [ + "${meta.backupAllocArg1}", + "${meta.backupAllocArg2}", + "${meta.backupAllocArg3}", + "${meta.backupAllocArg4}", + "${meta.backupAllocArg5}", + "${NOMAD_JOB_NAME}", + "${meta.backupAllocArg6}" + ] + } + lifecycle { + hook = "poststop" + sidecar = false + } + } // /task save_configuration + + } // group +} // job diff --git a/templates/scripts/service_backups.sh.j2 b/templates/scripts/service_backups.sh.j2 index 42a9a3f..2da823a 100755 --- a/templates/scripts/service_backups.sh.j2 +++ b/templates/scripts/service_backups.sh.j2 @@ -13,11 +13,12 @@ _mainScript_() { JOBS_T0_BACKUP=("${JOB}") else JOBS_T0_BACKUP=( - sonarr - radarr influxdb lidarr prowlarr + radarr + readarr + sonarr uptimekuma ) fi