From 6bfff16a4b2094699ff840fbe132b35660c8b5d7 Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Wed, 2 Oct 2024 23:07:09 +0200 Subject: [PATCH] homeassistant: Add installation procedures for homeassistant --- roles/homeassistant/handlers/main.yml | 5 +++ roles/homeassistant/tasks/installation.yml | 33 +++++++++++++++++++ roles/homeassistant/tasks/main.yml | 2 ++ roles/homeassistant/tasks/systemd.yml | 17 ++++++++++ .../templates/home-assistant.service.j2 | 14 ++++++++ 5 files changed, 71 insertions(+) create mode 100644 roles/homeassistant/tasks/installation.yml create mode 100644 roles/homeassistant/tasks/systemd.yml create mode 100644 roles/homeassistant/templates/home-assistant.service.j2 diff --git a/roles/homeassistant/handlers/main.yml b/roles/homeassistant/handlers/main.yml index 8cb9a93..69cfebc 100644 --- a/roles/homeassistant/handlers/main.yml +++ b/roles/homeassistant/handlers/main.yml @@ -4,3 +4,8 @@ ansible.builtin.service: name: postgresql state: restarted + +- name: Restart homeassistant + ansible.builtin.service: + name: home-assistant + state: restarted diff --git a/roles/homeassistant/tasks/installation.yml b/roles/homeassistant/tasks/installation.yml new file mode 100644 index 0000000..64d88af --- /dev/null +++ b/roles/homeassistant/tasks/installation.yml @@ -0,0 +1,33 @@ +--- + +- name: Install defined version of Home Assistant + ansible.builtin.pip: + name: + - wheel + - psycopg2 + - packaging + - uv + - netifaces + - homeassistant=={{ ha_version }} + virtualenv: '{{ ha_venv_dir }}' + virtualenv_command: 'python{{ ha_python_version }} -m venv' + when: ha_version is defined + become: true + become_user: "{{ ha_user }}" + notify: Restart homeassistant + +- name: Install latest version of Home Assistant + ansible.builtin.pip: + name: + - wheel + - psycopg2 + - packaging + - uv + - homeassistant + extra_args: "--upgrade" + virtualenv: "{{ ha_venv_dir }}" + virtualenv_command: 'python{{ ha_python_version }} -m venv' + when: ha_version is undefined + become: true + become_user: "{{ ha_user }}" + notify: Restart homeassistant diff --git a/roles/homeassistant/tasks/main.yml b/roles/homeassistant/tasks/main.yml index ee248b2..b200556 100644 --- a/roles/homeassistant/tasks/main.yml +++ b/roles/homeassistant/tasks/main.yml @@ -9,3 +9,5 @@ loop: - preparation.yml - postgres.yml + - systemd.yml + - installation.yml diff --git a/roles/homeassistant/tasks/systemd.yml b/roles/homeassistant/tasks/systemd.yml new file mode 100644 index 0000000..2c6c63f --- /dev/null +++ b/roles/homeassistant/tasks/systemd.yml @@ -0,0 +1,17 @@ +--- + +- name: Install systemd unit file + ansible.builtin.template: + src: home-assistant.service.j2 + dest: "/etc/systemd/system/home-assistant.service" + owner: root + group: root + mode: "0644" + notify: Restart homeassistant + +- name: Enable home assistant service + ansible.builtin.systemd: + name: home-assistant + daemon_reload: true + enabled: true + notify: Restart homeassistant \ No newline at end of file diff --git a/roles/homeassistant/templates/home-assistant.service.j2 b/roles/homeassistant/templates/home-assistant.service.j2 new file mode 100644 index 0000000..fc6caff --- /dev/null +++ b/roles/homeassistant/templates/home-assistant.service.j2 @@ -0,0 +1,14 @@ +[Unit] +Description=Home Assistant +After=network.target postgresql.service + +[Service] +Type=simple +User={{ ha_user }} +Environment="PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:{{ ha_venv_dir }}/bin" +ExecStart={{ ha_venv_dir }}/bin/hass --config {{ ha_conf_dir }} +Restart=always +RestartSec=3 + +[Install] +WantedBy=multi-user.target