Add zigbee2mqtt role and playbook
This commit is contained in:
parent
e084462ae1
commit
51fd3367db
16
inventories/thinkcccentre/host_vars/zigbee2mqtt.yml
Normal file
16
inventories/thinkcccentre/host_vars/zigbee2mqtt.yml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
zigbee2mqtt__version: "1.28.4"
|
||||||
|
zigbee2mqtt__network_key: !vault |
|
||||||
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
|
61633839396136633962393266643139333961613566396231343061383363393132393333313230
|
||||||
|
6461656564363565623730353138613537643266323438390a363937616136353334333732366233
|
||||||
|
65316234656235333931373135366665353763393439633866373336656266363761383262386534
|
||||||
|
6461396438316236340a323365373739633235356266653864366434386234653235333036346235
|
||||||
|
33633834326534313965626231336633623036613433306436613038363333306432393662653737
|
||||||
|
63343465333062636637313130306434623565623561303835303934306239623035323333323333
|
||||||
|
30303031306635313764323434333465353465366633376432326563666264386431623335613636
|
||||||
|
64643434666433363865
|
||||||
|
zigbee2mqtt__config: "{{ lookup('ansible.builtin.template', 'configs/zigbee2mqtt/zigbee2mqtt/configuration.yaml.j2') }}"
|
||||||
|
nginx__configs:
|
||||||
|
- name: zigbee2mqtt
|
||||||
|
content: "{{ lookup('ansible.builtin.file', 'configs/zigbee2mqtt/nginx/zigbee2mqtt.conf') }}"
|
||||||
|
nginx__enable_https_redirect: true
|
|
@ -8,3 +8,5 @@ all:
|
||||||
ansible_host: automation.z9
|
ansible_host: automation.z9
|
||||||
esphome:
|
esphome:
|
||||||
ansible_host: esphome.z9
|
ansible_host: esphome.z9
|
||||||
|
zigbee2mqtt:
|
||||||
|
ansible_host: zigbee2mqtt.z9
|
||||||
|
|
7
playbooks/deploy_zigbee2mqtt.yml
Normal file
7
playbooks/deploy_zigbee2mqtt.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
- name: Deploy zigbee2mqtt on zigbee2mqtt.z9
|
||||||
|
become: true
|
||||||
|
hosts: zigbee2mqtt
|
||||||
|
roles:
|
||||||
|
- zigbee2mqtt
|
||||||
|
- nginx
|
25
playbooks/files/configs/zigbee2mqtt/nginx/zigbee2mqtt.conf
Normal file
25
playbooks/files/configs/zigbee2mqtt/nginx/zigbee2mqtt.conf
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
server {
|
||||||
|
listen 443 ssl http2;
|
||||||
|
listen [::]:443 ssl http2;
|
||||||
|
|
||||||
|
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
|
||||||
|
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
|
||||||
|
|
||||||
|
server_name zigbee2mqtt.z9;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://localhost:8080/;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /api {
|
||||||
|
proxy_pass http://localhost:8080/api;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
}
|
||||||
|
}
|
8
playbooks/roles/nodejs/meta/argument_specs.yml
Normal file
8
playbooks/roles/nodejs/meta/argument_specs.yml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
argument_specs:
|
||||||
|
main:
|
||||||
|
options:
|
||||||
|
nodejs__major_version:
|
||||||
|
description: Major version of nodejs to install
|
||||||
|
type: int
|
||||||
|
required: true
|
16
playbooks/roles/nodejs/meta/main.yml
Normal file
16
playbooks/roles/nodejs/meta/main.yml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
dependencies:
|
||||||
|
- role: distribution_check
|
||||||
|
vars:
|
||||||
|
distribution_check__supported_distributions:
|
||||||
|
- name: Debian
|
||||||
|
versions:
|
||||||
|
- "11"
|
||||||
|
- role: add_apt_repository
|
||||||
|
vars:
|
||||||
|
add_apt_repository__https_repo: true
|
||||||
|
add_apt_repository__keyring_url: https://deb.nodesource.com/gpgkey/nodesource.gpg.key
|
||||||
|
add_apt_repository__keyring_path: /usr/share/keyrings/nodesource.gpg
|
||||||
|
add_apt_repository__repo: "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_\
|
||||||
|
{{ nodejs__major_version }}.x {{ ansible_facts.lsb.codename }} main"
|
||||||
|
add_apt_repository__filename: nodesource.list
|
4
playbooks/roles/nodejs/tasks/main.yml
Normal file
4
playbooks/roles/nodejs/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
- name: Ensure nodejs is installed
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: nodejs
|
18
playbooks/roles/zigbee2mqtt/files/zigbee2mqtt.service
Normal file
18
playbooks/roles/zigbee2mqtt/files/zigbee2mqtt.service
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
[Unit]
|
||||||
|
Description=zigbee2mqtt
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Environment=ZIGBEE2MQTT_DATA=/home/zigbee2mqtt/zigbee2mqtt_data
|
||||||
|
Environment=NODE_ENV=production
|
||||||
|
ExecStart=/usr/bin/npm start
|
||||||
|
WorkingDirectory=/opt/zigbee2mqtt
|
||||||
|
StandardOutput=inherit
|
||||||
|
# Or use StandardOutput=null if you don't want Zigbee2MQTT messages filling syslog, for more options see systemd.exec(5)
|
||||||
|
StandardError=inherit
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10s
|
||||||
|
User=zigbee2mqtt
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
9
playbooks/roles/zigbee2mqtt/handlers/main.yml
Normal file
9
playbooks/roles/zigbee2mqtt/handlers/main.yml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
- name: Restart zigbee2mqtt
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: zigbee2mqtt
|
||||||
|
state: restarted
|
||||||
|
- name: Reload systemd-daemon and restart zigbee2mqtt
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: zigbee2mqtt
|
||||||
|
state: restarted
|
||||||
|
daemon_reload: true
|
12
playbooks/roles/zigbee2mqtt/meta/argument_specs.yml
Normal file
12
playbooks/roles/zigbee2mqtt/meta/argument_specs.yml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
argument_specs:
|
||||||
|
main:
|
||||||
|
options:
|
||||||
|
zigbee2mqtt__version:
|
||||||
|
description: zigbee2mqtt version to install
|
||||||
|
type: str
|
||||||
|
required: true
|
||||||
|
zigbee2mqtt__config:
|
||||||
|
description: Configuration file content
|
||||||
|
type: str
|
||||||
|
required: true
|
11
playbooks/roles/zigbee2mqtt/meta/main.yml
Normal file
11
playbooks/roles/zigbee2mqtt/meta/main.yml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
---
|
||||||
|
dependencies:
|
||||||
|
- role: distribution_check
|
||||||
|
vars:
|
||||||
|
distribution_check__supported_distributions:
|
||||||
|
- name: Debian
|
||||||
|
versions:
|
||||||
|
- "11"
|
||||||
|
- role: nodejs
|
||||||
|
vars:
|
||||||
|
nodejs__major_version: 16
|
62
playbooks/roles/zigbee2mqtt/tasks/main.yml
Normal file
62
playbooks/roles/zigbee2mqtt/tasks/main.yml
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
- name: Ensure acl is installed
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: acl
|
||||||
|
- name: Ensure git is installed
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: git
|
||||||
|
- name: Ensure zigbee2mqtt user exists
|
||||||
|
ansible.builtin.user:
|
||||||
|
name: zigbee2mqtt
|
||||||
|
groups:
|
||||||
|
- zigbee2mqtt
|
||||||
|
- dialout
|
||||||
|
group: zigbee2mqtt
|
||||||
|
- name: Ensure installation dirrectory exists
|
||||||
|
ansible.builtin.file:
|
||||||
|
dest: /opt/zigbee2mqtt
|
||||||
|
state: directory
|
||||||
|
mode: 0755
|
||||||
|
owner: zigbee2mqtt
|
||||||
|
group: zigbee2mqtt
|
||||||
|
- name: Ensure zigbee2mqtt repository is cloned
|
||||||
|
become_user: zigbee2mqtt
|
||||||
|
ansible.builtin.git:
|
||||||
|
repo: https://github.com/Koenkk/zigbee2mqtt.git
|
||||||
|
depth: 1
|
||||||
|
dest: /opt/zigbee2mqtt
|
||||||
|
version: "{{ zigbee2mqtt__version }}"
|
||||||
|
notify: Restart zigbee2mqtt
|
||||||
|
- name: Ensure npm dependencies are installed
|
||||||
|
become_user: zigbee2mqtt
|
||||||
|
community.general.npm:
|
||||||
|
path: /opt/zigbee2mqtt
|
||||||
|
ci: true
|
||||||
|
changed_when: false # installs packages according to package-lock.json, but always reports a change
|
||||||
|
- name: Ensure custom zigbee2mqtt data directory exists
|
||||||
|
ansible.builtin.file:
|
||||||
|
dest: /home/zigbee2mqtt/zigbee2mqtt_data
|
||||||
|
state: directory
|
||||||
|
mode: 0755
|
||||||
|
owner: zigbee2mqtt
|
||||||
|
group: zigbee2mqtt
|
||||||
|
- name: Ensure configuration file is deployed
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: "{{ zigbee2mqtt__config }}"
|
||||||
|
dest: /home/zigbee2mqtt/zigbee2mqtt_data/configuration.yaml
|
||||||
|
mode: 0640
|
||||||
|
owner: zigbee2mqtt
|
||||||
|
group: zigbee2mqtt
|
||||||
|
notify: Restart zigbee2mqtt
|
||||||
|
- name: Ensure zigbee2mqtt service file is deployed
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: zigbee2mqtt.service
|
||||||
|
dest: /etc/systemd/system/zigbee2mqtt.service
|
||||||
|
mode: 0644
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
notify: Reload systemd-daemon and restart zigbee2mqtt
|
||||||
|
- name: Ensure zigbee2mqtt is enabled and started
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
service: zigbee2mqtt
|
||||||
|
enabled: true
|
||||||
|
state: started
|
|
@ -0,0 +1,21 @@
|
||||||
|
homeassistant: true
|
||||||
|
|
||||||
|
permit_join: false
|
||||||
|
|
||||||
|
mqtt:
|
||||||
|
base_topic: zigbee2mqtt
|
||||||
|
server: 'mqtt://mqtt.z9'
|
||||||
|
|
||||||
|
serial:
|
||||||
|
port: /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0014DBC72F-if00
|
||||||
|
|
||||||
|
advanced:
|
||||||
|
network_key: [{{ zigbee2mqtt__network_key }}]
|
||||||
|
pan_id: 32673
|
||||||
|
ext_pan_id: [58, 76, 37, 2, 22, 198, 237, 124]
|
||||||
|
channel: 11
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
port: 8080
|
||||||
|
host: localhost
|
||||||
|
url: https://zigbee2mqtt.z9
|
Loading…
Reference in a new issue