roles/homeassistant: Deploy Home Assistant

This commit introduces a *homeassistant* role that installs and sets up
Home Assistant using `pip`.
jenkins-master
Dustin 2019-03-05 18:27:37 -06:00
parent f002da86ef
commit 960528c001
7 changed files with 142 additions and 0 deletions

13
homeassistant.yml Normal file
View File

@ -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

View File

@ -0,0 +1,3 @@
#!/bin/sh
exec /var/lib/homeassistant/.local/bin/hass

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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]