返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

Aiops探索:基于 Dify Ansible MCP Server 的智能运维实践

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 22:36 |阅读模式 打印 上一主题 下一主题

研究Aiops有一段时间了,目前手里有不少可落地的方案了,接下来会把这些方案全部整理到我的大模型课程里。同时,欢迎大家把你遇到的场景在评论区留言。我会在能力范围内给你提供思路和建议。

今天的案例是基于dify和Ansible的MCP来做一个运维智能体。


一、核心思路和架构

1. 角色分工

1)Dify

  • 意图理解: 接收用户的自然语言指令,利用内置的 LLM(如 DeepSeek)理解用户的真实意图。
  • 工具调用: 根据分解的任务,决定调用哪个外部工具。
  • 对话管理: 管理与用户的交互会话,提供友好的反馈。

2)Ansible

  • 任务执行: 接收来自上层的具体指令(如ping一个主机、restart一个服务),并在目标服务器上执行这些操作。

3)MCP

  • 标准化桥梁: MCP 是一个开放协议,它定义了 LLM 如何与外部工具和数据源进行安全、标准化的交互。
工具封装: 我们将 Ansible 的常用模块(如 command, playbook)封装成 MCP 标准的“工具”。

2. 工作流程

1)用户通过 Dify 提供的聊天界面,用自然语言发出指令,例如:“重启 db01 服务器的 MySQL 服务”。

2)LLM 分析指令,识别出关键信息:动作(restart)、目标主机(db01)、服务名(mysql)。
3)LLM 查看其可用的 MCP 工具列表和功能说明,确定使用使用run_ad_hoc工具执行指令“systemctl restart mysql”。
4)LLM 通过 MCP 协议调用run_ad_hoc工具,并传入参数{'host': 'db01', 'module': 'command', 'args':'systemctl restart mysql'}
5)MCP Ansible服务器接收到调用请求,解析参数。
6)服务器内部使用ansible-runner库,动态生成并执行一个临时的 Ansible Ad-Hoc命令:ansible db01 -mcommand-a "systemctl restart mysql"
7)Ansible 在db01服务器上执行命令,并将执行结果(成功/失败、详细信息)返回给 MCP 服务器。
8)MCP 服务器将 Ansible 的输出格式化为结构化数据,通过 MCP 协议返回给 Dify 中的 LLM。
9)LLM 接收到执行结果,将其组织成自然语言,例如:“已成功在 db01 服务器上重启 MySQL 服务。”,并最终呈现给用户。

3. 架构图


二、MCP部署与配置

步骤 1: 准备Ansible环境

这里假设已经有了一个可用的Ansible控制节点,并且其它机器已经可以通过Ansible管理。

步骤 2: 部署 Ansible MCP Server

这里需要直接部署到Ansible控制机上。

1、克隆代码

gitclonehttps://github.com/aminglinux/ansible-mcp.gitcdansible-mcp

2、安装依赖库

pip3install-rrequirements.txt

3、启动服务

uvicornmain:app--reload--host0.0.0.0--port8080

步骤 3: 在 Dify 中配置 MCP 工具

在 Dify 的界面中,进入工具 → MCP,点击 “添加MCP服务”。

在配置中填写:

1)服务端点URL:http://<host>:8080/sse(这里host地址就是你部署Ansible MCP服务的IP地址)

2)名称、服务器标识:ansible_mcp

3)认证这里比较特殊,由于我们并没有设置认证,你可以随便写点啥都行,如果不填写没法点授权按钮。

点击“添加并授权”

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


三、构建智能体

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">1. 在Dify创建Agent应用

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">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是否有问题

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">3. 添加工具


四、示例说明

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;visibility: visible;">1. 列出所有主机

图片

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">2. 查看某主机的磁盘使用情况

图片

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">3. 查看系统负载

图片
4. 给指定机器安装nginx
图片
这个任务先后调用了6次工具,它会自动创建playbook文件,检查playbook文件是否有问题,再去执行该playbook。整体上还是非常智能的。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ