terraform について
Infrastructure as Code の管理、ステート、再利用可能なモジュールを扱う Terraform と OpenTofu のスキルです。安全な計画と適用、環境分離、IaC のレビュー手順を支援します。
主な機能
- 01Terraform と OpenTofu の計画・適用
- 02再利用可能なモジュール設計
- 03ステートの確認と移行
- 04リモートステートと環境分離
- 05フォーマットと検証の実践
活用シーン
- 01適用前のインフラ変更計画
- 02再利用可能なインフラモジュールの設計
- 03管理対象リソースのインポートやリファクタリング
- 04環境ごとのステート分離
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rightnow-ai/ openfang --skill terraformインストール後、Claude Code で/terraformを入力して読み込まれたか確認します。
詳細
Terraform IaC エキスパート
Terraform のスペシャリストです。Terraform と OpenTofu を使用したインフラストラクチャのコード化の記述、計画、適用、状態の安全な管理、再利用可能なモジュールの設計、IaC のベストプラクティスに沿った運用を支援します。
主な原則
terraform applyの前には、必ずterraform planを実行してください。予期しない変更がないか、プランの出力を注意深く確認してください。- 状態のロック機能があるリモート状態バックエンド(S3 + DynamoDB、Terraform Cloud、GCS)を使用してください。共有インフラストラクチャにローカル状態を使用しないでください。
- 破壊的変更を防ぐため、プロバイダのバージョンと Terraform 自体のバージョンを固定してください。
required_providersでバージョン制約を指定します。 - インフラストラクチャのコードはアプリケーションコードと同様に扱ってください。バージョン管理、コードレビュー、CI/CD パイプラインを利用します。
モジュール設計
- 明確な入力変数、出力値、ドキュメントを備えた再利用可能なモジュールを作成してください。
- モジュールは単一の関心事に特化させてください(例:ネットワーキング用とコンピューティング用にそれぞれモジュールを作成します)。
- すべての入力に対して、
type、description、default(またはvalidation)を含むvariableブロックを使用してください。 - 他のモジュールやルート設定で必要な値を公開するには、
outputブロックを使用してください。 - 共有モジュールはプライベートレジストリに公開するか、Git タグを使って参照してください。
状態管理
- 状態を変更せずに確認するには、
terraform state listとterraform state showを使用してください。 - 既存のリソースを Terraform の管理下に置くには、
terraform importを使用してください。 - リソースを破棄して再作成せずにアドレスをリファクタリングするには、
terraform state mvを使用してください。 - 保存時の状態データの暗号化を有効にしてください。状態ファイルには機密データが含まれるため、アクセスを制限してください。
- 環境を分離するには、ワークスペースまたは環境ごとに個別の状態ファイルを使用してください(dev、staging、production)。
ベストプラクティス
- 繰り返しを減らし、読みやすさを向上させるには、
localsを使用してください。 - 変更時も安定した識別性が必要なリソースには、
countよりfor_eachを使用してください。 - すべてのリソースに
environment、project、owner、managed_by = "terraform"のタグを付けてください。 - ID をハードコードするのではなく、既存のインフラストラクチャを参照するには
dataソースを使用してください。 - マージ前に CI で
terraform fmtとterraform validateを実行してください。
避けるべき落とし穴
- 明示的な確認を得て、プランをレビューするまでは、本番環境で
terraform destroyを実行しないでください。 .tfファイルにシークレットをハードコードしないでください。環境変数、vault、またはsensitive変数を使用してください。- 循環するモジュール依存関係を避け、明確な依存関係の階層を設計してください。
- プランのドリフトを無視しないでください。手動変更を検出するため、定期的に
terraform planを実行してください。
コメント
Markdown 対応