roles/homeassistant: Deploy Home Assistant
This commit introduces a *homeassistant* role that installs and sets up Home Assistant using `pip`.jenkins-master
parent
f002da86ef
commit
960528c001
|
@ -0,0 +1,13 @@
|
||||||
|
- hosts: home-assistant
|
||||||
|
roles:
|
||||||
|
- apache
|
||||||
|
- homeassistant
|
||||||
|
tasks:
|
||||||
|
- name: ensure homeassistant is running
|
||||||
|
service:
|
||||||
|
name: homeassistant
|
||||||
|
state: started
|
||||||
|
- name: ensure apache is running
|
||||||
|
service:
|
||||||
|
name: httpd
|
||||||
|
state: started
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
exec /var/lib/homeassistant/.local/bin/hass
|
|
@ -0,0 +1,12 @@
|
||||||
|
# vim: set ft=systemd :
|
||||||
|
[Unit]
|
||||||
|
Description=Home Assistant
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/local/bin/hass
|
||||||
|
User=homeassistant
|
||||||
|
UMask=0077
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,10 @@
|
||||||
|
- name: reload systemd
|
||||||
|
command: systemctl daemon-reload
|
||||||
|
- name: restart homeassistant
|
||||||
|
service:
|
||||||
|
name: homeassistant
|
||||||
|
state: restarted
|
||||||
|
- name: restart httpd
|
||||||
|
service:
|
||||||
|
name: homeassistant
|
||||||
|
state: restarted
|
|
@ -0,0 +1,54 @@
|
||||||
|
- name: ensure system dependencies are installed
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- python3-pip
|
||||||
|
state: present
|
||||||
|
tags:
|
||||||
|
- install
|
||||||
|
|
||||||
|
- name: ensure homeassistant user exists
|
||||||
|
user:
|
||||||
|
name: homeassistant
|
||||||
|
system: true
|
||||||
|
home: /var/lib/homeassistant
|
||||||
|
|
||||||
|
- name: ensure homeassistant is installed
|
||||||
|
become: true
|
||||||
|
become_user: homeassistant
|
||||||
|
pip:
|
||||||
|
name: homeassistant
|
||||||
|
extra_args: >-
|
||||||
|
--user
|
||||||
|
|
||||||
|
- name: ensure homeassistant entry point is installed
|
||||||
|
copy:
|
||||||
|
src: hass.sh
|
||||||
|
dest: /usr/local/bin/hass
|
||||||
|
mode: '0755'
|
||||||
|
notify:
|
||||||
|
- restart homeassistant
|
||||||
|
- name: ensure homeassistant systemd unit is installed
|
||||||
|
copy:
|
||||||
|
src: homeassistant.service
|
||||||
|
dest: /etc/systemd/system/homeassistant.service
|
||||||
|
mode: '0644'
|
||||||
|
notify:
|
||||||
|
- reload systemd
|
||||||
|
- restart homeassistant
|
||||||
|
- name: ensure homeassistant starts at boot
|
||||||
|
service:
|
||||||
|
name: homeassistant
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
- name: ensure apache is configured to proxy for homeassistant
|
||||||
|
template:
|
||||||
|
src: homeassistant.httpd.conf.j2
|
||||||
|
dest: /etc/httpd/conf.d/homeassistant.conf
|
||||||
|
mode: '0644'
|
||||||
|
notify:
|
||||||
|
- restart httpd
|
||||||
|
- name: ensure selinux allows apache to proxy
|
||||||
|
seboolean:
|
||||||
|
name: httpd_can_network_connect
|
||||||
|
state: true
|
||||||
|
persistent: true
|
|
@ -0,0 +1,37 @@
|
||||||
|
homeassistant:
|
||||||
|
# Name of the location where Home Assistant is running
|
||||||
|
name: Home
|
||||||
|
# Location required to calculate the time the sun rises and sets
|
||||||
|
latitude: 38.9568
|
||||||
|
longitude: -94.6832
|
||||||
|
# Impacts weather/sunrise data (altitude above sea level in meters)
|
||||||
|
elevation: 0
|
||||||
|
# metric for Metric, imperial for Imperial
|
||||||
|
unit_system: imperial
|
||||||
|
# Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
||||||
|
time_zone: America/Chicago
|
||||||
|
# Customization file
|
||||||
|
customize: !include customize.yaml
|
||||||
|
|
||||||
|
# Configure a default setup of Home Assistant (frontend, api, etc)
|
||||||
|
default_config:
|
||||||
|
|
||||||
|
# Show the introduction message on startup.
|
||||||
|
introduction:
|
||||||
|
|
||||||
|
# Uncomment this if you are using SSL/TLS, running in Docker container, etc.
|
||||||
|
# http:
|
||||||
|
# base_url: example.duckdns.org:8123
|
||||||
|
http:
|
||||||
|
server_host: '::1'
|
||||||
|
|
||||||
|
# Sensors
|
||||||
|
sensor: !include sensors.yaml
|
||||||
|
|
||||||
|
# Text to speech
|
||||||
|
tts:
|
||||||
|
- platform: google
|
||||||
|
|
||||||
|
group: !include groups.yaml
|
||||||
|
automation: !include automations.yaml
|
||||||
|
script: !include scripts.yaml
|
|
@ -0,0 +1,13 @@
|
||||||
|
ProxyPreserveHost On
|
||||||
|
ProxyRequests Off
|
||||||
|
|
||||||
|
ProxyPass /api/websocket ws://localhost:8123/api/websocket
|
||||||
|
ProxyPassReverse /api/websocket ws://localhost:8123/api/websocket
|
||||||
|
ProxyPass / http://localhost:8123/
|
||||||
|
ProxyPassReverse / http://localhost:8123/
|
||||||
|
|
||||||
|
RewriteEngine on
|
||||||
|
RewriteCond %{HTTP:Upgrade} =websocket [NC]
|
||||||
|
RewriteRule /(.*) ws://localhost:8123/$1 [P,L]
|
||||||
|
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
|
||||||
|
RewriteRule /(.*) http://localhost:8123/$1 [P,L]
|
Loading…
Reference in New Issue