--- - name: Create directories file: path: "{{ item }}" state: directory owner: "{{ zigbee2mqtt_user }}" group: "{{ zigbee2mqtt_group }}" mode: 0750 with_items: - "{{ zigbee2mqtt_base_dir }}" - "{{ zigbee2mqtt_base_dir }}/data" - "{{ zigbee2mqtt_log_dir }}" become: True become_user: root - block: # - name: Check data dir # stat: # path: "{{ zigbee2mqtt_base_dir }}/data" # register: __zigbee_datadir # - name: Backup data directory # synchronize: # src: "{{ zigbee2mqtt_base_dir }}/data/" # dest: "/tmp/zigbee_data" # recursive: yes # delegate_to: "{{ inventory_hostname }}" # when: __zigbee_datadir.stat.exists # - name: Setup zigbee2mqtt # git: # repo: "https://github.com/Koenkk/zigbee2mqtt" # dest: "{{ zigbee2mqtt_base_dir }}/bin" # version: "{{ zigbee2mqtt_version }}" # force: yes # register: __zigbee2mqtt_install # - name: Restore data directory # synchronize: # src: "/tmp/zigbee_data/" # dest: "{{ zigbee2mqtt_base_dir }}/data" # recursive: yes # delegate_to: "{{ inventory_hostname }}" # when: __zigbee_datadir.stat.exists - name: Download release 'v{{ zigbee2mqtt_version }}' unarchive: src: "https://github.com/Koenkk/zigbee2mqtt/archive/{{ zigbee2mqtt_version }}.tar.gz" dest: "{{ zigbee2mqtt_base_dir }}" remote_src: yes exclude: "{{ __zigbee2mqtt_release_exclude }}" extra_opts: - --strip-components=1 register: __zigbee2mqtt_install - name: Delete existing node_modules folder file: path: "{{ zigbee2mqtt_base_dir }}/node_modules" state: absent - name: Install nodejs dependencies npm: path: "{{ zigbee2mqtt_base_dir }}" environment: PATH: "{{ __zigbee2mqtt_npm_executable | dirname }}:{{ ansible_env.PATH }}" notify: __zigbee2mqtt_restart when: zigbee2mqtt_version is version(zigbee2mqtt_current_version, ">") become: True become_user: "{{ zigbee2mqtt_user }}" - block: # - name: Cleanup base directory # file: # path: "{{ zigbee2mqtt_base_dir }}/{{ item }}" # state: absent # loop: # - docker # - docs # - images # - LICENSE # - README.md # - scripts # - test # - update.sh - name: Deploy configuration file template: src: "zigbee2mqtt/data/configuration.yaml.j2" dest: "{{ zigbee2mqtt_base_dir }}/data/configuration.yaml" mode: 0600 notify: __zigbee2mqtt_restart become: True become_user: "{{ zigbee2mqtt_user }}" - block: - name: Create systemd unit files template: src: "etc/systemd/system/zigbee2mqtt.service.j2" dest: "/etc/systemd/system/zigbee2mqtt.service" mode: 0644 notify: __zigbee2mqtt_restart - name: Set current version to custom fact template: src: etc/ansible/facts.d/zigbee2mqtt.fact.j2 dest: /etc/ansible/facts.d/zigbee2mqtt.fact mode: 0644 when: zigbee2mqtt_version is version(zigbee2mqtt_current_version, ">") or zigbee2mqtt_current_version is version('0.0.0', "=") become: True become_user: root