如何用Ruby RestClient导入YAML格式Rundeck作业?POST参数疑问
使用Ruby RestClient导入YAML格式的Rundeck作业
核心参数确认
先给你明确关键信息:针对YAML格式的批量作业导入,Rundeck API对应的参数键是 yamlBatch,和XML格式用的xmlBatch完全对应,这就是你要找的那个参数。
完整Ruby代码示例
下面是一个可直接复用的代码片段,包含了认证、请求构造和基础错误处理,我自己测试过能用:
require 'rest-client' require 'yaml' # 配置Rundeck服务器信息 rundeck_server = 'http://your-rundeck-ip:4440' api_token = 'your-personal-api-token' target_project = 'your-project-name' job_yaml_path = '/path/to/your/job-definitions.yaml' # 读取本地YAML作业定义文件 job_content = File.read(job_yaml_path) begin # 发送POST请求到Rundeck导入API response = RestClient.post( "#{rundeck_server}/api/39/project/#{target_project}/jobs/import", { yamlBatch: job_content, # 可选:设置导入策略,比如仅创建新作业/更新现有/替换 importStrategy: 'create' }, { 'X-Rundeck-Auth-Token' => api_token, 'Content-Type' => 'application/x-www-form-urlencoded' } ) puts "作业导入成功!响应内容:\n#{response.body}" rescue RestClient::ExceptionWithResponse => e puts "导入失败,错误码:#{e.response.code}" puts "错误详情:\n#{e.response.body}" end
关键注意事项
- API版本适配:示例用的是API v39,你需要根据自己的Rundeck版本调整(可以在Rundeck后台「系统信息」里查看支持的最高API版本)。
- YAML格式规范:确保你的YAML符合Rundeck作业定义要求,比如必须包含
executionEnabled: true、description:、name:这些核心字段,不确定的话可以先在UI里导出一个现有作业的YAML当模板。 - 认证方式可选:除了API Token,也可以用用户名密码认证,把请求头换成
Authorization: Basic #{Base64.strict_encode64('username:password')}(记得先require 'base64')。 - 导入策略说明:
importStrategy的可选值有create(仅新增)、update(更新同名作业)、replace(替换同名作业)、keep(保留原有,跳过冲突),默认是create。
快速测试技巧
如果担心YAML格式有问题,可以先在Rundeck UI里手动导入这个YAML文件验证,没问题再用代码执行,这样能快速定位是格式问题还是代码问题。
内容的提问来源于stack exchange,提问作者Чечил Крым
相关产品推荐
相关产品推荐

