ansible-roles/roles/n8n/tasks/install.yml

83 lines
1.9 KiB
YAML

---
- name: Install nodejs and dependencies
package:
name:
- nodejs
- gcc
- gcc-c++
- make
- sqlite-devel
- python3
- postgresql16
tags: n8n
- name: Wipe node_module on upgrade
file: path={{ n8n_root_dir }}/app/node_modules state=absent
when: n8n_install_mode == 'upgrade'
tags: n8n
- name: Install n8n
npm:
name: n8n
path: "{{ n8n_root_dir }}/app"
version: "{{ n8n_version }}"
environment:
- npm_config_python: /bin/python3 # This is needed for sqlite3 build
become_user: "{{ n8n_user }}"
notify: restart n8n
tags: n8n
- name: Install extra NodeJS modules
npm:
name: "{{ item }}"
path: "{{ n8n_root_dir }}/app"
become_user: "{{ n8n_user }}"
notify: restart n8n
when: n8n_extra_node_modules | length > 0
loop: "{{ n8n_extra_node_modules }}"
tags: n8n
- name: Create the PostgreSQL role
postgresql_user:
db: postgres
name: "{{ n8n_db_user }}"
password: "{{ n8n_db_pass }}"
login_host: "{{ n8n_db_server }}"
login_port: "{{ n8n_db_port }}"
login_user: sqladmin
login_password: "{{ pg_admin_pass }}"
tags: n8n
- name: Create the PostgreSQL database
postgresql_db:
name: "{{ n8n_db_name }}"
encoding: UTF-8
lc_collate: C
lc_ctype: C
template: template0
owner: "{{ n8n_db_user }}"
login_host: "{{ n8n_db_server }}"
login_port: "{{ n8n_db_port }}"
login_user: sqladmin
login_password: "{{ pg_admin_pass }}"
tags: n8n
- name: Deploy systemd unit
template: src=n8n.service.j2 dest=/etc/systemd/system/n8n.service
register: n8n_unit
notify: restart n8n
tags: n8n
- name: Reload systemd
systemd: daemon_reload=True
when: n8n_unit.changed
tags: n8n
- name: Install pre/post backup hooks
template: src={{ item }}-backup.sh.j2 dest=/etc/backup/{{ item }}.d/n8n mode=700
loop:
- pre
- post
tags: n8n