第 19 章 使用 Webhook


Webhook 是一种网页或 Web 应用,用于实时提供其他应用程序的信息。Webhook 仅在事件发生后触发。请求通常包含事件的详细信息。事件会触发回调,如发送确认主机已调配的电子邮件。Webhook 允许您使用 fire-and-forget 消息交换模式,根据卫星内部事件定义对外部 API 的调用。发送请求的应用程序不会等待响应,或忽略它。

webhook 的有效负载是从 Webhook 模板创建的。Webhook 模板使用与 Provisioning 模板相同的 ERB 语法。可用变量:

  • @event_name: 事件的名称。
  • @webhook_id :唯一事件 ID。
  • @payload: Payload data,每个事件类型会有所不同。要访问单个字段,请使用 @payload[:key_name] Ruby hash 语法。
  • @payload[:object]: 数据库操作触发的事件的数据库对象(create、update、delete)。不适用于自定义事件。
  • @payload[:context] :作为哈希(如请求和会话 UUID、远程 IP 地址、用户、机构和位置)的额外信息。

由于 Webhook 使用 HTTP,因此不需要向现有 Web 服务添加新基础架构。

Satellite 中 Webhook 的典型用例是在创建或删除主机时调用监控系统。

Webhook 很有用处,您可以在外部系统中通过其 API 来实现。如果需要运行其他命令或编辑文件,可以使用 Capsules 的 shellhooks 插件。shellhooks 插件允许您在可通过 API 执行的胶囊上定义 shell 脚本。

您可以在不安装 shellhooks 插件的情况下成功使用 webhook。

如需可用事件的列表,请参阅 Available webhook events

19.1. 迁移到 Webhook

传统的 foreman_hooks 插件提供了对 webhook 插件意外提供的模型对象的完整访问权限。

安全模式可用的内容范围以及所有对象和宏都受到 API 稳定性的保证,并完全记录。

Webhook 触发的事件数量大大少于使用 foreman_hooks

Webhook 异步处理,因此,使用系统内部进行篡改的风险最少。在不为每个 webhook 脚本创建有效负载的情况下,无法从 foreman_hooks 迁移。但是,webhook 插件附带了几个示例有效负载模板。您还可以将示例有效负载与 shellhooks 搭配使用,以简化迁移。

必须自定义脚本和有效负载模板才能获得类似结果。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat