本日はAWESOME-COPILOTの技術調査枠です。
AWESOME-COPILOTのドキュメントを読みながら実際に操作を試して記事に残します。
今回はカスタムインストラクションの一つAzure Terraform Best Practicesについてです。
Azure Terraform Best Practices
Azure Terraform Best PracticesはAzure上でTerraformを使用して構築されたソリューションを作成または変更します。
Terraformのコードを生成・修正・提案する際にAzure専用の高度なルールや品質基準に従うようCopilotを誘導します。
以下のページからAzure Terraform Best Practicesのインストールボタンをクリックして取得します。
github.com
インストールボタンを押してAzure Terraform Best Practicesをダウンロードします。
すると.github/instructions配下にインストラクションがインストールされます。

インストールしたインストラクションはCopilotの動作に自動的に適用されます。
このカスタムインストラクションは、次のような拡張子のTerraform関連ファイル全般に適用されます。
**/*.terraform, **/*.tf, **/*.tfvars, **/*.tflint.hcl, **/*.tfstate など
インストラクションが読み込まれると、CopilotはTerraform on Azureのコンテキストを理解した上で以下のようなコード生成・提案・説明を行うようになります。
DevOpsの原則を組み込み
インストラクションにはCALMS(Culture, Automation, Lean, Measurement, Sharing)といった DevOps原則が含まれています。
Copilotはこれを前提として、以下のような質問・コード生成時の方針を持つようになります。
- 自動化を優先する提案
- 継続的改善と共有を意識したコメントやドキュメント
- 最小限で安全なコード変更を行う提案
アンチパターンの回避
Copilotは以下のような悪いパターンを避けるよう提案します。
- ハードコード値を使わない
- Terraform import を日常的に使わない
- secrets を .tfstate やコードに保存しない
- 過度に複雑な条件式を生成しない
- 手動変更をTerraformで管理しない
コードの組織化・構造化
CopilotはTerraformの標準フォルダ・ファイル構成を前提にした提案を行います。
- main.tf → リソース定義
- variables.tf → 変数定義
- outputs.tf → 出力
- providers.tf → プロバイダー設定
- locals.tf → 再利用可能な値
Azure Verified Modules(AVM)の活用
CopilotはAzure Verified Modules(AVM)を優先的に使うように提案します。
AVMはMicrosoftが検証したTerraformモジュールであり、ベストプラクティス設計が反映されています。
既存AVMがあれば優先して使用し、ない場合は 「AVMに準拠したモジュール設計」 を提案します。
変数・シークレットの取り扱い
Copilotは変数命名や機密情報の扱いを適切にするよう提案します。
- 変数名はsnake_case
- 変数には明確な型と説明
- secretsはKey Vaultを推奨
- stateにsecretsを絶対に保存しない
出力・ローカル値の設計
Copilot は以下のような読みやすい安全な設計案を返します。
- 必要な出力のみ生成
- 機密データはsensitive=trueに設定
- localsで複雑な値を整理
Azure リソース設計・運用のベストプラクティス
CopilotはAzure特有のコンテキストも含めて提案します。
これにより単なるHCLの提示ではなくAzureに最適化された設計案を生成します。
- Azure のリソースグループやタグ戦略
- VNet/サブネットの設計
- NSGやセキュリティ構成
- Managed Identityの利用
- リモートステートのバックエンド設計
Terraform 実行・検証の提案
Copilotはユーザーの意図に沿って以下のように対話的なガイド付きで操作提案を行います。
- terraform validate を提案
- 実行前に plan の生成や説明
- idempotency(同じapplyで結果が変わらないこと)の検証