如何在Rundeck上为列表中的每个用户运行作业?

时间:2020-07-30 11:42:12

标签: rundeck

我想在Rundeck创建一个计划作业。 Rundeck Job运行脚本,该脚本为我列表中的单个用户做一些工作。

因此,作业具有输入参数-用户名。我需要为列表中的所有用户运行该作业,但无需在一个作业执行中对其进行处理。我需要为每个用户执行单独的作业。

public static float[] UseFunc(float[] input, float[] input2, Func<float, float, float> func)
{
    float[] temp = (float[]) input.Clone();
    for (int i = 0; i < input.Length; i++)
    {
        temp[i] = func(input[i], input2[i]);
    }
    return temp;
}

反正有这样做吗?

1 个答案:

答案 0 :(得分:1)

您可以设计一个带有列表选项的工作流以用于任何步骤(例如命令,内联脚本或脚本),我为一个带有列表选项(用户)的示例和内联脚本的示例做了一个操作用户,作业已排定。

<joblist>
  <job>
    <context>
      <options preserveOrder='true'>
        <option name='users' required='true' value='alice,bob,charlie,david' />
      </options>
    </context>
    <defaultTab>nodes</defaultTab>
    <description></description>
    <executionEnabled>true</executionEnabled>
    <id>e62a25a0-b67c-4bb7-8721-c96b7e4cb9f5</id>
    <loglevel>INFO</loglevel>
    <name>JobEXAMPLE</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <plugins />
    <schedule>
      <month month='*' />
      <time hour='12' minute='0' seconds='0' />
      <weekday day='*' />
      <year year='*' />
    </schedule>
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <fileExtension>.sh</fileExtension>
        <script><![CDATA[#!/bin/bash

myusers=@option.users@
Field_Separator=$IFS
 
# set comma as the internal field separator for the string list
IFS=,
for value in $myusers;
do
    echo "action for $value"
done
 
IFS=$Field_Separator]]></script>
        <scriptargs />
        <scriptinterpreter>/bin/bash</scriptinterpreter>
      </command>
    </sequence>
    <uuid>e62a25a0-b67c-4bb7-8721-c96b7e4cb9f5</uuid>
  </job>
</joblist>

Here结果。

也许this使您感兴趣。另外,data values在这种情况下也可以工作。