initial release
This commit is contained in:
parent
7b13e6adc7
commit
62d334ed33
225
home-assistant.yml
Normal file
225
home-assistant.yml
Normal file
@ -0,0 +1,225 @@
|
||||
---
|
||||
- name: home-assistant
|
||||
hosts: all
|
||||
tasks:
|
||||
|
||||
- name: Create /home/docker/home-assistant.{{inventory_hostname}} dir
|
||||
ansible.builtin.file:
|
||||
path: /home/docker/home-assistant.{{inventory_hostname}}
|
||||
owner: root
|
||||
group: docker
|
||||
state: directory
|
||||
mode: '0550'
|
||||
|
||||
- name: Create /home/docker/home-assistant.{{inventory_hostname}}/data dir
|
||||
ansible.builtin.file:
|
||||
path: /home/docker/home-assistant.{{inventory_hostname}}/data
|
||||
owner: 3000
|
||||
group: 3000
|
||||
state: directory
|
||||
mode: '0750'
|
||||
|
||||
- name: Edit Home Assistant config
|
||||
blockinfile:
|
||||
path: /home/docker/home-assistant.{{inventory_hostname}}/data/configuration.yaml
|
||||
create: yes
|
||||
mode: 0444
|
||||
owner: root
|
||||
group: docker
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
block: |
|
||||
# Loads default set of integrations. Do not remove.
|
||||
#default_config:
|
||||
|
||||
assist_pipeline:
|
||||
backup:
|
||||
#bluetooth:
|
||||
config:
|
||||
conversation:
|
||||
counter:
|
||||
dhcp:
|
||||
energy:
|
||||
history:
|
||||
homeassistant_alerts:
|
||||
image_upload:
|
||||
input_boolean:
|
||||
input_button:
|
||||
input_datetime:
|
||||
input_number:
|
||||
input_text:
|
||||
input_select:
|
||||
logger:
|
||||
logbook:
|
||||
map:
|
||||
media_source:
|
||||
mobile_app:
|
||||
my:
|
||||
network:
|
||||
person:
|
||||
schedule:
|
||||
ssdp:
|
||||
stream:
|
||||
sun:
|
||||
system_health:
|
||||
tag:
|
||||
timer:
|
||||
webhook:
|
||||
zeroconf:
|
||||
zone:
|
||||
|
||||
# Load frontend themes from the themes folder
|
||||
frontend:
|
||||
themes: !include_dir_merge_named themes
|
||||
automation: !include automations.yaml
|
||||
script: !include scripts.yaml
|
||||
scene: !include scenes.yaml
|
||||
|
||||
http:
|
||||
use_x_forwarded_for: true
|
||||
trusted_proxies:
|
||||
- 127.0.0.1
|
||||
- 172.23.0.222 # Server IP
|
||||
- 192.168.41.0/24 # traefik proxy subnet
|
||||
backup: yes
|
||||
notify: Restart home-assistant
|
||||
|
||||
- name: /home/docker/home-assistant.{{inventory_hostname}}/genpw.sh (generate Random PW for Home Assistant)
|
||||
blockinfile:
|
||||
path: /home/docker/home-assistant.{{inventory_hostname}}/genpw.sh
|
||||
create: yes
|
||||
mode: 0550
|
||||
owner: root
|
||||
group: docker
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
block: |
|
||||
cd /home/docker/home-assistant.{{inventory_hostname}}
|
||||
home-assistantadminpassword=$(pwgen -s 32 1)
|
||||
|
||||
[ -f env ] || echo "HA_ADMIN_PASSWORD=!HA_ADMIN_PASSWORD!
|
||||
" >env
|
||||
|
||||
chmod 440 env
|
||||
chown root:docker env
|
||||
sed -i "s/\!HA_ADMIN_PASSWORD\!/$home-assistantadminpassword/g" env
|
||||
|
||||
backup: yes
|
||||
validate: /bin/bash -n %s
|
||||
notify: run genpw.sh
|
||||
|
||||
- name: /home/docker/home-assistant.{{inventory_hostname}}/genpw.sh shebang
|
||||
lineinfile:
|
||||
path: /home/docker/home-assistant.{{inventory_hostname}}/genpw.sh
|
||||
insertbefore: BOF
|
||||
line: "#!/bin/bash -e"
|
||||
|
||||
- name: Gen initial passwords if not exists
|
||||
ansible.builtin.shell: ./genpw.sh
|
||||
args:
|
||||
chdir: /home/docker/home-assistant.{{inventory_hostname}}
|
||||
creates: /home/docker/home-assistant.{{inventory_hostname}}/env
|
||||
|
||||
- name: /home/docker/home-assistant.{{inventory_hostname}}/docker-compose.yml Container Configuration
|
||||
blockinfile:
|
||||
path: /home/docker/home-assistant.{{inventory_hostname}}/docker-compose.yml
|
||||
create: yes
|
||||
mode: 0440
|
||||
owner: root
|
||||
group: docker
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
block: |
|
||||
version: '3.6'
|
||||
services:
|
||||
home-assistant.{{inventory_hostname}}:
|
||||
image: "ghcr.io/home-assistant/home-assistant:stable"
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./config:/config
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
network_mode: host
|
||||
privileged: true
|
||||
|
||||
backup: yes
|
||||
notify: Restart home-assistant
|
||||
|
||||
- name: Start home-assistant
|
||||
ansible.builtin.shell: docker-compose up -d
|
||||
args:
|
||||
chdir: /home/docker/home-assistant.{{inventory_hostname}}
|
||||
creates: /home/docker/home-assistant.{{inventory_hostname}}/data/home-assistant_v2.db
|
||||
|
||||
- name: /home/docker/traefik/providers/home-assistant.yml Home-Assistant<->Traefik provider
|
||||
blockinfile:
|
||||
path: /home/docker/traefik/providers/home-assistant.yml
|
||||
create: yes
|
||||
mode: 0444
|
||||
owner: root
|
||||
group: docker
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
block: |
|
||||
http:
|
||||
routers:
|
||||
home-assistant:
|
||||
rule: "Host(`home-assistant.{{inventory_hostname}}`)"
|
||||
service: home-assistant
|
||||
entryPoints:
|
||||
- "https"
|
||||
tls:
|
||||
certresolver: letsencrypt
|
||||
middlewares:
|
||||
- "secHeaders@file"
|
||||
services:
|
||||
home-assistant:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://192.168.41.1:8123"
|
||||
|
||||
- name: Wait until home-assistant install is finished
|
||||
wait_for:
|
||||
path: /home/docker/home-assistant.{{inventory_hostname}}/data/home-assistant_v2.db
|
||||
|
||||
- name: /home/docker/home-assistant.{{inventory_hostname}}/home-assistant.init.sh
|
||||
blockinfile:
|
||||
path: /home/docker/home-assistant.{{inventory_hostname}}/home-assistant.init.sh
|
||||
mode: "0500"
|
||||
owner: root
|
||||
group: root
|
||||
create: yes
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
block: |
|
||||
# home-assistant
|
||||
sleep 120
|
||||
cd /home/docker/home-assistant.{{inventory_hostname}} || exit 1
|
||||
. ./env
|
||||
curl --location --request POST 'http://192.168.43.1:8123/api/onboarding/users' --header 'Content-Type: application/json' --data-raw "{
|
||||
\"client_id\": \"http://192.168.43.1:8123/\",
|
||||
\"name\": \"admin\",
|
||||
\"username\": \"haadmin\",
|
||||
\"password\": \"${HA_ADMIN_PASSWORD}\",
|
||||
\"language\": \"de\"
|
||||
}"
|
||||
backup: yes
|
||||
validate: /bin/bash -n %s
|
||||
notify: run home-assistant.init
|
||||
|
||||
- name: Run home-assistant.init after install
|
||||
ansible.builtin.shell: bash /home/docker/home-assistant.{{inventory_hostname}}/home-assistant.init.sh
|
||||
args:
|
||||
chdir: /home/docker/home-assistant.{{inventory_hostname}}
|
||||
creates: /home/docker/home-assistant.{{inventory_hostname}}/home-assistant.init.log
|
||||
|
||||
|
||||
handlers:
|
||||
- name: run genpw.sh
|
||||
ansible.builtin.shell: ./genpw.sh
|
||||
args:
|
||||
chdir: /home/docker/home-assistant.{{inventory_hostname}}
|
||||
notify: Restart home-assistant
|
||||
|
||||
- name: run home-assistant.init
|
||||
ansible.builtin.shell: bash /home/docker/home-assistant.{{inventory_hostname}}/home-assistant.init.sh
|
||||
|
||||
- name: Restart home-assistant
|
||||
ansible.builtin.shell: docker-compose up -d
|
||||
args:
|
||||
chdir: /home/docker/home-assistant.{{inventory_hostname}}
|
||||
|
Loading…
Reference in New Issue
Block a user