diff --git a/main.tf b/main.tf index cab2e4b..f64e736 100644 --- a/main.tf +++ b/main.tf @@ -29,3 +29,7 @@ module "renovate" { module "plugin-csi" { source = "./modules/plugin-csi" } + +module "home-assistant" { + source = "./modules/home-assistant" +} diff --git a/modules/home-assistant/jobspec.nomad.hcl b/modules/home-assistant/jobspec.nomad.hcl new file mode 100644 index 0000000..c2f20e7 --- /dev/null +++ b/modules/home-assistant/jobspec.nomad.hcl @@ -0,0 +1,53 @@ +job "homeassistant" { + group "homeassistant" { + + network { + port "homeassistant" { + static = 8123 + } + } + + task "homeassistant" { + driver = "docker" + + config { + image = "ghcr.io/home-assistant/home-assistant:2025.1.2" + network_mode = "host" + privileged = true + + volumes = [ + "/etc/localtime:/etc/localtime:ro", + "/run/dbus:/run/dbus:ro" + ] + } + + volume_mount { + volume = "config" + destination = "/config" + } + + resources { + cpu = 500 + memory = 512 + } + } + + volume "config" { + type = "csi" + read_only = false + source = "martinibar_prod_home-assistant_config" + attachment_mode = "file-system" + access_mode = "single-node-writer" + } + + service { + port = "homeassistant" + provider = "consul" + tags = [ + "traefik.enable=true", + "traefik.http.routers.homeassistant.entrypoints=websecure", + "traefik.http.routers.homeassistant.rule=Host(`homeassistant.brmartin.co.uk`)" + ] + } + } +} diff --git a/modules/home-assistant/main.tf b/modules/home-assistant/main.tf new file mode 100644 index 0000000..7b7f22e --- /dev/null +++ b/modules/home-assistant/main.tf @@ -0,0 +1,3 @@ +resource "nomad_job" "home-assistant" { + jobspec = file("${path.module}/jobspec.nomad.hcl") +}