roles/Zigbee2MQTT: Deploy using Podman
Zigbee2MQTT is very similar to ZwaveJS2Mqtt: it is a daemon process that communicates with the Zigbee radio and integrates with Home Assistant using MQTT. Naturally, I decided to deploy it in the same way as ZwaveJS2Mqtt, using a systemd unit to run it in a container with Podman.jenkins-master
parent
57b3039f2c
commit
2f3d0f74a1
|
@ -7,6 +7,8 @@
|
||||||
tags: mosquitto
|
tags: mosquitto
|
||||||
- role: zwavejs2mqtt
|
- role: zwavejs2mqtt
|
||||||
tags: zwavejs2mqtt
|
tags: zwavejs2mqtt
|
||||||
|
- role: zigbee2mqtt
|
||||||
|
tags: zigbee2mqtt
|
||||||
tasks:
|
tasks:
|
||||||
- name: ensure homeassistant is running
|
- name: ensure homeassistant is running
|
||||||
service:
|
service:
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
zigbee2mqtt_container_device: /dev/ttyACM0
|
||||||
|
zigbee2mqtt_serial_adapter: deconz
|
||||||
|
zigbee2mqtt_permit_join: true
|
||||||
|
zigbee2mqtt_mqtt:
|
||||||
|
base_topic: zigbee2mqtt
|
||||||
|
server: mqtt://localhost
|
|
@ -0,0 +1,6 @@
|
||||||
|
- name: reload systemd
|
||||||
|
command: systemctl daemon-reload
|
||||||
|
- name: restart zigbee2mqtt
|
||||||
|
service:
|
||||||
|
name: zigbee2mqtt
|
||||||
|
state: restarted
|
|
@ -0,0 +1,68 @@
|
||||||
|
- name: ensure podman is installed
|
||||||
|
package:
|
||||||
|
name: '{{ zigbee2mqtt_podman_packages }}'
|
||||||
|
state: present
|
||||||
|
tags:
|
||||||
|
- install
|
||||||
|
|
||||||
|
- name: ensure zigbee2mqtt user exists
|
||||||
|
user:
|
||||||
|
name: zigbee2mqtt
|
||||||
|
system: true
|
||||||
|
home: /var/lib/zigbee2mqtt
|
||||||
|
groups:
|
||||||
|
- dialout
|
||||||
|
createhome: false
|
||||||
|
register: zigbee2mqtt_user
|
||||||
|
tags:
|
||||||
|
- user
|
||||||
|
|
||||||
|
- name: ensure zigbee2mqtt data directory exists
|
||||||
|
file:
|
||||||
|
path: /var/lib/zigbee2mqtt
|
||||||
|
owner: zigbee2mqtt
|
||||||
|
group: zigbee2mqtt
|
||||||
|
mode: '0755'
|
||||||
|
state: directory
|
||||||
|
tags:
|
||||||
|
- datadir
|
||||||
|
|
||||||
|
- name: ensure zigbee2mqtt container image is available
|
||||||
|
podman_image:
|
||||||
|
name: docker.io/koenkk/zigbee2mqtt
|
||||||
|
tag: latest
|
||||||
|
state: present
|
||||||
|
notify:
|
||||||
|
- restart zigbee2mqtt
|
||||||
|
tags:
|
||||||
|
- container-image
|
||||||
|
- container
|
||||||
|
|
||||||
|
- name: ensure zigbee2mqtt systemd unit is installed
|
||||||
|
template:
|
||||||
|
src: zigbee2mqtt.service.j2
|
||||||
|
dest: /etc/systemd/system/zigbee2mqtt.service
|
||||||
|
mode: '0644'
|
||||||
|
notify:
|
||||||
|
- reload systemd
|
||||||
|
- restart zigbee2mqtt
|
||||||
|
tags:
|
||||||
|
- service
|
||||||
|
- systemd
|
||||||
|
- name: ensure zigbee2mqtt starts at boot
|
||||||
|
service:
|
||||||
|
name: zigbee2mqtt
|
||||||
|
enabled: true
|
||||||
|
tags:
|
||||||
|
- service
|
||||||
|
|
||||||
|
- name: ensure zigbee2mqtt is configured
|
||||||
|
template:
|
||||||
|
src: configuration.yaml.j2
|
||||||
|
dest: /var/lib/zigbee2mqtt/configuration.yaml
|
||||||
|
owner: zigbee2mqtt
|
||||||
|
group: zigbee2mqtt
|
||||||
|
mode: '0600'
|
||||||
|
force: false
|
||||||
|
notify:
|
||||||
|
- restart zigbee2mqtt
|
|
@ -0,0 +1 @@
|
||||||
|
{{ zigbee2mqtt_config|to_nice_yaml(indent=2) }}
|
|
@ -0,0 +1,26 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Zigbee2MQTT
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
NotifyAccess=all
|
||||||
|
ExecStartPre=/usr/bin/setfacl -m zigbee2mqtt:rw {{ zigbee2mqtt_device }}
|
||||||
|
ExecStartPre=-/usr/bin/podman container rm --ignore -f zigbee2mqtt
|
||||||
|
ExecStart=/usr/bin/podman run \
|
||||||
|
--pull never \
|
||||||
|
--sdnotify=conmon --cgroups=no-conmon \
|
||||||
|
--rm \
|
||||||
|
--network=host \
|
||||||
|
--name zigbee2mqtt \
|
||||||
|
-v /var/lib/zigbee2mqtt:/app/data:Z \
|
||||||
|
--uidmap 0:{{ zigbee2mqtt_user.uid }}:1 \
|
||||||
|
--gidmap 0:{{ zigbee2mqtt_user.group }}:1 \
|
||||||
|
--uidmap 1:5100001:1024 \
|
||||||
|
--gidmap 1:5100001:1024 \
|
||||||
|
--device {{ zigbee2mqtt_device }}:{{ zigbee2mqtt_container_device }}:rw \
|
||||||
|
docker.io/koenkk/zigbee2mqtt:latest
|
||||||
|
ProtectSystem=full
|
||||||
|
UMask=0077
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,10 @@
|
||||||
|
zigbee2mqtt_podman_packages:
|
||||||
|
- podman
|
||||||
|
zigbee2mqtt_config:
|
||||||
|
homeassistant: true
|
||||||
|
permit_join: '{{ zigbee2mqtt_permit_join|bool }}'
|
||||||
|
mqtt: >-
|
||||||
|
{{ zigbee2mqtt_mqtt }}
|
||||||
|
serial:
|
||||||
|
adapter: '{{ zigbee2mqtt_serial_adapter }}'
|
||||||
|
port: '{{ zigbee2mqtt_container_device }}'
|
Loading…
Reference in New Issue