huawei-cloud-devkit-webui-create について
huawei-cloud-devkit-webui-createは、クラウド運用者向けにKunpeng aarch64 ECSの作成と、WebUIモードでのKunpeng DevKit導入を案内します。Python SDK、hcloud CLI、Paramikoの処理を分け、ECSパスワードをPythonメモリとHuawei Cloud KMS内で扱います。
主な機能
- 01Kunpeng aarch64 ECSの作成
- 02Python SDKとhcloudによるクラウドリソース管理
- 03KMSによるパスワード暗号化と保管
- 04Paramiko SSH経由のDevKit導入
- 05EIPとセキュリティグループの設定
- 06インストール検証後のKMSクリーンアップ
活用シーン
- 01DevKit用のKunpeng ECSを準備
- 02WebUIモードでDevKitをインストール
- 03ECS認証情報のシェル引数やログへの露出を防止
- 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.mdcli-installation-guide.mddevkit-installation-guide.mddevkit-installation-workflow.mdecs-creation-guide.mdiam-policies.mdpolling-progress-guide.mdprerequisites.mdsecurity-design.mdssh-connection-guide.mdtroubleshooting.mdverification-method.mdscripts/auto_install_devkit.expectcreate_ecs_and_setup_devkit.pyinstall_devkit_webui.shpoll_devkit_status.pyverify_devkit.sh詳細
Kunpeng DevKit WebUI インストールスキル
概要
Python SDK(ECS + KMS)を使って Kunpeng(aarch64)ECS インスタンスを作成し、クラウド操作(EIP、VPC)には hcloud CLI を使用します。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 に渡されず、シェルにもエクスポートされません)
- パスワードは Python SDK を介して Huawei Cloud KMS で暗号化・保存されます(
ps -ef、環境変数、会話に表示されることはありません) - パスワードは KMS から復号され、paramiko の
SSHClient.connect(password=...)に渡されます(CLI 引数ではなく Python プロセスのメモリ内に保持されるため、ps -efに漏えいしません) - エクスポートされるのは
kms_key_idとkms_cipher_text_fileのみです(パスワード自体はエクスポートされず、暗号文はローカルファイルに書き込まれ、コマンドラインで渡されることもありません) - KMS キーは DevKit のインストール後、削除がスケジュールされます
- COC への依存、UniAgent への依存、サードパーティスキルへの依存はありません
⛔ 禁止されている操作(セキュリティ上の制約)
このスキルでは、ユーザーからの依頼にかかわらず、以下の操作を固く禁止しています。
| 禁止されている操作 | 理由 |
|---|---|
❌ hcloud ECS CreateServers で --server.adminPass を使用する | パスワードが ps -ef の出力に表示されます |
❌ hcloud AOM BatchImportAgent --agent_import_param_list.1.password=... を使用する | パスワードが ps -ef の出力に表示されます |
| ❌ チャットで ECS のパスワードを受け取る | パスワードを会話に表示してはなりません |
❌ SSH に expect + $env(DEVKIT_ECS_PASSWORD) を使用する | 環境変数はほかのプロセスから読み取られる可能性があります |
❌ SSH に sshpass -p <password> を使用する | パスワードが ps -ef の出力に表示されます |
❌ パスワードをコマンドラインで指定して ssh -o PasswordAuthentication を使用する | パスワードが ps -ef の出力に表示されます |
| ❌ スクリプトまたはコマンドライン引数にパスワードをハードコードする | パスワードが漏えいするリスクがあります |
❌ question ツールを使ってユーザーにパスワードを尋ねる | パスワードを会話に表示してはなりません |
| ❌ ECS のパスワードを出力またはログに表示する | パスワードは Python プロセスのメモリと KMS にのみ存在させる必要があります |
| ❌ パスワードをシェル変数または標準出力にエクスポートする | パスワードは Python プロセス内に保持し、エクスポートするのは KMS の key_id と cipher_text_file のパスのみとします |
| ❌ KMS の暗号文をコマンドライン引数で渡す | 暗号文が ps -ef に表示されます。ローカルファイルから読み込むには --kms-cipher-text-file を使用する必要があります |
| ❌ ユーザーの確認なしに ECS のフレーバーまたはイメージを自動選択する | 利用可能な選択肢からユーザーが選べるようにする必要があります |
| ❌ CentOS 7.6 と Ubuntu 18.04 以外の aarch64 イメージを表示する | 互換性が検証済みなのはこの 2 つのイメージのみです |
| ❌ x86 フレーバー(c6/c7 など)を選択する | DevKit には aarch64(Kunpeng)アーキテクチャが必要です |
| ❌ セキュリティグループのポート確認を省略する | SSH の前にポート 22 と 8086 を開放する必要があります |
| ❌ ユーザーの同意なしにセキュリティグループのルールを自動変更する | 手動モードまたは自動モードのどちらにするか、ユーザーに確認する必要があります |
| ❌ 既存のスクリプトを使わずにインストール/検証スクリプトを新規作成する | scripts/ ディレクトリ内のスクリプトを使用する必要があります |
| ❌ インストール検証に失敗したときに KMS キーを無効化または削除する | KMS キーは再試行に備えて保持し、検証成功後(Task 4 の cleanup-kms 経由)にのみ破棄する必要があります |
| ❌ Task 3 の検証に合格する前に cleanup-kms を実行する | エージェントが DevKit のインストール成功を確認するまで、KMS キーを保持する必要があります |
❌ expect バイナリがインストールされていることを確認せずに expect スクリプトを実行する | expect がない場合、シバン #!/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はい Huawei Cloud アクセスキー ID(AK) HW_SECRET_KEYはい Huawei Cloud シークレットアクセスキー(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:シェルプロファイル(
~/.bashrc、~/.zshrc)またはシークレットマネージャーにexport HW_ACCESS_KEY=.../export HW_SECRET_KEY=...を追加し、プロファイルをsourceで読み込みます。- Windows:GUI からシステム環境変数を設定します(システムのプロパティ → 詳細設定 → 環境変数 → システム環境変数 → 新規)。手順については、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(Kunpeng プロセッサー)
- OS:CentOS 7.6 または Ubuntu 18.04(互換性を確認済みなのはこの 2 つのみです)
- ディスク容量:2GB 以上の空き容量
- メモリ:4GB 以上
- アクセス権:root 権限が必要です
認証
セキュリティルール(必ず遵守してください):
- AK/SK の値を読み取る、エコーする、または出力することは禁止されています
- 会話内で AK/SK を直接入力するようユーザーに求めることは禁止されています
- 平文の認証情報を渡すために
hcloud configure setを使用することは禁止されています- 会話内でユーザーから直接提供された AK/SK を受け取ることは禁止されています
- 認証情報の読み取りは、環境変数または設定済みの CLI 設定ファイルからのみ許可されています
CLI 設定を確認します:
hcloud configure list有効な AK/SK 設定が出力に含まれていることを確認してください。
有効な認証情報がない場合は、ここで停止してください。
IAM 権限ポリシー
IAM ユーザーに必要な権限(DevKit ワークフローのみに限定した ECS/VPC/IMS/EIP/KMS)を付与してください。完全な権限テーブルと推奨 IAM ポリシー JSON については、references/iam-policies.md を参照してください。
権限の境界:
- スコープの制約:
devkitという名前またはタグが付いたリソースのみを作成・管理してください。このワークフローで作成されていない既存リソースは変更または削除しないでください。 - 必ず停止する条件:認証情報がない、または無効な場合、ユーザーが確認を拒否した場合、パッケージ署名の検証に失敗した場合、またはインストールの検証に失敗した場合。
- 禁止される操作:既存の ECS/VPC/セキュリティグループの削除、IAM ポリシーの変更、DevKit ワークフロー以外のリソースへのアクセス、このスキルに記載されていないコマンドの実行。
コアワークフロー
タスク 0:hcloud のインストールと設定
Huawei Cloud 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
サブタスク:
- 1a. 空のセキュリティグループを作成 —
hcloud VPC CreateSecurityGroup --cli-region=$REGION --security_group.name=$SG_NAME— 受信ルールのない DevKit 専用のセキュリティグループ(v3 API。vpc_id は不要) - 1b. ECS を作成して KMS で暗号化 —
scripts/create_ecs_and_setup_devkit.py create --security-group-id— 専用のセキュリティグループをアタッチします。パスワードがエクスポートされることはありません。 - 1c. EIP をバインド —
hcloud EIP CreatePublicip+hcloud VPC ListPorts+hcloud EIP UpdatePublicip - 1d. セキュリティグループのルールを設定 — ポート 22 と 8086 を開放します
タスク 2:Python SSH による DevKit のインストール
scripts/create_ecs_and_setup_devkit.py install を使用して ECS に SSH 接続し、DevKit をインストールします。パスワードは KMS から Python メモリ内で復号され、paramiko に渡されます。ps -ef やシェル変数には一切表示されません。
📄 詳細な手順 → references/ssh-connection-guide.md | references/devkit-installation-workflow.md | references/devkit-installation-guide.md
サブタスク:
- 2a. KMS による復号 — Python SDK でファイルから暗号文を読み込み、
kms_key_idからパスワードを復号します - 2b. paramiko による SSH 接続 —
SSHClient.connect(password=decrypted)— パスワードは Python メモリ内にのみ保持されます - 2c. スクリプトのアップロード — SFTP で
install_devkit_webui.sh、auto_install_devkit.expect、verify_devkit.shを/tmp/にアップロードします - 2d. DevKit のインストールを開始 — リモート ECS で
nohup bash /tmp/install_devkit_webui.sh <url> &を実行します(バックグラウンド) - 2e. インストールの進捗をポーリング —
poll_devkit_status.pyをバックグラウンドで起動し(出力先はログファイル)、その後、readツールでオフセットを増やしながら 10~20 秒ごとにログを読み取り、ユーザーに報告します(無限ループに陥らず、継続的に状況を確認できます。「進捗のポーリング」を参照) - 2f. インストールを検証 —
verify_devkit.shを実行し、結果を確認します - 2g. 結果を報告 — 検証に合格した場合は、タスク 4(cleanup-kms)に進むようエージェントに促します。失敗した場合は、再試行できるよう KMS キーを保持します
⚠️ タスク 2 では KMS キーをクリーンアップしません。 クリーンアップは独立したタスク 4 で行い、タスク 3 でエージェントが DevKit のインストール成功を確認した後にのみ実行します。
⚠️ DevKit のインストールには 5~15 分かかります。
installサブコマンドはインストールをバックグラウンドで開始し、直ちに戻ります。エージェントは進捗をポーリングし、継続的にユーザーへ報告する必要があります。
- インストールプロセスの状態:
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をバックグラウンドで起動し(出力先はログファイル)、その後、readツールでオフセットを増やしながら 10~20 秒ごとに進捗を報告し、ログにDONE/TIMEOUTが含まれるまで続けます。正確な手順、ガイドライン表、状態フィールドのリファレンスについては、references/polling-progress-guide.md を参照してください。
タスク 3:検証とアクセス
https://<EIP>:8086 で WebUI にアクセスできることを確認します。
📄 受け入れ基準 → references/acceptance-criteria.md
⚠️ この検証に合格するまで、KMS キーのクリーンアップを実行してはいけません。 タスク 4 に進む前に、すべてのサービスが active であり、WebUI にアクセスできることをエージェントが確認する必要があります。
タスク 4:KMS キーのクリーンアップ(成功確認後)
このタスクは、タスク 3 の検証に合格した後にのみ実行してください。 scripts/create_ecs_and_setup_devkit.py cleanup-kms を使用して、KMS キーを無効化し、削除をスケジュールします。これは独立した Python メソッドであり、必要なのは KMS キー ID のみです。SSH や暗号文は必要ありません。
サブタスク:
- 4a. KMS キーを無効化する —
kms_disable_key()— パスワードは直ちに復元不能になります - 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 キーは無効化されています。パスワードは復元できません。後で ECS への SSH アクセスが必要になった場合は、ECS コンソールでパスワードをリセットする必要があります。
手順:
- ECS コンソールに移動します:
https://console.huaweicloud.com/ecm/?region=<REGION>#/detail/<SERVER_ID> - 「More」>「Reset Password」をクリックします
- 複雑さの要件に従って新しいパスワードを設定します
- パスワードのリセットを確定します
基本コマンド
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> | 特定の AZ で利用可能なフレーバーを照会します(Kunpeng サーバーがある AZ を見つけるには、kc1/kx1 でフィルタリングします) |
hcloud ECS NovaListFlavorsDetails --cli-region=$REGION | ECS フレーバーを照会します(Kunpeng フレーバーの 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で始まるフレーバー(Kunpeng)のみを表示してくださいinstall_devkit_webui.shは paramiko SSH 経由で実行する必要があります(scp と手動での ssh の組み合わせは不可)CreateSecurityGroupRule:remote_ip_prefixのデフォルト値は0.0.0.0/0です。制限付き/SCP 管理アカウントでは拒否される場合があります。その場合は、代わりに制限した送信元 CIDR(例:<your_public_ip>/32)を使用してください
パラメーターの確認
タスクを実行する前に、以下のパラメーターをユーザーに確認する必要があります。推測は禁止されています。
| パラメーター | 必須/任意 | 説明 | デフォルト |
|---|---|---|---|
| リージョン | 必須 | Huawei Cloud のリージョン(例:cn-south-1、cn-north-4)。ユーザーが明示的に選択する必要があります | - |
| サブネット | 必須 | ECS 作成用のサブネット。ユーザーは先頭の 10 件の一覧から選択します | - |
| ECS フレーバー | 必須 | k で始まる Kunpeng フレーバー(例:kc1.xlarge.2)。ユーザーは一覧から選択します | - |
| OS イメージ | 必須 | CentOS 7.6 ARM または Ubuntu 18.04 ARM のみ。ユーザーは一覧から選択します | - |
| ルートボリュームタイプ | 任意 | ECS システムディスクのタイプ(SSD/SAS/GPSSD) | SSD |
| ルートボリュームサイズ | 任意 | ECS システムディスクのサイズ(GB)。最小 40 | 40 |
| セキュリティグループの設定方法 | 必須 | 手動(推奨)またはエージェントによる自動設定。ユーザーが選択します | 手動 |
| 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/シェルスクリプトを新たに作成しないでください。
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 キーは無効化されます。後から ECS に SSH 接続する必要がある場合は、まず ECS コンソールでパスワードをリセットしてください。
ECS console: https://console.huaweicloud.com/ecm/?region=<REGION>#/detail/<SERVER_ID>
セキュリティ設計
セキュリティアーキテクチャでは、ECS のパスワードを Python プロセスのメモリと KMS 内だけに保持し、ps -ef、シェル変数、環境変数、会話には決して含めません。ツールを分離し、ECS の作成と KMS による暗号化/復号/削除には Python SDK、EIP/VPC には(パスワードを扱わない)hcloud CLI、SSH と DevKit のインストールには Python paramiko を使用します。KMS キーは失敗時には(再試行に備えて)保持し、検証済みの成功後にのみ無効化して削除をスケジュールします。
📄 詳細(ツール分離の表、パスワード漏洩リスクの排除、パスワードのライフサイクル)→ references/security-design.md
参考資料
| ドキュメント | 説明 |
|---|---|
| prerequisites.md | 前提条件と Windows GUI の環境変数設定 |
| cli-installation-guide.md | hcloud (KooCLI) のインストールと設定 |
| ecs-creation-guide.md | Kunpeng ECS の作成手順の詳細(Python SDK + hcloud CLI) |
| ssh-connection-guide.md | Python 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 に安全な進捗ポーリング(バックグラウンド処理 + 読み取りツール、10~20 秒間隔) |