- name: Ensure acl is installed become: true ansible.builtin.apt: name: acl - name: Ensure git is installed become: true ansible.builtin.apt: name: git - name: Ensure zigbee2mqtt user exists become: true ansible.builtin.user: name: zigbee2mqtt groups: - zigbee2mqtt - dialout group: zigbee2mqtt - name: Ensure installation directory exists become: true ansible.builtin.file: dest: /opt/zigbee2mqtt state: directory mode: "755" owner: zigbee2mqtt group: zigbee2mqtt - name: Ensure zigbee2mqtt repository is cloned become: true 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: true 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 become: true ansible.builtin.file: dest: /home/zigbee2mqtt/zigbee2mqtt_data state: directory mode: "755" owner: zigbee2mqtt group: zigbee2mqtt - name: Check configuration file status ansible.builtin.stat: path: /home/zigbee2mqtt/zigbee2mqtt_data/configuration.yaml register: zigbee2mqtt__conf_stat - name: Ensure configuration file is deployed when it doesn't exist become: true when: not zigbee2mqtt__conf_stat.stat.exists ansible.builtin.copy: content: "{{ zigbee2mqtt__initial_config }}" dest: /home/zigbee2mqtt/zigbee2mqtt_data/configuration.yaml mode: "640" owner: zigbee2mqtt group: zigbee2mqtt notify: Restart zigbee2mqtt - name: Ensure zigbee2mqtt service file is deployed become: true ansible.builtin.copy: src: zigbee2mqtt.service dest: /etc/systemd/system/zigbee2mqtt.service mode: "644" owner: root group: root notify: Reload systemd-daemon and restart zigbee2mqtt - name: Ensure zigbee2mqtt is enabled and started become: true ansible.builtin.systemd: service: zigbee2mqtt enabled: true state: started