用途
本 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