17.6. Shellhooks

使用 Webhook 时,您只能将一个 Satellite 事件映射到一个 API 调用。对于高级集成,如果单个 shell 脚本可以包含多个命令,您可以安装一个使用 REST HTTP API 来公开可执行文件的 Capsule shellhook 插件。

然后,您可以将 webhook 配置为到达 Capsule API,以运行预定义的 shellhook。shellhook 是一个可执行脚本,只要它可以执行,就可以使用任何语言编写。例如,shellhook 可以包含命令或编辑文件。

您必须将可执行脚本放在 /var/lib/foreman-proxy/shellhooks 中,且只有字母数字字符和下划线的名称。

您可以通过 Webhook 有效负载将输入传递给 shellhook 脚本。此输入重定向到 shellhook 脚本的标准输入。您可以使用 HTTP 标头将参数传递给 shellhook 脚本,格式为 X-Shellhook-Arg-1X-Shellhook-Arg-99。有关将参数传递给 shellhook 脚本的更多信息,请参阅:

HTTP 方法必须是 POST。示例 URL 为: https://capsule.example.com:9090/shellhook/My_Script

注意

shellhooks 目录不同,URL 必须包含 /shellhook/ (以 singular 为单位)。

您必须为每个连接到 shellhook 的 webhook 启用 Capsule 授权,使其能够授权调用。

标准输出和标准错误输出分别作为具有调试或警告级别的消息重定向到 Capsule 日志。

shellhook HTTPS 调用不会返回值。

有关创建 shellhook 脚本的示例,请参阅 第 17.10 节 “创建 Shellhook 以打印参数”