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

Rundeck 2.5.1:主作业调用受控子作业时如何传递认证凭证?

在Rundeck 2.5.1中实现主作业调用带认证的子作业并传递输出输入

我来给你梳理下在Rundeck 2.5.1里实现这个需求的具体步骤——毕竟这个版本确实比较旧,得贴合它的特性来操作:

一、先搞定认证信息的传递

因为你的Rundeck实例有访问控制,主作业调用子作业时必须带上合法的认证信息,这里有两种靠谱的方式:

1. 使用API Token推荐

  • 首先给主作业的执行用户生成一个API Token:在用户设置页面(右上角用户头像→Profile)里找到API Tokens选项,创建一个新的token,记得保存好。
  • 把这个token存成Rundeck的安全变量:进入项目的Settings→Key Storage,添加一个名为RD_API_TOKEN的变量,类型选Secure,避免明文泄露。
  • 在主作业里调用子作业时,用rd命令行工具带上token参数:
    rd run -t ${RD_API_TOKEN} -j "子作业名称" -p "你的项目名称"
    

2. 使用用户名密码备选

如果不想用token,也可以直接传用户名密码,但同样要存成安全变量:

rd run -u ${RD_USERNAME} -p ${RD_PASSWORD} -j "子作业名称" -p "你的项目名称"

这里的RD_USERNAME和RD_PASSWORD都是你提前存在Key Storage里的安全变量。

二、把子作业1的输出传给子作业2

要实现“一个作业输出作为另一个输入”,需要在主作业里先捕获第一个子作业的输出,再把它作为参数传给第二个子作业:

  1. 先确保子作业1的输出是容易提取的格式——比如单行的关键值,或者简单的JSON结构,避免复杂的多行混乱输出。
  2. 在主作业的命令步骤里,先捕获子作业1的输出:
    # 用--raw参数获取子作业的原始输出,过滤掉rd工具本身的额外信息
    FIRST_JOB_RESULT=$(rd run -t ${RD_API_TOKEN} -j "子作业1" -p "你的项目名称" --raw)
    
  3. 然后把捕获到的变量作为参数传给子作业2:
    # 假设子作业2有一个名为INPUT_FROM_JOB1的参数用来接收输入
    rd run -t ${RD_API_TOKEN} -j "子作业2" -p "你的项目名称" -P "INPUT_FROM_JOB1=${FIRST_JOB_RESULT}"
    

三、主作业的配置注意事项

  • 确保主作业的执行用户有足够权限:不仅能读取你创建的安全变量,还要有调用两个子作业的run权限(在Access Control策略里配置)。
  • 如果子作业1的输出包含空格、换行或特殊字符,记得用双引号包裹变量,避免参数解析错误:
    rd run -t ${RD_API_TOKEN} -j "子作业2" -p "你的项目名称" -P "INPUT_FROM_JOB1=\"${FIRST_JOB_RESULT}\""
    
  • 测试时可以先单独运行子作业,确认它们的输出和参数接收都正常,再整合到主作业里。

内容的提问来源于stack exchange,提问作者neves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:16:24