pulumi-terraform-to-pulumi
Terraform/OpenTofu プロジェクトを Pulumi へ移行するスキルで、HCL ソースコードの変換や Terraform state の Pulumi スタックへのインポートに対応します。ユーザーが Terraform から Pulumi への変換、HCL からの移行、または tfstate のインポートを希望する場合に使用してください。Terraform と Pulumi の一般的な比較や両ツールの併用に関する質問には適用しないでください。
description の原文を見る
Migrate Terraform/OpenTofu projects to Pulumi, including translating HCL source code and/or importing Terraform state into a Pulumi stack. Use when a user wants to convert Terraform to Pulumi, migrate from HCL, or import tfstate into Pulumi. Do NOT trigger for general Terraform-vs-Pulumi comparisons or questions about using both tools side-by-side.
SKILL.md 本文
Terraform から Pulumi への移行
重要な制約 — 実行前に必ずお読みください:
pulumi convertを実行しないでください — state のマッピングを保持する terraform-migrate プラグインを代わりに使用してください。pulumi package add terraform-moduleを実行しないでください — これは異なるワークフロー用です。- Pulumi プロジェクトを
/workspaceの下に作成しないでください — チェックアウト済みのリポジトリ内に作成してください。- 以下の
${terraform_dir}と${pulumi_dir}を、ユーザーと確認した実際のパスに置き換えてください。
まずスコープを確認し、ユーザーと一緒に以下の内容を確認して移行計画を立ててください:
- Terraform ソースコードの場所 (
${terraform_dir}) - 移行された Pulumi プロジェクトの場所 (
${pulumi_dir}) - ターゲット Pulumi 言語 (TypeScript、Python、YAML など)
- 移行の目的が Pulumi スタック状態のセットアップか、ソースコードの変換のみか
計画をユーザーと確認してから進めてください。
選択した言語で ${pulumi_dir} に新しい Pulumi プロジェクトを作成します。ソースコードを編集して空の状態にし、リソースを宣言しないようにします。Pulumi スタックが存在することを確認します。
初期スタック状態が書き込まれていることを確認するため、続行する前に pulumi_up ツールを実行する必要があります。
${terraform_dir} にローカルの .tfstate ファイルが存在しない場合、状態はリモートバックエンド (S3、Pulumi Cloud、Terraform Cloud など) にある可能性があります。続行する前に取得してください:
cd ${terraform_dir} && terraform state pull > terraform.tfstate
これはすべてのバックエンド (Pulumi Cloud を含む) で機能します。terraform が利用できない場合は、代わりに tofu state pull を試してください。
次に、Pulumi state の翻訳案を作成します:
pulumi plugin run terraform-migrate -- stack \
--from ${terraform_dir} \
--to ${pulumi_dir} \
--out /tmp/pulumi-state.json \
--plugins /tmp/required-providers.json
プラグインを自動インストールする必要があるため、インストールしないでください。
tofu refresh が認可されていないために terraform-migrate プラグインが失敗することがあります。このステップをスキップしないでください。ユーザーと協力して、コマンドを成功させるために必要な認証情報を提供する Pulumi ESC 環境を見つけるか構築してください。ESC 環境のセットアップが実行可能でない場合は、移行を自動的に続行できないことをユーザーに通知してください。
生成された /tmp/required-providers.json を読み込み、すべての Pulumi プロバイダーを新しいプロジェクトにインストールします。既にインストールされているプロバイダーがダウングレードされる場合でも、提案されたバージョンを尊重してください。ファイルには [{"name":"aws","version":"7.12.0"}] などのレコードが含まれます。
言語固有のパッケージマネージャーを使用してプロバイダーをプロジェクト依存関係としてインストールします (pulumi plugin install は使用しないでください。これはプラグインをダウンロードするだけで、依存関係を追加しません):
# TypeScript/JavaScript
npm install @pulumi/aws@7.12.0
# Python
pip install pulumi_aws==7.12.0
# Go
go get github.com/pulumi/pulumi-aws/sdk/v7@v7.12.0
# C#
dotnet add package Pulumi.Aws --version 7.12.0
翻訳された state 案 (/tmp/pulumi-state.json) を Pulumi スタックにインポートします:
pulumi stack import --file /tmp/pulumi-state.json
ソースコードを Terraform ソースと翻訳された state の両方に合わせるように変換します。完全一致を目指してください。state 案 /tmp/pulumi-state.json を参照して、使用する Pulumi リソースタイプと名前を確認できます。
pulumi_preview ツールが変更がなく、差分が空またはほぼ空であることを確認するまで、ソースコードの修正を繰り返します。プロバイダーの差分またはタグの差分は許容できます。
ユーザーに対して、ESC 環境をスタックにリンクするオプションを提供してください。これにより、各 Pulumi スタックがシームレスに必要なプロバイダー認証情報にアクセスできます。
すべてが問題ないように見えたら、移行されたソースコードを含む Pull Request を作成します。
ライセンス: 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 パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。