mcpField
H
huawei-cloud-devkit-webui-create

huawei-cloud-devkit-webui-create

github.com/huaweicloud云与 DevOps5989 次安装2 天前更新
代码仓库

关于 huawei-cloud-devkit-webui-create

huawei-cloud-devkit-webui-create 指导云运维人员创建 Kunpeng aarch64 ECS,并以 WebUI 模式安装 Kunpeng DevKit。它分离 Python SDK、hcloud CLI 和 Paramiko 的操作,并让 ECS 密码仅保留在 Python 内存和华为云 KMS 中。

主要功能

  1. 01创建 Kunpeng aarch64 ECS
  2. 02使用 Python SDK 和 hcloud 管理云资源
  3. 03通过 KMS 加密并保管密码
  4. 04通过 Paramiko SSH 安装 DevKit
  5. 05配置 EIP 和安全组访问
  6. 06验证安装后再清理 KMS

适用场景

  1. 01为 DevKit 准备 Kunpeng ECS
  2. 02以 WebUI 模式安装 DevKit
  3. 03避免 ECS 凭据出现在 Shell 参数和日志中
  4. 04保留 KMS 密钥以便重试安装

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/huaweicloud/huaweicloud-skills --skill huawei-cloud-devkit-webui-create

安装后在 Claude Code 中输入/huawei-cloud-devkit-webui-create确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
acceptance-criteria.md
cli-installation-guide.md
devkit-installation-guide.md
devkit-installation-workflow.md
ecs-creation-guide.md
iam-policies.md
polling-progress-guide.md
prerequisites.md
security-design.md
ssh-connection-guide.md
troubleshooting.md
verification-method.md
scripts/
auto_install_devkit.expect
create_ecs_and_setup_devkit.py
install_devkit_webui.sh
poll_devkit_status.py
verify_devkit.sh

详细介绍

Kunpeng DevKit WebUI 安装技能

概述

通过 Python SDK(ECS + KMS)创建 Kunpeng(aarch64)ECS 实例,使用 hcloud CLI 进行云端操作(EIP、VPC),使用 Python paramiko SSH 连接并以 WebUI 模式安装 Kunpeng DevKit。密码始终留在 Python 进程内存中。

工具分离原则:

  • Python SDK — 创建 ECS + KMS 加密/解密/删除(密码始终留在 Python 进程内存中,不会出现在 ps -ef 中)
  • hcloud CLI — 所有其他云端操作(创建/绑定 EIP、查询 VPC、安全组)
  • Python paramiko — SSH 连接 + 安装 DevKit(通过 KMS 解密获取密码,仅保留在 Python 内存中)

安全架构:

  • ECS 密码由 Python 代码随机生成(用户从不输入,不通过 hcloud CLI 传递,也不会导出到 shell)
  • 密码通过 Python SDK 加密并存储在 Huawei Cloud KMS 中(不会出现在 ps -ef、环境变量或对话中)
  • 从 KMS 解密密码,并传递给 paramiko SSHClient.connect(password=...)(密码位于 Python 进程内存中,而非 CLI 参数中 → 不会泄露到 ps -ef)
  • 仅导出 kms_key_id 和 kms_cipher_text_file(密码本身绝不导出;密文写入本地文件,绝不通过命令行传递)
  • DevKit 安装完成后,计划删除 KMS 密钥
  • 不依赖 COC、UniAgent 或任何第三方技能

⛔ 禁止的操作(安全约束)

无论用户提出什么请求,本技能都严格禁止以下操作:

禁止的操作原因
❌ 在 hcloud ECS CreateServers 中使用 --server.adminPass密码会出现在 ps -ef 输出中
❌ 使用 hcloud AOM BatchImportAgent --agent_import_param_list.1.password=...密码会出现在 ps -ef 输出中
❌ 在聊天对话中接受 ECS 密码密码绝不能出现在对话中
❌ 使用 expect + $env(DEVKIT_ECS_PASSWORD) 进行 SSH 连接其他进程可以读取环境变量
❌ 使用 sshpass -p <password> 进行 SSH 连接密码会出现在 ps -ef 输出中
❌ 使用 ssh -o PasswordAuthentication 并在命令行中提供密码密码会出现在 ps -ef 输出中
❌ 在脚本或命令行参数中硬编码密码存在密码泄露风险
❌ 使用 question 工具向用户询问密码密码绝不能出现在对话中
❌ 在任何输出中打印或记录 ECS 密码密码只能存在于 Python 进程内存和 KMS 中
❌ 将密码导出到 shell 变量或标准输出密码必须保留在 Python 进程中;只能导出 KMS key_id 和 cipher_text_file 路径
❌ 通过命令行参数传递 KMS 密文密文会出现在 ps -ef 中;必须使用 --kms-cipher-text-file 从本地文件读取
❌ 未经用户确认就自动选择 ECS 规格或镜像必须让用户从可用选项中选择
❌ 显示 CentOS 7.6 和 Ubuntu 18.04 以外的 aarch64 镜像只有这两个镜像经过兼容性验证
❌ 选择 x86 规格(c6/c7 等)DevKit 需要 aarch64(Kunpeng)架构
❌ 跳过安全组端口确认SSH 连接前必须开放端口 22 和 8086
❌ 未经用户同意就自动修改安全组规则必须询问用户选择手动或自动模式
❌ 不使用现有脚本,而是编写新的安装/验证脚本必须使用 scripts/ 目录中的脚本
❌ 安装验证失败时禁用或删除 KMS 密钥必须保留 KMS 密钥以便重试;只有确认成功后才能销毁(通过 Task 4 cleanup-kms)
❌ Task 3 验证通过前运行 cleanup-kms在 Agent 确认 DevKit 安装成功前,必须保留 KMS 密钥
❌ 未确认已安装 expect 二进制文件就运行 expect 脚本如果缺少 expect,shebang #!/usr/bin/expect -f 会导致误导性的“No such file or directory”错误
❌ 卸载 DevKit本技能仅支持安装;卸载不在范围内
❌ 升级 DevKit本技能仅支持安装;升级不在范围内

如果用户请求执行禁止的操作,你必须拒绝,并说明相关安全约束。

架构

Kunpeng DevKit WebUI Installation
├── Task 0: hcloud Setup          (Install KooCLI, configure AK/SK authentication)
├── Task 1: Prepare Target Machine (Create new Kunpeng ECS via Python SDK + hcloud CLI)
│   ├── 1a. hcloud VPC: create empty security group for DevKit
│   ├── 1b. Python SDK: create ECS with random adminPass + dedicated security group (password never in ps -ef)
│   ├── 1c. Python SDK: KMS create key, encrypt password
│   ├── 1d. hcloud EIP: create and bind EIP to ECS
│   └── 1e. hcloud VPC: configure security group rules (or user manual)
├── Task 2: Python SSH Install    (paramiko SSH, password from KMS decrypt)
│   ├── 2a. Python SDK: KMS decrypt password (in process memory)
│   ├── 2b. paramiko SSH: connect to ECS EIP with decrypted password
│   ├── 2c. Upload install scripts via SFTP
│   ├── 2d. Execute install_devkit_webui.sh on remote ECS
│   ├── 2e. Execute verify_devkit.sh on remote ECS
│   └── 2f. KMS key is NOT cleaned up here (preserved until Task 4)
└── Task 3: Verify & Access       (Check WebUI access at https://<EIP>:8086)
├── Task 4: Cleanup KMS Key      (Independent Python method, run ONLY after Task 3 verified success)
│   ├── 4a. Python SDK: kms_disable_key (password immediately unrecoverable)
│   └── 4b. Python SDK: kms_schedule_deletion (7 days, API minimum)
└── Task 5: Reset ECS Password   (If SSH access needed, reset password in ECS console — random password no longer recoverable)

前提条件

前提条件检查 1/4:Python SDK 凭据所需的环境变量(优先级最高)

Python SDK 脚本(create_ecs_and_setup_devkit.py)从环境变量读取凭据,而不是从 hcloud configure list 读取(该命令显示的是经过屏蔽/脱敏的值)。运行任何 create / install / status 子命令前,必须设置以下环境变量:

变量必需说明
HW_ACCESS_KEY是华为云 Access Key ID(AK)
HW_SECRET_KEY是华为云 Secret Access Key(SK)
HW_SECURITY_TOKEN否临时安全令牌(仅临时 AK/SK 需要)

**项目 ID:**不是前提条件。SDK 会在首次 API 调用时通过 IAM 根据区域自动解析项目 ID(需要 IAM 读取权限)。如果设置了 HUAWEICLOUD_SDK_PROJECT_ID 环境变量,则可将其作为可选覆盖值。

# Linux — 验证是否已设置 HW_ACCESS_KEY / HW_SECRET_KEY(不会打印变量值)
python3 -c 'import os,sys;ak=os.environ.get("HW_ACCESS_KEY","");sk=os.environ.get("HW_SECRET_KEY","");ok=bool(ak) and bool(sk);print("AK/SK configured OK" if ok else "ERROR: HW_ACCESS_KEY/HW_SECRET_KEY not set");sys.exit(0 if ok else 1)'
# Windows(cmd / PowerShell)
python -c "import os,sys;ak=os.environ.get('HW_ACCESS_KEY','');sk=os.environ.get('HW_SECRET_KEY','');ok=bool(ak) and bool(sk);print('AK/SK configured OK' if ok else 'ERROR: HW_ACCESS_KEY/HW_SECRET_KEY not set');sys.exit(0 if ok else 1)"

如果验证报告 ERROR(未设置变量),请进行配置:

  • Linux:将 export HW_ACCESS_KEY=... / export HW_SECRET_KEY=... 添加到 shell 配置文件(~/.bashrc、~/.zshrc)或密钥管理器中,然后执行 source 加载配置文件。
  • Windows:通过图形界面设置系统环境变量(系统属性 → 高级 → 环境变量 → 系统变量 → 新建)。请参阅 references/prerequisites.md 中的“Windows GUI Setup”,了解分步说明。请避免使用 setx(它会将凭据记录在命令历史中)。

⚠️ **切勿在对话中设置这些变量,也不要将其硬编码到脚本中。**设置完成后,重启终端/Python 进程,并重新运行上述验证。

前提条件检查 2/4:需要 Huawei Cloud CLI(hcloud / KooCLI)>= 3.2.0 运行 hcloud version 验证版本是否 >= 3.2.0。如果尚未安装或版本过低, 请参阅 references/cli-installation-guide.md 中的安装指南。

hcloud version

前提条件检查 3/4:需要 Python 3.8+、huaweicloudsdkcore/ecs/kms 和 paramiko

ECS 创建 + KMS 加密 + paramiko SSH 脚本使用 Python,以确保密码仅保存在进程内存中。 安装所需的软件包:

# 当系统时区为 UTC+8 时自动使用中国镜像(在中国区域速度更快;通过 Python 自动检测)
PIP_INDEX=$(python3 -c "import time;print('-i https://mirrors.huaweicloud.com/repository/pypi/simple' if -(time.timezone)//3600==8 else '')")
pip install $PIP_INDEX huaweicloudsdkcore huaweicloudsdkecs huaweicloudsdkkms paramiko

其他云操作(EIP、VPC)使用 hcloud CLI — 无需安装额外的 Python SDK 软件包。

前提条件检查 4/4:目标 ECS 要求

  • 架构:aarch64(鲲鹏处理器)
  • 操作系统:CentOS 7.6 或 Ubuntu 18.04(仅对这两个系统进行了兼容性验证)
  • 磁盘空间:可用空间 >= 2GB
  • 内存:>= 4GB
  • 访问权限:需要 root 权限

身份验证

安全规则(必须遵守):

  • 禁止读取、回显或打印 AK/SK 值
  • 禁止要求用户在对话中直接输入 AK/SK
  • 禁止使用 hcloud configure set 传递明文凭据值
  • 禁止接受用户在对话中直接提供的 AK/SK
  • 仅允许从环境变量或已配置的 CLI 配置文件中读取凭据

检查 CLI 配置:

hcloud configure list

确认输出中包含有效的 AK/SK 配置。

如果不存在有效凭据,请立即停止。


IAM 权限策略

确保 IAM 用户拥有所需权限(ECS/VPC/IMS/EIP/KMS,且仅限于 DevKit 工作流)。完整权限表和推荐的 IAM 策略 JSON,请参阅 references/iam-policies.md。

权限边界:

  • 范围限制:仅创建或管理名称中包含 devkit 或标记为 devkit 的资源。绝不修改或删除并非由此工作流创建的现有资源。
  • 必须停止的情况:凭据缺失或无效、用户拒绝任何确认、软件包签名验证失败,或安装验证失败。
  • 禁止的操作:删除任何现有 ECS/VPC/安全组,修改 IAM 策略,访问 DevKit 工作流范围之外的资源,运行此技能文档中未说明的命令。

核心工作流

任务 0:安装和配置 hcloud

安装华为云 CLI 工具并配置身份验证。

📄 详细步骤 → references/cli-installation-guide.md

任务 1:准备目标机器

创建一台 Kunpeng(aarch64)ECS 实例。

⚠️ 工具分工:ECS + KMS 使用 Python SDK,EIP/VPC 使用 hcloud CLI

  • Python SDK(create_ecs_and_setup_devkit.py create):生成随机密码、创建 ECS,并通过 KMS 加密密码。**密码绝不会离开 Python 进程内存。**仅输出 server_id、kms_key_id、kms_cipher_text_file(密文写入文件,绝不通过 CLI 传递)。
  • hcloud CLI:执行所有其余操作——创建/绑定 EIP、查询 VPC、安全组。

📄 详细步骤 → references/ecs-creation-guide.md

子任务:

  1. 1a. 创建空安全组 — hcloud VPC CreateSecurityGroup --cli-region=$REGION --security_group.name=$SG_NAME — 创建专用的 DevKit 安全组,不含入站规则(v3 API,无需 vpc_id)
  2. 1b. 创建 ECS + 使用 KMS 加密 — scripts/create_ecs_and_setup_devkit.py create --security-group-id — 关联专用安全组。密码绝不导出。
  3. 1c. 绑定 EIP — hcloud EIP CreatePublicip + hcloud VPC ListPorts + hcloud EIP UpdatePublicip
  4. 1d. 配置安全组规则 — 开放 22 和 8086 端口
Task 2:通过 Python SSH 安装 DevKit

使用 scripts/create_ecs_and_setup_devkit.py install 通过 SSH 连接到 ECS 并安装 DevKit。密码在 Python 内存中通过 KMS 解密,然后传递给 paramiko — 绝不会出现在 ps -ef 或 shell 变量中。

📄 详细步骤 → references/ssh-connection-guide.md | references/devkit-installation-workflow.md | references/devkit-installation-guide.md

子任务:

  1. 2a. KMS 解密 — Python SDK 从文件读取密文,并通过 kms_key_id 解密密码
  2. 2b. paramiko SSH 连接 — SSHClient.connect(password=decrypted) — 密码仅存在于 Python 内存中
  3. 2c. 上传脚本 — 使用 SFTP 将 install_devkit_webui.sh、auto_install_devkit.expect、verify_devkit.sh 上传到 /tmp/
  4. 2d. 启动 DevKit 安装 — 在远程 ECS 上执行 nohup bash /tmp/install_devkit_webui.sh <url> &(后台运行)
  5. 2e. 轮询安装进度 — 在后台启动 poll_devkit_status.py(将输出写入日志文件),然后使用 read 工具,每隔 10-20 秒递增 offset 读取日志并向用户汇报(可安全避免死循环,保持持续可见;参见下方的“轮询进度”)
  6. 2f. 验证安装 — 运行 verify_devkit.sh 并检查结果
  7. 2g. 汇报结果 — 如果验证通过,提示 Agent 继续执行 Task 4(cleanup-kms);如果失败,则保留 KMS 密钥以供重试

⚠️ Task 2 不会清理 KMS 密钥。 清理是单独的 Task 4,仅在 Agent 于 Task 3 确认 DevKit 安装成功后执行。

⚠️ DevKit 安装需要 5-15 分钟。 install 子命令会在后台启动安装并立即返回。Agent 必须轮询进度并持续向用户汇报。

  • 安装进程状态:PREPARING(早期阶段 [1/6]-[4/6]:环境检查 / 依赖安装 / 软件包下载 / 解压)/ RUNNING([5/6] expect 安装)/ DONE / NOT_STARTED
  • 当前阶段:例如 [2/6] Install Dependencies(在 PREPARING 期间从包装器日志中解析;其他情况下为空)
  • 服务:devkit_nginx、gunicorn_framework、gunicorn_plugin(active/failed/inactive)
  • 插件:porting、affinity、devtools、debugger、sys_perf、java_perf、sys_diagnosis(已安装/缺失)
  • 端口:8086、8002、7996(正在监听或未监听)
  • 最后几行日志:PREPARING → 来自 /tmp/devkit_install_wrapper.log(yum/wget 输出);RUNNING/DONE → 来自 /tmp/devkit_install.log

轮询进度(可安全避免死循环): 在后台启动 poll_devkit_status.py(将输出写入日志文件),然后每隔 10-20 秒使用 read 工具递增 offset,持续汇报进度,直到日志中出现 DONE/TIMEOUT。具体步骤、指南表格和状态字段参考请见 references/polling-progress-guide.md。

Task 3:验证与访问

检查能否通过 https://<EIP>:8086 访问 WebUI。

📄 验收标准 → references/acceptance-criteria.md

⚠️ 验证通过前不得清理 KMS 密钥。 Agent 必须确认所有服务均处于 active 状态且 WebUI 可以访问,然后才能继续执行 Task 4。

任务 4:清理 KMS 密钥(验证成功后)

仅在任务 3 验证通过后执行此任务。 使用 scripts/create_ecs_and_setup_devkit.py cleanup-kms 禁用 KMS 密钥并安排删除。这是一个独立的 Python 方法,不需要 SSH 或密文——只需要 KMS 密钥 ID。

子任务:

  1. 4a. 禁用 KMS 密钥 — kms_disable_key() — 密码会立即变得无法恢复
  2. 4b. 安排删除 KMS 密钥 — kms_schedule_deletion(delay_days=7) — 密钥将在 7 天后永久删除(API 最小值)
python scripts/create_ecs_and_setup_devkit.py cleanup-kms \
  --region $R \
  --kms-key-id $KID \
  --delay-days 7

⚠️ 重要:仅在验证成功后运行 cleanup-kms

  • 如果任务 3 验证失败:请勿运行 cleanup-kms;保留 KMS 密钥以便重试
  • 如果任务 3 验证通过:运行 cleanup-kms 以禁用密钥并安排删除
  • --force 标志允许在禁用失败时仍安排删除(请谨慎使用)
任务 5:重置 ECS 密码(需要 SSH 访问时)

ECS 密码由 Python SDK 随机生成,成功安装后 KMS 密钥会被禁用。密码将无法再恢复。如果用户之后需要通过 SSH 访问 ECS,则必须在 ECS 控制台中重置密码。

步骤:

  1. 前往 ECS 控制台:https://console.huaweicloud.com/ecm/?region=<REGION>#/detail/<SERVER_ID>
  2. 点击“更多”>“重置密码”
  3. 根据复杂度要求设置新密码
  4. 确认重置密码

核心命令

Python SDK(ECS + KMS — 密码不会出现在 ps -ef 中)
命令描述
pip install huaweicloudsdkcore huaweicloudsdkecs huaweicloudsdkkms paramiko安装 Python SDK + paramiko(UTC+8 环境下,添加 -i https://mirrors.huaweicloud.com/repository/pypi/simple)
python scripts/create_ecs_and_setup_devkit.py create --region $R --vpc-id $V --subnet-id $S --flavor $F --image-id $I --az $A --ecs-name $N阶段 1:创建 ECS + 使用 KMS 加密
python scripts/create_ecs_and_setup_devkit.py install --region $R --eip $EIP --kms-key-id $KID --kms-cipher-text-file $CT_FILE阶段 2:通过 SSH 在后台启动 DevKit 安装,并立即返回(添加 --wait 以轮询并验证)
python scripts/create_ecs_and_setup_devkit.py status --region $R --eip $EIP --kms-key-id $KID --kms-cipher-text-file $CT_FILE轮询安装进度(每 30 秒)
python scripts/create_ecs_and_setup_devkit.py cleanup-kms --region $R --kms-key-id $KID --delay-days 7阶段 3:禁用并安排删除 KMS 密钥(验证成功后)
hcloud CLI(EIP、VPC — 无需密码)
命令描述
hcloud VPC ListVpcs --cli-region=$REGION列出 VPC,供选择子网
hcloud VPC ListSubnets --cli-region=$REGION --limit=10列出子网(前 10 个),供用户选择
hcloud ECS NovaListAvailabilityZones --cli-region=$REGION列出该区域中的所有可用区
hcloud ECS ListFlavors --cli-region=$REGION --availability_zone=<AZ>查询特定可用区中可用的规格(筛选 kc1/kx1,以查找有鲲鹏服务器的可用区)
hcloud ECS NovaListFlavorsDetails --cli-region=$REGION查询 ECS 规格(筛选 kc1/kx1 鲲鹏规格)
hcloud IMS ListImages --cli-region=$REGION --__imagetype=gold --status=active查询公共镜像(仅筛选 CentOS 7.6 ARM 和 Ubuntu 18.04 ARM)
hcloud EIP CreatePublicip --cli-region=$REGION --publicip.type=5_bgp --bandwidth.share_type=PER --bandwidth.name=$ECS_NAME-eip --bandwidth.size=300 --bandwidth.charge_mode=traffic创建按需计费的 300Mbit/s EIP(当 share_type=PER 时,必须指定 bandwidth.name)
hcloud VPC ListPorts --cli-region=$REGION --device_id.1=$SERVER_ID获取用于绑定 EIP 的 port_id
hcloud EIP UpdatePublicip --cli-region=$REGION --publicip_id=$EIP_ID --publicip.associate_instance_type=PORT --publicip.associate_instance_id=$PORT_ID将 EIP 绑定到 ECS 端口(v3 API)
hcloud VPC CreateSecurityGroupRule --cli-region=$REGION --security_group_rule.security_group_id=$SG_ID --security_group_rule.direction=ingress --security_group_rule.protocol=tcp --security_group_rule.multiport=<22|8086> --security_group_rule.remote_ip_prefix=0.0.0.0/0添加安全组入方向规则(端口 22/8086)

⚠️ 核心命令的关键限制:

  • 创建 ECS + KMS:必须使用 scripts/create_ecs_and_setup_devkit.py — 密码绝不会出现在 ps -ef 中
  • SSH + 安装 DevKit:必须使用 scripts/create_ecs_and_setup_devkit.py install — 密码从 KMS 获取,且仅存在于 paramiko 内存中
  • hcloud ECS CreateServers:不得包含 --server.adminPass
  • EIP/VPC:必须使用 hcloud CLI
  • IMS ListImages:仅显示 CentOS 7.6 ARM 和 Ubuntu 18.04 ARM
  • ECS NovaListFlavorsDetails:仅显示以 k 开头的规格(鲲鹏)
  • 必须通过 paramiko SSH 执行 install_devkit_webui.sh(不得使用 scp + 手动 ssh)
  • CreateSecurityGroupRule:remote_ip_prefix 默认值为 0.0.0.0/0;受限或由 SCP 控制的账户可能会拒绝此设置 — 请改用范围受限的源 CIDR(例如 <your_public_ip>/32)

参数确认

执行任何任务前,必须与用户确认以下参数。禁止猜测。

参数必填/可选描述默认值
区域必填华为云区域(例如 cn-south-1、cn-north-4);必须由用户明确选择-

| 子网 | 必填 | 用于创建 ECS 的子网;用户从前 10 个子网的列表中选择 | - | | ECS 规格 | 必填 | 以 k 开头的鲲鹏规格(例如 kc1.xlarge.2);用户从列表中选择 | - | | OS 镜像 | 必填 | 仅限 CentOS 7.6 ARM 或 Ubuntu 18.04 ARM;用户从列表中选择 | - | | 根卷类型 | 可选 | ECS 系统盘类型(SSD/SAS/GPSSD) | SSD | | 根卷大小 | 可选 | ECS 系统盘大小,单位为 GB(最小 40) | 40 | | 安全组方式 | 必填 | 手动(推荐)或 Agent 自动配置;由用户选择 | 手动 | | DevKit 下载 URL | 可选 | DevKit-All tar.gz 软件包的 URL | 26.1.RC1 的默认 OBS URL |

注意:无需提供密码参数。密码由 Python SDK 随机生成,通过 Python KMS SDK 加密,再解密后供 paramiko SSH 使用。密码绝不会从 Python 进程中导出。


脚本工具

脚本描述
create_ecs_and_setup_devkit.py创建 ECS + KMS 加密/解密 + 使用 paramiko 通过 SSH 安装 DevKit(密码不会出现在 ps -ef 中)。子命令:create、install、status、cleanup-kms。用法请参阅上文的核心命令。
install_devkit_webui.sh一键安装脚本,通过 paramiko 上传并在远程 ECS 上执行。
auto_install_devkit.expect交互式安装自动化脚本,供 install_devkit_webui.sh 使用。
verify_devkit.sh安装验证脚本,通过 paramiko 在远程 ECS 上执行。
poll_devkit_status.py安全的 Doom 循环进度轮询(后台运行 + read 工具)。请参阅 references/polling-progress-guide.md。

⚠️ 脚本使用规则:

  • 必须使用现有脚本;不得编写新的 expect/shell 脚本来替代
  • 不得将 install_devkit_webui.sh 的内部逻辑拆分为单独的 SSH 命令
  • 不得创建新的安装/验证脚本

验证方法

详情请参阅 references/verification-method.md。常见问题及解决方法请参阅 references/troubleshooting.md。

快速验证:

hcloud version && hcloud configure list
python scripts/create_ecs_and_setup_devkit.py install \
  --region $R --eip $EIP --kms-key-id $KID --kms-cipher-text-file $CT_FILE

安装后访问: https://<EIP>:8086(接受自签名证书;默认账户:devadmin)

⚠️ 密码提醒: ECS 密码是随机生成的,且 KMS 密钥会在安装成功后禁用。如果之后需要通过 SSH 访问 ECS,必须先在 ECS 控制台重置密码:

ECS 控制台:https://console.huaweicloud.com/ecm/?region=<REGION>#/detail/<SERVER_ID>

安全设计

安全架构确保 ECS 密码仅保存在 Python 进程内存和 KMS 中,绝不会出现在 ps -ef、shell 变量、环境变量或对话中。工具分工:使用 Python SDK 创建 ECS 并进行 KMS 加密/解密/删除,使用 hcloud CLI 处理 EIP/VPC(不涉及密码),使用 Python paramiko 进行 SSH 连接并安装 DevKit。失败时会保留 KMS 密钥(以便重试),只有在验证成功后才会禁用密钥并安排删除。

📄 完整详情(工具分工表、消除密码泄露风险、密码生命周期)→ references/security-design.md


参考文档

文档描述
prerequisites.md前置条件 + Windows GUI 环境变量设置
cli-installation-guide.mdhcloud(KooCLI)安装和配置
ecs-creation-guide.mdKunpeng ECS 创建详细步骤(Python SDK + hcloud CLI)
ssh-connection-guide.mdPython paramiko SSH 连接指南
devkit-installation-workflow.md任务 2-3 安装详细步骤
devkit-installation-guide.md完整安装步骤

| iam-policies.md | 所需的 IAM 权限 | | verification-method.md | 安装结果验证方法 | | acceptance-criteria.md | 安装验收标准 | | troubleshooting.md | 常见安装问题及解决方案 | | polling-progress-guide.md | 防止 Doom-loop 的进度轮询详细指南 | | security-design.md | 安全设计:工具分离、密码生命周期 | | install_devkit_webui.sh | 一键安装脚本 | | auto_install_devkit.expect | expect 自动化交互式安装 | | verify_devkit.sh | 安装验证脚本 | | create_ecs_and_setup_devkit.py | ECS + KMS + paramiko SSH DevKit 脚本(密码不会出现在 ps -ef 中) | | poll_devkit_status.py | 防止 Doom-loop 的进度轮询(后台 + read 工具,间隔 10-20 秒) |

评论

支持 Markdown