CloneDeploy:开源终端镜像批量部署工具,服务端可部署在 Windows / Linux;客户端依靠 PXE+iPXE 引导,基于 WinPE / 定制 Linux live 环境完成磁盘镜像捕获、部署、多播分发,对标 FOG‑Project、Clonezilla DRBLGitHub。GitHub:cdadmin/clonedeploy,后端 C#,Web 管理界面,数据库 SQLite

CloneDeploy 拆解|底层原理|依赖文件|依赖关系|逻辑链路|配套链|边界|自动化流水线

CloneDeploy:开源终端镜像批量部署工具,服务端可部署在 Windows / Linux;客户端依靠 PXE+iPXE 引导,基于 WinPE / 定制 Linux live 环境完成磁盘镜像捕获、部署、多播分发,对标 FOG‑Project、Clonezilla DRBLGitHub。GitHub:cdadmin/clonedeploy,后端 C#,Web 管理界面,数据库 SQLite/MSSQL。

一、底层原理

CloneDeploy 不是独立完整 PXE 栈,是任务调度 + 元数据管理平台,复用底层标准网络引导与镜像工具链。

  1. 管理平面ASP.NET Web 后端,维护主机 (MAC)、镜像、任务、站点分组、部署配置;数据库存储全部元数据,不存储镜像二进制数据,镜像存放于文件共享目录。
  2. 引导平面:依赖 DHCP 下发 PXE 选项,iPXE 下载引导环境(WinPE 或定制 Linux Live);客户端启动后连接 CloneDeploy API 拉取部署任务。
  3. 镜像层:支持块级别镜像(disk/partition);镜像捕获 / 还原实际调用底层工具:ntfsclonepartclonedd;Windows 场景依赖 WinPE+ImageX/DISM。
  4. 传输层:支持单播 HTTP、SMB,Multicast 多播批量分发,多台终端并行写入镜像,降低服务器带宽压力。
  5. 客户端工作模式:终端 PXE 启动 → 加载轻量 Live 环境 → 访问 API 获取任务指令 → 从共享存储拉取镜像 → 磁盘写入 → 执行后置脚本(计算机名、SID 处理、驱动注入)→ 重启本地硬盘启动。

关键点:CloneDeploy 本身不实现 TFTP、DHCP、SMB/NFS,仅做业务调度;这些网络服务由系统底层组件提供。

二、依赖文件

🔹Windows 服务端(IIS 部署)

文件 路径 作用
CloneDeploy Web 站点文件 C:\inetpub\wwwroot\clonedeploy ASP.NET Web 管理界面、API 接口、JS/CSS 静态资源
CloneDeploy‑Services.exe 服务程序,Windows 服务 后台任务调度、多播服务、客户端通信、任务状态上报
CloneDeploy.db 默认 SQLite 数据库 主机、镜像、任务、配置元数据库;可切换 MSSQL
boot files(iPXE、pxeboot.0、ipxe.efi) TFTP 根目录 PXE 引导二进制文件,BIOS/UEFI 双模式
WinPE boot.wim 镜像仓库目录 Windows 客户端 PE 引导环境
clone‑live 内核、initrd TFTP 目录 Linux live 客户端内核与内存盘
镜像仓库目录(SMB 共享) 自定义路径 存放 partclone 镜像分片、配置脚本,数据库只存元数据指针

🔹Linux 服务端

  • CloneDeploy‑Services mono 运行;Nginx/Apache 承载 Web;TFTP、dnsmasq、samba/nfs 为系统包。
  • 依赖 mono 运行时,将.NET 程序运行于 Linux。

🔹客户端侧(PXE 引导后)

  • iPXE 固件;WinPE (boot.wim) / Linux live (vmlinuz+initrd);partclone/ntfsclone 工具集;wget/curl;多播接收客户端。

三、依赖关系

1. 系统服务依赖

  1. DHCP:强制依赖。下发 IP、Option66 (next‑server)、Option67 (引导文件名);可内置 dnsmasq,也可使用现有局域网 DHCP(域控制器 DHCP)。
  2. TFTP 服务:强制依赖。传输 iPXE、内核、initrd 小文件;不负责传输大镜像。
  3. Web 服务 (IIS/Nginx/Apache):WebUI + REST API,客户端 live 环境通过 HTTP 获取任务。
  4. SMB / HTTP / NFS:镜像二进制数据传输;Windows 服务端优先 SMB;Linux 端 NFS/SMB 均可。
  5. Multicast 多播服务:CloneDeploy‑Services 内置多播服务;交换机需要开启多播支持(IGMP Snooping)。

2. 软件栈依赖

  • Windows:.NET Framework,IIS,SQLite,可选 MSSQL;
  • Linux:mono‑complete,dnsmasq,tftp‑hpa,samba,nginx;
  • 数据库:SQLite 默认,生产环境推荐 MSSQL。

3. 逻辑依赖链

BIOS/UEFI(PXE ROM) → DHCP → TFTP(iPXE) → WebAPI(CloneDeploy) → 获取任务 → SMB/HTTP拉取镜像 → partclone写入磁盘 → 后置脚本 → 本地硬盘启动

四、配套链

  1. 固件层:BIOS/UEFI,网卡 PXE ROM;关闭 SecureBoot 会提升兼容性;UEFI 需要ipxe.efi,BIOS 需要undionly.kpxe
  2. 网络层:千兆网络;交换机支持 IGMP;防火墙放行端口:UDP 67/68 (DHCP),69 (TFTP);TCP80 (Web);SMB 445;多播 UDP 端口。
  3. 镜像制作配套
    • Windows 参考机:sysprep /generalize系统通用化,清除 SID,卸载冲突驱动;
    • Linux 参考机:清理 udev 网卡规则,重置主机名;
  4. 存储配套:高速存储存放镜像库;镜像目录必须开放 SMB 读写权限;
  5. 后置工具链:脚本引擎,支持 PowerShell/Bash,部署完成自动修改主机名、注入驱动、加入域、执行自定义任务;
  6. 运维配套:Web 管理页面;API 可二次开发;任务日志;主机资产清单。

五、边界(限制、坑点)

  1. 网络边界
    • 跨 VLAN 部署复杂:DHCP 中继需要正确转发 Option66/67;跨网段多播很难生效,多播部署仅限同一广播域;跨 VLAN 只能单播。
    • TFTP 协议本身低速,大文件不能走 TFTP,仅用于引导小文件。
  2. 镜像边界
    • 块级别镜像,源磁盘与目标磁盘大小需要匹配;不支持自动弹性调整分区(依赖 partclone 能力)。
    • Windows 镜像捕获依赖 WinPE 环境;UEFI/GPT、MBR BIOS 镜像不能混用。
  3. 数据库与存储边界
    • SQLite 不适合大规模机房(>200 台终端并发),会锁库,需要切换 MSSQL。
    • 数据库只存元数据,镜像文件独立存放;手动删除镜像文件,数据库记录不会自动清理,产生僵尸记录。
  4. 多播边界
    • 一台终端故障,会拖慢整个多播组;一台掉线,整组任务失败。
    • 老旧交换机 IGMP Snooping 配置错误,会造成广播风暴。
  5. 系统边界
    • Windows 服务端需要 IIS 完整权限;Linux 端完全依赖 mono,mono 版本问题会引发兼容性 bug。
    • SecureBoot 开启环境,iPXE 引导会失败;部分新硬件缺少 WinPE 驱动,客户端无法识别网卡磁盘。
  6. 功能边界
    • 无内置 DHCP 完整服务,现有企业 DHCP 环境需要手动修改作用域选项;
    • 没有内置 PXE 代理,不能像 Windows WDS 完整接管;
    • 无增量镜像,每次部署全量块拷贝。

六、自动化流水线(完整端到端流程)

阶段 1:服务端初始化

  1. Windows/Linux 安装 CloneDeploy,配置 IIS/Nginx,安装 TFTP/SMB/DHCP (dnsmasq)。
  2. 配置 TFTP 根目录,上传 iPXE 引导文件;配置 SMB 镜像仓库目录。
  3. 初始化数据库,Web 后台配置站点、子网、多播参数。

阶段 2:制作基准镜像

  1. 准备参考主机,安装系统、软件,执行系统通用化(Windows sysprep,Linux 清理硬件规则)。
  2. 参考机 PXE 网络启动进入 CloneDeploy Live 环境。
  3. 执行捕获镜像任务:partclone 读取磁盘,分片镜像写入 SMB 镜像仓库;元数据写入数据库。

阶段 3:批量部署任务(自动化)

  1. Web/API 录入目标主机(MAC 地址),绑定镜像,配置主机名、域加入、后置脚本。
  2. 终端开机 PXE 启动:
    1. DHCP 分配 IP,下发 next‑server、引导文件名;
    2. TFTP 下载 iPXE;iPXE 访问 CloneDeploy WebAPI 拉取任务;
    3. 下载 WinPE/Linux Live 内核;
    4. Live 环境启动,再次调用 API 确认部署任务;
    5. 多播 / 单播拉取镜像分片,partclone 写入本地磁盘;
    6. 部署完成执行后置脚本:修改主机名、注入驱动、加入 AD 域;
    7. 修改本地硬盘引导,终端重启,从本地硬盘启动。

阶段 4:任务状态闭环

  1. 客户端持续上报状态到 Web API;
  2. Web 界面展示进度、成功 / 失败日志;
  3. API 可对接运维平台,读取任务结果,实现完全自动化。

阶段 5:运维流水线

  • 镜像版本管理;主机资产自动登记;批量任务调度;日志导出;API 二次开发。

七、同类对标简表

方案 架构特点
CloneDeploy C#.NET,Web 管理;支持 Win/Linux 服务端;multicast 多播;依赖 partclone/dism;适合中小机房
FOG‑Project PHP+Linux;生态成熟;大规模教育机房常用
Clonezilla‑DRBL 纯命令行,无 Web 界面,适合高级运维
Microsoft WDS Windows 原生,依赖 AD、DHCP,wim 镜像,企业域环境

CloneDeploy 是一款基于 Linux 的开源系统部署解决方案,但也支持在 Windows 环境下安装和使用。以下是在 Windows 环境下安装 CloneDeploy 的步骤:

  1. 准备环境:在安装 CloneDeploy 前,需要先在 Windows 操作系统中安装好 Apache、PHP 和 MySQL 服务。推荐使用 XAMPP 或 WAMP 等集成开发环境来搭建环境。

  2. 下载 CloneDeploy 安装文件:用户可以从 CloneDeploy 官网或 GitHub 仓库下载最新的安装文件。安装文件主要包括 CloneDeploy 服务器和客户端软件。

  3. 安装 CloneDeploy 服务器:将下载好的 CloneDeploy 安装文件解压缩到指定目录下,然后按照官方安装指南的要求修改配置文件,并在 Apache 服务器中配置虚拟主机。配置完成后,运行安装脚本,即可自动完成安装过程。

  4. 配置 CloneDeploy 服务器:安装完成后,需要对 CloneDeploy 服务器进行配置。用户可以通过 Web 界面设置 DHCP、TFTP、PXE、HTTP 和 Samba 等网络服务,以及创建镜像和分发任务。

  5. 创建镜像和分发任务:在配置完成后,用户可以根据需要创建新的分发任务,并将操作系统镜像上传到服务器。可以使用 CloneDeploy 提供的工具将现有的系统转换为镜像文件,并保存到服务器上。

  6. 安装客户端软件:要使用 CloneDeploy 进行系统安装,需要在目标计算机上安装相应的客户端软件。CloneDeploy 支持多种客户端操作系统和硬件平台,用户可以根据需要选择合适的客户端软件。

总的来说,CloneDeploy 是一款功能强大、易于使用的系统部署解决方案。在按照上述步骤完成安装和配置后,用户可以方便地进行系统安装、还原和克隆等操作。

以下是 CloneDeploy 的使用操作步骤:

  1. 创建客户端启动介质:在使用 CloneDeploy 进行系统部署前,需要先为目标计算机创建一个启动介质。用户可以使用 CloneDeploy 提供的工具来创建启动介质,也可以使用其他制作启动盘的工具。

  2. 启动目标计算机:将创建好的启动介质插入目标计算机,并在开机时选择从该介质启动。启动后,系统会自动进入 CloneDeploy 客户端。

  3. 选择分发任务:在客户端界面上,用户可以看到已经创建好的分发任务列表。选择需要部署的系统和对应的任务,然后点击“开始”按钮。

  4. 系统部署:在确认开始部署后,系统会自动下载和安装对应的镜像文件,并进行系统部署过程。

  5. 完成部署:在部署完成后,系统会自动重启目标计算机,并自动进入新安装的系统。此时,用户需要按照提示设置系统相关信息,如用户名、密码等。

除了系统部署外,CloneDeploy 还支持对现有系统的备份、还原和克隆等操作。用户可以在 Web 界面上创建相应的任务,并在客户端上进行操作。总的来说,CloneDeploy 是一款功能强大、易于使用的系统部署解决方案。

posted @ 2023-05-31 11:43  suv789  阅读(313)  评论(0)    收藏  举报