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メモリとHuawei Cloud KMS内で扱います。

主な機能

  1. 01Kunpeng aarch64 ECSの作成
  2. 02Python SDKとhcloudによるクラウドリソース管理
  3. 03KMSによるパスワード暗号化と保管
  4. 04Paramiko SSH経由のDevKit導入
  5. 05EIPとセキュリティグループの設定
  6. 06インストール検証後のKMSクリーンアップ

活用シーン

  1. 01DevKit用のKunpeng ECSを準備
  2. 02WebUIモードでDevKitをインストール
  3. 03ECS認証情報のシェル引数やログへの露出を防止
  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 インスタンスを作成し、クラウド操作(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

サブタスク:

  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 を開放します
タスク 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

サブタスク:

  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 秒ごとにログを読み取り、ユーザーに報告します(無限ループに陥らず、継続的に状況を確認できます。「進捗のポーリング」を参照)
  6. 2f. インストールを検証 — verify_devkit.sh を実行し、結果を確認します
  7. 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 や暗号文は必要ありません。

サブタスク:

  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 キーは無効化されています。パスワードは復元できません。後で ECS への SSH アクセスが必要になった場合は、ECS コンソールでパスワードをリセットする必要があります。

手順:

  1. ECS コンソールに移動します:https://console.huaweicloud.com/ecm/?region=<REGION>#/detail/<SERVER_ID>
  2. 「More」>「Reset Password」をクリックします
  3. 複雑さの要件に従って新しいパスワードを設定します
  4. パスワードのリセットを確定します

基本コマンド

Python SDK(ECS + KMS — パスワードが ps -ef に表示されることはありません)
コマンド説明
pip install huaweicloudsdkcore huaweicloudsdkecs huaweicloudsdkkms paramikoPython 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=$REGIONECS フレーバーを照会します(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_IDEIP のバインドに必要な port_id を取得します
hcloud EIP UpdatePublicip --cli-region=$REGION --publicip_id=$EIP_ID --publicip.associate_instance_type=PORT --publicip.associate_instance_id=$PORT_IDEIP を 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.pyECS の作成、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.pyDoom ループに安全な進捗ポーリング(バックグラウンド実行+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.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 に安全な進捗ポーリング(バックグラウンド処理 + 読み取りツール、10~20 秒間隔) |

コメント