mcpField
O
opentofu

opentofu

github.com/oakossクラウド・DevOps20141 回インストール10 週間前に更新
リポジトリ

opentofu について

opentofuは、HCLでクラウドインフラを宣言的に管理するためのスキルです。インフラ担当者向けに、計画、プロビジョニング、状態管理、暗号化に加え、PulumiのIaCパターンも扱います。

主な機能

  1. 01HCLによる宣言的なインフラ管理
  2. 02リソースの計画、適用、削除
  3. 03リモート状態とワークスペースの管理
  4. 04モジュールによる構成の再利用
  5. 05Pulumiのプロジェクトと自動化パターンの参照

活用シーン

  1. 01マルチクラウドリソースのプロビジョニング
  2. 02環境ごとの状態分離
  3. 03既存リソースの管理への取り込み
  4. 04CI/CDでのインフラ変更のレビュー

インストール

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

$npx skills add https://github.com/oakoss/agent-skills --skill opentofu

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

同梱ファイル

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

references/
cicd-integration.md
hcl-fundamentals.md
import-migration.md
modules.md
pulumi-sdk.md
pulumi-stacks.md
state-encryption.md
state-management.md
variables-outputs.md
workspaces.md

詳細

OpenTofu

概要

OpenTofu は、HCL(HashiCorp Configuration Language)を使用してクラウドインフラストラクチャを宣言的に管理する、オープンソースの Infrastructure as Code ツールです。コミュニティ主導の Terraform フォークであり、既存の Terraform プロバイダーやモジュールと完全な互換性を備え、ネイティブな状態暗号化などの独自機能もあります。Pulumi は、HCL ではなく汎用プログラミング言語(TypeScript、Python、Go)を使用する、別の IaC アプローチを提供します。

使用する場合: クラウドインフラストラクチャを宣言的に管理する場合、マルチクラウドのリソースをプロビジョニングする場合、環境間でインフラストラクチャの一貫性を確保する場合、保存時の状態を暗号化する場合(OpenTofu)、IaC に使い慣れたプログラミング言語を使用する場合(Pulumi)。

使用しない場合: CLI ツールのほうが適している単発のスクリプト、アプリケーションレベルの構成管理(Ansible/Chef を使用)、コンテナオーケストレーションのロジック(Kubernetes マニフェストを使用)、シンプルな静的ホスティング(プラットフォーム標準のツールを使用)。

クイックリファレンス

パターンツール/コマンド主なポイント
プロジェクトを初期化するtofu initプロバイダーをダウンロードし、バックエンドを初期化します
変更をプレビューするtofu plan適用せずに差分を表示します
変更を適用するtofu applyリソースをプロビジョニング/更新します
リソースを破棄するtofu destroy管理対象のインフラストラクチャを削除します
リソースをインポートするtofu import <addr> <id>既存のリソースを管理対象にします
状態の暗号化terraform.encryption blockOpenTofu 独自機能。キー プロバイダーを使った AES-GCM 暗号化
リモートバックエンドbackend "s3" / backend "gcs"ロック機能付きで状態をクラウドストレージに保存します
ワークスペースtofu workspace new <name>環境ごとに状態を分離します
モジュールの使用module "name" { source = "..." }再利用可能なインフラストラクチャコンポーネント
出力値output "name" { value = ... }他の構成や CI で使う値を公開します
変数ファイルterraform.tfvars / -var-file環境固有の変数を上書きします
Pulumi の新規プロジェクトpulumi new typescriptTypeScript の IaC プロジェクトをひな形から作成します
Pulumi のプレビューpulumi preview計画されている変更を表示します
Pulumi のデプロイpulumi upリソースをプロビジョニング/更新します
Pulumi の構成pulumi config set key valueスタック単位の構成を設定します
Pulumi のシークレットpulumi config set --secret key val暗号化された構成値
Pulumi のスタックpulumi stack select <name>環境を切り替えます
Automation APILocalWorkspace.createOrSelectStack()プログラムからスタックを管理します

よくある間違い

間違い正しいパターン
チーム環境で状態をローカルに保存する状態ロックを有効にしたリモートバックエンド(S3、GCS、Azure Blob)を構成する
HCL にプロバイダーの認証情報をハードコードする環境変数またはプロバイダー固有の認証チェーンを使用する
プランを確認せずに tofu apply を実行するtofu plan -out=plan.tfplan を実行してから tofu apply plan.tfplan を実行する
状態を手動で編集するtofu state mv、tofu state rm、または tofu import を使用する
.terraform.lock.hcl を無視するプロバイダーのバージョンを再現可能にするため、ロックファイルをコミットする
複雑な条件付きリソースに count を使用するリソースアドレスを安定させるため、マップを使った for_each を優先する
すべての環境で 1 つのワークスペースを共有する環境ごとにワークスペースまたはバックエンド設定を分ける
シークレットを terraform.tfvars に入れるsensitive = true の変数、Vault、または環境変数を使用する
Pulumi:コンポーネントクラスの外でリソースを作成する関連するリソースを ComponentResource でラップして再利用する
Pulumi:非同期操作を待機しないスタックをエクスポートする前に、すべてのリソース操作が完了するようにする
CI/CD で tofu plan を省略するパイプラインでは必ずプランを作成し、適用前に承認を求める
-target を慎重に使用しない完全なプランを優先する。-target を使うと状態に不整合が生じる可能性がある

委任

  • インフラストラクチャパターンの調査:Explore エージェントを使用する
  • IaC コードレビュー:Task エージェントを使用する
  • ドリフト検出の分析:Task エージェントを使用する

amazon-web-services スキルが利用可能な場合は、AWS リソースパターンをそのスキルに委任してください。 docker スキルが利用可能な場合は、コンテナインフラストラクチャのパターンをそのスキルに委任してください。 github-actions スキルが利用可能な場合は、CI/CD パイプラインのパターンをそのスキルに委任してください。

参考資料

コメント