如何让Rundeck任务在通过选项输入的可变主机而非预定义节点执行?
实现Rundeck任务在动态输入主机上执行的方法
完全可以做到不用每次手动添加临时节点,下面是几种实用方案:
方案1:节点过滤器结合选项参数
- 创建任务时,先添加一个字符串类型选项(比如命名为
target_host),用于输入目标主机的IP或主机名。 - 在任务的「节点」设置环节,选择「节点过滤器」,然后在过滤规则中填入:
name: ${option.target_host}。 - 前提是Rundeck能通过SSH(或你使用的执行方式)访问该临时主机,且主机已配置好必要的执行环境(比如SSH密钥、sudo权限等)。
方案2:利用Adhoc节点动态注册
- 通过Rundeck API临时注册和删除节点,流程如下:
- 添加选项收集目标主机的必要信息(IP、用户名、密钥路径等)。
- 任务第一步执行本地脚本,调用API注册临时节点:
curl -X POST -H "Content-Type: application/json" -d '{ "node": { "name": "${option.target_host}", "hostname": "${option.target_host}", "username": "dev_user", "ssh-key-storage-path": "keys/ssh_deploy_key" } }' http://localhost:4440/api/39/projects/your_dev_project/nodes -u rundeck_admin:admin_pass - 任务最后一步添加脚本,调用API删除该临时节点,避免节点列表冗余:
curl -X DELETE http://localhost:4440/api/39/projects/your_dev_project/nodes/${option.target_host} -u rundeck_admin:admin_pass
方案3:配置动态节点源
- 如果临时主机来自云平台(比如AWS EC2、阿里云ECS),可以配置对应云服务的节点源。
- 例如配置AWS EC2节点源时,设置标签过滤规则,Rundeck会自动同步符合标签的主机作为节点;当临时主机销毁后,节点源会自动移除对应节点,全程无需手动干预。
根据你的临时主机创建方式,选择最适配的方案即可。
内容的提问来源于stack exchange,提问作者Devolus
相关产品推荐
相关产品推荐

