繁体   English   中英

Rundeck跨作业步骤共享变量

[英]Rundeck sharing variables across job steps

我想在rundeck作业步骤之间共享一个变量。

  1. 初始化作业选项“target_files”
  2. 在STEP 1上设置变量。

    RD_OPTION_TARGET_FILES=some bash command
    echo $RD_OPTION_TARGET_FILES
    该值打印在此处。

  3. 从STEP 2中读取变量。
    echo $RD_OPTION_TARGET_FILES

步骤3无法识别步骤1中设置的变量。
除了使用环境变量之外,在rundeck上执行此操作的好方法是什么?

在Rundeck 2.9之后,有一个数据捕获插件允许在作业步骤之间传递数据。

该插件默认包含在Rundeck应用程序中。

数据捕获插件,用于匹配步骤日志输出中的正则表达式,并将值传递给后续步骤

详细信息请参阅步骤之间的数据捕获/数据传递 (发布日期:2017年8月3日)

RUNDECK 2.9+的详细程序:

1)设置值 - 三种方法:

1.a)使用“全局变量”工作流步骤类型,例如填写:Group:=“export”,Name:=“varOne”,Value:=“hello”

1.b)在工作流程中添加一个“全局日志过滤器”(这里由'Amos'引用的数据捕获插件),它采用在作业步骤日志输出上评估的正则表达式。 例如,使用如下作业步骤命令:

   echo "CaptureThis:varTwo=world"

和全局日志过滤器模式,如:

   "CaptureThis:(.*?)=(.*)" 

(除非您在模式中提供单个捕获组,否则不需要“名称数据”字段)

1.c)使用工作流数据步骤明确定义多个变量。 示例内容:

varThree=foo
varFour=bar

2)获取值:

您必须在命令字符串和args中使用语法$ {ctx.name},在INLINE脚本中使用@ ctx.name @。 在我们的示例中,使用作业步骤命令或内联脚本行,如:

echo "values : @export.varOne@, @data.varTwo@, @stub.varThree@, @stub.varFour@"

你会回应这四个价值观。

上下文隐含地是方法1.b的“数据”和方法1.c的“存根”。

请注意,数据步骤非常有限! 它只允许从内联脚本中的@ stub.name @符号中受益。 不在远程文件中执行值替换,并且在作业步骤命令字符串或参数中不能使用$ {stub.name}等符号。

几乎不存在除1之外的作业内联脚本中的方法,将值导出到env或2,在步骤1将值写入第3个文件,从那里读取第2个文件。

如果您使用的是“Scriptfile或URL”方法,可能是您可以在script1中执行step2脚本作为解决方法..就像

Script1
#!/bin/bash
. ./script2

在上面的例子中,script2将在与script1相同的会话中执行,因此保留了变量和值。

编辑早些时候没有这样的选项,但后来有可用的插件。 因此检查Amos的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM