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

如何在Rundeck中为用户列表中每个用户单独执行定时任务?

当然能实现!我给你分享两种在Rundeck里常用的做法,你可以根据自己的实际场景来选:

方案1:用Iterator Step遍历执行(推荐)

这是最直观的方式,你只需要创建一个「父定时任务」,让它遍历你的用户列表,逐个调用那个处理单个用户的子任务就行。

具体步骤:

  1. 先确保你已经做好了那个需要传入username参数的子任务(就是给单个用户执行操作的任务)。
  2. 新建一个定时任务作为父任务,在它的Workflow里添加Iterator Step。
  3. 配置Iterator:
    • 迭代源选「Static List」,把你的用户列表填进去,比如用逗号分隔user1,user2,user3,或者每行一个用户。
    • 给迭代变量起个好记的名字,比如currentUser。
  4. 在Iterator里面,添加一个Job Reference Step,选择你之前做好的子任务。
  5. 配置参数映射:把迭代变量currentUser对应到子任务的username参数上。
  6. 最后给父任务设置定时规则(比如每天凌晨跑一次),到点后它就会自动遍历每个用户,单独触发一次子任务,完全符合你的需求。
方案2:API+外部脚本(适合动态用户列表)

如果你的用户列表是动态变化的(比如从数据库、LDAP里拉取),用这种方式更灵活:

具体步骤:

  1. 写个脚本(bash、Python都行),逻辑很简单:
    • 先获取最新的用户列表(比如读数据库、读配置文件)。
    • 挨个遍历用户,调用Rundeck的API来触发子任务,把当前用户作为username参数传进去。
      给你个bash脚本的示例片段:
    # 提前设置好Rundeck的API令牌、子任务ID、Rundeck服务地址
    USERS=("user1" "user2" "user3")
    for USER in "${USERS[@]}"
    do
      curl -X POST \
        -H "X-Rundeck-Auth-Token: 你的API令牌" \
        -H "Content-Type: application/json" \
        http://你的Rundeck地址:4440/api/40/job/子任务ID/run \
        -d '{"options": {"username": "'"$USER"'"}}'
    done
    
  2. 在Rundeck里建一个定时任务,步骤就是执行这个脚本。
  3. 设置好定时规则,到点后脚本会自动遍历所有用户,逐个触发子任务。
小提示
  • 用方案1的时候,注意Iterator的「Fail Fast」选项:如果某个用户的任务失败,你可以选择继续跑其他用户的,或者直接终止父任务,按需设置就行。
  • 方案2里,记得给Rundeck的API令牌开足够权限,至少要能触发目标子任务。
  • 两种方案都会为每个用户生成独立的执行记录,方便你单独查看每个用户的处理结果。

内容的提问来源于stack exchange,提问作者R. Bogaveev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:27:49