اتوماسیون با Ansible: نصب خود N8N با NPM

ای n8n این یک ابزار قدرتمند اتوماسیون گردش کار است که می تواند خود بیمارستان باشد و امکان کنترل کامل بر داده ها و ادغام های شما را فراهم می کند. من اخیراً نیاز به پیکربندی N8N در یک محیط خود بینی با استفاده از NPM و من تصمیم گرفتم که کل مراحل را با غیر قابل انکاربشر در این مقاله ، من برخی از نکات مربوط به نحوه ایجاد این اتوماسیون را به اشتراک می گذارم ، و جزئیات فنی و تنظیمات مورد استفاده را توضیح می دهم.
پیش نیازهای
قبل از شروع ، ذکر این نکته حائز اهمیت است که سرور قبلاً آن را داشته است چیز کوچک و node.js نصب شده این دو نرم افزار پیش نیاز برای اجرای N8N و خدمت به برنامه در وب هستند. در صورت نیاز ، می توانید نصب این نرم افزار را با Ansible خودکار کنید ، اما این مورد در مورد من ضروری نبود.
متغیرهای محیطی
متغیرهای محیط مورد استفاده در پیکربندی از یک پرونده به دست آمد .env
واقع در ریشه پروژه. این پرونده حاوی اطلاعات زیست محیطی حساس و خاص است ، مانند:
- اعتبار پایگاه داده PostgreSQL.
- تنظیمات دامنه برای nginx.
- متغیرهای دیگر لازم برای عملکرد N8N.
Ansible از ماژول استفاده می کند include_vars
برای بارگیری این متغیرها در ابتدای اجرای. در اینجا نمونه ای از نحوه انجام این کار آورده شده است:
- name: Carrega o arquivo de .env
ansible.builtin.include_vars:
file: .env
name: env_vars
tags: setup
پیکربندی پایگاه داده PostgreSQL
N8N از PostgreSQL به عنوان یک پایگاه داده استفاده می کند. به طوری که Ansible بتواند با PostgreSQL در تعامل باشد و دیتابیس ، کاربر و مجوزهای لازم را ایجاد کند ، لازم بود که بسته بندی شود psycopg2بشر این بسته یک کتابخانه پایتون است که امکان استفاده از ماژول را با PostgreSQL فراهم می کند postgresql.postgresql_db
بشر
نصب psycopg2
در یک محیط پایتون مجازی ساخته شده است ، و اطمینان حاصل می شود که وابستگی ها منزوی شده اند. در اینجا گزیده ای از پیکربندی وجود دارد:
- name: Cria um ambiente virtual Python
ansible.builtin.command:
cmd: python3 -m venv /opt/venv
tags: setup
- name: Instala psycopg2 no ambiente virtual
ansible.builtin.pip:
virtualenv: /opt/venv
name: psycopg2
tags: setup
با psycopg2
نصب شده ، Ansible قادر به ایجاد بانک اطلاعاتی و کاربر لازم برای N8N بود:
- name: Cria banco de dados do N8N
community.postgresql.postgresql_db:
name: "{{ env_vars.DB_POSTGRESDB_DATABASE }}"
state: present
become: true
become_user: postgres
tags: setup
- name: Cria usuário N8N no banco de dados
community.postgresql.postgresql_user:
name: "{{ env_vars.DB_POSTGRESDB_USER }}"
password: "{{ env_vars.DB_POSTGRESDB_PASSWORD }}"
db: "{{ env_vars.DB_POSTGRESDB_DATABASE }}"
role_attr_flags: "LOGIN"
state: present
become: true
become_user: postgres
tags: setup
پیکربندی nginx
سرور وب مورد استفاده برای ارائه برنامه کاربردی بود چیز کوچکبشر یک الگوی JINJA2 برای تولید خودکار پرونده پیکربندی NGINX بر اساس متغیرهای محیطی ایجاد شده است. در اینجا نمونه ای از الگوی مورد استفاده (n8n.conf.j2
):
server {
listen [::]:443 ssl;
http2 on;
server_name {{ env_vars.N8N_DOMAIN_URL }};
location = /robots.txt {
add_header Content-Type text/plain;
return 200 "User-agent: *\nDisallow: /\n";
}
location / {
proxy_pass http://127.0.0.1:5678;
proxy_buffering off;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
# SSL settings
ssl_verify_client on;
include global/seu-certificado.conf;
# Log settings
error_log /var/log/nginx/n8n-error.log;
access_log /var/log/nginx/n8n-access.log;
}
این الگوی nginx را به عنوان یک پروکسی معکوس برای N8N تنظیم می کند ، که در درب اجرا می شود 5678
بشر همچنین شامل تنظیمات SSL و Log است. به یاد داشته باشید که می توانید فایل nginx خود را همانطور که می خواهید سفارشی کنید ، در بالا یک نمونه اساسی برای در دسترس بودن برنامه است.
پس از تولید پرونده پیکربندی ، NGINX برای اعمال تغییرات شارژ شده است:
- name: Recarrega o daemon do systemd
ansible.builtin.systemd:
daemon_reload: yes
tags: setup
پیکربندی سرویس N8N
N8N در سطح جهان با استفاده از NPM و به عنوان یک سرویس لینوکس با استفاده از سیستمبشر یک الگوی Jinja2 برای تولید پرونده سرویس ایجاد شده است (n8n.service.j2
):
[Unit]
Description=n8n Workflow Automation
After=network.target
[Service]
User=[seu usuário]
EnvironmentFile=/home/[seu usuário]/.n8n/.env
ExecStart=/usr/bin/env /usr/local/bin/n8n start
Restart=always
RestartSec=10s
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=n8n
[Install]
WantedBy=multi-user.target
این پرونده N8N را به عنوان خدمتی تعریف می کند که در صورت خرابی به طور خودکار در بوت شروع می شود و مجدداً راه اندازی می شود. پس از ایجاد پرونده خدمات ، Daemon Systemd شارژ شد و سرویس شروع شد:
- name: Cria serviço systemd para n8n
ansible.builtin.template:
src: n8n.service.j2
dest: /etc/systemd/system/n8n.service
notify: Restart n8n
become: true
tags: setup
پایان
با استفاده از این اتوماسیون ، من توانستم خود را به سرعت و مداوم تنظیم کنم. Ansible تضمین کرده است که تمام وابستگی ها نصب شده است ، پایگاه داده به درستی پیکربندی شده و N8N برای استفاده فقط با یک دستور آماده است.
اگر به فکر میزبانی N8N در خارج از Docker هستید ، همانطور که معمولاً استفاده می شود ، توصیه می کنم از Ansible برای مدیریت پیکربندی به دلیل سهولت و انعطاف پذیری در رابطه با اقدامات دستی استفاده کنید. همچنین ، اگر سرور شما NGINX یا NODE.JS نصب نشده است ، می توانید به راحتی این مراحل را به دفترچه بازی اضافه کنید تا بیشتر روند کار را انجام دهید.
امیدوارم این مقاله مفید باشد! اگر سؤال یا پیشنهادی دارید ، نظر دهید. 🚀