IPI配置器MCP服务器
用于OpenShift裸机IPI(安装程序配置的基础设施)集群配置的MCP(模型上下文协议)服务器。此工具可帮助您生成、验证和管理install-config.yaml文件,测试BMC连接,验证网络配置,并指导您完成集群安装过程。
特性
- 安装配置管理:生成并验证install-config.yaml文件
- BMC测试:测试Redfish/IPMI BMC连接
- 网络验证:验证CIDR范围、VIP和DNS配置
- 集群生命周期:提取安装程序、创建清单和管理安装
- 模板:用于Compact和HA部署的预构建模板
建筑
ipi-provisioner-mcp/
├── mcp_server/
│ ├── config.py # Configuration and environment variables
│ ├── main.py # FastMCP server setup
│ ├── models/ # Pydantic data models
│ │ ├── install_config.py # InstallConfig models
│ │ ├── baremetal.py # Baremetal host models
│ │ └── network.py # Network configuration models
│ ├── services/ # Business logic
│ │ ├── validation_service.py # Config validation
│ │ ├── bmc_service.py # BMC operations
│ │ ├── network_service.py # Network validation
│ │ └── openshift_service.py # Installer operations
│ ├── tools/ # MCP tool implementations
│ │ ├── config_tools.py # Config generation/validation
│ │ ├── bmc_tools.py # BMC testing
│ │ ├── network_tools.py # Network validation
│ │ └── cluster_tools.py # Cluster lifecycle
│ └── utils/ # Utilities
│ ├── yaml_handler.py # YAML operations
│ └── templates.py # Template management
├── templates/ # Install-config templates
│ ├── baremetal-ipi-compact.yaml
│ └── baremetal-ipi-ha.yaml
└── tests/ # Unit tests可用的MCP工具
配置生成和验证(6个工具)
validate_install_config-验证install-config.yaml内容generate_install_config-根据参数生成install-config.yamlget_config_template-获取预构建模板list_config_templates-列出所有可用模板create_baremetal_host_entry-为安装配置创建主机条目
BMC操作(4个工具)
test_bmc_connection-测试单个BMC连接(Redfish)validate_bmc_addresses-验证多个BMC地址parse_bmc_address-解析并验证BMC地址格式generate_bmc_test_script-为BMC测试生成bash脚本
网络验证(8个工具)
validate_network_cidr-验证CIDR表示法check_ip_in_network-检查IP是否在CIDR范围内check_network_overlap-检查两个网络是否重叠validate_vip_configuration-验证VIP配置generate_dns_config-为群集生成DNS记录calculate_cluster_network_capacity-计算吊舱网络容量generate_network_diagram-生成网络图validate_complete_network_config-全面的网络验证
集群生命周期(6个工具)
check_installer_binary-检查是否存在openshift安装extract_openshift_installer-从发布映像中提取安装程序create_installation_manifests-创建Kubernetes清单prepare_cluster_installation-准备安装命令prepare_cluster_destroy-准备集群销毁命令get_installation_status-获取安装状态get_installation_logs-获取安装日志
安装
cd /Users/jhajyahy/mcp/ipi-provisioner-mcp
uv sync # Creates venv and installs dependencies
source .venv/bin/activate # On Windows: .venv\Scripts\activate配置
环境变量(可选)
# OpenShift Configuration
export OPENSHIFT_RELEASE_IMAGE="quay.io/openshift-release-dev/ocp-release:4.17.0-x86_64"
export PULL_SECRET_PATH="$HOME/pull-secret.json"
export SSH_KEY_PATH="$HOME/.ssh/id_rsa.pub"
# MCP Transport (default: stdio)
export MCP_TRANSPORT="stdio" # or "sse" for web-based integration
export MCP_HOST="127.0.0.1" # for sse transport
export MCP_PORT="8000" # for sse transportMCP客户端配置
克劳德桌面/光标IDE
添加到您的 ~/.config/claude-desktop/mcp.json 或 ~/.cursor/mcp.json:
{
"mcpServers": {
"ipi-provisioner": {
"command": "uv",
"args": ["run", "python", "/Users/jhajyahy/mcp/ipi-provisioner-mcp/main.py"],
"description": "IPI Cluster Provisioning Assistant for OpenShift Baremetal",
"env": {
"OPENSHIFT_RELEASE_IMAGE": "quay.io/openshift-release-dev/ocp-release:4.17.0-x86_64",
"PULL_SECRET_PATH": "/path/to/pull-secret.json",
"SSH_KEY_PATH": "/path/to/id_rsa.pub"
}
}
}
}使用示例
1.列出可用模板
User: List available install-config templates响应显示了带有描述的Compact和HA模板。
2.生成安装配置
User: Generate an install-config for a 3-master HA cluster named 'prod-cluster'
with base domain 'example.com', API VIP 192.168.1.10, Ingress VIP 192.168.1.113.验证安装配置
User: Validate this install-config.yaml:
[paste your config]返回验证错误、警告和摘要。
4.测试BMC连接
User: Test BMC connection to redfish://192.168.1.100 with username admin and password secret5.验证网络配置
User: Validate network config with cluster CIDR 10.128.0.0/14, service CIDR 172.30.0.0/16,
machine CIDR 192.168.1.0/24, API VIP 192.168.1.10, Ingress VIP 192.168.1.116.生成DNS配置
User: Generate DNS config for cluster 'ocp' with base domain 'example.com',
API VIP 192.168.1.10, Ingress VIP 192.168.1.11, and hosts:
- master-0 with IP 192.168.1.20
- master-1 with IP 192.168.1.21
- master-2 with IP 192.168.1.22这将为所有群集组件生成A和PTR记录,包括API VIP、Ingress VIP和所有主机。
7.提取OpenShift安装程序
User: Extract openshift-install from release image
quay.io/openshift-release-dev/ocp-release:4.17.0-x86_648.检查安装状态
User: Get installation status for /path/to/install-dir常见工作流
工作流1:验证现有配置
- 验证配置:
validate_install_config(yaml_content) - 验证网络:
validate_complete_network_config(...) - 验证BMC:
validate_bmc_addresses(hosts) - 生成DNS配置:
generate_dns_config(...)
工作流程2:安装故障排除
- 检查状态:
get_installation_status(install_dir) - 获取日志:
get_installation_logs(install_dir, lines=100) - 验证网络:
validate_complete_network_config(...) - 测试BMC:
validate_bmc_addresses(hosts)
测试
运行测试套件:
uv run pytest tests/ -v模板
可用模板
- 裸金属-ipi紧凑型yaml -紧凑型集群
- 3个主节点(也充当workers) - 需要API和入口贵宾 - 适用于资源受限的环境
- 裸金属锂离子电池 -高可用性
- 3个主节点 - 2+个专用工作节点 - 需要API和入口贵宾 - 生产就绪配置
网络要求
机器网络
- 裸机主机的物理网络
- 包含API VIP和入口VIP(用于HA)
- 示例:192.168.1.0/24
集群网络(Pod网络)
- 吊舱间通信的虚拟网络
- 示例:10.128.0.0/14
- 每个节点有一个/23子网(每个节点510个IP)
服务网络
- Kubernetes服务的虚拟网络
- 示例:172.30.0.0/16
DNS要求(HA/Compact)
A记录
api..→ API VIP*.apps..→ 入口VIP(通配符).→ 主机IP(每个群集节点)
PTR记录(反向DNS)
- API VIP→
api.. - 每个主机IP→
.
域为“Example.com”的集群“ocp”的示例:
# A Records
api.ocp.example.com. A 10.1.235.200
*.apps.ocp.example.com. A 10.1.235.201
master-0.example.com. A 10.1.235.25
master-1.example.com. A 10.1.235.26
master-2.example.com. A 10.1.235.27
# PTR Records
200.235.1.10.in-addr.arpa. PTR api.ocp.example.com.
25.235.1.10.in-addr.arpa. PTR master-0.example.com.
26.235.1.10.in-addr.arpa. PTR master-1.example.com.
27.235.1.10.in-addr.arpa. PTR master-2.example.com.BMC要求
支持的BMC类型
- 红鱼(推荐)
- 红鱼虚拟媒体
- 智能平台管理接口
- iDRAC虚拟介质
BMC地址格式
- 红鱼:
redfish://192.168.1.100或redfish+https://192.168.1.100:443 - IPMI:
ipmi://192.168.1.100
故障排除
常见问题
- BMC连接失败
- 使用 test_bmc_connection 验证连接 - 检查BMC凭据 - 验证与BMC的网络连接
- 网络验证错误
- 使用 validate_complete_network_config 检查是否有重叠 - 确保VIP在机器网络范围内 - 验证DNS配置是否正确
- 安装失败
- 使用 get_installation_logs 检查日志 - 验证所有BMC是否可用 - 检查网络配置 - 确保DNS记录存在(适用于HA)
贡献
欢迎投稿!请确保:
- 所有测试均通过:
uv run pytest tests/ -v - 代码遵循现有模式
- 添加新功能的测试
许可证
Apache 2.0
______________________________________________________________________
专为OpenShift金属平台团队打造
