GitHub Copilot CLI, Terraform projelerinde terminalden copilot komutuyla çalışan bir kodlama ajanıdır. Bu rehberde, Terraform modülleri, state yönetimi ve plan/apply döngüsünde Copilot CLI’yi güvenli ve verimli kullanmanın pratik yollarını göreceksiniz. Genel kurulum ve komutlar için GitHub Copilot CLI sayfasına bakabilirsiniz; ayrıca diğer CLI ajanlarıyla karşılaştırma için Copilot CLI mı Claude Code mu? 2026’da nasıl seçilir yazısına göz atabilirsiniz.
Neden GitHub Copilot CLI Terraform işleri için uygun?
Terraform projeleri dosya ağırlıklıdır: .tf dosyaları, değişkenler, çıktılar ve modül dizinleri. Copilot CLI doğrudan bu dosyaları okur, düzenler ve terminal komutlarını çalıştırır. Ajan, HCL sözdizimini ve Terraform planını anladığı için kaynak ekleme, değişken tanımlama veya modül çağrısı gibi işleri hızlandırır. Örneğin; aws_instance kaynağına yeni bir user_data parametresi eklemek veya bir modülün outputs.tf dosyasına eksik çıktıyı yazmak saniyeler sürer. State ve backend konfigürasyonunda yapılacak değişikliklerde önce plan almayı önerebilir; bu da geri dönüşü olmayan apply hatalarını azaltır. Ayrıca çok katmanlı projelerde modül sınırlarını koruyarak tekrar eden kod bloklarını azaltır. Ajan, terraform fmt komutunu çalıştırarak HCL dosyalarını standart biçime getirir; bu, ekip içinde tutarlılık sağlar. Terraform sürüm yükseltmelerinde provider değişikliklerini tespit edip gerekli kod güncellemelerini önerebilir. Temel kullanım adımları için GitHub Copilot CLI nasıl kullanılır? Adım adım rehber rehberine de göz atabilirsiniz.
Projeyi ajan için hazırlama
Copilot CLI, proje kökündeki .github/copilot-instructions.md veya AGENTS.md dosyasını okur. Terraform için bu dosyaya komutlar, dizin kuralları ve güvenlik kısıtları yazmalısınız. Aşağıdaki örnek, ortam bazlı klasörler ve modül yapısı varsayar:
# Terraform projesi talimatları
## Komutlar
- Başlat: `terraform init -backend-config=environments/dev/backend.tfvars`
- Doğrula: `terraform validate`
- Biçimlendir: `terraform fmt -recursive`
- Plan: `terraform plan -var-file=environments/dev/terraform.tfvars`
- Test: `terraform test`
- Lint: `tflint --recursive`
## Dizin düzeni
- `modules/` yeniden kullanılabilir modüller içerir; her modül kendi variables.tf, outputs.tf ve main.tf dosyasına sahiptir.
- `environments/` altında her ortam (dev, staging, prod) kendi backend.tfvars ve terraform.tfvars dosyalarını kullanır.
- Kök dizinde sadece ortak provider.tf ve backend.tf bulunur.
## Kurallar
- Hiçbir zaman `terraform apply` çalıştırma; önce `terraform plan` öner, kullanıcı onaylarsa `terraform apply` çalıştır.
- State dosyasını manuel düzenleme; `terraform state` komutlarını kullan.
- Provider sürümlerini `required_providers` içinde sabitle.
- Her değişiklikten sonra `terraform fmt` ve `terraform validate` çalıştır.
- Gizli değerleri (token, key) değişken olarak tanımla, dosyaya yazma.
Bu talimatlar sayesinde ajan apply gibi kritik komutları atlamaz ve ortam dizinlerine sadık kalır. AGENTS.md kullanıyorsanız içerik aynı olabilir; önemli olan ajanın ilk çalıştırmada bu dosyayı okuyup kurallara uymasıdır. Ayrıca değişkenlerin sensitive bayrağıyla işaretlenmesi, ajanın plan çıktısında gizli değerleri göstermesini engeller. Talimat dosyasına örneğin “Yeni modül eklerken önce dizin yapısını göster, sonra dosyaları oluştur” gibi bir kural koymak, ajanın planlı ilerlemesini sağlar. Talimat dosyası yazarken daha fazla ipucu için CLAUDE.md nasıl yazılır? AGENTS.md ve GEMINI.md rehberi sayfasına bakabilirsiniz.
Çalışma döngüsü: planla, küçük adımlar, test et, diff’i incele
Terraform’da ajanla çalışırken her görev için kısa ve net prompt verin. Ajanın değişikliklerini git diff ile inceleyin, ardından terraform validate ve terraform plan çalıştırın. İşte tipik görevler için örnek promptlar:
| Görev | İyi prompt |
|---|---|
| Yeni kaynak ekleme | modules/networking/main.tf içine private subnet için aws_subnet kaynağı ekle, cidr_block değişkenini variables.tf’e tanımla. |
| Modül çıktısı | modules/networking/outputs.tf’e subnet_id çıktısını ekle ve kök main.tf’te bu çıktıyı kullanan aws_instance kaynağı oluştur. |
| State taşıma | aws_security_group.allow_ssh kaynağını modules/security/main.tf’e taşı ve eski kaynağı kök main.tf’ten sil, sonra gerekli terraform state mv komutunu öner. |
| Backend değişikliği | environments/dev/backend.tfvars içindeki bucket adını yeni-deger yap, ancak önce plan öner ve apply komutunu ben onaylayana kadar çalıştırma. |
| Değişken güncelleme | environments/prod/terraform.tfvars içindeki instance_type değerini t3.medium yap, sonra terraform validate ile doğrula. |
| Resource import | Mevcut aws_s3_bucket.example bucket’ını Terraform state’ine import etmek için gerekli terraform import komutunu ve main.tf’teki kaynak bloğunu oluştur, sonra planı göster. |
| Modül sürüm yükseltme | modules/vpc modülünü terraform-aws-modules/vpc/aws sürüm 5.0.0’dan 5.1.0’a yükselt, tüm değişken uyumluluğunu kontrol et ve gerekli değişiklikleri yap. |
Her adımda ajanın önerdiği komutları önce siz çalıştırın veya onaylayın. terraform plan çıktısını okuyun; ajan bazen count veya for_each eklerken yanlış indeks kullanabilir. Diff’i küçük tutmak için görevleri tek tek verin; büyük bir modül taşımasını tek promptta istemeyin. Ajan çalışırken terminalde git diff --stat ile değişen dosya sayısını takip edin. Ajan bir hata verirse, hatayı prompt’a yapıştırarak düzeltmesini isteyin. Başarılı bir terraform plan sonrası terraform apply için ajan size soracaktır; onayı verin ve ardından terraform output ile çıktıları kontrol edin. Bu döngüyü her görev için tekrarlamak, projeyi sürekli çalışır durumda tutar.
Ajanın iyi yaptığı işler ve dikkat edilmesi gerekenler
Copilot CLI; kaynak ekleme, değişken ve çıktı tanımlama, modül çağrısı gibi tekrarlayan işlerde hızlıdır. Özellikle terraform fmt sonrası HCL biçimini korur ve provider belgelerinden örnek kod üretebilir. Ancak state işlemleri ve backend değişikliklerinde dikkatli olun: ajan bazen terraform state rm gibi komutları yanlış kaynak üzerinde önerebilir. Ayrıca modüller arası bağımlılıkları kaçırabilir; depends_on eklemeden önce planı inceleyin. Gizli değerleri variable içinde tutmasını söyleyin, çünkü ajan varsayılan olarak hardcode edebilir. Provider sürümü yükseltme isteklerinde, ajanın required_providers kilidini atlayıp doğrudan en son sürümü yazabileceğini unutmayın; sürüm kısıtlarını talimat dosyasında netleştirin. Ayrıca for_each üzerinde çalışırken, ajanın mevcut kaynaklara yanlış key ataması yapabileceğini göz önünde bulundurun; bu, state’te karışıklığa yol açabilir. Ajan modül yazarken bazen gereksiz karmaşıklık yaratır; örneğin çok fazla nested module kullanır. Bu durumda açık prompt ile sadeleştirmesini isteyin. Ajanın terraform plan çıktısını yorumlaması iyidir, ancak bazen plan çıktısındaki değişiklikleri abartabilir; siz kendi gözünüzle kaynakları kontrol edin.
Terraform’da test ve doğrulama
Ajanla her değişiklikten sonra şu komutları çalıştırın: terraform fmt -check -recursive, terraform validate, terraform plan -detailed-exitcode. Test için terraform test yazılmış test dosyalarını kullanın. Ajan, test senaryosu eklerken run bloğunu doğru yazabilir, ancak assert koşullarını ve condition ifadelerini kontrol edin. Lint için tflint ve güvenlik taraması için checkov komutlarını talimat dosyasına ekleyin. Örneğin, ajan bir S3 bucket oluşturduktan sonra checkov -d . çalıştırarak güvenlik ihlallerini raporlayabilir. Ayrıca terraform plan -out=plan.tfplan ile plan dosyası oluşturup bunu ajanın incelemesini isteyebilirsiniz. Eğer ajanın dış servislerle iletişim kurmasını istiyorsanız MCP sunucuları ile entegrasyon kurabilirsiniz; detaylar için MCP sunucusu nedir? Kodlama ajanları için kurulum sayfasına göz atabilirsiniz. Testleri otomatikleştirmek için CI/CD pipeline’ına bu komutları eklemeyi unutmayın; ajan, pipeline tanımını da güncelleyebilir. Ancak üretim ortamına uygulanan apply komutunu her zaman manuel onayla gerçekleştirin.
Birden fazla ajanı tek Terraform projesinde çalıştırmak: AgentVera
AgentVera, GitHub Copilot CLI dahil birden çok CLI ajanını gerçek terminallerde yan yana çalıştıran bir masaüstü uygulamasıdır. Terraform için en kritik özellik, her ajanın kendi git worktree’sinde paralel çalışabilmesidir; böylece aynı .tf dosyalarını ezmezler ve modül izolasyonu sağlanır. Bir ajanın turu bitince otomatik kod incelemesi bulguları file:line ile gösterir; bu, state değişikliklerinde hataları erken yakalar. Token bütçeleri ve onay kuyruğu, uzun plan döngülerinde ajanın kontrolsüz apply denemesini engeller; ayrıca checkpoint özelliği sayesinde yanlış bir turu tek tıkla geri alabilirsiniz.
Özet
GitHub Copilot CLI, Terraform projelerinde terminal içi otomasyonu güçlendirir; ancak güvenli kullanım, talimat dosyası ve plan-öncesi onay kuralına bağlıdır. Küçük görevlerle ilerleyip her diff’i doğruladığınızda modül, state ve provider işlerinde ciddi zaman kazanırsınız. Ajanı ekip geliştirme akışına entegre etmek için talimat dosyasını düzenli güncel tutun; zamanla proje kalıplarını öğrenerek daha isabetli öneriler sunar.