Rundeck:如何在命令中用标签动态定义scp源服务器选项
Rundeck动态配置源服务器的可行性解答
这种用标签动态指定源服务器的配置完全可行,但你当前的命令用的是手动输入的选项变量${option.SOURCE_SERVER},得改成引用节点标签相关的变量或逻辑才行。
具体调整方式可以参考下面的思路:
- 先确认你的源服务器节点有专属的标识标签(比如
backup-source),或者自定义节点属性(比如is_source_server: true),用来唯一识别源服务器。 - 替换命令里的
${option.SOURCE_SERVER}为能动态获取源服务器hostname的逻辑:
示例1:用自定义节点属性直接引用
如果源服务器节点在Rundeck中配置了自定义属性source_host(值为源服务器的hostname),可以直接在命令中引用该变量:
bash -c "scp -r rundeck@${node.source_host}:/srv/tmp/backup/FileStore.$(date +\"%Y%m%d.tar.gz\") rundeck@${node.hostname}:/srv/tmp/"
示例2:通过标签筛选获取源服务器
如果源服务器节点带有backup-source标签,可以用Rundeck自带的节点查询工具获取其hostname,再执行scp:
bash -c "SOURCE_HOST=\$(rundeck nodes list -l backup-source -F hostname | head -n1); scp -r rundeck@\$SOURCE_HOST:/srv/tmp/backup/FileStore.$(date +\"%Y%m%d.tar.gz\") rundeck@${node.hostname}:/srv/tmp/"
注意事项
- 确保Rundeck执行作业的用户有权限访问节点数据(比如执行
rundeck nodes list命令的权限)。 - 若存在多个带相同标签的源服务器,
head -n1会选取第一个,可根据实际需求调整筛选逻辑。 - 提前配置好源服务器与目标节点之间的SSH免密登录,避免scp操作时需要手动输入密码。
内容的提问来源于stack exchange,提问作者Burps
相关产品推荐
相关产品推荐

