我目前正在探索Runddeck,以便管理当时的几个100 am。Rundeck是一个非常有用的工具,可以在多台机器上运行脚本/命令(每个脚本被传递到远程机器,然后在本地执行)。但是,我想知道是否有一种实现以下系统管理场景的方法。
运行程序工作要求(例如: Observium)
/opt/observium/add_device.php v2c @node.name@ ${varSNMPCommunity}。我没有足够的声誉包括图片在这篇文章。请使用下面的链接查看流程图。
https://www.dropbox.com/s/2zt4r9trulpsaqx/RundeckObservium.png?dl=0
发布于 2016-06-02 10:37:04
如果您想在运行在运行程序的机器上运行您的脚本,并且脚本将对目标机器执行远程ssh操作,那么您必须只在运行程序中选择本地机器。然后,在脚本中,您可以调用rundeck来交付项目的机器列表。在bash中,你可以做折叠式
#!/bin/bash
projectName="test_project"
nodeFilter="tags:app"
/usr/bin/dispatch -v -p $projectName --filter "$nodeFilter" >/tmp/filtered.node
nodes=( $( grep "hostname" /tmp/filtered.node | cut -f2 -d ":" ) )
echo "$nodes[@]"下面的示例将给出来自test_project的节点列表,这些节点的标记设置为app。
发布于 2015-06-21 08:09:03
与其让脚本在一个节点上运行以获得机器列表,不如使用节点筛选器来查看是否可以让RunDeck从标记中确定目标节点。这将取决于如何配置项目以获取资源。
例如,如果您正在使用标记,那么您可能希望有一个符合您的条件的标记。假设您希望找到与您创建的标记RebootPending相匹配的机器。您可以使用它作为作业的节点筛选器,向这些主机发送重新启动命令。
另一个可能的选择是让您的步骤2脚本将JSON格式的文件输出到web服务器。然后,您可以使用一个选项配置RD作业,该选项读取此远程URL (可能是主机列表),然后根据该列表执行操作。作业选项和节点筛选器可以这样配置:
Option Name: inputFilter
Description: Used for targeting nodes
Default Value: (empty)
Input Type: [X]Plain text [ ]Secure [ ]Secure Remote Authentication
Allowed Values: [ ]List [X]Remote URL
Node Filter: tags:${option:inputFilter}通过使用这些设置,您可以让远程网页(例如,脚本的输出)确定目标节点。请注意,RunDeck JSON格式是特定的,并且没有很好地报告读取错误。密切关注运行库用户指南-选项模型提供程序
如果这不是一种可行的方法,您可能需要考虑使用不同的工具,比如Jenkins。
发布于 2016-07-08 18:51:37
我只需为类似的目的创建一个作业--在远程节点上执行一个脚本,但将任意数量的服务器传递给该脚本。我将所有目标服务器名称转储到server.json中,并将其用作作业选项“target”中的远程URL。用户从结果下拉列表中选择任何服务器,然后运行Deck调用结果${option.target}。
在那里,我创建了一个内联脚本,并将${option.target}作为args传递:
#!/bin/env bash
OPTION_TARGET="$@"
sudo bash -c "cd /opt/some/directory/bin ; ./script.sh servers=${OPTION_TARGET}"因此,Run最终会在我已经标记的节点上调度./script.sh foo bar baz quux,并解决了问题。讲得通?
对不起,我的解决方案似乎很贴切。
https://stackoverflow.com/questions/30912312
复制相似问题