【问题标题】:rundeck pass output from job(step) one to job(step) tworundeck 将作业(步骤)一的输出传递给作业(步骤)二
【发布时间】:2019-12-31 22:51:12
【问题描述】:

在 rundeck 中,我有两个选择,selection1 和 selection2,它们将分别在 node1 和 node2 上执行。 Slection2 的输入来自选择的输出。我怎样才能做到?有两个工作还是两个步骤?以及如何传递论点。

【问题讨论】:

    标签: rundeck


    【解决方案1】:

    您可以使用Job Reference Step 和arguments 在作业之间传递选项。我以两个作业为例:JobA 和 JobB,JobA 只打印一个选项,而 JobB 调用 JobA 并通过参数将其选项传递给 JobA 选项。

    工作 A:

    <joblist>
        <job>
            <context>
                <options preserveOrder="true">
                    <option name="opta" />
                </options>
            </context>
            <defaultTab>nodes</defaultTab>
            <description />
            <executionEnabled>true</executionEnabled>
            <id>6d64bd33-71de-4d20-8bcd-c65785603b23</id>
            <loglevel>INFO</loglevel>
            <name>JobA</name>
            <nodeFilterEditable>false</nodeFilterEditable>
            <scheduleEnabled>true</scheduleEnabled>
            <sequence keepgoing="false" strategy="node-first">
                <command>
                    <exec>echo ${option.opta}</exec>
                </command>
            </sequence>
            <uuid>6d64bd33-71de-4d20-8bcd-c65785603b23</uuid>
        </job>
    </joblist>
    

    工作乙:

    <joblist>
        <job>
            <context>
                <options preserveOrder="true">
                    <option name="optb" />
                </options>
            </context>
            <defaultTab>nodes</defaultTab>
            <description />
            <executionEnabled>true</executionEnabled>
            <id>22d0e6cc-e0f3-48e5-b8a5-3007e448ae18</id>
            <loglevel>INFO</loglevel>
            <name>JobB</name>
            <nodeFilterEditable>false</nodeFilterEditable>
            <scheduleEnabled>true</scheduleEnabled>
            <sequence keepgoing="false" strategy="node-first">
                <command>
                    <jobref name="JobA" nodeStep="true">
                        <arg line="-opta ${option.optb}" />
                        <uuid>6d64bd33-71de-4d20-8bcd-c65785603b23</uuid>
                    </jobref>
                </command>
            </sequence>
            <uuid>22d0e6cc-e0f3-48e5-b8a5-3007e448ae18</uuid>
        </job>
    </joblist>
    

    此外,您可以捕获一些输出并在作业之间使用参数传递这些数据。我留下另一个例子:

    工作 A(只打印一个选项):

    <joblist>
        <job>
            <context>
                <options preserveOrder="true">
                    <option name="opta" />
                </options>
            </context>
            <defaultTab>nodes</defaultTab>
            <description />
            <executionEnabled>true</executionEnabled>
            <id>6d64bd33-71de-4d20-8bcd-c65785603b23</id>
            <loglevel>INFO</loglevel>
            <name>JobA</name>
            <nodeFilterEditable>false</nodeFilterEditable>
            <scheduleEnabled>true</scheduleEnabled>
            <sequence keepgoing="false" strategy="node-first">
                <command>
                    <exec>echo ${option.opta}</exec>
                </command>
            </sequence>
            <uuid>6d64bd33-71de-4d20-8bcd-c65785603b23</uuid>
        </job>
    </joblist>
    

    Job B(它生成数据,存储在${data.USER} 变量并调用 JobA 以使用 Job Reference Step 将该变量作为参数传递):

    <joblist>
        <job>
            <defaultTab>nodes</defaultTab>
            <description>Regex and data passing demo.</description>
            <executionEnabled>true</executionEnabled>
            <id>a0daf1e3-e918-43dc-b232-bc46a7a287b6</id>
            <loglevel>INFO</loglevel>
            <name>Regex</name>
            <nodeFilterEditable>false</nodeFilterEditable>
            <scheduleEnabled>true</scheduleEnabled>
            <sequence keepgoing="false" strategy="node-first">
                <command>
                    <exec>env</exec>
                </command>
                <command>
                    <jobref name="JobA" nodeStep="true">
                        <arg line="-opta ${data.USER}" />
                        <uuid>6d64bd33-71de-4d20-8bcd-c65785603b23</uuid>
                    </jobref>
                </command>
                <pluginConfig>
                    <LogFilter type="key-value-data">
                        <config>
                            <logData>true</logData>
                            <regex>^(USER)\s*=\s*(.+)$</regex>
                        </config>
                    </LogFilter>
                </pluginConfig>
            </sequence>
            <uuid>a0daf1e3-e918-43dc-b232-bc46a7a287b6</uuid>
        </job>
    </joblist>
    

    你可以看到一个非常有用的例子here。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      相关资源
      最近更新 更多