/
/
/
1---
2- name: Validate system dependencies
3 block:
4 - name: Check Docker service status
5 ansible.builtin.systemd:
6 name: docker
7 register: docker_service_status
8 become: true
9
10 - name: Verify Docker is running
11 ansible.builtin.assert:
12 that:
13 - docker_service_status.status.ActiveState == "active"
14 fail_msg: "Docker service is not active"
15 success_msg: "Docker service is running"
16
17 - name: Check NetworkManager service status
18 ansible.builtin.systemd:
19 name: NetworkManager
20 register: networkmanager_service_status
21 become: true
22 when: homeassistant_manage_networking | bool
23
24 - name: Verify NetworkManager is running
25 ansible.builtin.assert:
26 that:
27 - networkmanager_service_status.status.ActiveState == "active"
28 fail_msg: "NetworkManager service is not active"
29 success_msg: "NetworkManager service is running"
30 when: homeassistant_manage_networking | bool
31
32- name: Validate OS-Agent installation
33 block:
34 - name: Check OS-Agent service status
35 ansible.builtin.systemd:
36 name: os-agent
37 register: os_agent_service_status
38 become: true
39
40 - name: Display OS-Agent service status if not active
41 ansible.builtin.debug:
42 msg: |
43 OS-Agent service status: {{ os_agent_service_status.status.ActiveState }}
44 Service logs:
45 when: os_agent_service_status.status.ActiveState != "active"
46
47 - name: Get OS-Agent service logs if not active
48 ansible.builtin.command: journalctl -u os-agent --no-pager -n 20
49 register: os_agent_logs
50 changed_when: false
51 become: true
52 when: os_agent_service_status.status.ActiveState != "active"
53
54 - name: Display OS-Agent logs if not active
55 ansible.builtin.debug:
56 msg: "{{ os_agent_logs.stdout_lines }}"
57 when: os_agent_service_status.status.ActiveState != "active"
58
59 - name: Restart OS-Agent service if not active
60 ansible.builtin.systemd:
61 name: os-agent
62 state: restarted
63 daemon_reload: true
64 become: true
65 when: os_agent_service_status.status.ActiveState != "active"
66
67 - name: Wait for OS-Agent to start
68 ansible.builtin.wait_for:
69 timeout: 10
70 when: os_agent_service_status.status.ActiveState != "active"
71
72 - name: Re-check OS-Agent service status after restart
73 ansible.builtin.systemd:
74 name: os-agent
75 register: os_agent_service_status_final
76 become: true
77 when: os_agent_service_status.status.ActiveState != "active"
78
79 - name: Verify OS-Agent is running (after restart if needed)
80 ansible.builtin.assert:
81 that:
82 - os_agent_service_status.status.ActiveState == "active" or os_agent_service_status_final.status.ActiveState == "active"
83 fail_msg: "OS-Agent service could not be started"
84 success_msg: "OS-Agent service is running"
85
86 - name: Test OS-Agent D-Bus interface
87 ansible.builtin.command: busctl introspect io.hass.os /io/hass/os
88 register: os_agent_dbus_test
89 changed_when: false
90 become: true
91
92 - name: Verify OS-Agent D-Bus interface
93 ansible.builtin.assert:
94 that:
95 - "'io.hass.os' in os_agent_dbus_test.stdout"
96 fail_msg: "OS-Agent D-Bus interface not available"
97 success_msg: "OS-Agent D-Bus interface is working"
98
99- name: Validate Home Assistant Supervisor installation
100 block:
101 - name: Check Home Assistant Supervisor service status
102 ansible.builtin.systemd:
103 name: hassio-supervisor
104 register: supervisor_service_status
105 become: true
106
107 - name: Verify Home Assistant Supervisor is running
108 ansible.builtin.assert:
109 that:
110 - supervisor_service_status.status.ActiveState == "active"
111 fail_msg: "Home Assistant Supervisor service is not active"
112 success_msg: "Home Assistant Supervisor service is running"
113
114 - name: Check Home Assistant Supervisor logs for errors
115 ansible.builtin.command: journalctl -u hassio-supervisor --no-pager -n 20
116 register: supervisor_logs
117 changed_when: false
118 become: true
119
120 - name: Display recent supervisor logs
121 ansible.builtin.debug:
122 msg: "{{ supervisor_logs.stdout_lines }}"
123
124- name: Validate Home Assistant data directories
125 ansible.builtin.stat:
126 path: "{{ item }}"
127 register: ha_directories
128 loop:
129 - "{{ homeassistant_data_share }}"
130 - "{{ homeassistant_data_share }}/homeassistant"
131 - "{{ homeassistant_data_share }}/supervisor"
132
133- name: Verify Home Assistant data directories exist
134 ansible.builtin.assert:
135 that:
136 - item.stat.exists
137 - item.stat.isdir
138 fail_msg: "Home Assistant directory {{ item.item }} does not exist or is not a directory"
139 success_msg: "Home Assistant directory {{ item.item }} exists"
140 loop: "{{ ha_directories.results }}"
141
142- name: Check Home Assistant web interface availability
143 ansible.builtin.uri:
144 url: "http://{{ ansible_default_ipv4.address }}:8123"
145 method: GET
146 timeout: 10
147 register: ha_web_check
148 retries: 12
149 delay: 30
150 until: ha_web_check.status == 200
151 failed_when: false
152
153- name: Display Home Assistant access information
154 ansible.builtin.debug:
155 msg:
156 - "Home Assistant installation completed successfully!"
157 - "Web interface should be available at: http://{{ ansible_default_ipv4.address }}:8123"
158 - "Initial setup may take 10-20 minutes to complete."
159 - "Check service status with: systemctl status hassio-supervisor"
160 - "View logs with: journalctl -u hassio-supervisor -f"
161 when: ha_web_check.status == 200 or ha_web_check.status is undefined
162
163- name: Warning if web interface is not ready
164 ansible.builtin.debug:
165 msg:
166 - "WARNING: Home Assistant web interface is not yet accessible"
167 - "This is normal during initial installation"
168 - "Wait 10-20 minutes and check http://{{ ansible_default_ipv4.address }}:8123"
169 - "Monitor progress with: journalctl -u hassio-supervisor -f"
170 when: ha_web_check.status != 200 and ha_web_check.status is defined