驽马不舍

快速入门工作流平台 N8N

简介

n8n 是一款开源的工作流平台,大量的封装节点可用,已集成的功能超过 400 项。可视化的方式搭建工作流,使用连接线将不同功能的节点串联起来。

场景

我目前运用的场景是一些重复运维工作,例如账号开通、授权、资源购买等。

部署

官方提供 SaaS 版本也可直接注册使用。

  1. 安装 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
    
  2. 安装 docker-compose,高版本的 docker 内置 docker-compose 工具, docker compose 运行服务,无须额外安装。

  3. 安装 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
    
  4. 初始化配置,推荐使用真实邮箱注册管理员账号,以便申请社区版本的证书。

基础概念

节点 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 授权工作流”。

技巧

调试

n8n 可运行指定节点,并自动运行依赖节点。你可在已执行的工作流(Executions)详情界面点击“Copy to editor”按钮过程数据拷贝至编辑界面。

引用结果变量

在工作流的编辑页面,你可将某个节点的输出结果拖拽至目标节点的输入框内,输入框内会自动编写引用变量的表达式。

异常工作流

配置一个运行异常处理工作流,用于推送其他工作运行失败的结果,工作流的触发节点为 “Error Trigger”。在每个工作流的设置页面关联“异常处理工作流”。

参考