快速入门工作流平台 N8N
简介
n8n 是一款开源的工作流平台,大量的封装节点可用,已集成的功能超过 400 项。可视化的方式搭建工作流,使用连接线将不同功能的节点串联起来。
场景
我目前运用的场景是一些重复运维工作,例如账号开通、授权、资源购买等。
部署
官方提供 SaaS 版本也可直接注册使用。
-
安装 docker
# $ curl -fsSL test.docker.com -o get-docker.sh $ curl -fsSL get.docker.com -o get-docker.sh $ sudo sh get-docker.sh --mirror Aliyun # $ sudo sh get-docker.sh --mirror AzureChinaCloud -
安装 docker-compose,高版本的 docker 内置
docker-compose工具,docker compose运行服务,无须额外安装。 -
安装 n8n,部署生产环境时建议使用 Postgres 数据库。
- GENERIC_TIMEZONE,TZ 时区
- N8N_EDITOR_BASE_URL 访问地址
- WEBHOOK_URL webhook 触发地址
services: n8n: image: docker.io/n8nio/n8n:1.116.0 restart: always ports: - "5678:5678" environment: - GENERIC_TIMEZONE=Asia/Shanghai - TZ=Asia/Shanghai - N8N_EDITOR_BASE_URL=http://n8n.example.com - WEBHOOK_URL=http://n8n.example.com/ volumes: - ./n8n_data:/home/node/.n8n - ./local-files:/files -
初始化配置,推荐使用真实邮箱注册管理员账号,以便申请社区版本的证书。
基础概念
节点 node
node 封装了大量的功能,大致可分为以下几类:
- 第三方:如 Telegram、AWS、LDAP等
- 数据处理:数据合并、过滤、分割等
- 流程控制:分支、循环等
- 触发器:触发工作流的方式,如定时器、webhook
常用节点:
- webhook:通过 http 请求触发流水线
- set:定义一组变量集合
- HTTP Request:发起 http 请求
- 流程控制节点:If,switch,loop
- 数据处理:Merge 数据为多个 item,Split Out 拆分输入数据为多个 Item
- Stop and Error: 抛出错误,标识节点为运行失败的状态
- SSH:登录至目标主机执行命令
工作流 workflow
workflow 是将一系列节点连接一起的集合。工作流分为普通工作流和子工作流,子工作流必须由普通工作流触发调用。
执行记录 Execution
执行记录是工作流运行过程与结果的记录,通过已执行的工作流可获取每一个节点输入输出的记录。执行记录也分为测试执行记录和生产执行记录。
凭证 Credentials
账号密码、密钥等敏感信息都可存储至凭证内,然后以变量的方式引用。
落地
我没有把 n8n 作为一个百分百的工作流的平台,而是把它视为一个流程编排引擎。当前使用的流程是“飞书审批” -> “n8n工作流"或“飞书审批“ ->“n8n工作流” ->“CLI 工具”,例如购买阿里云资源的流程为:“飞书审批” -> “购买资源工作流” -> “terraform”; xxl-job 授权流程为:“飞书审批” -> “xxl-job 授权工作流”。
- xxl-job 执行器管理与授权
- 与 Terraform 联动,实现阿里云账号开通、资源购买
- 阿里云云效权限管理
- AWS权限管理
- LDAP用户管理
- Jumpserver MFA 管理
- Autentik MFA 管理
技巧
调试
n8n 可运行指定节点,并自动运行依赖节点。你可在已执行的工作流(Executions)详情界面点击“Copy to editor”按钮过程数据拷贝至编辑界面。
引用结果变量
在工作流的编辑页面,你可将某个节点的输出结果拖拽至目标节点的输入框内,输入框内会自动编写引用变量的表达式。
异常工作流
配置一个运行异常处理工作流,用于推送其他工作运行失败的结果,工作流的触发节点为 “Error Trigger”。在每个工作流的设置页面关联“异常处理工作流”。