I'm trying to deploy node-red automatically via ansible,
I got everything up to the point I want with installing node-red via the script provided at https://nodered.org/docs/getting-started/raspberrypi
But when I try to run the command:
sudo systemctl enable nodered.service
I get an error:
Failed to enable unit: Unit file nodered.service does not exist.
This errors on ansible side, and I have a deployed server with node-red installed, but not running.
My goal is to have node-red run after deploy and stay running (hopefully as a service as suggested by @knolleary )
Update: I'm trying to auto run this as the ubuntu
user
Would anyone suggest I reimplement PM2 or stick with the services method?
https://nodered.org/docs/faq/starting-node-red-on-boot
Colin
17 July 2020 17:52
3
No, stick with systemd. You have to download the service file and the other scripts, look at the Pi install script to see where they are.
Ok, I see I have node-red being installed via npm:
npm install -g --unsafe-perm node-red node-red-admin
One issue I had with installing node-red via ansible using the script was the prompting for Y / N, but I now see there are command line options to automate these. Will try that and see if the script can get everything I need, if so, it should be OK with the systemctl
service creation.
Colin
17 July 2020 19:41
5
I didn't mean to use the installation script, I meant to look there to see where the files you need are. This should do it
- name: Install node-red
become: yes
npm:
name: node-red
global: yes
unsafe_perm: yes
- name: Download scripts
become: yes
get_url:
owner: root
mode: '755'
url: "https://raw.githubusercontent.com/node-red/linux-installers/master/resources/{{ item }}"
dest: "/usr/bin/{{ item|basename }}"
with_items:
- node-red-start
- node-red-stop
- node-red-restart
- node-red-reload
- node-red-log
- name: check if nodered.service exists
stat:
path: /lib/systemd/system/nodered.service
register: nodered_service
- name: Download nodered.service
become: yes
get_url:
owner: root
mode: '644'
force: no
url: "https://raw.githubusercontent.com/node-red/linux-installers/master/resources/nodered.service"
dest: "/lib/systemd/system/nodered.service"
when: nodered_service.stat.exists == False
- name: Configure user in nodered.service
become: yes
block:
- name: user
lineinfile:
path: /lib/systemd/system/nodered.service
regexp: 'User='
line: "User={{ansible_env.USER}}"
- name: group
lineinfile:
path: /lib/systemd/system/nodered.service
regexp: 'Group='
line: "Group={{ansible_env.USER}}"
- name: home
lineinfile:
path: /lib/systemd/system/nodered.service
regexp: 'WorkingDirectory='
line: "WorkingDirectory={{ansible_env.HOME}}"
- name: Reload systemd
become: yes
systemd:
daemon_reload: yes
1 Like
There is also a slightly more feature-rich version of a service file in my alt-installer.
Which may also give you some ideas about not having to do a global install from Ansible.
1 Like
system
Closed
31 July 2020 20:26
7
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.