diff --git a/inventory.yml b/inventory.yml index aba640b..3157f6d 100644 --- a/inventory.yml +++ b/inventory.yml @@ -42,7 +42,7 @@ all: pis: hosts: rpi1: - ansible_host: 10.0.30.91 + ansible_host: "{{ rpi1_ip_address }}" ansible_user: "{{ pi_username }}" ansible_become_pass: "{{ pi_become_pass }}" ansible_ssh_private_key_file: "{{ ssh_key_location }}/rpi1" @@ -58,7 +58,7 @@ all: manage_apt_packages_list: true ansible_ssh_extra_args: "-o IdentitiesOnly=yes" rpi2: - ansible_host: 10.0.30.92 + ansible_host: "{{ rpi2_ip_address }}" ansible_user: "{{ pi_username }}" ansible_become_pass: "{{ pi_become_pass }}" ansible_ssh_private_key_file: "{{ ssh_key_location }}/rpi2" @@ -72,7 +72,7 @@ all: manage_apt_packages_list: true ansible_ssh_extra_args: "-o IdentitiesOnly=yes" rpi3: - ansible_host: 10.0.30.93 + ansible_host: "{{ rpi3_ip_address }}" ansible_user: "{{ pi_username }}" ansible_become_pass: "{{ pi_become_pass }}" ansible_ssh_private_key_file: "{{ ssh_key_location }}/rpi3" @@ -86,7 +86,7 @@ all: manage_apt_packages_list: true ansible_ssh_extra_args: "-o IdentitiesOnly=yes" rpi4: - ansible_host: 10.0.30.94 + ansible_host: "{{ rpi4_ip_address }}" ansible_user: "{{ pi_username }}" ansible_become_pass: "{{ pi_become_pass }}" ansible_ssh_private_key_file: "{{ ssh_key_location }}/rpi4" @@ -102,7 +102,7 @@ all: macs: hosts: macmini: - ansible_host: 10.0.0.4 + ansible_host: "{{ macmini_ip_address }}" ansible_user: "{{ my_username }}" ansible_become_pass: "{{ mac_become_pass }}" ansible_ssh_private_key_file: "{{ ssh_key_location }}/macMini" @@ -117,7 +117,7 @@ all: manage_homebrew_package_list: true ansible_ssh_extra_args: "-o IdentitiesOnly=yes" imac: - ansible_host: 10.0.0.25 + ansible_host: "{{ imac_ip_address }}" ansible_user: "{{ my_username }}" ansible_become_pass: "{{ mac_become_pass }}" ansible_ssh_private_key_file: "{{ ssh_key_location }}/imac" @@ -129,7 +129,7 @@ all: is_shared_storage_client: true ansible_ssh_extra_args: "-o IdentitiesOnly=yes" skimmbook: - ansible_host: 10.0.0.21 + ansible_host: "{{ skimmbook_ip_address }}" ansible_user: "{{ my_username }}" ansible_become_pass: "{{ mac_become_pass }}" ansible_ssh_private_key_file: "{{ ssh_key_location }}/skimmbook" @@ -140,22 +140,11 @@ all: is_tdarr_node: true is_shared_storage_client: true ansible_ssh_extra_args: "-o IdentitiesOnly=yes" - vpnmac: - ansible_host: 10.0.90.2 - ansible_user: "{{ my_username }}" - ansible_become_pass: "{{ mac_become_pass }}" - ansible_ssh_private_key_file: "{{ ssh_key_location }}/skimmbook" - ansible_python_interpreter: "/Users/natelandau/.pyenv/shims/python" - ansible_port: 22 - mac_arm: true - manage_homebrew_package_list: true - is_tdarr_node: true - ansible_ssh_extra_args: "-o IdentitiesOnly=yes" nas: hosts: synology: - ansible_host: 10.0.0.6 - synology_second_ip: 10.0.30.6 + ansible_host: "{{ synology_ip_address_1 }}" + synology_second_ip: "{{ synology_ip_address_2 }}" ansible_user: "{{ my_username }}" ansible_become_pass: "{{ synology_become_pass }}" ansible_ssh_private_key_file: "{{ ssh_key_location }}/synology" diff --git a/templates/docker_compose_files/synology_asn-to-ip.yml.j2 b/templates/docker_compose_files/synology_asn-to-ip.yml.j2 deleted file mode 100644 index afb7945..0000000 --- a/templates/docker_compose_files/synology_asn-to-ip.yml.j2 +++ /dev/null @@ -1,11 +0,0 @@ -version: '3.9' - -services: - asn-to-ip: - image: ddimick/asn-to-ip:latest - hostname: asn-to-ip - container_name: asn-to-ip - network_mode: "bridge" - ports: - - 5151:5000 - restart: unless-stopped diff --git a/templates/nomad_jobs/changedetection.hcl b/templates/nomad_jobs/changedetection.hcl index 17232d5..3c481a6 100644 --- a/templates/nomad_jobs/changedetection.hcl +++ b/templates/nomad_jobs/changedetection.hcl @@ -57,6 +57,7 @@ job "changedetection" { service { port = "webUI" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`changes.{{ homelab_domain_name }}`)", @@ -75,7 +76,6 @@ job "changedetection" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/chronograf.hcl b/templates/nomad_jobs/chronograf.hcl index bfd99a4..8dea1fe 100644 --- a/templates/nomad_jobs/chronograf.hcl +++ b/templates/nomad_jobs/chronograf.hcl @@ -73,6 +73,7 @@ job "chronograf" { service { port = "chronografPort" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -91,7 +92,6 @@ job "chronograf" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/code.hcl b/templates/nomad_jobs/code.hcl index 6dcfa9a..692fe12 100644 --- a/templates/nomad_jobs/code.hcl +++ b/templates/nomad_jobs/code.hcl @@ -63,6 +63,7 @@ job "code" { service { port = "port1" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -82,7 +83,6 @@ job "code" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/diagnostics.hcl b/templates/nomad_jobs/diagnostics.hcl index 537b5d3..7070c12 100644 --- a/templates/nomad_jobs/diagnostics.hcl +++ b/templates/nomad_jobs/diagnostics.hcl @@ -78,6 +78,7 @@ job "diagnostics" { service { port = "whoami" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -95,7 +96,6 @@ job "diagnostics" { check_restart { limit = 2 grace = "1m" - ignore_warnings = true } } resources { diff --git a/templates/nomad_jobs/freshrss.hcl b/templates/nomad_jobs/freshrss.hcl index fc3d4c8..b959fbe 100644 --- a/templates/nomad_jobs/freshrss.hcl +++ b/templates/nomad_jobs/freshrss.hcl @@ -54,6 +54,7 @@ job "freshrss" { service { port = "port1" name = "${NOMAD_TASK_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_TASK_NAME}.rule=Host(`rss.{{ homelab_domain_name }}`)", @@ -73,7 +74,6 @@ job "freshrss" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/grafana.hcl b/templates/nomad_jobs/grafana.hcl index 42b92ac..c4ec752 100644 --- a/templates/nomad_jobs/grafana.hcl +++ b/templates/nomad_jobs/grafana.hcl @@ -87,6 +87,7 @@ job "grafana" { service { port = "http" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -109,7 +110,6 @@ job "grafana" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/headless-chrome.hcl b/templates/nomad_jobs/headless-chrome.hcl index 9d31b46..232ca07 100644 --- a/templates/nomad_jobs/headless-chrome.hcl +++ b/templates/nomad_jobs/headless-chrome.hcl @@ -52,6 +52,7 @@ job "headless-chrome" { service { port = "port1" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`chrome.{{ homelab_domain_name }}`)", @@ -70,7 +71,6 @@ job "headless-chrome" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/influxdb.hcl b/templates/nomad_jobs/influxdb.hcl index bef74d5..92b4e1b 100644 --- a/templates/nomad_jobs/influxdb.hcl +++ b/templates/nomad_jobs/influxdb.hcl @@ -78,6 +78,7 @@ job "influxdb" { service { port = "httpAPI" name = "${NOMAD_JOB_NAME}" + provider = "nomad" check { type = "tcp" @@ -89,7 +90,6 @@ job "influxdb" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } diff --git a/templates/nomad_jobs/lidarr.hcl b/templates/nomad_jobs/lidarr.hcl index 84ac28a..c8968ca 100644 --- a/templates/nomad_jobs/lidarr.hcl +++ b/templates/nomad_jobs/lidarr.hcl @@ -82,6 +82,7 @@ job "lidarr" { service { port = "lidarr" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -100,7 +101,6 @@ job "lidarr" { check_restart { limit = 0 grace = "10m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/loki.hcl b/templates/nomad_jobs/loki.hcl index 702243e..a7e3cf7 100644 --- a/templates/nomad_jobs/loki.hcl +++ b/templates/nomad_jobs/loki.hcl @@ -47,6 +47,7 @@ job "loki" { service { port = "loki_port" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -66,7 +67,6 @@ job "loki" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/mealie.hcl b/templates/nomad_jobs/mealie.hcl index 954ed5f..bbf6337 100644 --- a/templates/nomad_jobs/mealie.hcl +++ b/templates/nomad_jobs/mealie.hcl @@ -67,6 +67,7 @@ job "mealie" { service { port = "port1" name = "${NOMAD_TASK_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_TASK_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -85,7 +86,6 @@ job "mealie" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/nginx.hcl b/templates/nomad_jobs/nginx.hcl index 55eaded..3e39300 100644 --- a/templates/nomad_jobs/nginx.hcl +++ b/templates/nomad_jobs/nginx.hcl @@ -57,6 +57,7 @@ job "nginx" { service { port = "web" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -75,7 +76,6 @@ job "nginx" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/nzbhydra.hcl b/templates/nomad_jobs/nzbhydra.hcl index d2211f2..c83f04d 100644 --- a/templates/nomad_jobs/nzbhydra.hcl +++ b/templates/nomad_jobs/nzbhydra.hcl @@ -55,6 +55,7 @@ job "nzbhydra" { service { port = "hydra_port" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`hydra.{{ homelab_domain_name }}`)", @@ -73,7 +74,6 @@ job "nzbhydra" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/overseerr.hcl b/templates/nomad_jobs/overseerr.hcl index b4b73c8..5a4bc70 100644 --- a/templates/nomad_jobs/overseerr.hcl +++ b/templates/nomad_jobs/overseerr.hcl @@ -54,6 +54,7 @@ job "overseerr" { service { port = "overseerr" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -74,7 +75,6 @@ job "overseerr" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/pihole.hcl b/templates/nomad_jobs/pihole.hcl index a38c744..0307c67 100644 --- a/templates/nomad_jobs/pihole.hcl +++ b/templates/nomad_jobs/pihole.hcl @@ -109,6 +109,7 @@ job "pihole" { service { name = "${NOMAD_JOB_NAME}" port = "web" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`p.{{ homelab_domain_name }}`)", @@ -118,7 +119,7 @@ job "pihole" { "traefik.http.routers.${NOMAD_JOB_NAME}.tls.certresolver=cloudflare", "traefik.http.middlewares.piholeRedirect.redirectregex.regex=^(https?://p\\.{{ homelab_domain_name }})/?$", "traefik.http.middlewares.piholeRedirect.redirectregex.replacement=$${1}/admin/", - "traefik.http.routers.${NOMAD_JOB_NAME}.middlewares=authelia@file,piholeRedirect" + "traefik.http.routers.${NOMAD_JOB_NAME}.middlewares=piholeRedirect" ] check { type = "http" @@ -130,7 +131,6 @@ job "pihole" { check_restart { limit = 3 grace = "10m" - ignore_warnings = false } } diff --git a/templates/nomad_jobs/prowlarr.hcl b/templates/nomad_jobs/prowlarr.hcl index 42f232b..815825a 100644 --- a/templates/nomad_jobs/prowlarr.hcl +++ b/templates/nomad_jobs/prowlarr.hcl @@ -84,6 +84,7 @@ job "prowlarr" { service { port = "prowlarr" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -103,7 +104,6 @@ job "prowlarr" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/radarr.hcl b/templates/nomad_jobs/radarr.hcl index 168004e..b73fb40 100644 --- a/templates/nomad_jobs/radarr.hcl +++ b/templates/nomad_jobs/radarr.hcl @@ -81,6 +81,7 @@ job "radarr" { service { port = "radarr" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -100,7 +101,6 @@ job "radarr" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/readarr.hcl b/templates/nomad_jobs/readarr.hcl index 5327056..b27ff04 100644 --- a/templates/nomad_jobs/readarr.hcl +++ b/templates/nomad_jobs/readarr.hcl @@ -81,6 +81,7 @@ job "readarr" { service { port = "readarr" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -100,7 +101,6 @@ job "readarr" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/reverse-proxy.hcl b/templates/nomad_jobs/reverse-proxy.hcl index 2285483..653dca5 100644 --- a/templates/nomad_jobs/reverse-proxy.hcl +++ b/templates/nomad_jobs/reverse-proxy.hcl @@ -193,6 +193,7 @@ job "reverse-proxy" { service { port = "authelia-port" name = "${NOMAD_TASK_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_TASK_NAME}.rule=Host(`authelia.{{ homelab_domain_name }}`)", @@ -215,7 +216,6 @@ job "reverse-proxy" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service @@ -238,6 +238,7 @@ job "reverse-proxy" { service { port = "whoami" name = "${NOMAD_TASK_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_TASK_NAME}.rule=Host(`${NOMAD_TASK_NAME}.{{ homelab_domain_name }}`)", @@ -245,7 +246,7 @@ job "reverse-proxy" { "traefik.http.routers.${NOMAD_TASK_NAME}.service=${NOMAD_TASK_NAME}", "traefik.http.routers.${NOMAD_TASK_NAME}.tls=true", "traefik.http.routers.${NOMAD_TASK_NAME}.tls.certresolver=cloudflare", - "traefik.http.routers.${NOMAD_TASK_NAME}.middlewares=authelia@file" + // "traefik.http.routers.${NOMAD_TASK_NAME}.middlewares=authelia@file" ] check { type = "http" @@ -256,7 +257,6 @@ job "reverse-proxy" { check_restart { limit = 2 grace = "1m" - ignore_warnings = true } } resources { @@ -294,18 +294,20 @@ job "reverse-proxy" { "--providers.file.filename=/local/traefik/siteconfigs.toml", "--providers.file.watch=true", "--providers.consulcatalog=true", - "--providers.consulcatalog.endpoint.address=http://consul.service.consul:8500", + "--providers.consulcatalog.endpoint.address=http://${NOMAD_IP_web}:8500", "--providers.consulcatalog.prefix=traefik", "--providers.consulcatalog.exposedbydefault=false", - "--metrics=true", - "--metrics.influxdb=true", - "--metrics.influxdb.address=influxdb.service.consul:{{ influxdb_port }}", - "--metrics.influxdb.protocol=http", - "--metrics.influxdb.pushinterval=10s", - "--metrics.influxdb.database=homelab", - "--metrics.influxdb.retentionpolicy=2day", - "--metrics.influxdb.addentrypointslabels=true", - "--metrics.influxdb.addserviceslabels=true", + "--providers.nomad=true", + "--providers.nomad.endpoint.address=http://${NOMAD_IP_web}:4646", + // "--metrics=true", + // "--metrics.influxdb=true", + // "--metrics.influxdb.address=influxdb.service.consul:{{ influxdb_port }}", + // "--metrics.influxdb.protocol=http", + // "--metrics.influxdb.pushinterval=10s", + // "--metrics.influxdb.database=homelab", + // "--metrics.influxdb.retentionpolicy=2day", + // "--metrics.influxdb.addentrypointslabels=true", + // "--metrics.influxdb.addserviceslabels=true", "--accesslog=true", "--log=true", "--log.level=ERROR", @@ -357,11 +359,13 @@ job "reverse-proxy" { scheme = "https" permanent = true + [http.middlewares.authelia.forwardAuth] - address = "http://authelia.service.consul:{{ authelia_port }}/api/verify?rd=https://authelia.{{ homelab_domain_name }}" + address = {% raw %}"http://{{ env "NOMAD_IP_authelia_port" }}:{{ env "NOMAD_PORT_authelia_port" }}{% endraw %}/api/verify?rd=https://authelia.{{ homelab_domain_name }}" trustForwardHeader = true authResponseHeaders = ["Remote-User", "Remote-Groups", "Remote-Name", "Remote-Email"] + [http.middlewares.basicauth.basicauth] usersfile = "/local/traefik/httpasswd" removeHeader = true @@ -396,6 +400,7 @@ job "reverse-proxy" { service { port = "dashboard" name = "${NOMAD_TASK_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_TASK_NAME}.rule=Host(`${NOMAD_TASK_NAME}.{{ homelab_domain_name }}`)", @@ -416,7 +421,6 @@ job "reverse-proxy" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/sonarr.hcl b/templates/nomad_jobs/sonarr.hcl index df50dba..e425165 100644 --- a/templates/nomad_jobs/sonarr.hcl +++ b/templates/nomad_jobs/sonarr.hcl @@ -82,6 +82,7 @@ job "sonarr" { service { port = "sonarr" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -100,7 +101,6 @@ job "sonarr" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/stash.hcl b/templates/nomad_jobs/stash.hcl index 3d2a9b1..054f1ee 100644 --- a/templates/nomad_jobs/stash.hcl +++ b/templates/nomad_jobs/stash.hcl @@ -66,6 +66,7 @@ job "stash" { service { port = "port1" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -73,7 +74,7 @@ job "stash" { "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", - "traefik.http.routers.${NOMAD_JOB_NAME}.middlewares=authelia@file" + // "traefik.http.routers.${NOMAD_JOB_NAME}.middlewares=authelia@file" ] check { @@ -85,7 +86,6 @@ job "stash" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/syncthing.hcl b/templates/nomad_jobs/syncthing.hcl index 3c20a9a..accde6f 100644 --- a/templates/nomad_jobs/syncthing.hcl +++ b/templates/nomad_jobs/syncthing.hcl @@ -70,6 +70,7 @@ job "syncthing" { service { port = "webGUI" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -89,7 +90,6 @@ job "syncthing" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/template-groups.hcl b/templates/nomad_jobs/template-groups.hcl index 321ff8d..2f5b2ac 100644 --- a/templates/nomad_jobs/template-groups.hcl +++ b/templates/nomad_jobs/template-groups.hcl @@ -158,6 +158,7 @@ job "TEMPLATE" { service { name = "${NOMAD_TASK_NAME}" port = "port2" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_TASK_NAME}.rule=Host(`${NOMAD_TASK_NAME}.{{ homelab_domain_name }}`)", @@ -178,7 +179,6 @@ job "TEMPLATE" { check_restart { limit = 3 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/template-simple.hcl b/templates/nomad_jobs/template-simple.hcl index 4952169..eed59bd 100644 --- a/templates/nomad_jobs/template-simple.hcl +++ b/templates/nomad_jobs/template-simple.hcl @@ -55,9 +55,10 @@ job "TEMPLATE" { ports = ["port1"] } // docker config - service { + service { port = "port1" name = "${NOMAD_TASK_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_TASK_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -77,7 +78,6 @@ job "TEMPLATE" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/template_localfs.hcl b/templates/nomad_jobs/template_localfs.hcl index 2fae818..b28bad8 100644 --- a/templates/nomad_jobs/template_localfs.hcl +++ b/templates/nomad_jobs/template_localfs.hcl @@ -82,6 +82,7 @@ job "TEMPLATE" { service { port = "port1" name = "${NOMAD_TASK_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_TASK_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -102,7 +103,6 @@ job "TEMPLATE" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/uptimekuma.hcl b/templates/nomad_jobs/uptimekuma.hcl index b659e04..45bcf7f 100644 --- a/templates/nomad_jobs/uptimekuma.hcl +++ b/templates/nomad_jobs/uptimekuma.hcl @@ -70,6 +70,7 @@ job "uptimekuma" { service { port = "web" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`uptime.{{ homelab_domain_name }}`)", @@ -88,7 +89,6 @@ job "uptimekuma" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/valentina.hcl b/templates/nomad_jobs/valentina.hcl index 06fa468..c2d5569 100644 --- a/templates/nomad_jobs/valentina.hcl +++ b/templates/nomad_jobs/valentina.hcl @@ -9,61 +9,61 @@ job "valentina" { // value = "rpi(1|2|3)" // } - 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 "valentina" { - - count = 1 - - restart { - attempts = 0 - delay = "30s" + update { + max_parallel = 1 + health_check = "checks" + min_healthy_time = "10s" + healthy_deadline = "5m" + progress_deadline = "10m" + auto_revert = true + canary = 0 + stagger = "30s" } - task "valentina" { + group "valentina" { - env { - PGID = "${meta.PGID}" - PUID = "${meta.PUID}" - TZ = "America/New_York" - VALENTINA_AWS_ACCESS_KEY_ID = "{{ valentina_aws_access_key_id }}" - VALENTINA_AWS_SECRET_ACCESS_KEY = "{{ valentina_aws_secret_access_key }}" - VALENTINA_DISCORD_TOKEN = "{{ valentina_discord_token }}" - VALENTINA_GUILDS = "{{ valentina_guids }}" - VALENTINA_LOG_LEVEL = "DEBUG" - VALENTINA_LOG_LEVEL_AWS = "INFO" - VALENTINA_OWNER_CHANNELS = "{{ valentina_owner_channels }}" - VALENTINA_OWNER_IDS = "{{ valentina_owner_ids }}" - VALENTINA_S3_BUCKET_NAME = "{{ valentina_s3_bucket_name}}" - } + count = 1 - driver = "docker" - config { - image = "ghcr.io/natelandau/valentina:v{{valentina_version}}" - hostname = "${NOMAD_TASK_NAME}" - volumes = [ - "${meta.nfsStorageRoot}/pi-cluster/${NOMAD_TASK_NAME}:/valentina", - ] - } // docker config + restart { + attempts = 0 + delay = "30s" + } - // resources { - // cpu = 100 # MHz - // memory = 300 # MB - // } // resources + task "valentina" { - } // task + env { + PGID = "${meta.PGID}" + PUID = "${meta.PUID}" + TZ = "America/New_York" + VALENTINA_AWS_ACCESS_KEY_ID = "{{ valentina_aws_access_key_id }}" + VALENTINA_AWS_SECRET_ACCESS_KEY = "{{ valentina_aws_secret_access_key }}" + VALENTINA_DISCORD_TOKEN = "{{ valentina_discord_token }}" + VALENTINA_GUILDS = "{{ valentina_guids }}" + VALENTINA_LOG_LEVEL = "INFO" + VALENTINA_LOG_LEVEL_AWS = "INFO" + VALENTINA_OWNER_CHANNELS = "{{ valentina_owner_channels }}" + VALENTINA_OWNER_IDS = "{{ valentina_owner_ids }}" + VALENTINA_S3_BUCKET_NAME = "{{ valentina_s3_bucket_name}}" + } + + driver = "docker" + config { + image = "ghcr.io/natelandau/valentina:v{{valentina_version}}" + hostname = "${NOMAD_TASK_NAME}" + volumes = [ + "${meta.nfsStorageRoot}/pi-cluster/${NOMAD_TASK_NAME}:/valentina", + ] + } // docker config + + // resources { + // cpu = 100 # MHz + // memory = 300 # MB + // } // resources + + } // task - } // group + } // group } // job diff --git a/templates/nomad_jobs/whoogle.hcl b/templates/nomad_jobs/whoogle.hcl index 31f43f8..29fc512 100644 --- a/templates/nomad_jobs/whoogle.hcl +++ b/templates/nomad_jobs/whoogle.hcl @@ -58,6 +58,7 @@ job "whoogle" { service { port = "whoogle" name = "${NOMAD_JOB_NAME}" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.{{ homelab_domain_name }}`)", @@ -77,7 +78,6 @@ job "whoogle" { check_restart { limit = 0 grace = "1m" - ignore_warnings = true } } // service diff --git a/templates/nomad_jobs/wikijs.hcl b/templates/nomad_jobs/wikijs.hcl index 8d935ff..d5cc973 100644 --- a/templates/nomad_jobs/wikijs.hcl +++ b/templates/nomad_jobs/wikijs.hcl @@ -122,6 +122,7 @@ job "wikijs" { service { port = "db" name = "wikijsdb" + provider = "nomad" check { type = "tcp" port = "db" @@ -131,7 +132,6 @@ job "wikijs" { check_restart { limit = 2 grace = "1m" - ignore_warnings = true } } @@ -225,6 +225,7 @@ group "wikijs_app_group" { service { port = "http" name = "wikijs" + provider = "nomad" tags = [ "traefik.enable=true", "traefik.http.routers.wikijs.rule=Host(`wiki.{{ homelab_domain_name }}`)", @@ -241,7 +242,6 @@ group "wikijs_app_group" { check_restart { limit = 3 grace = "30s" - ignore_warnings = true } } // /service diff --git a/vault.yml b/vault.yml index 9744255..9a3768c 100644 --- a/vault.yml +++ b/vault.yml @@ -1,161 +1,173 @@ $ANSIBLE_VAULT;1.1;AES256 -35313363316633346434383462613564663535363536343964333334613031333931666535373262 -3038666461646465333264346232366563323433373266350a656363346266343662303663346536 -38613361633832393432343334636435363832313461303131323031633139376464666536613361 -3537326464303937630a363031663065396530346539646638663163393134616234336263656633 -30306236366333333437323733623266663163613763633338316630333965323832353930643261 -63613065653565363238323933616139363961383865663330623133343537656433346564396435 -66623437626639626365656134363538646137373061366563393333613134333035326461333161 -65613638626364633165326630346230666131653063653766343534326533663233346234363535 -30663366313761336564383962333562646638356466633536373233383538313238376534343466 -37613734633963313237376263326530653165613135313739373561343463633837316230313132 -62366538303836636336346138376163363933306365656332393532346366313438666537343733 -66653531366231326464653764623562633338326639653438356630633035383433613364623336 -34346233643435323331663934643037383231613232336639306138653935306563616237393437 -34663034396165623763626231326136343530336261306230393431353361393239663766333632 -66303561336237623866323232356236306361323965656261313731386638653564663235343237 -30303036323736376636666339343539633566626337636433303533306262336532663065383333 -66653662653134393866306639613261303463636438316135646437393563663731343063623137 -63316537656664666463333766356630353236616339303862316234373236613932346231323137 -61306666626364653535303061393938656565306339616662376537316361653435613763376364 -38303062653739316230313765323063643564353032653038326631383933363263316332653736 -30626361643432666139333034376363303432343864626530393637313063383964626664366631 -37373234353764333361666439333462323833313432353337323661313264303732643734373234 -65373765643062303464653937326236376263376561643133666663623937356538623730326564 -64326165366463646635343565633130356136386266376138396261373162646132323631613063 -38653633353134323633343430303561623730663834306565623735633734366161613734353266 -65656163646538343439633832353132373531613962306564386363653339393963383733383562 -33333662373639633462613561316133373037306264613934616438623362303831633733326431 -61633237323338613636623865623036626566353762373966313766623533393861313530313862 -66613935333861303835336430346235383466643163376330396430376664386337636364313961 -65626337366238353437643736663962616439663630313332363032383330333239393036356338 -38646165626332356337303064633334363337356432396638313032613431616364626436623238 -38363032393439653663613261363335363534343137653137613332373839633662333030636662 -34666137383165346431313664333436366637623632386433393363323336666232633233346235 -61633037386664353662326533313862363832376539373564623365326330303437363163613733 -61313134396565356366383330313734613036356536363561633361316262653833656435666132 -63343236343837373665646662396535366530356163386439326266313038663233363561303039 -32363639663466643834656535373834346530643863313963653233363435336436613935363961 -33383439613066333034386630653032643131393535326133356639346639623430383063303361 -62323230343731643531613031363265633739376639383735366562626561333162396137343332 -37393061623234663230643939326436363961386664303430623435346361373136323866653262 -37353637356233643833373336303730336132623262333734363338336333316332383264343233 -66633466653831343035306539666337336633663637336331643463666530333737643230396632 -38323165316138376536333337656462396363643437393037383565323935363830313532313661 -37373461396333353166663461313562646365333735353531633432376565326637616231323566 -38373966656164646436346331633266653634653833333831383036613864393133376565653863 -65306364306232356434653539303066393264636661356230623331616430306661353731313138 -62313734303939393530306364393830303039663637383637353738623730336330346236613337 -65373337646634613935333962393632376236306639316631356437303466363937353436393138 -32616337323163616562666538386563396136646131356439616437366134613238336265306432 -31653361613966363432336635623865366335353439623633336461366337393435343036393539 -61363262663633366136303132333066316430316235616165646139383835386339376366383766 -35306365316662396666616537633365383236666538626131356162323831616165356165353532 -32396163633962393331653836353832376165613163336335386662333730626263623761303464 -66396661643338613262316537396162366433313864616635343965383331343662396236393834 -38313761653264343061666337343363653731393435366335323537613938313564613436383530 -61623531383331343232663431306438636465343262353535396439656464336631353462623934 -61383334613839393432303336613135316638613634316664653262663862356239336462643534 -34323566313964346231303631313239393263623362633966613961613566316239353964333765 -39633033643335393637363138326533336464323836313332383765643366313962383332306338 -30656661316633366365386365636161613765333737613134333861663539313463626365363932 -38366531326665316435663363356532303936313734613462616232316665356435663838306338 -64346538663266613966613766376662663032633764616161303533336561646636613032383933 -63396336353565343364356532363433623466396232333739666666616136636234616164363938 -39316536343563343138376166653761613739366564623161633261636133613631346138613734 -66313362633738313736333930666538313833666431303462643938663732323166306662306665 -37623231316134323965633766376561363234666330326139663763353038323064306231646230 -64306365646633363434363064623435653166666337353932623663303634366163383337306465 -31383463363039306233336335626635393931623061346364633935306432373432346430366336 -36626534633664356266316634363165386365366562363237636532393639343539353639386466 -37633438633234393433633337303130306464356139613132623839363833633532313561323330 -65353064386239383934343563386366653161623830363631653435653537653831643234363435 -63613338303264626339343136346131333062366632623730376532653362386136363938343761 -39363039383535663666643236363964643332363131633134316631633337666235656334343366 -38656430663337313231623134333232393730343063653432383530653865633137363866646434 -31386337353831383434666466326364363562316538336633366361376539316465623331643431 -63353333633563646633356639633066353134623963316133333165323965653666346530656536 -32303235376631343931306361363937363262343664316239363766663961653465623862643461 -65626434316135373333323230616137636264306437383332623261633662623632346139633038 -62393161383931626533303162363166373330653739643935653039356331346237373139633163 -36353361666330346137383337383362336664633535643535666536306537626532303432393734 -33656139336437346333383539383931303932353462643432643366303366666134616539633339 -34313261393863366435366130373737373237343232646462373336616539316565376465366136 -38343032653532383433613863346366313064383534366364393132346538663531383531323963 -63353962323964333466386530316438623735356335653430376630313564626630353365363634 -32353636663734653232623964663730383263366164613937663761613634303561643334323164 -65336366316261626130313530393739393966623863613366656461383636653435316166366434 -65663763356162646530366462636262356237643163336561376531306639626235656430376332 -65353039613566633561643365396664656266633831656263643261383133373734613532316266 -30386237393437646264386239613130323164343462393134653132666533306638323434336432 -39336332653661363435663662373231643931313036613733666464623538616261666433643961 -66613430363664363838663263313063323835386638636239316164646139613536336332336635 -39663730306261303538613066643137313437393366633531373133363866306132353435376462 -37663765333438656535636336633030336330383262663239313862396137666530643532636637 -32643364326563386437353062303534356363383237396264306139363038326134623835373234 -38336366616561643034326234346261386564656433663634613637356338363037333461303232 -31653963376338386236326631643835376234356434336130393831393865383563663033663761 -38623637353536393162333138376662373862636431323663623461353332363361376231393166 -39633766353863323364636538623432306230653638306435336465633939663164376664383735 -37366537343734363361316235313633626436376139383336313736666435656638366566323166 -36663832633933346336653435393538643834393665663434326230346135306332373966646331 -35383937353830316465656661663231623532636462663530346333663934333335613831323838 -66613964343031646230366633656436356534633438386134313562383462646131333435346136 -38373565326333376137376537303433383335306662653765656564396464336363393937663865 -64393933336165306463393162643435663430343461316231656462623037333766613830323938 -39643263353235363364306135623364333330633235346236313939316533353561343066653030 -66666537636264346361386561633737393561316665316462633437353033623039343263363535 -64396564386666373137643763396130306434306433373937316262306231643332396339326438 -35623231646535306562316231366439363766653338396539336161343663623564346539643865 -32323234633035643965353065386433643438393731663563363462353662356630316638363030 -64656338356132616331636437636364396635613164343264643432633662343732393366653639 -35666464663963396234333635303263363564393065356234363638636430623035346234333836 -35353936373664636331366362336466393363633561373538623463343636346566316561653033 -34396665306330333265663539393638383639303466373432383931636361346530303239333162 -61623233643537386164623433636434646166633131316134356331336230646439616438333239 -64386664643365633330633365646135373961386362613034353835303531643036386364646135 -33613264366337383532663461663135326633643739396162383630313237623165376362346534 -32363663656238616265646331393838316466663838653138353934356439616630363431386636 -30623364393433313236383934353564356238316432343034313030613665363234383765303063 -65326434643630646136656535646562303261623133303833373465663736646435376335643331 -31653564333063646161663731316564376432663330623861306161643361636362313436643764 -35643738323065626334346333616236393462363734313237393034343332316232383466343163 -38363366336136623735386666653535323632363138653966646265666662326138356364613063 -62383338623861393633646164393263313462633236666236383537323564383039636261626532 -62396232363137663439653165666461663965613366373631653032366361626163643634666537 -34656263613934303066643339343537383339393864306236353536313133346630613038346638 -66383466393466346232623331303038663639333765613366343338396264343766663336643633 -65653535666135656530323036666333376663316436633334356162343936636139346332316536 -37343831303238393466666436396133313236363531356263326630393636303763616433666162 -34306533613430386134633636663137663036366531663061303865633630633965613134646564 -30613835616234353239363735366139303339326137633038616465343837666533616164386339 -65373866313664653035343063656437643930316130316130666662626130373463326365396530 -36313931363531636335366532373539646530623439326331616431333463393932343661653236 -35373061306665313938353565626537333963613065363630646531373133613362616238653736 -32656265326633623265396630393134643566636662363963393230363333666439613032363630 -64323630396561353065363462396331666637306637613833313962303838653637386434613233 -66353461303735386432656330646662363634643438343766646436386133316263643735623336 -37376434356537313431306539643533613932323537386230373362396135636336393362336430 -65326266303337393063613766313062343835333735373563626361373263353563346331663435 -34353462656330326232303935383831366534373336313233663635643638326565333834363839 -33346238383538303464626439316361646265393631646261343736356362616262333566366363 -65383436626464363665616161636236666430393666353236333538383265313535383634366330 -30363633333465336363653766333231363633626335356334336561313438336665346664356562 -30356232326637616663316132356131396564363638636633623638386266336263373462383361 -35663835333736336632646164356161303131633766353238666464653864366437303665343066 -61373539383632613837346266393932613837383732373037316634396235373731383131623764 -39383333356431613565366431653138646366633434353431313738653631313565333465363364 -31316232363735383864386661303939313231663862346636643834346138653038636433373537 -39343363376639626134356139363163656662343835626366353564666461636462666661656632 -37373166656661653961303731396234336533316162333465626232383061656633303066663831 -66653438393839366162313936623766653735613038366363366339643632313639636562316663 -38373334626539343136363165626530353334623062336265346132326533336338303935616137 -65393763353131613638326131633032363936313461633031326339353364363062346430316632 -34313833616662396166323636623938303832353763373264373362646565356534316138303530 -62326463383436356237626565346234363036373236356564643435643061663763653165626465 -32366362653231663239626135366638633034643838613362393862613663336331373365303666 -37666332626630343062626535366564393332323034363738653664393338396135393437383961 -64333634346436326638616634623237383933666335663236633039346265383530663936613332 -66316131323030363662376435343738616233396261653632636333663536303438353738313433 -64666437346663623064326563333964376465373565363431323631376536313234356338643663 -61343730396234393361 +39313861663234643032633062353534663132376138383331363733376365343161363737303337 +6538396233316636663734633462303934623463666466380a656234333664653234393637663661 +39393433633634333965343838386338663132386164623764323738663463646366393565656162 +6337383264303032300a613734633138633265363361336537663739393935373632303466626434 +62336337323162356464386630663739633434353261323364343066643937636631373735613462 +63363638366464343739376563353034326537626565636565376337636161666633343930336639 +37383265636533353731333461393136343634646633366431396333313666323232643061633436 +31396134366563353739333464373433386331316532613731366466376630633231373039306564 +39323937366239663437643162636364366464623632393461343135616361636138373438656633 +34643064643265633035356136393165616166323732646233306664643639323433663866613337 +64386462353435656265613139393163343239386166376339373862663337666263393839613531 +30646265636161396330636230643534646666353663356166343664326361353464336136623038 +61353166343461303833313130356238656262646436353135386631356636386161323864373539 +62623965376261623233623163613838316637356362383831316332646533633161356438353266 +32343062316330366164396439376561316236393434363963623639376266376365633232353864 +35343939383539626136353064366438373538383964323765363733396261633739623031353062 +33643965333230333530623764386534356664666637633463623665313466633566313033313837 +37656133356163626136326362313633373833366461376564613634633064613139346665346134 +31383739653039323031323830633435363137316535623835303431386433643830313435636432 +37303632373136326430393437663532313430363233363466663939373538643365613663393235 +64376132313063313631393233666564313932363364326337623836363933633138623762353236 +35323931363338363162663039663965333334613062663231663734376262333666333766303939 +37336435653962306436643563633739383464393363633037356434353463353632323432376335 +63383462333338386131383136646265626132636338353530323864663338306435653939623436 +62383964376632613230376335313931613936346364326533323333376366626439396535313161 +37633539653334353232613530613238363631666461383637313330383939346663303933396433 +36356264623335333838376365363662393265626665343035633033383263363934653535663635 +65323431333661356437633863353532333161643035653137623232353739666139656132383731 +36346538613064326238633832396364386361643537386363653261373762393239303061313363 +34613039666165333734383634613232636461616561306532666532343366643837353138653232 +38643361346532663465386261653166616539323663343535636461643130633335353136643734 +34343635333161613934636336316338326637306336636434346336633164666133353732383337 +39353138626239623439623564356261353632323934346163303831666261363338363232383734 +66336331363165623534363839313939306133336664346366383638633831646164313839316163 +66366331363262653134663034323435626534613130363238626263653033633262363636376363 +66353730623030366361346530363238356239656564386638383835663539656237333764356363 +62663036366261323763633732643630623235383831303062643962366633633734613836393030 +37386134343632393765366666343065666634316530363861306462393736663530393439346363 +66386537396139666265653338653062663161346132636337326138646639326631343164376430 +37323865616636646564356332663138623135313661616332343966333631333066663031333666 +31613564346663336436323439366664633862336663646431363436326134323466393938613061 +66303863306463336231396562653366386231396633646339383332313563366662323965393130 +30306564316530666261636461613336303030326262396461376232313333343935373565656239 +33626138656439393064626661633266323461303934356436306463636232613639623634346437 +66653234393936373031393335386436323362356162353732393333663037306237313361646462 +39386233653937623431623965623764303834376235373636396536323263333562366433386231 +38653466396237323737323462363965373739663135343436353835386137313264323631656465 +34613137613966653537636666373263353164633033346666626332343737653262383066613233 +65313430633830393364613866383630613635383161313666623531356464626630353566373762 +35646339306530333631666537343132353838386432656435336633613332363138633539313534 +35333161633563656135393933333037643266373435643633313832616239333133616666383433 +34366530663439383263336237616530373636653633613331333331306562656238363364373738 +62313636616163363132383863383138333838646462613532393334303466316264373361343639 +65666562313866663561306464356235633435393031303164386533306165653361316363303931 +66636234383634306366353266633862373334633837306535306338623363653165666136376262 +31653931663764613933316137623637383030323039363933663638323266373531666631303063 +64613361326233303964643264623832346334623063313564363932313830633432306235366630 +64623565393262303032343135323364363965373465383962353439343838383362393737353366 +33623737313037323764633462393062613561626638303431326666626232383266613936383738 +32336238366230643436363061343762646336643362623134386137313539336166616138376464 +61636666626332363936396661326462336539343962663930303066616566336666333030326632 +38336663333864366432613236383361393131343466343665666334373331393039336239333338 +36306434313836343538346133653830306535323636353162363963356562643134363134613666 +32306663353435623135653638656530376234353336633963303032363932316438653233316634 +63343166306237303262343932666661326130366339353534616663306165633032373532643237 +30313730333563616666373766316331663135313265343637383035663237633536323733613837 +32313463363961333235646565393065626638633330373136643863336661323636306137383639 +65313431386637393365626537363862636561623032653962356438333961363563353338633961 +32363731373564326339623038613632323837343439626233383265666534623432343637353932 +39623736356131323735666366393831376433323261333731653739356565323035363761666230 +62383365663531633564623933386639633165666165303231336163636433346234313335346534 +35623231393464333333306339663938663334363062366333376330636538666331323961376633 +34326262366531346632323466623936396265656663613339373735313134376563333464363763 +31326638316237333336643433383862633863316334313736396636626262633936623534303166 +61393432316537623161393330333336303238356365303364373736663433336235383965353065 +38326531653363373634313864646538663135326535643733353165313766306433353466633564 +65303964306164663962636339613832326637383930323564626331666230646466313838636262 +36313536646436396461623738373533373361306530393464393134663837396162633262323966 +36643266356239633461343132613865636362363061366134356131353631316561363734333934 +62656437666532646636626533356261653639343931306262346631396161616630613565353665 +66613939353635363637316163356263353065306561613361616235646230363831373736343863 +62643761636165643865666661646561373464353965653738346434383364313865316565653732 +31633335633661656532363637303339653732323032363739356364616236373933316465636636 +62343563626338393030373134613235623763313933663430343630666663366662373266303063 +36313664383963616337356331363066383136393965366461376661646363653336303337383262 +63313265336332303264616331643731346464623935363966633466313964313139666437633536 +38303361376362653132633963303061386634303331383665376532343035333933343536613730 +38303065663734316434643461636461386366353664343036346131616436303439353034306431 +34303666653730613034316639626339656336303431353330383139623331666636633430616266 +65313731653536303936613663616331313733356432396231313233353337353332363862333038 +61663936646338373430623164663738383334316139653631656239313737623030643566616163 +62666138663262383534393863333962326135616663396463303733383831323164633938656133 +36356630623534313037313035613535613739616563333036353733353930656538303338316164 +61343532653535306231633566613235663661303835373866323365386439386266313436613838 +31366533323163356332383166353634653737646665356138373763336662393130346232393434 +36393163366530646530303535376234306435393063393031353861306230663434666434383066 +36303737633864343536313265383337333030383137643138663264646335623566326662663262 +36353135393765303564653362396130636333313432656361393439663936653437663863346365 +65616538313663333731303739643131356134616335626566383362363763646533363265323937 +38336462333062383564646266376562373666393336393761643732633762313432333730646237 +37316334663336343238303238636239623964623339333139336238396533323762333936363037 +31343565616564646466336137616663643362656530383465316331326366376661346138373336 +32396163393632613139623730633836646130383735323661303031646238383938383734363733 +31386661373032623161383139323032633263383937386134333731626234343437393834643865 +36646534393263323665343339626134383531343161656331646631333765616635323536303464 +63323337613666306363643765636133633130323733343135333765633631346264316364616335 +30373964333833393261363535633135383963363138333839313834396236396665393537663837 +31373233623830663338616166356666306430303135353865343134633337366666663439366235 +33303766666232356362396431356336643130653033346565666163346537373362363462666138 +38626564386637633137383831356632383333633336663734646538383139303437663332666133 +37393461306532633664353163313363323732666234343662643136353766323362393835303064 +61353338313933613931643030663730303638313934623131343933366434386232356564386432 +32393464383765333437376135366234616564333035393031626131643461623833313130313839 +39666131363632376663303530613135643936316633363034326437666166353666356263343062 +36393938643033636538343261303134353863666638373565623036343231633732343366313031 +66316630613531323638326232396436393362636435373032303662623731636436313332393731 +30393431653036363636316264316335393764383730383362626331336133333931383232613363 +35303034653664303732363564353331663861643332616437386465393532623732653033663162 +64613936333063666365326562656533343262376131396236303831373564353437343732653632 +30623931363966313462383336306637353537663639386166646561393336326139653230663262 +30363265386166313633653939633362666131323063383331333133663161353434636530313430 +64363166646236313234643565626466366333386332656432363131393639343836336234353736 +63633762636137663636646562633466343262386565653232323534343332343239393630613262 +36346337666131356362363265393239333436336266383363386165393132316661323066306433 +31373131376463613462616662336364393539353639613463393033343437306565313762623734 +37343031663934346532626536333666386237613835323064313139303332653963376163313136 +35643864613630636131353065393736373534373633653438323661386631383364633533303632 +37646438386531373630313234376534336531626666633337346561353935373933663331653862 +32633939373762666264303965656565396338303265366438333630343639346238383531343161 +38616437323237343032353761323362663062316430316236383631653763326565363633633764 +35343535613238393230643663303735363031313334323762663935313239653434653934336133 +36313563666530356165303739613434373964323966383037323932316438393938383435306236 +66623466643534396263666130396165333565646232656637643937323439343939643230333138 +66393761626265313133346465323430643362316662636338333835323430643936343064366430 +65646532316262643662386439633831626337383236336265383538633362646166303432303532 +36356237343361303634323132633663353035376337303932666439666534646466663137303135 +30636436353661613234343530366163323934376430353266643561633831396537396432663435 +36656238653066356362666162373161333762366335383032383665643961326665326136313035 +33616665616436626238383030313836363365636465386530346137386165326236326134373938 +34336237356266646330323738646363373939396466353132373135303063623561386536623136 +30353966613235666565613165626463666237666664356530616630633931363436643734333531 +37393335623033323531663364373932373462633336373937376565323364653036303265363735 +61653666626263366231663566323633333565343262663964333636373863396632633961626539 +64336234373531633165663030363666316565663766383835313732626366323265663731616430 +36633734376536346335616630663935383564633833343061383033396438336332323062393435 +62623965343834346563626664613736393561316461636636373533633037363234613230303136 +33323366646132356334336431653539353465666131313966306636353161333338616634393930 +62643062393166303864383839343565303836306262363230623761393139333666363331346363 +39353038373033326336383364396365646430363034363936633738653038646335326233383137 +61343632323530323663356237653637306136636433383938613430343566383239653832653365 +39383634633636366465633765353866636362656163666430656139373331616234313539366532 +31653163383330626363323931373938663236633762326564633639356661393832383330353239 +64363164656635396638363031663665326361353530653864373437343737613239653130323038 +33316263363839323234366233396138653765643933346434396436613834643335313732626430 +63306536663464393863613735356666656336346530396666626337666134333664383964613131 +39383366643534363964623330623932396264646238353839396161393837383266633834656631 +66313464313932303666353766393631376339386361653033633134643237623537356138663566 +66616133343062306163386562623732356334376162356439663564663531366334373433386533 +37336430653465633238663535633462333230323463306331373531303131626431343034396538 +66333266396639343462333261633435623834363364396664363666633231623537666630663930 +64383732343132643766393765616230336562633237396237316263633561366463623963316232 +36666137643433343663376366653166633935383437393033653566323638636336363665383464 +30663236326262303361356437303465653238303434343031336130303933303463386136303831 +62326638373333633730346336643861636262373733353965613130366465313437613463356562 +32356332636239326131386463386166626262376634643131663365333434383663306437346461 +34323766383134623361346166656636636636356562646137306130666438376361333763373934 +64376166336565303866303130363539396331326236363665643031373031363637656161376565 +62383834636661623061336262353431316436653866303932663833323931633338366636663634 +30346631316266393131323866323539643331343032336335303663643137376239373736343563 +35366130656163336138653433333237316337393339333534323738663133666531373232316534 +39323262346639383134613533616166636131303332353433643031623161626631376362333861 +31613735393835626338