我想在rundeck作业步骤中共享一个变量。
在STEP 1上设置变量。
RD_OPTION_TARGET_FILES=some bash command
echo $RD_OPTION_TARGET_FILES
该值打印在此处。
从STEP 2中读取变量。
echo $RD_OPTION_TARGET_FILES
步骤3不识别在步骤1中设置的变量 除了使用环境变量之外,在rundeck上执行此操作的好方法是什么?
答案 0 :(得分:4)
在Rundeck 2.9之后,有一个数据捕获插件,允许在作业步骤之间传递数据。
默认情况下,插件包含在Rundeck应用程序中。
数据捕获插件,用于匹配步骤日志输出中的正则表达式,并将值传递给后面的步骤
详情见Data Capture/Data Passing between steps(已发布:2017年8月3日)
答案 1 :(得分:3)
RUNDECK 2.9+中的详细过程:
1)设置值-三种方法:
1.a)使用“全局变量”工作流步骤类型 例如填写:组:=“导出”,名称:=“ varOne”,值:=“ hello”
1.b)在工作流中添加一个“全局日志过滤器”(此处为“ Amos”引用的数据捕获插件),该过滤器使用一个正则表达式,该表达式在作业步骤日志输出中进行评估。例如,带有作业步骤命令,例如:
echo "CaptureThis:varTwo=world"
以及类似以下的全局日志过滤器模式:
"CaptureThis:(.*?)=(.*)"
(除非您在模式中提供单个捕获组,否则不需要“名称数据”字段)
1.c)使用工作流数据步骤明确定义多个变量。示例内容:
varThree=foo
varFour=bar
2)取回值:
必须在命令字符串和参数中使用语法$ {ctx.name},在INLINE脚本中使用@ ctx.name @。在我们的示例中,使用作业步骤命令或内联脚本行,如:
echo "values : @export.varOne@, @data.varTwo@, @stub.varThree@, @stub.varFour@"
您将回显这四个值。
对于方法1.b,上下文是隐式的“数据”,对于方法1.c,上下文是隐式的“存根”。
请注意,数据步骤是非常有限的!它仅允许从内联脚本中的@ stub.name @表示法中受益。不在远程文件中执行值替换,并且$ {stub.name}之类的符号在作业步骤命令字符串或参数中不可用。
答案 2 :(得分:2)
除了1以外,作业内联脚本几乎没有办法,将值导出到env或2,在第1步将值写入第3个文件,从第1个步骤读取值。
如果您使用的是“Scriptfile或URL”方法,可能是您可以在script1中执行step2脚本作为解决方法..如
Script1
#!/bin/bash
. ./script2
在上面的例子中,script2将在与script1相同的会话中执行,因此保留了变量和值。
修改强> 早些时候没有这样的选择,但后来有可用的插件。因此,请检查 Amos的答案。