awesome-copilot/instructions/generate-modern-terraform-code-for-azure.instructions_ja.md

85 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
description: 'Azure用の現代的なTerraformコード生成のガイドライン'
applyTo: '**/*.tf'
---
## 1. 最新のTerraformとプロバイダーを使用
常に最新の安定版TerraformとAzureプロバイダーをターゲットにします。コードでは、必要なTerraformとプロバイダーのバージョンを指定してこれを強制します。新機能と修正を取得するため、プロバイダーバージョンを最新に保ちます。
## 2. コードを整理する
論理的なファイル分離でTerraform設定を構造化します
- リソース用に`main.tf`を使用
- 入力用に`variables.tf`を使用
- 出力用に`outputs.tf`を使用
- 一貫した命名規則とフォーマット(`terraform fmt`)に従う
これにより、コードのナビゲートと保守が容易になります。
## 3. モジュールでカプセル化
再利用可能なインフラコンポーネントをグループ化するためにTerraformモジュールを使用します。複数のコンテキストで使用されるリソースセットに対しては
- 独自の変数/出力を持つモジュールを作成
- コードの重複ではなくそれを参照
- これにより再利用性と一貫性が促進される
## 4. 変数と出力を活用
- すべての設定可能な値を型と説明を持つ変数を使用して**パラメータ化**
- オプション変数について適切な場合は**デフォルト値を提供**
- 他のモジュールやユーザー参照のため、キーリソース属性を公開するために**出力を使用**
- シークレットを保護するため、**機密値を適切にマーク**
## 5. プロバイダーの選択AzureRM対AzAPI
- ほとんどのシナリオでは**`azurerm`プロバイダーを使用** 高い安定性を提供し、Azureサービスの大部分をカバー
- **`azapi`プロバイダーは**以下が必要な場合のみ使用:
- 最新のAzure機能
- `azurerm`でまだサポートされていないリソース
- コードコメントで**選択を文書化**
- 必要に応じて両方のプロバイダーを一緒に使用できるが、疑わしい場合は`azurerm`を優先
## 6. 最小限の依存関係
- プロジェクトの範囲を超えて確認なしに追加のプロバイダーやモジュールを**導入しない**
- 特別なプロバイダー(例:`random``tls`)や外部モジュールが必要な場合:
- 説明するためのコメントを追加
- ユーザーの承認を確保
- インフラストラクチャスタックを軽量に保ち、不要な複雑さを避ける
## 7. 冪等性を確保
- 同じ結果で繰り返し適用できる設定を作成
- **非冪等アクションを避ける**
- すべての適用で実行されるスクリプト
- 二度作成されると競合する可能性があるリソース
- **複数の`terraform apply`実行によってテスト**し、2回目の実行がゼロ変更となることを確保
- ドリフトや外部変更を適切に処理するため、リソースライフサイクル設定や条件式を使用
## 8. 状態管理
- Terraform状態を安全に保存するために**リモートバックエンド**状態ロック付きのAzure Storageなどを使用
- チームコラボレーションを有効にする
- **状態ファイルをソース管理にコミットしない**
- これにより競合を防ぎ、インフラストラクチャ状態を一貫して保つ
## 9. ドキュメント化と図表化
- **最新のドキュメントを維持**
- コードが変更されるたびに新しい変数、出力、使用方法の指示で**README.mdを更新**
- 自動化のため`terraform-docs`のようなツールの使用を検討
- 各重要な更新後にインフラストラクチャ変更を反映するため**アーキテクチャ図を更新**
- よく文書化されたコードと図表により、チーム全体がインフラストラクチャを理解できる
## 10. 変更の検証とテスト
- 変更を適用する前に**`terraform validate`を実行**し、`terraform plan`出力をレビュー
- エラーや意図しない変更を早期に捕捉
- **自動チェックの実装を検討**
- CIパイプライン
- プレコミットフック
- フォーマット、リンティング、基本検証を強制