18.5. Shellhooks
使用 Webhook,您只能将一个 Satellite 事件映射到一个 API 调用。对于高级集成,其中单个 shell 脚本可以包含多个命令,您可以安装使用 REST HTTP API 公开可执行文件的 Capsule shellhooks 插件。
然后,您可以将 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.9 节 “创建 shellhook 以打印参数”。