研究Aiops有一段时间了,目前手里有不少可落地的方案了,接下来会把这些方案全部整理到我的大模型课程里。同时,欢迎大家把你遇到的场景在评论区留言。我会在能力范围内给你提供思路和建议。
今天的案例是基于dify和Ansible的MCP来做一个运维智能体。
一、核心思路和架构
1. 角色分工
1)Dify
-
意图理解: 接收用户的自然语言指令,利用内置的 LLM(如 DeepSeek)理解用户的真实意图。 -
工具调用: 根据分解的任务,决定调用哪个外部工具。 -
对话管理: 管理与用户的交互会话,提供友好的反馈。
2)Ansible
-
任务执行: 接收来自上层的具体指令(如 ping一个主机、restart一个服务),并在目标服务器上执行这些操作。
3)MCP
-
标准化桥梁: MCP 是一个开放协议,它定义了 LLM 如何与外部工具和数据源进行安全、标准化的交互。
2. 工作流程

1)用户通过 Dify 提供的聊天界面,用自然语言发出指令,例如:“重启 db01 服务器的 MySQL 服务”。
{'host': 'db01', 'module': 'command', 'args':'systemctl restart mysql'}。ansible-runner 库,动态生成并执行一个临时的 Ansible Ad-Hoc命令:ansible db01 -m command -a "systemctl restart mysql"。db01 服务器上执行命令,并将执行结果(成功/失败、详细信息)返回给 MCP 服务器。3. 架构图

二、MCP部署与配置
步骤 1: 准备Ansible环境
这里假设已经有了一个可用的Ansible控制节点,并且其它机器已经可以通过Ansible管理。
步骤 2: 部署 Ansible MCP Server
这里需要直接部署到Ansible控制机上。
1、克隆代码
git clone https://github.com/aminglinux/ansible-mcp.gitcd ansible-mcp
2、安装依赖库
pip3 install -r requirements.txt
3、启动服务
uvicorn main:app --reload --host 0.0.0.0 --port 8080
步骤 3: 在 Dify 中配置 MCP 工具
在 Dify 的界面中,进入工具 → MCP,点击 “添加MCP服务”。
在配置中填写:
1)服务端点URL:http://<host>:8080/sse(这里host地址就是你部署Ansible MCP服务的IP地址)
2)名称、服务器标识:ansible_mcp
3)认证这里比较特殊,由于我们并没有设置认证,你可以随便写点啥都行,如果不填写没法点授权按钮。

可以看到,目前包含8个工具。

三、构建智能体
1. 在Dify创建Agent应用

2. 设置提示词
你是一个Linux运维专家,擅长Ansbile的各种操作,尤其是擅长撰写Ansible的playbook你有诸多ansbile相关的工具,其中工具的功能如下:1. list_inventory : 列出inventory2. list_hosts: 列出所有主机3. validate_playbook : 验证playbook是否有错误4. ping_hosts : 检查主机是否存活5. run_ad_hoc : 临时运行ansible任务6. generate_playbook: 生成playbook文件7. run_playbook: 运行指定的playbook另外请遵循以下规则:1. 默认你会调用./inventory.ini文件,如果有指定可以使用指定inventory文件,没有就用默认的。2. 用户需求如果比较复杂,请拆解任务,并使用合适的工具来落地需求,比如用户给一个主机名,你需要去查inventory,然后再去调用别的工具3. 当用户需要生成playbook时,请你自动生成一个playbook文本,然后赋值给data参数,并传递给generate_playbook工具4. 当用户执行playbook时,要先检查用户给的playbook文件名是否在playbooks/目录里存在,如果存在直接调用,如果不存在则需要自动生成5. 在执行playbook之前,请先确认该playbook是否有问题
3. 添加工具


四、示例说明
1. 列出所有主机

2. 查看某主机的磁盘使用情况

3. 查看系统负载




