Rundeck作业参考-使用变量作为作业名称

时间:2020-04-29 10:47:59

标签: rundeck

我正在尝试组装一个系统,该系统要求在可变数量的节点中以可变顺序运行多个作业,并且有可能重复。

我试图通过对每个节点使用单个作业(请注意每个节点也运行不同的作业)来解决此问题,然后在运行时决定执行哪个作业。

但是当我完成工作时,我得到了:

"2: Workflow step executing: JobReferenceItem{label='Step 1 job, jobIdentifier='${data.DEPLOY_SYSTEM_1}', nodeStep=true}"

该变量似乎没有得到扩展。这是不可能的还是我做错了?我无法找到有关使用变量动态选择要运行的作业的任何信息

感谢您的帮助。谢谢

1 个答案:

答案 0 :(得分:0)

是的,我在“作业参考步骤”上测试了使用数据和选项变量的调用,但无法正常工作:

<joblist>
  <job>
    <defaultTab>nodes</defaultTab>
    <description></description>
    <executionEnabled>true</executionEnabled>
    <id>97979d11-6ff8-45ef-9843-8b90e4e135d1</id>
    <loglevel>INFO</loglevel>
    <name>JobONE</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <plugins />
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <exec>echo "MYJOB=JobTWO"</exec>
        <plugins>
          <LogFilter type='key-value-data'>
            <config>
              <logData>true</logData>
              <regex>^(MYJOB)\s*=\s*(.+)$</regex>
            </config>
          </LogFilter>
        </plugins>
      </command>
      <command>
        <exec>echo ${data.MYJOB}</exec>
      </command>
      <command>
        <jobref name='${data.MYJOB}' nodeStep='true'>
          <useName>true</useName>
        </jobref>
      </command>
    </sequence>
    <uuid>97979d11-6ff8-45ef-9843-8b90e4e135d1</uuid>
  </job>
</joblist>

一个好的解决方法是在嵌入式脚本步骤中嵌入RD CLI命令以调用作业(使用数据或选项),如下所示:

<joblist>
  <job>
    <defaultTab>nodes</defaultTab>
    <description></description>
    <executionEnabled>true</executionEnabled>
    <id>97979d11-6ff8-45ef-9843-8b90e4e135d1</id>
    <loglevel>INFO</loglevel>
    <name>JobONE</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <plugins />
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <exec>echo "MYJOB=JobTWO"</exec>
        <plugins>
          <LogFilter type='key-value-data'>
            <config>
              <logData>true</logData>
              <regex>^(MYJOB)\s*=\s*(.+)$</regex>
            </config>
          </LogFilter>
        </plugins>
      </command>
      <command>
        <exec>echo ${data.MYJOB}</exec>
      </command>
      <command>
        <script><![CDATA[# call another job, more info: rd run help
rd run -j @data.MYJOB@ -p ProjectLOCAL]]></script>
        <scriptargs />
      </command>
    </sequence>
    <uuid>97979d11-6ff8-45ef-9843-8b90e4e135d1</uuid>
  </job>
</joblist>

使用规则集(仅适用于Rundeck Enterprise),您可以根据某个变量的值(look)来决定方法。

此外,您可以在official GitHub space中建议该问题。