Rundeck能否有一份工作,其一部分执行为“向节点发送”,另一部分执行为“本地执行”

时间:2019-12-12 19:41:08

标签: jobs rundeck

晚上好

我有一份工作,分为两个部分:

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

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

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

(第二部分)

  • scp -3 $ {option.remoteserver}:/ home / rundeck / dstat.output.csv本地服务器:/ home / rundeck / $ {option.remoteserver} _dstat.output.csv

在“节点”标签中,我选择了“向节点发送”。 我的问题是,第一部分可以正常运行,但是第二部分也可以发送到远程服务器,而我需要将其“本地执行”

是否可以将第一部分设置为“向节点发送”,而将第二部分设置为“本地执行”

2 个答案:

答案 0 :(得分:1)

您可以创建两个作业,第一个作业指向远程节点(使用“向节点分发”),第二个作业指向本地节点。然后,您可以使用job reference step创建引用这些作业的父作业。 Here是个很好的例子。

作业到远程节点:

    <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>

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

答案 1 :(得分:0)

编辑作业。在“节点步骤”的底部,有一个“本地命令”选项。即使上一步是远程命令,它也将在本地运行。它还可以访问标准的节点变量集。