Files
lsa.n8n/tasks/config.yml
2026-03-14 18:25:44 +01:00

107 lines
4.3 KiB
YAML

---
- name: Validate n8n site deploy_type
assert:
that:
- n8n_site.name is defined
- n8n_site.deploy_type is defined
- n8n_site.deploy_type in ["docker", "repo", "package"]
fail_msg: "n8n_sites entry must define deploy_type as 'docker', 'repo', or 'package'."
- name: Set n8n site defaults
set_fact:
n8n_name: "{{ n8n_site.name }}"
n8n_home: "{{ n8n_site.path | default('/srv/' + n8n_site.name) }}"
n8n_user: "{{ n8n_site.user | default(n8n_default_user) }}"
n8n_group: "{{ n8n_site.group | default(n8n_default_group) }}"
n8n_systemd: "{{ n8n_site.systemd | default(true) }}"
n8n_state: "{{ n8n_site.state | default('present') }}"
n8n_app_options: "{{ n8n_site.app_options | default({}) }}"
n8n_docker_options: "{{ n8n_site.docker_options | default({}) }}"
n8n_unit_name: "n8n-{{ n8n_site.name | regex_replace('[^a-zA-Z0-9]+', '-') }}"
n8n_fact_path: "/etc/ansible/facts.d/n8n-{{ n8n_site.name | regex_replace('[^a-zA-Z0-9]+', '-') }}.fact"
no_log: true
- name: Set n8n runtime options
set_fact:
n8n_host: "{{ n8n_app_options.host | default(n8n_default_host) }}"
n8n_protocol: "{{ n8n_app_options.protocol | default(n8n_default_protocol) }}"
n8n_timezone: "{{ n8n_app_options.timezone | default(n8n_default_timezone) }}"
n8n_listen_port: >-
{{
(n8n_docker_options.listen_port | default(n8n_default_port))
if n8n_site.deploy_type == "docker"
else (n8n_app_options.port | default(n8n_default_port))
}}
n8n_webhook_url: >-
{{
n8n_app_options.webhook_url
| default(
(n8n_app_options.protocol | default(n8n_default_protocol))
~ '://'
~ (n8n_app_options.host | default(n8n_default_host))
~ ':'
~ (
(n8n_docker_options.listen_port | default(n8n_default_port))
if n8n_site.deploy_type == "docker"
else (n8n_app_options.port | default(n8n_default_port))
)
~ '/'
)
}}
no_log: true
- name: Set n8n DB options
set_fact:
n8n_db_host: "{{ (n8n_site.db | default({})).host | default(n8n_default_db.host) }}"
n8n_db_port: "{{ (n8n_site.db | default({})).port | default(n8n_default_db.port) }}"
n8n_db_name: "{{ (n8n_site.db | default({})).name | default(n8n_default_db.name) }}"
n8n_db_user: "{{ (n8n_site.db | default({})).user | default(n8n_default_db.user) }}"
n8n_db_password: "{{ (n8n_site.db | default({})).password | default(n8n_default_db.password) }}"
n8n_db_type: "{{ (n8n_site.db | default({})).type | default(n8n_default_db.type) }}"
no_log: true
- name: Set n8n DB kind
set_fact:
n8n_db_kind: "{{ 'mysql' if n8n_db_type in ['mysql', 'mariadb'] else 'postgres' }}"
no_log: true
- name: Set n8n deploy options
set_fact:
n8n_docker_image: "{{ n8n_docker_options.image | default(n8n_default_image) }}"
n8n_docker_uid: "{{ n8n_docker_options.uid | default(n8n_default_docker_uid) }}"
n8n_docker_gid: "{{ n8n_docker_options.gid | default(n8n_default_docker_gid) }}"
n8n_repo_path: "{{ n8n_app_options.repo_path | default(n8n_default_repo) }}"
n8n_repo_version: "{{ n8n_app_options.repo_version | default(n8n_default_repo_version) }}"
n8n_build_command: "{{ n8n_app_options.build_command | default(n8n_default_build_command) }}"
n8n_start_command: "{{ n8n_app_options.start_command | default(n8n_default_start_command) }}"
n8n_package_name: "{{ n8n_app_options.package_name | default(n8n_default_package_name) }}"
n8n_package_version: "{{ n8n_app_options.package_version | default(n8n_default_package_version) }}"
n8n_package_bin: "{{ n8n_app_options.package_bin | default(n8n_default_package_bin) }}"
no_log: true
- name: Cleanup n8n site
include_tasks: cleanup.yml
when: n8n_state == "absent"
- name: Install n8n with Docker
include_tasks: install-docker.yml
when:
- n8n_site.deploy_type == "docker"
- n8n_state != "absent"
- name: Install n8n from repo
include_tasks: install-repo.yml
when:
- n8n_site.deploy_type == "repo"
- n8n_state != "absent"
- name: Install n8n from package
include_tasks: install-package.yml
when:
- n8n_site.deploy_type == "package"
- n8n_state != "absent"
- name: Write n8n facts
include_tasks: facts.yml
when: n8n_state != "absent"