一、准备Ansible环境

如果你的电脑内存足够大(不少32G),可以开虚拟机做此部分使用,否则需要到阿里云购买按量付费的抢占式实例,实验完及时销毁,以免产生费用。

配置建议:

CPU:2C

内存:4G

磁盘:40G

操作系统: Rocky9

1、安装Ansible

系统默认python3版本为3.9,版本偏老,我们安装python3.12

dnf install -y python3.12 python3.12-pip python3.12-libs

用pip安装ansible

python3.12 -m pip install ansible

2、配置Ansible

两台机器,其中一台机器作为控制端,另外一台作为被控制端

设置主机名

hostnamectl set-hostname aming01   ##控制端
hostnamectl set-hostname aming02   ##被控制端

编写hosts,两台机器都执行

编辑/etc/hosts 文件,最后面增加:

192.168.186.134 aming01
192.168.186.135 aming02

做免密登录,在控制端执行

## 生成密钥对
ssh-keygen -t rsa

## 将公钥拷贝到被控制机
ssh-copy-id root@aming01   ## 本机到本机的免密
ssh-copy-id root@aming02  ## 本机到被控制端

创建主机清单配置,控制端执行

mkdir -p /etc/ansible
vi /etc/ansible/hosts  ##最后面增加
[coze]
aming01
aming02

测试

ansible all --list-hosts   ##列出所有主机组合主机
ansible aming02 -m command -a 'hostname'  ##查看aming02主机名

5.2 部署Ansible MCP服务器

说明: 该MCP由我借助Codex利用Python编写,开源,大家可以自行修补

地址:https://github.com/aminglinux/ansible-mcp.git

1、克隆代码

git clone https://github.com/aminglinux/ansible-mcp.git

2、安装依赖库

cd ansible-mcp
pip3 install -r requirements.txt

3、启动服务

nohup uvicorn main:app --reload --host 0.0.0.0 --port 8080 >/tmp/ansible_mcp.log 2>/tmp/ansible_mcp.log &

5.3 Dify中配置Ansible MCP

菜单栏点击“工具”,再点击“MCP”,然后添加MCP服务

image/png

1、服务端点: http://你部署mcp的机器ip:8080/sse

2、名称、服务器标识:ansible-mcp

3、认证:无需认证

5.4 在Dify中创建Agnets应用

image/png

设置提示词

你是一个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是否有问题

添加工具

image/png

测试示例:

1、列出所有主机

2、查看指定主机磁盘使用情况

3、查看系统负载

4、给指定机器安装nginx