mcpField
H
huawei-cloud-terraform-generator

huawei-cloud-terraform-generator

github.com/huaweicloudクラウド・DevOps5917.2k 回インストール2 日前に更新
リポジトリ

huawei-cloud-terraform-generator について

インフラの目標から Huawei Cloud 向け Terraform 構成を作成し、リソース計画、リージョンごとの利用可否確認、デプロイ検証を行うスキルです。対話形式でクラウド環境を構築するユーザー向けで、明示的な確認後にのみ `terraform apply` を実行します。

主な機能

  1. 01クラウドリソースと依存関係の計画
  2. 02Terraform 構成ファイルの生成
  3. 03生成前のリージョン別利用可否確認
  4. 04フォーマット、検証、plan の実行
  5. 05費用見積もりと確認後の apply

活用シーン

  1. 01Web サイト向けクラウド基盤の計画と構成
  2. 02リージョンでのインスタンス仕様の利用可否確認
  3. 03Terraform の plan を確認し、承認後にデプロイ

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/huaweicloud/huaweicloud-skills --skill huawei-cloud-terraform-generator

インストール後、Claude Code で/huawei-cloud-terraform-generatorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/antiddos/basic/
main.tf
providers.tf
README.md
terraform.tfvars
variables.tf
assets/antiddos/default-protection-policy/
main.tf
providers.tf
README.md
terraform.tfvars
variables.tf
assets/antiddos/lts-config/
main.tf
providers.tf
README.md
terraform.tfvars
variables.tf
assets/aom/action-callback/
main.tf
providers.tf
README.md
terraform.tfvars
variables.tf
assets/aom/alarm-rule/distribute-alarm/
main.tf
providers.tf
README.md
terraform.tfvars
variables.tf
assets/aom/alarm-rule/prevent-elb-alarm-storm/
main.tf
providers.tf
README.md
terraform.tfvars
variables.tf

詳細

Huawei Cloud Terraform Generator

1. 概要

このスキルは、ユーザーのインフラストラクチャーに関する目標を、Huawei Cloud 向けの Terraform 構成に変換します。主なワークフローは次のとおりです。

  1. ユーザーの実際のデプロイ意図を理解する
  2. 作成するリソースを特定する
  3. 既存のリソースを再利用するかどうかを判断する
  4. 主要な仕様と依存関係を確認する
  5. すべてのリソース仕様をデプロイ先リージョンで利用可能なリソースと照合して確認する — 先に照会し、その後に記述する
  6. Terraform がインストールされていることを確認する
  7. Terraform 構成ファイルを生成する
  8. 検証手順を実行し、terraform plan が成功するまで生成時の問題を修正する
  9. ユーザーに確認を求め、承認された場合は terraform apply を実行する

このスキルは対話型のワークフローを提供し、エージェントがユーザーを認証情報の設定に導き、プランを検証して、ユーザーの明示的な確認後に apply を実行します。

2. 前提条件

このスキルを使用する前に、次の項目が利用可能であることを確認してください。

  1. Terraform — PATH にインストール済み、または自動インストール可能であること(validation-workflow.md を参照)
  2. プロバイダーのダウンロード元 — Huawei Cloud のミラーにアクセスできること(validation-workflow.md を参照)
  3. 対象リージョン — デプロイ先リージョン(例:cn-north-4、cn-south-1)が特定されていること

3. パラメーターの確認

Terraform を生成する前に、ユーザーが確認できる具体的なリソースプランを提示してください。プランには次の内容を含めます。

  • 推奨するリソース仕様
  • 該当する場合は、利用可能な候補オプション
  • 新しいリソースを作成するか、既存のものを再利用するか
  • 信頼できる情報源から取得できた場合に限り、価格情報

仕様や価格を捏造しないためのルールについては、reference/guardrails.md を参照してください。

ユーザーにすべてのパラメーターを手動で提示するよう求めないでください。代わりに、次の手順に従います。

  1. ユーザーの目標から想定されるアーキテクチャを推測する
  2. 推奨デフォルト値を使った具体的なプランを提示する
  3. 正確性、コスト、またはアーキテクチャに大きく影響する少数の判断事項だけを確認する

ユーザーには、パラメーター一式を自分で組み立ててもらうのではなく、主に提示された解決策を確認してもらいます。

4. ワークフロー

このスキルは、次の9つのフェーズで動作します。

4.0 認証情報の取り扱い(必読)

AK/SK 認証情報は環境変数 HW_ACCESS_KEY と HW_SECRET_KEY から読み取ります。一時的な認証情報または STS 認証情報を使用する場合、エージェントは環境変数 HW_SECURITY_TOKEN(または HUAWEICLOUD_SECURITY_TOKEN)を読み取り、security_token として terraform.tfvars に書き込む必要があります。プロバイダーは、環境変数から security_token を確実に解決できません。環境変数が設定されていない場合は、省略してください(永続的な AK/SK の場合)。 認証情報に依存する手順(リソースの照会、terraform plan など)を実行する前に、reference/guardrails.md のルールをすべて確認してください。 API 呼び出しまたは Terraform 呼び出しで認証エラーが発生した場合は、具体的なエラーをユーザーに伝え、問題が解決したことの確認を求めてから再試行してください。認証情報の設定方法をユーザーに案内しないでください。

4.1 ユーザーの実際の目標を理解する

ユーザーは、ECS インスタンスの作成など、リソースを直接指定することもあれば、ウェブサイトのデプロイやアプリケーションの起動など、ビジネス上の目標を説明することもあります。
明示されたリソース名だけに頼らず、ユーザーの目的から意図される Huawei Cloud アーキテクチャをまず推測する必要があります。

4.2 リソースの構成を決定する

ユーザーの目標に基づいて、次の項目を特定します。

  • 作成が必要なリソース
  • 再利用できる可能性がある既存のリソース
  • リソース間の依存関係

例:

  • シンプルな公開ウェブサイトには、VPC、サブネット、セキュリティグループ、ECS、EIP が必要になる場合があります
  • マネージドデータベースのデプロイには、VPC、サブネット、セキュリティグループ、RDS が必要になる場合があります
  • スケーラブルな公開サービスには、VPC、サブネット、セキュリティグループ、ECS または AS、ELB、パブリックアクセスが必要になる場合があります
4.3 確認のためにリソース計画を提示する

Terraform を生成する前に、パラメーター確認のセクションのルールに従って、具体的なリソース計画を提示し、ユーザーに確認してもらいます。

機密情報の取り扱いに関するルールは、reference/guardrails.md を参照してください。

4.3.1 セキュリティグループのルールをユーザーに確認する(重要)

必須のワークフロー:

  1. ユーザーの目的から必要と思われるポートを推測します(Web サーバー → 80、443、SSH → 22、データベース → 3306、5432)。
  2. ユーザーにポートを確認します:「どのポートを開放しますか?推奨:80、443、22」
  3. 確認されたポートに基づいてルールを生成します。デフォルトのルールは使用しません。

Terraform の生成:

# User confirmed: 80, 443, 22

resource "huaweicloud_networking_secgroup_rule" "http" {
  security_group_id = huaweicloud_networking_secgroup.main.id
  direction         = "ingress"
  ethertype         = "IPv4"
  port_range_min    = 80
  port_range_max    = 80
  protocol          = "tcp"
  remote_ip_prefix  = "0.0.0.0/0"
}

# ... similar for 443, 22 (always include ethertype = "IPv4")

# Always include egress
resource "huaweicloud_networking_secgroup_rule" "egress" {
  security_group_id = huaweicloud_networking_secgroup.main.id
  direction         = "egress"
  ethertype         = "IPv4"
  remote_ip_prefix  = "0.0.0.0/0"
}

禁止事項:

  • ❌ インバウンドルールを設定せず、アウトバウンドルールだけを使用する
  • ❌ ユーザーに確認せず、ハードコードされたデフォルトのポートを使用する
  • ❌ ユーザーの確認内容に合致しないルールを生成する
4.4 コードを生成する前にリソースの利用可否を確認する

この手順は必須であり、決して省略してはいけません。クエリの失敗は処理を続けてよい理由にはなりません。解決が必要なブロッカーです。

Terraform を1行でも記述する前に、確認済みの計画に含まれるすべてのリソース仕様について、対象リージョンで利用できることを必ず確認してください。対象リージョンは手順4.3で確認した計画にすでに含まれています。リージョンが不明な場合は、手順4.3が不完全であり、再確認が必要です。デプロイ先のリージョンが不明であることは、決して許されません。

  1. 手順1 — まず対象スキルの SKILL.md を読む(省略禁止): スキルを呼び出す前に、../huawei-cloud-computing-query/SKILL.md を必ず読んでください。このファイルには、正確な呼び出し形式、必須パラメーター、パラメーターの形式、対象リージョンの指定方法が記載されています。読んでいないスキルを正しく呼び出すことはできません。
  2. 手順2 — 確認済みのパラメーターでスキルを呼び出す: スキルの定義を読んだ後に限り、手順4.3で確認した計画の対象リージョンを指定し、必要な正確なパラメーターを使って huawei-cloud-computing-query スキルを呼び出します。確認済みの計画に含まれる各リソース仕様が、対象リージョンに実際に存在し、利用可能であることを確認してください。確認できない仕様を .tf ファイルに記述してはいけません。
  3. リージョンをまたぐ推測は禁止です — リージョン A で利用できるリソースが、リージョン B でも利用できるとは限りません。必ず対象リージョンで再度クエリを実行してください。

禁止事項:

  • ❌ 先に SKILL.md を読まずに huawei-cloud-computing-query スキルを呼び出す
  • ❌ スキル呼び出しに使うパラメーターを推測または捏造する
  • ❌ リソース仕様が利用可能であると確認できないまま Terraform の生成を進める
  • ❌ リソースの利用可否がリージョン間で引き継がれると仮定する

クエリに失敗した場合(環境エラー、ネットワークの問題、SDK のクラッシュ):

  • Terraform の生成を進めてはいけません。直ちに停止してください。
  • 問題を診断して解決してください:huawei-cloud-computing-query スキルの環境チェックを実行し、認証情報を確認し、ネットワークを確認してください。
  • クエリを再試行してください。再び失敗した場合は、問題を修正して再試行してください。
  • 「機能を縮退して続行する」ことは認められません。未確認の仕様は、デプロイ時に障害を引き起こす可能性があります。
  • この手順で許容される結果は、(a)すべての仕様が利用可能と確認される、または(b)仕様が利用不可と確認され、別の仕様を選ぶようユーザーに依頼する、のいずれかだけです。

重要な理由: 利用できないフレーバーを main.tf に記述すると、terraform validate は通過しても terraform apply が失敗する構成になります。数分待った後にしか表面化しないため、最も避けたい種類のエラーです。

既存の Terraform を変更する場合(フレーバーの変更、リージョンの切り替え、別のインスタンスタイプの使用など):.tf ファイルを編集する前に、新しいリージョンで新しい仕様の利用可否クエリを再実行してください。以前にクエリした結果が引き続き適用されると仮定してはいけません。

4.5 確認後に Terraform を生成する

重要:生成する前に、セクション 8.1 の対応表に記載された関連リファレンスドキュメントを必ず読んでください。

ユーザーがリソース計画を確認したら、必要な構造とスタイルのルールに従って Terraform ファイルを生成します。

ファイル構造と内容のルールについて詳しくは、reference/terraform-generation-guide.md を参照してください。

重要: 必要なすべてのファイル(providers.tf、variables.tf、main.tf、terraform.tfvars、README.md)を生成し、次に進む前にファイルが存在することを確認してください。

4.6 認証情報の設定を確認する

検証に進む前に、Huawei Cloud の認証情報が環境変数で設定されていることを確認してください。

AK/SK の取り扱いルールについては、reference/guardrails.md を参照してください。

4.6.1 プロバイダーのダウンロード用に Huawei Cloud ミラーを設定する

terraform init を実行する前に、公式 Terraform レジストリからのダウンロードが遅くならないよう、Huawei Cloud ミラーを設定してください。 まず公式レジストリからのダウンロードを試みないでください。必ず Huawei Cloud ミラーを使用してください。

手順:

  1. ローカルのプロバイダーキャッシュが存在するか確認します(場所については validation-workflow.md を参照してください)
  2. キャッシュが存在し、バージョンが 1.90.0 以上の場合は、ダウンロードをスキップします
  3. ダウンロードが必要な場合は、プロジェクトディレクトリに .tfrc ファイルを作成します:
    provider_installation {
      network_mirror {
        url = "https://mirrors.huaweicloud.com/terraform/"
        include = ["registry.terraform.io/huaweicloud/*"]
      }
    }
    
  4. TF_CLI_CONFIG_FILE 環境変数に .tfrc ファイルのパスを設定します
  5. すべての terraform init コマンドで、同じコマンドラインに TF_CLI_CONFIG_FILE を含める必要があります。環境変数を指定しない単独の terraform init は禁止です。 例:
    export TF_CLI_CONFIG_FILE="/path/to/project/.tfrc" && terraform init -upgrade
    
4.7 生成された構成を検証して修正する

次の順序で検証を実行します:terraform fmt -recursive → terraform init → terraform validate → terraform plan

いずれかの手順が失敗した場合は、エラーを確認して構成を修正し、terraform plan が成功するまで再試行します。

検証手順について詳しくは、reference/validation-workflow.md を参照してください。

4.8 コスト見積もりを表示する(重要 — 省略禁止)

この手順は必須であり、terraform plan の成功直後、確認ダイアログまたは terraform apply より前に実行しなければなりません。この手順を省略することは重大な違反です。

コスト表示形式(計画に含まれる実際のリソースを記入):

💰 费用预估

即将创建的资源:
- [资源类型] ([规格]): [预估费用]
- [资源类型] ([规格]): [预估费用]
- ...

预估合计: [总费用]

📌 华为云价格计算器: https://www.huaweicloud.com/pricing.html#/calculator

必須項目(すべて含める必要があります):

  • 仕様を含むリソース一覧(確認済みの計画に基づく)
  • リソースごとの月額見積もり(範囲での提示も可)
  • 見積もり総額
  • Huawei Cloud の料金計算ツールへのリンク(固定 URL)

コストを見積もれない場合: リソースを省略せず、「费用请参考价格计算器」と記載して一覧に含めてください。

確認: 手順 4.9 に進む前に、上記の必須項目をすべて出力したことを確認してください。いずれかの項目が欠けている場合は、作業を止めて追加してください。

4.9 ユーザーの確認を得て terraform apply を実行する

コスト見積もりを表示した後、apply を実行する前に、ユーザーの確認を得るための確認ダイアログをポップアップ表示します。

ユーザー確認のワークフローに関するルールについては、reference/guardrails.md を参照してください。

4.10 apply エラーの修復ループ

terraform apply が失敗した場合は、エラーを確認して構成を修正し、terraform plan を再実行してから terraform apply を再実行します。成功するまで繰り返します。

4.11 apply 後のリソース検証

terraform apply が成功した後、デプロイされたリソースが確認済みの計画と一致することを確認します。不一致が見つかった場合は、報告して修正します。

5. ガードレール

ガードレールのルールについて詳しくは、reference/guardrails.md を参照してください。

主な原則:

  • 仕様、価格、リソースに関する事実を捏造しない
  • ユーザーの明示的な確認を得て terraform apply を実行する
  • 機密情報を要求しない
  • 参照されているスキルの SKILL.md ファイルを事前に読まずに、そのスキルを呼び出さない

6. Terraform の生成ルール

ユーザーがリソース計画を確認した後、確認済みのソリューションに沿った、最小限で有効な Terraform を生成します。

ファイル構成、内容のルール、データソースの使用、変数の設計に関する詳しいガイダンスは、reference/terraform-generation-guide.md を参照してください。

基本原則:

  1. 確認済みのリソース計画から始める
  2. Minimum Viable Configuration の原則に従う
  3. 不必要な柔軟性より Terraform の有効性を優先する
  4. 関連する場合は既存のパッケージ参照を使用する

7. 環境の準備と検証

Terraform の利用可能性の確保、プロバイダーのダウンロード(Huawei Cloud ミラーから)、検証の順序、認証、修復ループに関する詳しいガイダンスは、reference/validation-workflow.md を参照してください。

8. リファレンスの使用とテンプレートのガイダンス

関連する場合は、スキルパッケージ内のリファレンス資料、テンプレート、例、ヘルパーユーティリティを使用してください。

8.1 関連する既存のリファレンスを使用する

生成前に、以下のリファレンスを必ず参照してください:

リソースリファレンスドキュメント主要なパターン
一般ルールreference/guardrails.md + reference/terraform-generation-guide.mdパスワードの自動生成、ユーザーに機密情報を求めない
セキュリティグループreference/VPC-best-practices/VPC-best-practices.md → "Deploy Security Group"ethertype が必須
EIP を使用する ECSreference/ECS-best-practices/Deploy-Instance-with-EIP-best-practices.mdhuaweicloud_compute_eip_associate を使用し、public_ip = .address とする
VPC/サブネットreference/VPC-best-practices/VPC-best-practices.md → "Deploy Basic Network"VPC/サブネットの構成
RDSreference/RDS-best-practices/RDS-best-practices.mdデータベースとネットワークの設定
8.2 既存の例やテンプレートを出発点として使用する

パッケージに対象のシナリオに近い例が含まれている場合は、それを出発点として使用してください。役立つ構成を維持し、確認済みの計画に合わせて調整し、不要なリソースを削除してください。

8.3 ユーザーの目標を関連するリファレンスに対応付ける

ビジネス目標をサービスのリファレンスに対応付けます(例:「ウェブサイトをデプロイする」→ VPC + ECS + EIP、「マネージドデータベース」→ RDS + ネットワーク)。

8.4 リファレンスを活用して改善し、過剰に構築しない

最終的な Terraform をユーザーが確認した計画に沿わせ、Minimum Viable Configuration の原則に従ってください。

8.5 テンプレートを盲目的に使用しない

テンプレートが確認済みの計画に合致することを必ず確認し、通常の検証ワークフローを通じて検証してください。

9. 品質チェックリスト

最終化する前に、以下を確認してください:

  • 生成された Terraform が確認済みのリソース計画に合致している
  • 必須の 5 つのファイル(providers.tf、variables.tf、main.tf、terraform.tfvars、README.md)がすべて生成され、検証されている
  • ユーザーに機密情報を求めていない
  • 検証が terraform plan まで到達しているか、進行を妨げた要因が明確に説明されている
  • ユーザーの確認前にコスト見積もりが表示されている(ステップ 4.8 — 必ず実施すること)
  • コスト見積もりに必須の要素がすべて含まれている:リソース一覧、仕様、リソースごとの推定コスト、合計コスト、料金計算ツールへのリンク
  • terraform apply の前に、確認ダイアログを通じてユーザーに確認を求めている
  • terraform apply が、ユーザーの明示的な確認後にのみ実行されている(またはユーザーが辞退している)

コメント