pulumi-arm-to-pulumi
Azure ARM テンプレート、Bicep テンプレート、またはそれらのコードを Pulumi 形式に変換・移行したり、既存の Azure リソースをインポートしたりする際に使用するスキルです。ユーザーが ARM / Bicep テンプレートや Azure リソースの Pulumi への移行・変換・インポートを求めた場合に必ず読み込まれます。
description の原文を見る
Convert or migrate Azure ARM (Azure Resource Manager) templates, Bicep templates, or code to Pulumi, including importing existing Azure resources. This skill MUST be loaded whenever a user requests migration, conversion, or import of ARM templates, Bicep templates, ARM code, Bicep code, or Azure resources to Pulumi.
SKILL.md 本文
IMPORTANT: PLAN ADJUSTMENT REQUIRED
既にこのスキルをロードする前に移行計画を生成している場合、以下を実施する必要があります:
- 既存計画をこのスキル内のワークフローと要件に照らし合わせ確認する
- ギャップ、欠落ステップ、不正な仮定を特定する
- このスキルのガイダンスに合わせて計画を更新・修正する
- 進める前に調整された計画をユーザーに伝える
CRITICAL SUCCESS REQUIREMENTS
移行出力は以下の すべて を満たす必要があります:
-
完全なリソースカバレッジ
- すべての ARM テンプレートリソースは:
- Pulumi プログラムに表現される OR
- 最終レポートで明確に正当化される
- すべての ARM テンプレートリソースは:
-
正常なデプロイ
- 生成された Pulumi プログラムは構造的に有効で、
pulumi previewの正常実行が可能でなければならない (適切な設定を仮定)
- 生成された Pulumi プログラムは構造的に有効で、
-
ゼロ差分インポート検証 (既存リソースをインポートする場合)
- インポート後、
pulumi previewは以下を表示する必要があります:- 更新 なし
- 置換 なし
- 作成 なし
- 削除 なし
- すべての差分は Preview Resolution Workflow を使用して解決する必要があります。
arm-import.mdを参照してください。
- インポート後、
-
最終移行レポート
- プルリクエスト適切な形式の正式な移行レポートを常に出力する
- 以下を含める:
- ARM → Pulumi リソースマッピング
- プロバイダー決定 (azure-native vs azure)
- 動作差異
- 欠落または手動で必要なステップ
- 検証手順
情報が不足している場合
ユーザーが提供した ARM テンプレートが不完全、曖昧、または成果物が不足している場合、Pulumi コード生成前に 的を絞った質問 をしてください。
インポート時に特定のリソースプロパティの処理方法に曖昧性がある場合、Pulumi コードを変更する前に 的を絞った質問 をしてください。
移行ワークフロー
以下のワークフローに 正確に この順序で従ってください:
1. 情報収集
1.1 Azure 認証の確認
Azure CLI コマンドを実行します (az resource list、az resource show など)。ESC を使用した初期ログインが必要です (az login)
- ユーザーが既に ESC 環境を提供している場合は、それを使用してください。
- ESC 環境が指定されていない場合、Azure CLI コマンドを実行する前に、ユーザーにどの ESC 環境を使用するかを尋ねてください。
ESC を使用した Azure CLI のセットアップ:
- ESC 環境は環境変数または Azure CLI 設定を通じて Azure 認証情報を提供できます
- ESC を使用して Azure にログインし、認証情報を提供します。例:
pulumi env run {org}/{project}/{environment} -- bash -c 'az login --service-principal -u "$ARM_CLIENT_ID" --tenant "$ARM_TENANT_ID" --federated-token "$ARM_OIDC_TOKEN"'。セッション確立後、ESC は不要です - 認証情報が機能していることを確認:
az account show - サブスクリプション確認:
az account list --query "[].{Name:name, SubscriptionId:id, IsDefault:isDefault}" -o table
ESC の詳細については: "Skill" ツールを呼び出して name = "pulumi-esc" として pulumi-esc スキルをロードしてください
1.2 ARM テンプレート構造の分析
ARM テンプレートは CloudFormation のような「スタック」の概念を持ちません。ARM テンプレート JSON ファイルを直接読む:
# テンプレート構造を表示
cat template.json | jq '.resources[] | {type: .type, name: .name}'
# パラメータを表示
cat template.json | jq '.parameters'
# 変数を表示
cat template.json | jq '.variables'
以下を抽出:
- リソースタイプと名前
- パラメータとデフォルト値
- 変数と式
- 依存関係 (dependsOn 配列)
- ネストされたテンプレートまたはリンクされたテンプレート
- Copy ループ (反復構造)
- 条件付きデプロイ (condition プロパティ)
ドキュメント: ARM Template Structure
1.3 リソースインベントリの構築 (既存リソースをインポートする場合)
ARM テンプレートが既にデプロイされており、既存リソースをインポートする場合:
# リソースグループ内のすべてのリソースをリスト
az resource list \
--resource-group <resource-group-name> \
--output json
# 特定のリソース詳細を取得
az resource show \
--ids <resource-id> \
--output json
# JMESPath を使用して特定のプロパティをクエリ
az resource show \
--ids <resource-id> \
--query "{name:name, location:location, properties:properties}" \
--output json
ドキュメント: Azure CLI Documentation
2. コード変換 (ARM → PULUMI)
重要: ARM から Pulumi への変換は手動翻訳が必要です。ARM テンプレート用の 自動変換ツールはありません。完全な変換はあなたの責任です。
主要な変換原則
-
プロバイダー戦略:
- デフォルト: Azure Resource Manager API の完全なカバレッジのために
@pulumi/azure-nativeを使用 - フォールバック: azure-native が特定の機能をサポートしない場合、または簡略化された抽象化が必要な場合は
@pulumi/azure(クラシックプロバイダ) を使用
ドキュメント:
- デフォルト: Azure Resource Manager API の完全なカバレッジのために
-
言語サポート:
- TypeScript/JavaScript: 最も一般的、優れた IDE サポート
- Python: データチームと ML ワークフローに最適
- C#: .NET チームに最適
- Go: 高パフォーマンス、強力な型付け
- Java: エンタープライズ Java チーム
- YAML: シンプルな宣言的アプローチ
- ユーザーの好みまたは既存のコードベースに基づいて選択
-
完全なカバレッジ:
- ARM テンプレート内の すべて のリソースを変換
- すべての条件、ループ、依存関係を保持
- パラメータと変数のロジックを維持
arm-conversion-patterns.md の変換パターンに従ってください。
arm-conversion-patterns.md は以下を提供します:
- パラメータ、変数、出力マッピング
- Copy ループ、条件、dependsOn 翻訳
- ネストされたテンプレート → ComponentResource
- Azure Classic プロバイダーの例 (VNet、App Service)
- TypeScript 出力処理と一般的な落とし穴
3. リソースインポート (既存リソース) - オプション
変換後、既存リソースを Pulumi で管理されるようにオプションでインポート可能です。ユーザーがこれをリクエストしない場合、変換後のフォローアップステップとして提案してください。
重大: ユーザーが既存の Azure リソースを Pulumi にインポートするようリクエストした場合、詳細なインポート手順とゼロ差分検証ワークフローについては arm-import.md を参照してください。
arm-import.md は以下を提供します:
- インラインインポート ID パターンと例
- Azure リソース ID フォーマット規約
- 子リソース処理 (例: WebAppApplicationSettings)
- Preview Resolution Workflow (インポート後のゼロ差分達成用)
- プロパティ競合のステップバイステップデバッグ
主要なインポート原則
-
インラインインポートアプローチ:
- Azure リソース ID 付き
importリソースオプションを使用 pulumi-cdk-importerと異なり、別途インポートツールなし
- Azure リソース ID 付き
-
Azure リソース ID:
- 予測可能なパターン に従う:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} - 規約で生成、または Azure CLI 経由でクエリ可能
- 予測可能なパターン に従う:
-
ゼロ差分検証:
- インポート後に
pulumi previewを実行 - Preview Resolution Workflow を使用してすべての差分を解決
- 目標: 更新、置換、作成、削除 なし
- インポート後に
4. Pulumi 設定
ARM テンプレートパラメータに合わせてスタック設定を構成:
# Azure リージョンを設定
pulumi config set azure-native:location eastus --stack dev
# アプリケーションパラメータを設定
pulumi config set storageAccountName mystorageaccount --stack dev
# シークレットパラメータを設定
pulumi config set --secret adminPassword MyS3cr3tP@ssw0rd --stack dev
5. 検証
preview でゼロ差分を達成後 (インポートする場合)、移行を検証:
-
すべてのエクスポートをレビュー:
pulumi stack output -
リソース関係を確認:
pulumi stack graph -
アプリケーション機能をテスト (該当する場合)
-
移行後に必要な手動ステップを文書化
ユーザーとの協力
ユーザーが ARM から Pulumi への移行の計画または実行についてサポートを求める場合、上記の情報を使用して変換およびインポートプロセスを通じてユーザーをガイドしてください。
詳細なドキュメントについて
ユーザーが追加情報を希望する場合、web-fetch ツールを使用して公式 Pulumi ドキュメントからコンテンツを取得:
- ARM 移行ガイド: https://www.pulumi.com/docs/iac/adopting-pulumi/migrating-to-pulumi/from-arm/
- Azure Native プロバイダー: https://www.pulumi.com/registry/packages/azure-native/
- Azure Classic プロバイダー: https://www.pulumi.com/registry/packages/azure/
Microsoft Azure ドキュメント:
- ARM テンプレートリファレンス: https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/
- Azure CLI リファレンス: https://learn.microsoft.com/en-us/cli/azure/
- Azure リソース ID: https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource
出力形式 (必須)
移行を実行する際は、常に以下を出力:
- 概要 (高レベルの説明)
- 移行計画サマリー
- 特定された ARM テンプレートリソース
- 変換戦略 (言語、プロバイダー)
- インポートアプローチ (該当する場合)
- Pulumi コード出力 (ファイル別に編成)
- メインプログラムファイル
- コンポーネントリソース (該当する場合)
- 設定手順
- リソースマッピングテーブル (ARM → Pulumi)
- ARM リソースタイプ → Pulumi リソースタイプ
- ARM リソース名 → Pulumi 論理名
- インポート ID (インポートする場合)
- Preview Resolution メモ (インポートする場合)
- 検出された差分
- 適用された解決戦略
- 無視されたプロパティ vs. 追加プロパティ
- 最終移行レポート (PR 対応)
- 変更サマリー
- テスト手順
- 既知の制限事項
- 次のステップ
- 設定セットアップ
- 必須設定値
pulumi config setコマンド例
コードは構文的に有効で、ファイル別に明確に分離してください。
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- pulumi
- リポジトリ
- pulumi/agent-skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/pulumi/agent-skills / ライセンス: Apache-2.0
関連スキル
superpowers-streamer-cli
SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。
catc-client-ops
Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。
ci-cd-and-automation
CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。
shipping-and-launch
本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。
linear-release-setup
Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。
tracking-application-response-times
API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。