# GitHub Copilot CLI ile Terraform projeleri yönetimi

Adres: https://agentvera.dev/blog/copilot-cli-ile-terraform/ · Yayın: 2026-11-01

GitHub Copilot CLI’yi Terraform projelerinde modül, state ve plan döngüsüyle nasıl kullanacağınızı öğrenin; kurulum, komutlar ve sık hatalar bu rehberde.

**Kısaca:**

- GitHub Copilot CLI, copilot komutuyla Terraform projelerinde modül ve plan döngüsünü terminalden yönetir.
- .github/copilot-instructions.md dosyasına Terraform komutları ve state/apply kuralları yazmak ajanı güvenli hale getirir.
- Her değişiklikte terraform validate ve terraform plan ile doğrulama yaparak modül ve state hatalarını yakalayın.

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](/ajanlar/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](/blog/copilot-cli-mi-claude-code-mu/) 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](/blog/copilot-cli-nasil-kullanilir/) 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:

```markdown
# 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](/blog/claude-md-nasil-yazilir/) 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](/blog/mcp-sunucusu-nedir/) 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.

## Sık sorulanlar

**GitHub Copilot CLI Terraform projelerinde nasıl kullanılır?** Proje kökünde copilot komutunu çalıştırın ve .github/copilot-instructions.md dosyasına Terraform komutlarıyla kuralları yazın. Ajan, HCL dosyalarını düzenler ve terraform plan önerir; siz onaylayınca apply çalıştırır. Küçük görevler vererek diff’i kontrol edin.

**GitHub Copilot CLI ile terraform apply güvenli mi?** Talimat dosyasında apply komutunu onay olmadan çalıştırmama kuralı koyarsanız güvenlidir. Ajan önce terraform plan önerir, çıktıyı inceledikten sonra siz onay verirsiniz. State değişikliklerinde ekstra dikkat edin.

**GitHub Copilot CLI Terraform state dosyasını yönetebilir mi?** Evet, terraform state mv veya terraform state list gibi komutları önerebilir. Ancak state işlemleri geri alınamaz olabileceğinden, ajanın önerdiği komutları çalıştırmadan önce terraform state pull ile yedek alın.

**GitHub Copilot CLI ile birden fazla Terraform ortamı nasıl yönetilir?** Environments klasörü altında her ortam için ayrı .tfvars ve backend dosyaları tutun. Ajan talimatlarında ortam adını belirtin; örneğin -var-file=environments/prod/terraform.tfvars. Ajan, yanlış ortamda değişiklik yapmaması için dizin kurallarına uyar.

---

**AgentVera hakkında.** AgentVera, Solviera Teknoloji tarafından geliştirilen macOS, Windows ve Linux masaüstü uygulamasıdır. 18 yapay zeka kodlama ajanını (Claude Code, Codex, Gemini CLI, Copilot, Cursor, Antigravity, opencode, Hermes, Qwen Code, Kimi Code, Kiro, Amp, Droid, Goose, Vibe, Crush, Aider, Cline) proje bazında, gerçek terminallerde ve kullanıcının kendi CLI kurulum ve girişleriyle yan yana çalıştırır. Ücretsiz planda sınırsız ajan vardır. İndir: https://agentvera.dev/indir/ · Fiyatlar: https://agentvera.dev/fiyatlar/
