Rundeck-引用作业上的循环



我的工作流程中引用作业的问题让我头疼。我不确定这是可能的Rundeck:

我有一份工作需要一秒钟的时间。我想为所有节点运行这一秒,但只能在一台服务器上运行。

有了这个例子,也许理解起来更简单:

工作流: 选择节点
引用作业1

NodeA > Website www.exempleA.com < restore DB with default value  
NodeB > Website www.exempleB.com < restore DB with default value  
NodeC > Website www.exempleC.com < restore DB with default value  
NodeD > Website www.exempleD.com < restore DB with default value 

这运行完美

引用的作业2:使用Cypress服务器测试网站。节点过滤器只有Cypress服务器

NodeE > Cypress -url https://${node.name} = NodeA > www.exempleA.com  
NodeE > Cypress -url https://${node.name} = NodeB > www.exempleB.com  
NodeE > Cypress -url https://${node.name} = NodeC > www.exempleC.com  
NodeE > Cypress -url https://${node.name} = NodeD > www.exempleD.com 

所以我想用一个引用的作业进行循环,该作业只在一台服务器上执行,但对所有节点名称都执行。

有人知道Rundeck是否可以实现这种配置吗?

感谢您的了解。

二湾

一个很好的方法是以两种方式使用父作业选项:第一,将第一个子作业作为节点过滤器(调度到远程节点(,第二,将第二个子作业(创建一个数组并在bash循环中运行Cypress命令(。

下面是一个要测试的示例。

父作业。包含一个应用于子作业的选项。

- defaultTab: nodes
description: ''
executionEnabled: true
id: db051872-7d5f-4506-bd49-17719af9785b
loglevel: INFO
name: ParentJob
nodeFilterEditable: false
options:
- name: nodes
value: node00 node01 node02
plugins:
ExecutionLifecycle: null
scheduleEnabled: true
sequence:
commands:
- jobref:
args: -myfilter ${option.nodes}
group: ''
name: FirstChildJob
nodeStep: 'true'
uuid: f7271fc4-3ccb-41a5-9de4-a12e65093a3d
- jobref:
args: -myarray ${option.nodes}
childNodes: true
group: ''
name: SecondChildJob
nodeStep: 'true'
uuid: 1b8b1d82-a8dc-4949-9245-e973a8c37f5a
keepgoing: false
strategy: sequential
uuid: db051872-7d5f-4506-bd49-17719af9785b

第一个孩子的工作。采用父作业选项并将其用作作业过滤器,节点过滤器是一个名为${option.myfilter}的自己的选项。

- defaultTab: nodes
description: ''
executionEnabled: true
id: f7271fc4-3ccb-41a5-9de4-a12e65093a3d
loglevel: INFO
name: FirstChildJob
nodeFilterEditable: false
nodefilters:
dispatch:
excludePrecedence: true
keepgoing: false
rankOrder: ascending
successOnEmptyNodeFilter: false
threadcount: '1'
filter: ${option.myfilter}
nodesSelectedByDefault: true
options:
- name: myfilter
plugins:
ExecutionLifecycle: null
scheduleEnabled: true
sequence:
commands:
- exec: echo "hi"
keepgoing: false
strategy: node-first
uuid: f7271fc4-3ccb-41a5-9de4-a12e65093a3d

二胎工作。包含一个内联脚本步骤,该步骤将父级的作业选项作为数组,并在bash循环中运行。

- defaultTab: nodes
description: ''
executionEnabled: true
id: 1b8b1d82-a8dc-4949-9245-e973a8c37f5a
loglevel: INFO
name: SecondChildJob
nodeFilterEditable: false
nodefilters:
dispatch:
excludePrecedence: true
keepgoing: false
rankOrder: ascending
successOnEmptyNodeFilter: false
threadcount: '1'
filter: 'name: node02'
nodesSelectedByDefault: true
options:
- name: myarray
plugins:
ExecutionLifecycle: null
scheduleEnabled: true
sequence:
commands:
- script: "#!/bin/bashnarray=(@option.myarray@)nfor i in "${array[@]}"ndon
techo "execute $i"ndone"
keepgoing: false
strategy: node-first
uuid: 1b8b1d82-a8dc-4949-9245-e973a8c37f5a

以下是循环脚本(在第二个子作业中作为内联脚本(:

#!/bin/bash
array=(@option.myarray@)
for i in "${array[@]}"
do
echo "$i"
done

在这里你可以看到结果。

最新更新