18.6. Shellhooks
使用 Webhook,您只能将一个 Satellite 事件映射到一个 API 调用。对于高级集成,其中单个 shell 脚本可以包含多个命令,您可以安装一个 Capsule shellhooks 插件,该插件使用 REST HTTP API 公开可执行文件。
然后,您可以配置 Webhook 以连接到 Capsule API 以运行预定义的 shellhook。shellhook 是一个可执行脚本,只要可以执行,可以使用任何语言编写。例如,shellhook 可以包含命令或编辑文件。
您必须将可执行脚本放在 /var/lib/foreman-proxy/shellhooks
中,其名称中只有字母数字字符和下划线。
您可以通过 webhook 有效负载将输入传递给 shellhook 脚本。此输入重定向到 shellhook 脚本的标准输入。您可以使用 HTTP 标头将参数传递给 shellhook 脚本,格式为 X-Shellhook-Arg-1
到 X-Shellhook-Arg-99
。有关将参数传递给 shellhook 脚本的更多信息,请参阅:
HTTP 方法必须是 POST。一个 URL 示例是: https://capsule.example.com:9090/shellhook/My_Script
。
与 shellhooks
目录不同,URL 必须包含 /shellhook/
才能有效。
您必须为每个连接到 shellhook 的 webhook 启用 Capsule 授权,使其能够授权调用。
标准输出和标准错误输出会分别重定向到 Capsule 日志为具有 debug 或 warning 级别的消息。
shellhook HTTPS 调用不会返回值。
有关创建 shellhook 脚本的示例,请参阅 第 18.10 节 “创建 shellhook 以打印参数”。