You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将现有运行中的Ansible项目集成到Rundeck?

将现有Ansible项目集成到Rundeck的实操方案

背景

我手头有一套已经稳定运行的Ansible项目,目录结构包含:/inventory/hosts.ini、/roles(内含60个角色)、playbook1、playbook2以及ansible.cfg等配置文件。现在希望直接把这套项目集成到Rundeck中,而非从零搭建一套新流程。之前尝试用rd-cli执行了一系列命令创建项目,但未达到预期效果,也没搞懂操作逻辑。

我尝试过的命令(中文注释版)

# 安装Rundeck CLI工具
sudo apt-get install rundeck-cli

# 配置Rundeck API密钥环境变量
export RD_TOKEN="rundeck-你的API密钥"

# 配置Rundeck服务器地址环境变量
export RD_URL="http://rundeck服务器地址:端口"

# 定义项目名称
project_name="你的项目名称"

# 创建Rundeck项目
rd projects create -p $project_name -- \
    --project.label="你的项目显示名称" \
    --project.ssh-keypath=/home/rundeck/.ssh/id_rsa

# 配置资源模型源
rd projects configure update -p $project_name -- \
    --resources.source.1.type=url \
    --resources.source.1.config.url=/home/rundeck/projects/$project_name/resources.d

# 上传SSH密钥到Rundeck存储
# 指定SSH私钥文件路径
private_key_file_path="/你的SSH私钥文件路径"

# 读取私钥文件内容
private_key=$(cat $private_key_file_path)

# 通过API将密钥存入Rundeck密钥存储
curl -H "X-Rundeck-Auth-Token: $RD_TOKEN" -X POST --data "$private_key" \
     -H "Content-Type: application/octet-stream" \
     $RD_URL/api/27/storage/keys/rundeck

# 手动添加节点配置
# 定义节点基础信息
node_name="node1"
node_hostname="节点的主机名"
node_username="节点的登录用户名"

# 写入节点YAML配置文件
cat > /home/rundeck/projects/$project_name/resources.d/$node_name.yaml << EOL
$node_name:
  nodename: $node_name
  hostname: $node_hostname
  description: ''
  username: $node_username
  osFamily: unix
  ssh-key-storage-path: keys/rundeck
EOL

问题修正与正确集成步骤

1. 修复资源模型源配置错误

你用了url类型的资源源,但指向的是本地目录,应该改用directory类型:

rd projects configure update -p $project_name -- \
    --resources.source.1.type=directory \
    --resources.source.1.config.directory=/home/rundeck/projects/$project_name/resources.d \
    --resources.source.1.config.filePattern=.*\.yaml

2. 规范密钥上传方式

用rd-cli上传密钥比curl更简便且不易出错:

rd keys create -t private -p keys/rundeck -f $private_key_file_path

3. 直接复用现有Ansible Inventory

无需手动创建节点YAML,直接把现有hosts.ini作为Rundeck的资源源:

rd projects configure update -p $project_name -- \
    --resources.source.1.type=ansible \
    --resources.source.1.config.inventoryFile=/path/to/your/ansible/inventory/hosts.ini \
    --resources.source.1.config.ansibleConfig=/path/to/your/ansible/ansible.cfg

4. 集成Ansible Playbook

在Rundeck中创建作业时,选择Ansible Playbook类型,直接指定现有项目中的playbook路径(如/path/to/your/ansible/playbook1),同时配置ANSIBLE_CONFIG等必要环境变量。

5. 确保角色目录可访问

保证Rundeck用户能读取Ansible项目的/roles目录,可通过软链接映射到Rundeck项目目录:

ln -s /path/to/your/ansible/roles /home/rundeck/projects/$project_name/roles

内容的提问来源于stack exchange,提问作者Dr.JoeBeer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:20:27