You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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,提问作者Чечил Крым

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:50:47