如何设置Rundeck Conditional options variables实现关联变量自动赋值
Rundeck 条件关联变量设置方案
一共有两种实现方式,可根据你的规则复杂度选择:
方式1:选项内置三元表达式(适合规则简单的场景)
不需要修改作业执行步骤,直接在选项配置里完成关联:
- 第一步:创建主输入选项
进入作业编辑页的「选项(Options)」模块,新增名称为cust的选项,类型可设为文本或下拉列表,允许用户在启动作业时输入/选择对应值。 - 第二步:配置关联变量ID
新增名称为ID的选项,根据你的需求决定是否勾选「隐藏(Hidden)」,在默认值输入框填入表达式:
多客户规则可以用嵌套写法:${option.cust == "Customer01ID" ? "MyID" : "自定义的其他默认ID"}${option.cust == "Customer01ID" ? "MyID" : option.cust == "Customer02ID" ? "MyID2" : "默认ID"} - 第三步:配置关联变量Oracle_schema
新增名称为Oracle_schema的选项,同样按需设置隐藏属性,默认值填入:${option.cust == "Customer01ID" ? "Myschema" : "自定义的其他默认schema"}
注意:如果需要用户在提交作业时就能看到自动填充的关联值,不要勾选关联选项的隐藏属性,页面会根据你选择的cust值实时刷新默认值
方式2:脚本设置全局变量(适合规则复杂的场景)
如果匹配规则超过5条,或者需要做更复杂的逻辑判断,优先用这种方式:
- 第一步:只需要创建
cust主输入选项,不需要提前创建ID和Oracle_schema选项。 - 第二步:在作业的第一个步骤添加内联脚本(以bash为例),代码如下:
# 根据cust值匹配对应参数 case "@option.cust@" in "Customer01ID") TARGET_ID="MyID" TARGET_SCHEMA="Myschema" ;; "Customer02ID") TARGET_ID="MyID2" TARGET_SCHEMA="Myschema2" ;; *) # 未匹配到的默认值 TARGET_ID="default_id" TARGET_SCHEMA="default_schema" ;; esac # 输出为Rundeck全局变量,后续所有步骤均可调用 echo "RD_TARGET_ID=${TARGET_ID}" >> ${RD_OUTPUT} echo "RD_TARGET_SCHEMA=${TARGET_SCHEMA}" >> ${RD_OUTPUT} - 第三步:后续所有作业步骤中,直接用
@RD_TARGET_ID@、@RD_TARGET_SCHEMA@调用对应值即可,用法和普通选项变量完全一致。
提示:Rundeck 3.3.x以下版本对选项内置表达式的支持不完善,建议优先使用第二种方式,兼容性更好。
内容的提问来源于stack exchange,提问作者kuroi Akosih
相关产品推荐
相关产品推荐

