用 KooCLI 全自动部署 2048 到华为云 ECS:从创建到清理的完整脚本化实践
背景:手点控制台部署一台静态站点服务器,涉及 VPC、安全组、镜像、规格、EIP、cloud-init 七八个环节,容易漏项且难复现。本文记录一次纯命令行(KooCLI / hcloud)的全自动部署与清理实践。
一、为什么用 cloud-init 而不是登录后配置
传统做法是创建实例 → 等待 ACTIVE → SSH 登录 → 手工装 Nginx → 上传文件。链路长、易断。
更好的方式是把所有初始化塞进 user_data,实例第一次启动时自动执行完毕:
#!/bin/bash
set -e
dnf install -y nginx
mkdir -p /usr/share/nginx/html/hc-activity
cat > /usr/share/nginx/html/hc-activity/index.html <<'HTML'
...单文件游戏/页面...
HTML
systemctl enable --now nginx
把脚本 base64 编码后通过 --server.user_data 传入,实例起来时站点就已经能访问了,无需再 SSH。
二、创建前必须先探资源售卖状态
这一步最容易踩坑:
- 规格(flavor)在目标可用区可能售罄,要先 ListFlavors 按 availability_zone 过滤确认
- 磁盘类型差异很大:SATA 常售罄,优先 SAS / GPSSD
- 镜像要选 yum/dnf 系的 gold 镜像,才能直接 dnf install
直接创建往往报「资源不足」,多试几次才能撞上可用组合,不如提前查。
三、网络只需三步
1. 复用默认 VPC 和子网(新建子网记得补华为云内网 DNS 100.125.1.250、100.125.129.250,否则域名解析不了)
2. 建安全组,入方向放通 TCP 80(0.0.0.0/0);22 端口按需临时放开,调试完删掉
3. 创建 EIP 并绑定,绑定要用 port_id + associate_instance_type=PORT,直接用实例 ID 会失败
四、验证与清理同样重要
部署完成不等于结束。用 curl -sI 验证返回 200 且 body 是预期内容,这一步能挡住「Nginx 起了但站点 404」这类问题。
清理必须彻底,按依赖顺序反着来:
1. 解绑并删除 EIP
2. 删除带宽(PER 共享带宽随 EIP 释放,仍要复查残留)
3. 删除 ECS 实例
4. 确认云硬盘随实例释放
5. 删除安全组
6. VPC / 子网若是默认资源则保留(不计费)
最后逐项复查:ListServersDetails、ListPublicips、ListBandwidths、ListSecurityGroups 全部确认不含本次创建的资源,才算真正停止计费。
五、小结
把「创建 → 初始化 → 验证 → 清理」全部脚本化,带来的不只是效率:整个流程可重复、可审计、不会因为漏删一台机器悄悄扣费。对一次性任务尤其值得。
- 点赞
- 收藏
- 关注作者
评论(0)