如何将现有运行中的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
相关产品推荐
相关产品推荐

