From 1a8666a4521a2ae6a5df117cf9e4d747c71d5615 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 11 Nov 2018 03:11:10 +0100 Subject: [PATCH] initial commit --- defaults/main.yml | 5 +++ files/main.yml | 9 ++++ tasks/install.yml | 39 ++++++++++++++++ tasks/main.yml | 3 ++ tasks/post_tasks.yml | 9 ++++ tasks/prepare.yml | 45 +++++++++++++++++++ .../etc/systemd/system/zigbee2mqtt.service.j2 | 15 +++++++ 7 files changed, 125 insertions(+) create mode 100644 defaults/main.yml create mode 100644 files/main.yml create mode 100644 tasks/install.yml create mode 100644 tasks/main.yml create mode 100644 tasks/post_tasks.yml create mode 100644 tasks/prepare.yml create mode 100644 templates/etc/systemd/system/zigbee2mqtt.service.j2 diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..a986c3a --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,5 @@ +--- +zigbee2mqtt_version: 0.1.8 +zigbee2mqtt_group: zigbee2mqtt +zigbee2mqtt_user: zigbee2mqtt +zigbee2mqtt_base_dir: /opt/zigbee2mqtt diff --git a/files/main.yml b/files/main.yml new file mode 100644 index 0000000..4b6e2df --- /dev/null +++ b/files/main.yml @@ -0,0 +1,9 @@ +--- +- name: Restart zigbee2mqtt service + systemd: + state: restarted + daemon_reload: yes + name: zigbee2mqtt + listen: __zigbee2mqtt_restart + become: True + become_user: root diff --git a/tasks/install.yml b/tasks/install.yml new file mode 100644 index 0000000..514b271 --- /dev/null +++ b/tasks/install.yml @@ -0,0 +1,39 @@ +--- +- name: Create directories + file: + path: "{{ item }}" + state: directory + owner: "{{ zigbee2mqtt_user }}" + group: "{{ zigbee2mqtt_group }}" + recurse: True + with_items: + - "{{ zigbee2mqtt_base_dir }}" + become: True + become_user: root + +- block: + - name: Setup zigbee2mqtt + git: + repo: "https://github.com/Koenkk/zigbee2mqtt" + dest: "{{ zigbee2mqtt_base_dir }}" + version: "{{ zigbee2mqtt_version }}" + register: __zigbee2mqtt_install + + - name: Install nodejs + npm: + path: "{{ zigbee2mqtt_base_dir }}" + when: __zigbee2mqtt_install.changed + notify: __zigbee2mqtt_restart + when: zigbee2mqtt_version is version(zigbee2mqtt_current_version, ">") + 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: __openhab_restart + become: True + become_user: root diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..cae897f --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,3 @@ +--- +- import_tasks: prepare.yml +- import_tasks: install.yml diff --git a/tasks/post_tasks.yml b/tasks/post_tasks.yml new file mode 100644 index 0000000..da89627 --- /dev/null +++ b/tasks/post_tasks.yml @@ -0,0 +1,9 @@ +--- +- name: Ensure zigbee2mqtt service is up and running + systemd: + state: started + daemon_reload: yes + enabled: yes + name: zigbee2mqtt + become: True + become_user: root diff --git a/tasks/prepare.yml b/tasks/prepare.yml new file mode 100644 index 0000000..25028be --- /dev/null +++ b/tasks/prepare.yml @@ -0,0 +1,45 @@ +--- +- block: + - name: Create local facts dir + file: + path: /etc/ansible/facts.d + state: directory + + - name: Setup local fact script + get_url: + url: https://git.rknet.org/ansible/custom_facts/raw/branch/master/zigbee2mqtt.py + dest: /etc/ansible/facts.d/nodejs.fact + mode: 0755 + register: __nodejs_add_fact + + - name: Update facts + setup: + filter: "*" + when: __nodejs_add_fact.changed + + - name: Set current zigbee2mqtt version + set_fact: + zigbee2mqtt_current_version: "{{ ansible_local.zigbee2mqtt.version }}" + failed_when: ansible_local.zigbee2mqtt.error + + - debug: + msg: Current version is '{{ zigbee2mqtt_current_version }}' + + - name: Install requirements + package: + name: "{{ item }}" + state: present + with_items: + - git + + - name: Create group '{{ zigbee2mqtt_group }}' + group: + name: "{{ zigbee2mqtt_group }}" + state: present + + - name: Create user '{{ zigbee2mqtt_user }}' + user: + name: "{{ zigbee2mqtt_user }}" + group: "{{ zigbee2mqtt_group }}" + become: True + become_user: root diff --git a/templates/etc/systemd/system/zigbee2mqtt.service.j2 b/templates/etc/systemd/system/zigbee2mqtt.service.j2 new file mode 100644 index 0000000..9eea0e0 --- /dev/null +++ b/templates/etc/systemd/system/zigbee2mqtt.service.j2 @@ -0,0 +1,15 @@ +# {{ ansible_managed }} + +[Unit] +Description=zigbee2mqtt +After=network.target + +[Service] +ExecStart=npm start +WorkingDirectory="{{ zigbee2mqtt_base_dir }}" +StandardError=inherit +Restart=always +User={{ zigbee2mqtt_user }} + +[Install] +WantedBy=multi-user.target