本日はAWESOME-COPILOTの技術調査枠です。
AWESOME-COPILOTのドキュメントを読みながら実際に操作を試して記事に残します。
今回はカスタムインストラクションの一つTerraform Conventionsについてです。
Terraform Conventions
Terraform Conventionsはセキュアで再利用しやすいproduction-grade Terraformを書くルールです。
Terraformはインフラをコードで管理する(Infrastructure as Code / IaC)ためのツールです。
Terraform の全設定ファイル(.tf) が対象です。
主に AWSなどのクラウドインフラを IaC(Infrastructure as Code)で管理する構成 に効きます。
以下のページからGenaiscriptのインストールボタンをクリックして取得します。
github.com
インストールボタンを押してTerraform Conventionsをダウンロードします。
すると.github/instructions配下にインストラクションがインストールされます。

インストールしたインストラクションはCopilotの動作に自動的に適用されます。
このインストラクションを読み込むと、Copilotはセキュリティ・運用・再利用性まで考えるDevOps / Platformエージェントとして振る舞います。
以下のファイルを対象に動作します。
- **/*.tf
具体的にはCopilotは以下のような行動をとります。
セキュリティ重視のTerraformになる
Copilotは“動く”より“安全”を優先するようになります。
Copilotは最初から以下を前提に考え始めます。
- IAM 最小権限
- private subnet 優先
- encryption enabled
- secret separation
また「state file に secret を残さない設計」を強く意識します。
さらに以下を積極的に提案するようになります。
- AWS Secrets Manager
- SSM Parameter Store
- environment variables
巨大Terraformではなくmodule構成になる
Copilotは巨大.tfファイルを嫌うようになります。
以下のような責務分離された構成を提案しやすくなります。
terraform/ ├── network/ ├── ecs/ ├── database/ ├── iam/ └── monitoring/
ハードコードを嫌い変数化が増える
Copilotは再利用可能な構成を強く志向します。
つまり環境差分に強いTerraformを書こうとします。
data sourceとoutputを正しく使う
CopilotがTerraform dependencyの扱い方をかなり意識します。
例えば以下のようなコードでデータソースを取得します。
data "aws_vpc" "main" {
default = true
}ただし同一構成内で作るresourceに対してはoutputを使う方向になります。
つまりTerraform graph を理解した構成を作るようになります。
Terraform Style Guideを強制する
本インストラクションはterraform fmt的なコードへ寄せます。
Copilotが以下のファイル構成を提案しやすくなります
providers.tf variables.tf network.tf ecs.tf outputs.tf
またresource内で以下のように、順序の一貫性を保とうとします。
resource "aws_instance" "app" {
depends_on = []
for_each = ...
lifecycle {}
tags = {}
}さらに以下の記述も意識します。
- 2スペース indentation
- alphabetize
- blank lines
- related grouping
つまり読みやすくレビューしやすい IaCになります。
本番運用前提(Production-grade)になる
Copilotの思想が「apply が成功する」から「安全に長期運用できる」へ変わります。
例えば以下を自然に意識するようになります。
- encryption enabled
- least privilege IAM
- private subnet 優先
- secret rotation
- sensitive outputs
単なるIaCではなくCloud Securityを考えたIaCになります。