首页 > 解决方案 > Rundeck 能否有一个作业将一部分执行为“分派到节点”,一部分执行为“本地执行”

问题描述

晚上好,

我的工作有两个部分:

  1. 在远程服务器上运行命令
  2. 完成后,在本地 rundeck 服务器上运行 scp -3 命令

示例 Rundeck 工作:(第一部分)

  1. 从 remote-server1、remote-server2 或 remote-server3 中选择(如 ${option.remoteserver} )
  2. 在节点(服务器)上执行以下命令:“dstat --output dstat.output.csv 10 1”

(第二部分)

在“节点”选项卡中,我选择了“发送到节点”。我遇到的问题是第一部分完美运行,但第二部分也发送到远程服务器,而我需要“在本地执行”

是否可以将第一部分设置为“分派到节点”但将第二部分设置为“本地执行”

标签: jobsrundeck

解决方案


您可以创建两个作业,第一个指向远程节点(使用“调度到节点”),第二个指向本地节点。然后,您可以使用作业引用步骤创建引用这些作业的父作业。这里有一个很好的例子。

远程节点的作业:

    <joblist>
        <job>
            <defaultTab>summary</defaultTab>
            <description></description>
            <dispatch>
                <excludePrecedence>true</excludePrecedence>
                <keepgoing>false</keepgoing>
                <rankOrder>ascending</rankOrder>
                <successOnEmptyNodeFilter>false</successOnEmptyNodeFilter>
                <threadcount>1</threadcount>
            </dispatch>
            <executionEnabled>true</executionEnabled>
            <id>53b304fe-c68c-40ed-a5cb-e8af9de75a99</id>
            <loglevel>INFO</loglevel>
            <name>JobToNodeONE</name>
            <nodeFilterEditable>false</nodeFilterEditable>
            <nodefilters>
                <filter>name: node00</filter>
            </nodefilters>
            <nodesSelectedByDefault>true</nodesSelectedByDefault>
            <scheduleEnabled>true</scheduleEnabled>
            <sequence keepgoing='false' strategy='node-first'>
                <command>
                    <exec>uname -a</exec>
                </command>
            </sequence>
            <uuid>53b304fe-c68c-40ed-a5cb-e8af9de75a99</uuid>
        </job>
    </joblist>

作业到本地节点:

    <joblist>
        <job>
            <defaultTab>summary</defaultTab>
            <description></description>
            <dispatch>
                <excludePrecedence>true</excludePrecedence>
                <keepgoing>false</keepgoing>
                <rankOrder>ascending</rankOrder>
                <successOnEmptyNodeFilter>false</successOnEmptyNodeFilter>
                <threadcount>1</threadcount>
            </dispatch>
            <executionEnabled>true</executionEnabled>
            <id>b5e54476-a663-4fed-a541-c270a0295265</id>
            <loglevel>INFO</loglevel>
            <name>JobToNodeTWO</name>
            <nodeFilterEditable>false</nodeFilterEditable>
            <nodefilters>
                <filter>name: localhost</filter>
            </nodefilters>
            <nodesSelectedByDefault>true</nodesSelectedByDefault>
            <scheduleEnabled>true</scheduleEnabled>
            <sequence keepgoing='false' strategy='node-first'>
                <command>
                    <exec>uname -a</exec>
                </command>
            </sequence>
            <uuid>b5e54476-a663-4fed-a541-c270a0295265</uuid>
        </job>

家长工作:

    <joblist>
        <job>
            <defaultTab>summary</defaultTab>
            <description></description>
            <executionEnabled>true</executionEnabled>
            <id>858a3558-ce1f-4814-a483-3162e2ea381b</id>
            <loglevel>INFO</loglevel>
            <name>ParentJOB</name>
            <nodeFilterEditable>false</nodeFilterEditable>
            <scheduleEnabled>true</scheduleEnabled>
            <sequence keepgoing='false' strategy='node-first'>
                <command>
                    <jobref name='JobToNodeONE'>
                        <uuid>53b304fe-c68c-40ed-a5cb-e8af9de75a99</uuid>
                    </jobref>
                </command>
                <command>
                    <jobref name='JobToNodeTWO'>
                        <uuid>b5e54476-a663-4fed-a541-c270a0295265</uuid>
                    </jobref>
                </command>
            </sequence>
            <uuid>858a3558-ce1f-4814-a483-3162e2ea381b</uuid>
        </job>
    </joblist>

此外,您可以使用参数在作业之间传递选项值。


推荐阅读