Skip to main content
版本要求:此功能需要 On-call 标准版及以上订阅。了解更多
通过 Scalr 的 Webhook 将 Terraform / OpenTofu Run 同步到 Flashduty On-call。每一次 Run 对应一条 Flashduty 变更:Run 等待人工确认时创建变更,Apply 成功或出错时更新同一条变更。

在 Flashduty On-call


  1. 进入 Flashduty 控制台,选择 集成中心 → 变更事件
  2. 选择 Scalr,填写集成名称
  3. 如需把变更分派到指定协作空间,在集成的 路由 中按标签(例如 environment、workspace)配置规则
  4. 点击 保存,复制生成的 推送地址

在 Scalr 中配置


Webhook 在 Account 范围创建,再分配给 Environment;分配后,该 Environment 下所有 Workspace 的 Run 都会触发它。
1

创建 Webhook

在 Account 范围进入 Integrations → Events Forwarding → Webhook,创建 Webhook(也可以用 Scalr API 或 Terraform Provider 的 scalr_webhook 资源):
  1. URL:粘贴 Flashduty 集成的完整推送地址
  2. Events:勾选 run:completed、run:errored 和 run:needs_attention
  3. Secret key:必填,可点击 Generate 生成,也可填写任意字符串。Scalr 用它对请求签名,Flashduty 通过推送地址中的 integration_key 鉴权,不校验签名
2

分配给 Environment

新建的 Webhook 默认开启 Allow all current and future environments to have access to this webhook,无需再分配。如需限定范围,在 Webhook 的 Environments access 页签关闭该开关,再选择需要接入的 Environment。

一条变更是什么


Scalr 只在三种时刻推送:Run 需要人工确认、Run 成功结束、Run 出错。取消 Run、或在确认步骤放弃(Discard)Run 不会推送任何内容,这样的 Run 变更会停留在 Planned(或根本不会创建)。因此变更没有 Ready、Processing 状态,最早出现的状态是 Planned(等待确认)或结束状态。自动 Apply 的 Run 只会在结束时产生一条记录。

状态映射


结束事件按 Run 状态映射:applied 为 Done,errored 为 Failed(结束事件若携带 canceled 或 discarded 状态则为 Canceled,但 Scalr 不会推送)。Done 和 Failed 是结束状态,Flashduty 会记录变更结束时间。 以下推送返回成功但不生成变更:Run 状态为 planned_and_finished 的结束事件(只做了 Plan 或没有资源变更,没有内容被应用),以及不属于 run: 系列的其他事件。

变更内容


标签可用于路由和在变更列表中筛选: Run 的变量(variables)和用户邮箱不会记录。

常见问题


  • 确认 Webhook 已启用,并已分配给 Run 所在的 Environment
  • 确认勾选了 run:completed、run:errored 和 run:needs_attention
  • 在 Webhook 的 Deliveries 页签查看推送记录和 Flashduty 的响应,也可以从这里重新发送
  • 只做 Plan 的 Run(Dry run,没有内容被应用)成功时不会生成变更
会。Scalr 的推送内容不区分 Dry run 与 Apply Run,Plan 阶段出错的 Run 会以 run:errored 推送,Flashduty 记为 Failed 变更。可以用 source 标签辅助区分,例如 VCS 拉取请求触发的 Run。
不会。同一 Run、同一状态、同一时间的事件只记录一次,从 Deliveries 重新发送不会新增记录。
  • unsupported event-name 或 unsupported run.status:收到了 Flashduty 尚未支持的事件或 Run 状态,请联系我们
  • run.id is missing 或 event-name is missing:推送内容不完整,请确认推送来自 Scalr 的 Webhook