SuperAPI AI 工具集

huawei-cloud-migration-windows-ecs

部署与运维

查看项目

更新于 11-02 04:01

技能介绍

用途

本 Skill 用于将 Windows 主机通过华为云 SMS(Server Migration Service)迁移到 ECS,提供从源端 Agent 部署、目标端资源编排、迁移任务创建与启动、同步、割接到环境清理的自动化编排能力。

主要能力

  • 支持 Windows Server 2008/2008R2/2012/2012R2/2016/2019/2022/2025 及 Win7/8.1/10/11(64位)。
  • 提供公网迁移与私网迁移两套模板(migrate.public.yaml / migrate.private.yaml)及环境变量模板(env.public.sh.example / env.private.sh.example)。
  • 双 CLI 编排:unified_migrate.py 负责清理、部署 Agent 并注册源端;sms_task.py 负责目标编排、迁移任务、同步、割接、回收;cleanup_environment.py 负责环境清理。
  • 批量主机信息从环境变量 Host_Information(JSON 数组模板)读取,旧 config/hosts.csv 保留为兼容回退。
  • 私网场景支持 Squid/gost 代理(CONNECT 仅迁移端口)。
  • 内置资源属主体系(OwnerID 指纹)与 71+ 安全规则(含红线 O1-O6)。
  • 目标编排自动创建数据盘(1:1)。
  • KooCLI 7.2.x 实测兼容:BatchStartServers 等效割接、EVS 磁盘校验 fallback、sync/cutover 枚举不支持时自动回退。

使用方式

迁移前必须先确认环境变量已设置:migration_Access_Key、migration_Secret_Access_Key、migration_password、migration_domain 以及 Host_Information。未配置前不得执行任何迁移编排。

快速自检命令:

env | grep -E '^(migration_Access_Key|migration_Secret_Access_Key|migration_password|migration_domain|Host_Information)=' >/dev/null && echo "环境变量已配置" || echo "缺少环境变量,请先配置"

环境变量模板用法:cp env.public.sh.example env.public.sh → 填入真实值 → source env.public.sh。

迁移目标模板用法:cp migrate.public.yaml migrate.yaml(或直接 --config config/migrate.public.yaml)→ 替换真实值。

Phase A(自动含源端清理):

cd scripts/windows_migration/
python3 unified_migrate.py --scenario public  --config config/migrate.yaml --json   # 公网直连
python3 unified_migrate.py --scenario private --config config/migrate.yaml          # 私网代理
python3 unified_migrate.py --scenario public  --batch env --workers 10              # 批量

Phase B:

python3 sms_task.py discover --config config/migrate.yaml
python3 sms_task.py prepare-target --config config/migrate.yaml
python3 sms_task.py create --yes && python3 sms_task.py start --yes
python3 sms_task.py wait --config config/migrate.yaml
python3 sms_task.py sync --yes && python3 sms_task.py cutover --yes
python3 sms_task.py cleanup --yes && python3 sms_task.py release --resource-type <eip|sg> --resource-id <id> --yes

环境清理:

python3 cleanup_environment.py --config config/migrate.yaml --yes

Agent 恢复入口:

python3 agent_recover.py --scenario private --config config/migrate.yaml
python3 agent_recover.py --scenario public  --config config/migrate.yaml

适用场景

  • 公网迁移:源端 Windows 可直连华为云 OBS/SMS(有公网 IP / 可路由出网)。
  • 私网迁移:源端不能直连华为云,需经跳板机(Squid/gost 代理)转发,任务层用内网 IP。
  • 单台或批量 Windows 主机迁移到 ECS。

限制

源端关键约束:

  • 文件系统/磁盘:NTFS、基本磁盘;≤23 块;系统卷必须在磁盘 1。
  • 分区空间:分区>600MB→可用≥320MB;<600MB→可用≥40MB。
  • CPU<80%;内存>256MB(迁移期间)。
  • Agent 版本:Server 2012+ → Py3 GUI(AutoIt/exe 自动化);2008/2008R2/7 → Py2 CLI。
  • 禁止:RAID / BitLocker / 动态磁盘 / 共享文件系统 / ZRAM / AD / 多节点数据库。
  • 网络端口:22 / 8899 / 8900 / 443(源端→SMS);5985/5986 WinRM;目标端 SG 仅放行迁移端口。
  • 任务名 ≤16 字符(防 SMS.7711)。
  • Py3 GUI 配置必须在交互会话:计划任务带 /it;无桌面会话直接快速失败。
  • 禁止以 SYSTEM / 普通后台进程直接启动 SMS-Agent.exe;禁止手动 schtasks /run /tn ConfigureSMSAgent。

安全红线(部分):禁止在源端执行破坏性操作;禁止弱密码;禁止跳过 syncing 校验;禁止手动创建 ECS;禁止安全组 0.0.0.0/0 全放通;AK/SK 不落盘、不输出、不入日志、不入库;WinRM 优先 HTTPS(5986),HTTP(5985) 仅内网;Windows 使用 MIGRATE_BLOCK;非属主资源禁止任何更改/删除。完整 71 条见 references/safety-rules.md。

目录结构

huawei-cloud-migration-windows-ecs/
├── SKILL.md / README.md
├── requirements.txt
├── scripts/windows_migration/
│   ├── unified_migrate.py
│   ├── sms_task.py
│   ├── preflight_check.py
│   ├── cleanup_environment.py
│   ├── cleanup_windows.py
│   ├── agent_recover.py
│   ├── run_migration.sh / run_sms_task.sh
│   ├── config/
│   ├── core/
│   ├── phases/
│   ├── scenarios/
│   ├── proxyopt/
│   └── scripts/py3|py2/
├── references/
└── templates/

参考文档

  • 安全规则清单:references/safety-rules.md(71 条)
  • 流程详解:references/migration-workflow.md
  • 故障排查:references/troubleshooting.md
  • Windows Agent 安装/自动化:references/sms-agent-guide.md、references/sms-agent-automation-guide.md