/
/
/
1---
2- name: Check if Home Assistant Supervisor is already installed
3 ansible.builtin.stat:
4 path: /usr/bin/hassio-supervisor
5 register: supervisor_installed
6
7- name: Install Home Assistant Supervisor
8 block:
9 - name: Download Home Assistant Supervised package
10 ansible.builtin.get_url:
11 url: "{{ homeassistant_supervisor_deb_url }}"
12 dest: /tmp/homeassistant-supervised.deb
13 mode: '0644'
14 timeout: 120
15 become: true
16
17 - name: Set machine type environment variable
18 ansible.builtin.lineinfile:
19 path: /etc/environment
20 regexp: '^MACHINE_TYPE='
21 line: "MACHINE_TYPE={{ homeassistant_machine_type }}"
22 create: true
23 owner: root
24 group: root
25 mode: '0644'
26 become: true
27
28 - name: Export machine type for current session
29 ansible.builtin.shell: export MACHINE_TYPE={{ homeassistant_machine_type }}
30 changed_when: false
31
32 - name: Pre-configure debconf for Home Assistant installation
33 ansible.builtin.debconf:
34 name: homeassistant-supervised
35 question: "homeassistant-supervised/machine-type"
36 value: "{{ homeassistant_machine_type }}"
37 vtype: select
38 become: true
39
40 - name: Install Home Assistant Supervised package
41 ansible.builtin.apt:
42 deb: /tmp/homeassistant-supervised.deb
43 state: present
44 environment:
45 MACHINE_TYPE: "{{ homeassistant_machine_type }}"
46 DEBIAN_FRONTEND: noninteractive
47 become: true
48 register: supervisor_install_result
49 notify: restart homeassistant-supervisor
50
51 - name: Clean up Home Assistant Supervised package
52 ansible.builtin.file:
53 path: /tmp/homeassistant-supervised.deb
54 state: absent
55 become: true
56 when: homeassistant_cleanup_downloads | bool
57
58 when: not supervisor_installed.stat.exists
59
60- name: Configure Home Assistant Supervisor service
61 block:
62 - name: Enable Home Assistant Supervisor service
63 ansible.builtin.systemd:
64 name: hassio-supervisor
65 enabled: true
66 daemon_reload: true
67 become: true
68
69 - name: Start Home Assistant Supervisor service
70 ansible.builtin.systemd:
71 name: hassio-supervisor
72 state: started
73 become: true
74 register: supervisor_service_start
75
76 - name: Wait for Home Assistant Supervisor to initialize
77 ansible.builtin.wait_for:
78 timeout: "{{ homeassistant_service_start_timeout }}"
79 sleep: 10
80 when: supervisor_service_start is changed
81
82- name: Configure Home Assistant system integration
83 block:
84 - name: Create Home Assistant systemd service override directory
85 ansible.builtin.file:
86 path: /etc/systemd/system/hassio-supervisor.service.d
87 state: directory
88 owner: root
89 group: root
90 mode: '0755'
91 become: true
92
93 - name: Configure Home Assistant service dependencies
94 ansible.builtin.copy:
95 content: |
96 [Unit]
97 Wants=docker.service
98 After=docker.service network-online.target
99
100 [Service]
101 Environment=SUPERVISOR_SHARE={{ homeassistant_data_share }}
102 Environment=SUPERVISOR_NAME=hassio_supervisor
103 Restart=always
104 RestartSec=30
105 dest: /etc/systemd/system/hassio-supervisor.service.d/override.conf
106 owner: root
107 group: root
108 mode: '0644'
109 become: true
110 notify:
111 - reload systemd
112 - restart homeassistant-supervisor
113
114- name: Verify Home Assistant installation directories
115 ansible.builtin.file:
116 path: "{{ item }}"
117 state: directory
118 owner: root
119 group: root
120 mode: '0755'
121 become: true
122 loop:
123 - "{{ homeassistant_data_share }}"
124 - "{{ homeassistant_data_share }}/homeassistant"
125 - "{{ homeassistant_data_share }}/supervisor"
126 - "{{ homeassistant_data_share }}/addons"
127 - "{{ homeassistant_data_share }}/backup"