rundeck - rundeck 将作业(步骤)一的输出传递给作业(步骤)二
问题描述
在 rundeck 中,我有两个选择,selection1 和 selection2,它们将分别在 node1 和 node2 上执行。Slection2 的输入来自选择的输出。我怎样才能做到?有两个工作还是两个步骤?以及如何传递论点。
解决方案
您可以使用Job Reference Step和arguments在作业之间传递选项。我留下一个包含两个作业的示例:JobA 和 JobB,JobA 只打印一个选项,而 JobB 调用 JobA 并通过参数将它们的选项传递给 JobA 选项。
工作一:
<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>
您可以在此处看到一个非常有用的示例。
推荐阅读
- mysql - TypeORM 存储库创建不设置值
- oracle - 从 Oracle SQL 返回每个组中的第一行
- hadoop - PIG 日期转换问题示例日期为 4/1/2009 9:06:00 AM
- android-manifest - javaFxPorts 多个活动
- clang - 在 64 位 linux 上编译 32 位 libfuzzer 应用程序
- python - 将多个 HTML 文件作为单独的工作表导入 Excel
- django - 如何从html中删除隐藏的输入类型?
- android - Android Studio 上的英特尔 HAXM 出现问题
- json - 如何在 Express 中加入 2 个 json 对象
- javascript - 为什么 Javascript 看不到 VueJS 创建的新元素?