Kurs
Terraform'u ilk kullandığımda şüpheciydim. Bulut konsolunda tıklamak yerine altyapıyı kod düzenleyicimde güncellemek çok tuhaf gelmişti ve o zamanlar bunun faydalarını anlamamıştım. Ama şirket politikası olduğu için uyum sağladım. Sonra bir gün benden tamamen yeni bir geliştirme ortamı oluşturmam istendi. Takımdaki kıdemli geliştiriciye gidip neyi kaçırdığımı sorduğumu net olarak hatırlıyorum, çünkü yalnızca 10 dakikamı almıştı. Çalışmamı kontrol etti, güldü ve evet, bu kadar basit olduğunu doğruladı.
Terraform'un sektörde bu kadar yaygın benimsenmiş olmasına şaşmamak gerek. Bulut bilişim hızla evrilirken, dünya genelindeki ekipler giderek karmaşıklaşan altyapıları yönetmek için Kod Olarak Altyapı'ya (IaC) yöneliyor. Terraform’un tutarlı, tekrarlanabilir ve ölçeklenebilir bir altyapı yönetimi yaklaşımı sunma yeteneği, onu çeşitli sektörlerdeki şirketler için ilk tercih hâline getirdi.
Bir Terraform mülakatında değerlendirilecek olan, yalnızca kaç komut bildiğiniz değil; Terraform’u modern DevOps iş akışlarına uyacak ve gerçek dünya problemlerini çözecek şekilde etkin kullanma yeteneğinizdir.
Burada iletişim kilit önemdedir. Yakın zamanda yayınlanan bir DataFramed podcast’inde teknik rollere ilişkin tartışıldığı üzere, gerçek ustalık uyum sağlayabilmektir:
Her türden içgörüyü, altı yaşındaki bir çocuğun anlayabileceği şekilde ve beni ya da hatta daha da teknik birini tatmin edecek düzeyde sunabilmeniz gerekir. Eğer işinizi gerçekten biliyorsanız, onu çok basitleştirebilir, ama aynı zamanda öyle karmaşık hâle de getirebilirsiniz ki, dürüst olmak gerekirse, yalnızca teknik uzmanlık bakımından gerçekten en üst seviyedekiler anlayabilir.
Mo Chen, Data & Analytics Manager at NatWest Group
Hazırlanırken bu bakış açısını korumak çok önemlidir. Bu yazıda, en yaygın Terraform mülakat sorularından bazılarını ele alacağım. Onları Temel, Orta ve İleri seviyelere ayırdım; böylece kariyerinizin neresinde olursanız olun burada size uygun bir şey bulacaksınız!
Başlamadan önce: Bulut bilişime tamamen yeniyseniz, önce Bulut Bilişime Giriş kursumuzu almanızı öneririm. Bu kurs bulutun temellerini parçalara ayırır, ölçeklenebilirlik ve gecikme gibi anahtar terimleri açıklar ve AWS gibi sağlayıcıların sunduğu bulut araçlarının avantajlarını kapsar. Terraform tamamen bulut altyapısıyla ilgilidir; bu yüzden bu kavramlara hem teoride hem pratikte önce aşina olduğunuzdan emin olun!
Temel Terraform Mülakat Soruları
Bu sorular Terraform’un ne olduğuna ve nasıl çalıştığına odaklanır. Daha önce Terraform ile hiç çalışmadıysanız veya görüşmeci yetkinlik seviyenizden emin değilse ve temelden başlamak istiyorsa bu sorularla karşılaşma olasılığınız yüksektir.
1. Terraform nedir ve birincil amacı nedir?
Terraform, HashiCorp tarafından oluşturulmuş açık kaynaklı bir Kod Olarak Altyapı (IaC) aracıdır. HCL (HashiCorp Configuration Language) adı verilen deklaratif bir yapılandırma dili kullanarak bulut ve şirket içi altyapıyı tanımlamanıza ve yönetmenize olanak tanır. Terraform, altyapının sağlanmasını, güncellenmesini ve sürümlenmesini otomatikleştirerek tutarlılığı sağlar ve manuel çabayı azaltır.
2. Terraform, CloudFormation veya Ansible gibi diğer IaC araçlarından nasıl ayrılır?
Terraform ve CloudFormation: Terraform, bulut sağlayıcısından bağımsızdır; yani birden fazla sağlayıcı (AWS, Azure, GCP vb.) üzerinde altyapıyı yönetebilir; AWS CloudFormation ise AWS’ye özeldir. Terraform ayrıca daha esnek bir sözdizimine ve durum (state) yönetimine sahiptir.
Terraform ve Ansible: Ansible öncelikle bir yapılandırma yönetimi aracıdır (yazılımlar, paketler ve işletim sistemi yapılandırmalarını yönetir); Terraform ise altyapı kaynaklarını deklaratif biçimde sağlama ve yönetmeye odaklanır.
3. Temel Terraform komutları nelerdir ve ne işe yararlar?
-
terraform init– Bir Terraform projesini başlatır ve gerekli sağlayıcı eklentilerini indirir. -
terraform plan– Terraform’un hangi değişiklikleri uygulayacağını gösteren bir yürütme planı oluşturur. -
terraform apply– Planlanan değişiklikleri uygular ve kaynakları sağlar. -
terraform destroy– Yönetilen tüm kaynakları siler. -
terraform validate– Terraform yapılandırma dosyalarındaki sözdizimi hatalarını kontrol eder.
4. Terraform durum (state) dosyası nedir?
Terraform, yönettiği gerçek dünya altyapısını izlemek için bir durum dosyası (terraform.tfstate) tutar. Durum dosyası, Terraform’un kaynakların mevcut durumunu anlamasına, sapmaları (drift) tespit etmesine ve değişiklikleri verimli şekilde uygulamasına yardımcı olur. İşbirliği için kritik önemdedir, ancak hassas veriler içerdiğinden güvenli şekilde saklanmalıdır.
5. Terraform sağlayıcıları (providers) nedir ve neden önemlidir?
Terraform’daki sağlayıcılar, onun bulut platformları, SaaS hizmetleri ve diğer API’lerle etkileşime girmesini sağlayan eklentilerdir. Her sağlayıcı (ör. AWS, Azure, Kubernetes), Terraform’un yönetebileceği kaynakları tanımlar. Sağlayıcılar olmadan Terraform, altyapı kaynaklarını nasıl oluşturacağını veya yapılandıracağını bilemezdi.
Terraform ve nasıl çalıştığı hakkında daha fazla bilgi edinmek istiyorsanız bu başlangıç rehberine göz atın. O yazıda, Terraform’un temel bileşenlerine daha ayrıntılı giriyor ve aracın artılarını ve eksilerini ele alıyorum. Hatta AWS üzerinde altyapı sağlamaya başlamanız için mini bir eğitim bile var.
Orta Seviye Terraform Mülakat Soruları
Bu bölüm, Terraform’un iş akışlarına, yapılandırma uygulamalarına ve gerçek projelerde durumu (state) ve kaynakları yönetme stratejilerine daha derinlemesine iner. Özellikle sizden belirli örnekler vermeniz istenirse, bu soruları yanıtlamak için Terraform’da hatırı sayılır pratik deneyime ihtiyacınız olacaktır.
6. Terraform modülleri nedir?
Terraform modülleri, ilgili kaynakları bir araya getirerek altyapı kodunu düzenlemeye yardımcı olan, yeniden kullanılabilir bileşenlerdir. Bakımı iyileştirir, ekibinizin projeler arasında kodu yeniden kullanmasını sağlar ve dağıtımları basitleştirir.
Bir modül, içinde .tf dosyaları ve isteğe bağlı bir variables.tf dosyası bulunan basit bir dizin kadar yalın olabilir!
7. Terraform uzaktan durumu (remote state) nasıl yönetir?
Varsayılan olarak Terraform durumu yerelde saklar; ancak işbirliği için uzak uçlar (AWS için DynamoDB ile S3, Google Cloud için GCS veya Terraform Cloud) desteklenir. Uzak durum şunları sağlar:
- Birden fazla ekip üyesi için paylaşılan erişim.
- Çakışmaları önlemek için durum kilitleme.
- Şifreleme ve kontrollü erişimle daha iyi güvenlik.
8. Terraform çalışma alanları (workspaces) nedir ve ne zaman kullanılmalıdır?
Terraform çalışma alanları, aynı yapılandırma içinde ayrı durum dosyalarını korumanıza olanak tanır. Kodu çoğaltmadan birden çok ortamı (ör. dev, staging, prod) yönetirken kullanışlıdır.
Çalışma alanları basit ortam ayrımları için en uygunudur; ancak karmaşık çok hesaplı kurulumlarda bakımı zor olabilir.

Kaynak: DevOps Mojo
9. Terraform mevcut altyapıyı içe aktarmayı (import) nasıl ele alır ve bunun sınırlamaları nelerdir?
Terraform, mevcut kaynakları durumuna terraform import komutunu kullanarak içe aktarabilir. Ancak bu, o kaynaklar için yapılandırma dosyalarını (.tf dosyalarını) otomatik olarak üretmez; bu nedenle bunları elle yazmanız gerekir.
Bu içe aktarma işlevinin bazı sınırlamaları vardır:
- Karmaşık kurulumlar manuel yapılandırma uzlaştırması gerektirir.
- Bazı kaynak türleri içe aktarmayı desteklemez.
- İçe aktarılan kaynağın yapılandırması gerçek altyapıyla eşleşmiyorsa sapma (drift) riski vardır.
10. Terraform sağlayıcıları (provisioners) nedir ve ne zaman kullanılmalıdır?
Provisioner’lar, bir kaynak oluşturulduktan sonra o kaynak üzerinde betikler veya komutlar çalıştırır. Genellikle VM’leri yapılandırmak veya yazılım kurmak gibi görevler için kullanılır.
İki tür provisioner vardır:
- Yerel provisioner’lar (Terraform’u çalıştıran makinede çalışır).
- Uzak provisioner’lar (hedef kaynak üzerinde SSH veya WinRM ile çalışır).
Provisioner’lar bağımlılıklar eklediği ve Terraform’un deklaratif doğasını azalttığı için ölçülü kullanılmalıdır. Alternatif olarak Ansible veya cloud-init gibi yapılandırma yönetimi araçları kullanılabilir.

Kaynak: Opcito
11. Terraform’da drift tespiti nedir ve nasıl ele alınır?
Drift tespiti, gerçek altyapı durumunun Terraform yapılandırmasında tanımlanan durumdan sapmasıdır. Bu, Terraform dışında manuel değişiklikler yapıldığında; örneğin bulut sağlayıcısının konsolunda veya diğer otomasyon araçlarıyla güncellemeler yapıldığında meydana gelebilir.
Terraform, terraform plan çalıştırarak drift’i tespit edebilir; bu, durum dosyasındaki mevcut durumla gerçek altyapıyı karşılaştırır.
Drift tespit edilirse, manuel değişiklikleri Terraform yapılandırmasıyla eşleyecek şekilde geri almak, yapılandırmayı yeni istenen durumu yansıtacak şekilde güncellemek ve terraform apply çalıştırarak altyapıyı yapılandırmayla yeniden hizalamak gerekir.
12. Birden çok örnekte dağıtılan bir uygulama için Terraform kullanarak artımlı güncelleme (rolling update) nasıl uygulanır?
Rolling update, kesinti süresini azaltmak ve güncelleme sırasında uygulama örneklerinin bir alt kümesinin erişilebilir kalmasını sağlamak için altyapınızı kademeli olarak güncellemenizi sağlar. Bu senaryoda Terraform, kaynağın yeni bir örneğini oluşturur, sağlık kontrolleriyle sağlıklı hâle gelmesini bekler ve ardından eski örnekleri kademeli olarak değiştirir.
Pratikte, Terraform’da değiştirilemez (immutable) altyapı tanımlayarak ve kaynak tanımlarınızda (ör. EC2 örnekleri, yük dengeleyiciler) count veya for_each kullanarak bir rolling update uygulayabilirsiniz.
13. Terraform’da kaynak bağımlılıklarını nasıl yönetirsiniz ve örtük (implicit) ve açık (explicit) bağımlılıkların rolü nedir?
Terraform’da kaynak bağımlılıkları, grafik oluşturma mekanizması aracılığıyla otomatik olarak yönetilir. Örtük bağımlılıklar, bir kaynak yapılandırmasında başka bir kaynağa referans verildiğinde oluşur (örneğin bir aws_security_group’un bir aws_instance içinde referans verilmesi) ve Terraform bağımlılık sırasını otomatik olarak çıkarır.
Açık bağımlılıklar, Terraform’un bağımlılık sırasını otomatik çıkaramadığı özel durumları ele almak için kullanışlıdır. depends_on argümanı kullanıldığında oluşturulurlar; bu, kaynaklar doğrudan referans verilmemiş olsa bile Terraform’u belirli bir yürütme sırasını uygulamaya zorlar.

Kaynak: HashiCorp
İleri Seviye Terraform Mülakat Soruları
İleri seviyede, görüşmeciler Terraform ile büyük ölçekli altyapı yönetimindeki uzmanlığınızı görmek isteyecektir. Sorular, çoklu bulut dağıtımları, ekip içi işbirliği ve otomasyon zorlukları gibi konuları içerebilir. Burası deneyiminizi ve becerilerinizi gerçekten sergileyebileceğiniz alan; bu yüzden üzerinde çalıştığınız projelerden bahsetmekten ve pratik örnekler vermekten çekinmeyin!
14. Terraform ile karmaşık çoklu bulut dağıtımlarını nasıl yönetirsiniz?
Çoklu bulut ortamlarını yönetmek, tek bir yapılandırmada birden fazla sağlayıcıyı ele almayı gerektirir. Terraform, farklı bulut sağlayıcılardaki (ör. AWS, Azure, Google Cloud) kaynakları aynı main.tf dosyasında farklı sağlayıcılar belirterek ve sağlayıcıya özgü kaynaklar kullanarak yapılandırmanıza imkân tanır.
Aynı sağlayıcının birden çok örneğini (ör. farklı bölgelerde AWS) yönetmek için sağlayıcı takma adları (alias) kullanabilir, ortak yapılandırmaları soyutlamak ve tekrarları önlemek için modüllerden yararlanabilirsiniz. Ancak bulutlar arası bağımlılıkları dikkatle yönettiğinizden emin olun; çünkü farklı bulutlardaki kaynakların doğrudan ilişkileri olmayabilir.
15. Terraform’daki taint ve untaint komutları nedir? Gerçek bir senaryoda bunları nasıl kullanırsınız?
terraform taint, bir kaynağı bir sonraki terraform apply çalıştırıldığında, yapılandırmada değişiklik olmasa bile yeniden oluşturulmak üzere işaretler. Bu, bir kaynak sorunlu hâle geldiğinde veya istenmeyen bir durumda olduğunda kullanışlıdır.
Örneğin, bir EC2 örneği başarısız olur ve yeniden oluşturulması gerekirse, bir sonraki apply sırasında yıkımını ve yeniden oluşturulmasını tetiklemek için onu taint edebilirsiniz. terraform untaint ise taint komutunu geri alır ve kaynağın yeniden oluşturulmasını engeller.
16. Terraform Cloud ve Terraform Enterprise nedir ve temel farkları nelerdir?
Terraform Cloud, HashiCorp’un uzaktan durum yönetimi, çalışma alanı yönetimi, sürüm kontrol entegrasyonu ve politika uygulama gibi işbirliği özellikleri sunan SaaS hizmetidir. Küçük ve orta ölçekli ekipler için idealdir.
Terraform Enterprise ise özel modül kayıt defterleri, daha ayrıntılı erişim kontrolleri ve şirket içi dağıtımlar dâhil gelişmiş güvenlik özellikleri gibi daha kapsamlı işlevler ekleyen, kendi kendine barındırılan sürümdür.
Kısacası: Terraform Cloud, HashiCorp tarafından barındırılır ve yönetilir; Terraform Enterprise ise kendi ortamınızda barındırılır ve kuruluşlara altyapıları üzerinde tam kontrol sağlar.

Kaynak: Google Cloud
17. Büyük ekiplerle çalışırken Terraform’da durum kilitleme (state locking) ve eşzamanlılık sorunlarını nasıl yönetirsiniz?
Terraform’daki durum kilitleme, iki kullanıcının aynı durumu eşzamanlı değiştirmesini engellemek içindir; çünkü bu, durum dosyalarının bozulmasına yol açabilir.
Terraform Cloud ve Enterprise, bir arka uç (backend) kullanarak durum kilitlemeyi otomatik olarak yönetir.
S3 ile DynamoDB gibi uzak arka uçlarda Terraform, durum kilitleme ve eşzamanlılık sorunlarını önlemek için DynamoDB’yi kullanır.
18. Sıfır kesinti süreli dağıtımlar nedir ve Terraform bunları nasıl sağlar?
Sıfır kesinti süreli dağıtımlar, hizmetlerin erişilebilirliğini kesintiye uğratmadan altyapıya değişiklikler uygulandığında gerçekleşir. Terraform bunu şu stratejilerle sağlayabilir:
- Mavi-Yeşil dağıtım: İki özdeş ortam (Mavi ve Yeşil) kullanılarak trafiğin aralarında geçirilmesiyle, değişiklikler kesinti olmadan devreye alınır.
- Rolling update: Değişikliklerin her seferinde az sayıda örneğe kademeli olarak uygulanması; kalanların güncellemeler sırasında aktif kalması.
Bunlar bulut mimarisinde yaygın stratejilerdir ve Terraform bunların uygulanmasına yardımcı olabilecek özellikler sunar. Ancak bu stratejilerin tam anlamıyla uygulanması genellikle yük dengeleyiciler gibi ek araçlar gerektirir.
19. Terraform’da gizli veri (secret) yönetimini nasıl ele alırsınız ve en iyi uygulamalar nelerdir?
Terraform’un kendisi gizli verileri yönetmez; ancak harici gizli yönetim araçlarıyla entegre olabilir. Örneğin şunları kullanabilirsiniz:
- HashiCorp Vault: Terraform, çalışma zamanında API anahtarları veya parolalar gibi gizlileri almak için Vault’u yerleşik olarak destekler; böylece bunlar yapılandırma dosyalarına sabitlenmez.
- Ortam değişkenleri: Hassas değerler için bunları ortam değişkeni olarak ayarlayabilirsiniz.
- Şifrelemeli uzak arka uçlar: Durum dosyalarını yetkisiz erişimi önlemek için şifreleme etkin uzak arka uçlarda saklayın.
- "sensitive" argümanının kullanımı: Çıktıları ve değişkenleri sensitive olarak işaretleyin; böylece Terraform plan/apply günlüklerinde görünmezler.
20. Özel Terraform sağlayıcılarını nasıl uygularsınız ve ne zaman ihtiyaç duyulur?
Özel Terraform sağlayıcıları, Terraform’un yerel olarak desteklemediği kaynakları veya hizmetleri yönetmeniz gerektiğinde kullanılır. Go ile uygulanırlar ve mevcut sağlayıcıların kapsamadığı bir API veya hizmetle (ör. kurum içi bir API, niş bir bulut hizmeti veya tescilli bir teknoloji) etkileşim kuran özel işlevler oluşturmayı içerir.
Terraform, sağlayıcılar oluşturmanıza yardımcı olmak için Terraform Plugin SDK sunar; ancak kimlik doğrulama, CRUD (Oluşturma, Okuma, Güncelleme, Silme) işlemleri ve etkileşime girdiğiniz API’ye özgü özel yapılandırmaları sizin ele almanız gerekir.
Sonuç
Umarım bu makale, Terraform mülakatınızı başarıyla geçmeniz için size bilgi ve güven kazandırmıştır!
Daha fazla pratik yapmak isterseniz, yaygın görevler ve kullanım senaryoları için Terraform’un nasıl kullanılacağını öğrenmek üzere HashiCorp Terraform eğitimlerine göz atın veya Terraform’un bir Veri Mühendisi araç setine nasıl uyduğunu anlamak için 2024’te Kullanmanız Gereken 14 Temel Veri Mühendisliği Aracı blog yazımıza bakın.

İlk prototipten ürün-pazar uyumuna ve ötesine kadar erken aşama girişimleri büyütme konusunda uzmanlaşmış, ürün odaklı bir teknik liderim. İnsanların teknolojiyi nasıl kullandığına dair bitmeyen bir merakım var ve kurucularla ile disiplinler arası ekiplerle yakın çalışarak cesur fikirleri hayata geçirmeyi seviyorum. Ürün inşa etmediğim zamanlarda ya dünyanın yeni köşelerinde ilham peşinde koşuyor ya da yoga stüdyosunda stres atıyorum.
Terraform SSS
Mülakat için Terraform bilgim ne kadar derin olmalı?
Role bağlıdır. Junior bir pozisyon için sağlayıcılar, durum yönetimi ve kaynaklar gibi temel kavramları anlamak yeterlidir. Orta seviye roller modüller, çalışma alanları ve uzak durum bilgisi gerektirir. Kıdemli roller ise durum kilitleme, CI/CD entegrasyonları ve karmaşık sorunların hata ayıklanması konularında uzmanlık bekler.
Mülakat için Terraform komutlarını ezberlemeli miyim?
terraform init, plan ve apply gibi temel komutları bilmek faydalıdır; ancak görüşmeciler Terraform kavramlarını nasıl uyguladığınıza daha çok önem verir. Sizden komutları tek tek saymaktan ziyade, gerçek bir senaryo için Terraform’u nasıl yapılandıracağınızı anlatmanızı isteyebilirler.
Bir iş bulmak için Terraform sertifikası ne kadar önemlidir?
Bir Terraform sertifikası (örneğin HashiCorp Certified: Terraform Associate) bilginizi doğrulamaya yardımcı olabilir, ancak çoğu rol için zorunlu değildir. Terraform’u gerçek projelerde kullanmış olmak, tek başına bir sertifikadan daha fazla ağırlık taşır. Yine de Terraform’a yeniyseniz, sertifika almak öğrenmek için iyi bir yol olabilir.
