Bulut altyapınızı yönetmek, karmaşık ve zaman alıcı bir süreç olabilir. Peki ya tüm bu süreci kodla yönetebilseydiniz? Terraform ile tanışın ve Infrastructure as Code (IaC) devriminin bir parçası olun! Bu rehber, kariyerinin her aşamasındaki teknoloji profesyonelleri için altyapı yönetiminde yeni bir dönemin kapılarını aralıyor.
Günümüzün hızla değişen teknoloji dünyasında, altyapı yönetimi hala birçok ekip için manuel süreçlere dayanıyor. Tıklamalar, komut satırı komutları ve birbirinden habersiz yapılan değişiklikler; hatalara, tutarsızlıklara ve en kötüsü de güvenlik açıklarına davetiye çıkarabiliyor. Bir sunucu kurmak, bir veritabanı ayarlamak veya bir ağ yapılandırması yapmak için saatlerinizi harcadığınızı düşünün. Peki ya bu süreçte bir hata yaparsanız? Geri almak, düzeltmek ve her şeyi yeniden başlatmak çoğu zaman bir kabusa dönüşebilir. İşte tam da bu noktada, Infrastructure as Code (IaC) kavramı devreye giriyor ve bu kaotik tabloyu kökten değiştiriyor. IaC, altyapınızı kod olarak tanımlamanıza, sürüm kontrol sistemlerinde saklamanıza ve otomatikleştirilmiş süreçlerle yönetmenize olanak tanır. Bu, sadece verimliliği artırmakla kalmaz, aynı zamanda tekrarlanabilirliği, tutarlılığı ve güvenliği de en üst düzeye çıkarır. Geleneksel yöntemler, özellikle büyük ölçekli ve dinamik bulut ortamlarında, yetersiz kalır. Manuel süreçler insan hatasına açıkken, kod tabanlı yaklaşımlar bu riskleri minimize eder. IaC, altyapınızı bir yazılım projesi gibi ele almanızı sağlar; yani test edilebilir, yeniden kullanılabilir ve daha kolay yönetilebilir hale getirir. Bu, özellikle mikroservis mimarileri, konteynerleştirme ve sürekli entegrasyon/sürekli dağıtım (CI/CD) pipeline’ları gibi modern geliştirme pratiklerinde kritik öneme sahiptir. IaC olmadan, bulutun sunduğu esneklik ve ölçeklenebilirlik potansiyelinden tam olarak yararlanmak neredeyse imkansız hale gelir. Bu devrimsel yaklaşım, sadece operasyonel maliyetleri düşürmekle kalmaz, aynı zamanda geliştirme ekiplerinin daha hızlı ve güvenli bir şekilde yenilik yapmasını da sağlar.
Terraform Nedir ve Neden IaC İçin Vazgeçilmez Bir Araçtır?
Terraform, HashiCorp tarafından geliştirilen açık kaynaklı bir Infrastructure as Code (IaC) aracıdır. Temel amacı, altyapı kaynaklarını deklaratif bir dil kullanarak tanımlamak ve yönetmektir. Terraform, sadece tek bir bulut sağlayıcısıyla sınırlı kalmaz; AWS, Azure, Google Cloud Platform (GCP) gibi büyük bulut sağlayıcılarının yanı sıra VMware, Docker, Kubernetes ve hatta çeşitli SaaS platformları gibi yüzlerce farklı servisi destekler. Bu çoklu sağlayıcı desteği, Terraform’u hibrit ve çoklu bulut ortamları için ideal bir çözüm haline getirir. Terraform’un çalışma prensibi oldukça basittir: Bir yapılandırma dosyası (configuration file) yazarsınız. Bu dosya, hangi altyapı kaynaklarının (örneğin, sanal makineler, veri tabanları, ağlar, yük dengeleyiciler) nasıl oluşturulacağını, yapılandırılacağını ve yönetileceğini açıklar. Ardından, Terraform bu dosyayı okuyarak mevcut altyapı durumunu alır, istenen durumla karşılaştırır ve aradaki farkları kapatmak için gerekli değişiklikleri otomatik olarak yapar. Terraform’un en güçlü yönlerinden biri, durum dosyası (state file) yönetimidir. Bu durum dosyası, Terraform tarafından yönetilen altyapının mevcut durumunu takip eder. Bu sayede Terraform, bir sonraki çalışmasında hangi kaynakların değiştirilmesi gerektiğini veya hangi kaynakların artık mevcut olmadığını bilir. Bu durum yönetimi, altyapınızın tutarlı ve öngörülebilir olmasını sağlar. Ayrıca, Terraform’un planlama (plan) ve uygulama (apply) aşamaları, değişiklikleri canlı ortama uygulamadan önce ne olacağını görmenizi sağlar. Bu, beklenmedik sorunları önlemek için kritik bir güvenlik katmanı sunar. Terraform’un deklaratif yapısı, “nasıl” sorusunu değil, “ne” istediğinizi belirtmenize odaklanır. Bu, altyapı yönetimi görevlerini daha anlaşılır ve daha az hataya açık hale getirir. Kısacası, Terraform, altyapı yönetimi karmaşıklığını ortadan kaldırarak, geliştiricilerin ve operasyon ekiplerinin daha verimli çalışmasına olanak tanıyan güçlü bir araçtır.
Terraform ile İlk Adımlar: Kurulum ve Temel Kavramlar
Terraform ile yolculuğunuza başlamak için ilk adım kurulumdur. Terraform’u indirip sisteminize kurmak oldukça basittir. Resmi Terraform web sitesinden işletim sisteminize uygun sürümü indirip, PATH’inize eklemeniz yeterlidir. Kurulum tamamlandıktan sonra, Terraform’un temel yapı taşlarını anlamak önemlidir. Bunların başında Provider‘lar gelir. Provider’lar, Terraform’un belirli bulut sağlayıcıları veya servislerle etkileşim kurmasını sağlayan eklentilerdir. Örneğin, AWS ile çalışmak için AWS provider’ını, Azure ile çalışmak için Azure provider’ını yapılandırmanız gerekir. Bu provider’lar, Terraform’un ilgili servise API çağrıları yaparak kaynakları yönetmesini sağlar. Bir diğer önemli kavram ise Resource‘lardır. Resource’lar, altyapınızın temel yapı taşlarıdır; bir sanal makine, bir veritabanı sunucusu, bir ağ güvenlik grubu gibi. Her resource, belirli bir sağlayıcıya aittir ve Terraform konfigürasyon dosyasında nasıl yapılandırılacağını tanımlarsınız. Örneğin, bir AWS EC2 instance’ı oluşturmak için aws_instance resource’unu kullanırsınız.
Terraform Yapılandırma Dosyaları: HCL’in Gücü
Terraform’un yapılandırma dosyaları, HashiCorp Configuration Language (HCL) adı verilen özel bir dil kullanılarak yazılır. HCL, insan tarafından okunabilirliği yüksek, basit ve anlaşılır bir söz dizimine sahiptir. Bu, altyapı tanımlarını yazmayı ve anlamayı kolaylaştırır. Bir Terraform yapılandırma dosyasının uzantısı genellikle .tf‘dir. Temel bir Terraform dosyasında provider’ları tanımlarız, ardından oluşturmak istediğimiz resource’ları belirtiriz. Örneğin, bir AWS bölgesi ve bir EC2 instance’ı oluşturmak için basit bir yapılandırma dosyası şu şekilde görünebilir:
# Provider yapılandırması
provider "aws" {
region = "us-east-1"
}
# Bir EC2 instance resource'u
resource "aws_instance" "example" {
ami = "ami-0abcdef1234567890" # Örnek AMI ID
instance_type = "t2.micro"
tags = {
Name = "HelloWorldInstance"
}
}
Bu basit örnekte, AWS provider’ını us-east-1 bölgesinde kullanacağımızı belirtiyoruz. Ardından, aws_instance resource’unu kullanarak example adında bir EC2 instance’ı tanımlıyoruz. ami ve instance_type gibi parametreler, instance’ın özelliklerini belirler. tags ise instance’a isim vermek için kullanılır. HCL’in sunduğu değişkenler (variables), çıktılar (outputs) ve modüller (modules) gibi özellikler, yapılandırmalarınızı daha dinamik, yeniden kullanılabilir ve yönetilebilir hale getirmenizi sağlar. Değişkenler, yapılandırma dosyalarınızın dışarıdan değer almasını sağlarken, çıktılar terraform komutlarının sonunda gösterilecek bilgileri tanımlar. Modüller ise, karmaşık altyapıları daha küçük, yönetilebilir parçalara ayırmanıza ve bu parçaları farklı projelerde tekrar kullanmanıza olanak tanır. Bu modüler yapı, büyük ölçekli projelerde bile kodu düzenli tutmayı ve bakımını kolaylaştırmayı hedefler.
Terraform’un Yaşam Döngüsü: Plan, Apply ve Destroy
Terraform’un gücü, sunduğu net ve öngörülebilir yaşam döngüsü komutlarında yatar. Bu komutlar, altyapınız üzerinde kontrollü değişiklikler yapmanızı sağlar.
Terraform Init: Projenizi Başlatma
Bir Terraform projesine başladığınızda veya mevcut bir projeyi klonladığınızda ilk yapmanız gereken komut terraform init‘tir. Bu komut, projenizin çalışma dizinini başlatır. Temel olarak şunları yapar:
- Gerekli olan provider’ları indirir ve yapılandırır.
- Backend yapılandırmasını ayarlar (durum dosyasının nerede saklanacağı gibi).
- Gerekirse modülleri indirir.
terraform init komutunu çalıştırmadan Terraform’un diğer komutlarını kullanamazsınız. Bu, projenizin temelini oluşturur ve Terraform’un çalışması için gerekli tüm bağımlılıkları hazır hale getirir. Bu ilk adım, projenizin doğru şekilde kurulmasını ve gelecekteki işlemler için hazır olmasını garanti eder.
Terraform Plan: Değişiklikleri Önizleme
Bir sonraki kritik adım terraform plan komutudur. Bu komut, mevcut altyapınız ile Terraform yapılandırma dosyanızda tanımlanan istenen durum arasındaki farkları analiz eder. Size, Terraform’un hangi kaynakları oluşturacağını, değiştireceğini veya sileceğini gösteren bir yürütme planı (execution plan) sunar. Bu planı dikkatlice incelemek, canlı ortama herhangi bir değişiklik yapmadan önce olası sorunları tespit etmenize yardımcı olur. Bu, özellikle üretim ortamlarında değişiklik yapmadan önce vazgeçilmez bir adımdır. Hatalı bir yapılandırma, beklenmedik kesintilere veya veri kaybına yol açabilir. terraform plan, bu riskleri en aza indirerek size tam bir kontrol sağlar. Plan çıktısı, hangi kaynakların etkileneceğini, hangi parametrelerin değişeceğini ve hangi kaynakların ekleneceğini net bir şekilde gösterir. Bu şeffaflık, altyapı değişikliklerinin anlaşılmasını ve onaylanmasını kolaylaştırır.
Terraform Apply: Değişiklikleri Uygulama
Yürütme planından memnun kaldığınızda, sıra değişiklikleri canlı ortama uygulamaya gelir. İşte burada terraform apply komutu devreye girer. Bu komut, terraform plan tarafından oluşturulan yürütme planını alır ve belirtilen değişiklikleri altyapınızda uygular. Komutu çalıştırdığınızda, Terraform sizden onay isteyecektir. Bu onay, terraform plan çıktısını tekrar gözden geçirme ve değişiklikleri onaylama fırsatı sunar. Onay verdikten sonra Terraform, tanımladığınız altyapıyı oluşturmak, güncellemek veya silmek için ilgili API çağrılarını yapar. terraform apply komutu, altyapınızın istenen durumunu gerçekleştiren nihai adımdır. Bu komutun başarıyla tamamlanması, altyapınızın yapılandırma dosyanızla senkronize olduğunu gösterir.
Terraform Destroy: Kaynakları Temizleme
Bazen, test ortamlarını temizlemek veya artık ihtiyaç duyulmayan altyapıyı kaldırmak gerekebilir. İşte bu noktada terraform destroy komutu devreye girer. Bu komut, Terraform tarafından yönetilen tüm altyapı kaynaklarını güvenli bir şekilde siler. Tıpkı terraform apply gibi, terraform destroy da öncelikle hangi kaynakların silineceğini gösteren bir plan oluşturur ve sizden onay ister. Bu onay mekanizması, yanlışlıkla önemli kaynakları silmenizi engeller. Geliştirme ve test ortamlarında düzenli olarak terraform destroy komutunu çalıştırmak, gereksiz maliyetlerden kaçınmanıza ve temiz bir çalışma alanı sürdürmenize yardımcı olur. Bu komut, altyapının yaşam döngüsünü tamamlamak ve kaynakları sorumlu bir şekilde yönetmek için kritik öneme sahiptir.
Terraform Modülleri: Kod Tekrarını Azaltma ve Ölçeklenebilirlik
Büyük ve karmaşık altyapı projelerinde, aynı yapılandırmaları tekrar tekrar yazmak hem zaman kaybına yol açar hem de hata yapma olasılığını artırır. İşte tam da bu noktada Terraform Modülleri devreye girer. Modüller, Terraform yapılandırmalarınızı yeniden kullanılabilir ve daha yönetilebilir parçalara ayırmanın en etkili yoludur. Bir modül, bir dizi ilgili Terraform kaynağını ve yapılandırmasını içeren bir dizindir. Bu modülleri farklı projelerde veya aynı proje içinde farklı yerlerde tekrar tekrar kullanabilirsiniz. Örneğin, standart bir web sunucusu altyapısı (örneğin, bir EC2 instance, bir güvenlik grubu ve bir Elastic IP) için bir modül oluşturabilirsiniz. Ardından, bu modülü projenizin farklı ortamlarında (geliştirme, test, üretim) veya farklı uygulamalarınız için kolayca kullanabilirsiniz. Bu, kod tekrarını büyük ölçüde azaltır ve altyapı tutarlılığını artırır.
Modül Oluşturma ve Kullanma Süreci
Bir Terraform modülü oluşturmak için, öncelikle modülünüzü tanımlayan kaynakları ve yapılandırmaları içeren bir dizin yapısı oluşturmanız gerekir. Genellikle bir modül dizini şunları içerir:
main.tf: Modülün ana yapılandırmasını içerir.variables.tf: Modülün kabul ettiği giriş değişkenlerini tanımlar.outputs.tf: Modülün dışarıya vereceği çıktıları tanımlar.README.md: Modülün ne işe yaradığını, nasıl kullanılacağını ve gereksinimlerini açıklayan bir belge.
Modülünüzü oluşturduktan sonra, başka bir Terraform yapılandırmasında bu modülü kullanabilirsiniz. Bunu yapmak için module bloğunu kullanırsınız. Örneğin:
module "my_webserver" {
source = "./modules/webserver" # Yerel modül yolu
# source = "git::https://example.com/my-repo.git" # Uzak Git deposu
instance_name = "my-app-server"
instance_type = "t3.medium"
}
Burada, ./modules/webserver dizinindeki yerel bir modülü çağırıyoruz. source parametresi, modülün konumunu belirtir. Modülün kabul ettiği instance_name ve instance_type gibi değişkenlere değerler atıyoruz. Modüller, karmaşık altyapıları daha küçük, yönetilebilir ve yeniden kullanılabilir parçalara bölerek altyapı yönetimi süreçlerinizi önemli ölçüde iyileştirir. Bu, özellikle büyük ekipler ve karmaşık projeler için vazgeçilmez bir stratejidir. Modülerlik, kodun daha kolay test edilmesini, bakımla daha az zaman harcanmasını ve daha hızlı dağıtım yapılmasını sağlar.
Terraform’da Durum Yönetimi: Güvenlik ve Tutarlılık İçin
Daha önce bahsettiğimiz gibi, Terraform’un en kritik özelliklerinden biri durum yönetimi (state management)dir. Terraform durum dosyası (terraform.tfstate), Terraform tarafından yönetilen altyapı kaynaklarının mevcut durumunu bir JSON dosyası olarak saklar. Bu dosya, Terraform’un altyapınızı doğru bir şekilde izlemesini ve değişiklikleri planlamasını sağlar. Durum dosyası, Terraform’un “hafızasıdır”. Hangi kaynakların oluşturulduğunu, bunların hangi özelliklere sahip olduğunu ve hangi anahtarlarla tanımlandığını kaydeder. Bu bilgi olmadan, Terraform hangi değişikliklerin yapılması gerektiğini bilemezdi.
Yerel ve Uzak Durum Yönetimi
Varsayılan olarak, Terraform durum dosyasını yerel çalışma dizininizde saklar. Ancak, bu yaklaşım özellikle ekip ortamlarında ciddi sorunlara yol açabilir. Birden fazla kişinin aynı anda aynı altyapıyı yönetmeye çalıştığında, durum dosyasının üzerine yazılması veya çakışmaların yaşanması kaçınılmazdır. Bu nedenle, uzak durum yönetimi (remote state management) şiddetle tavsiye edilir. Uzak durum yönetimi, durum dosyasının merkezi ve güvenli bir yerde saklanmasını sağlar. AWS S3, Azure Blob Storage, Google Cloud Storage veya Terraform Cloud gibi servisler, uzak durum yönetimi için popüler seçeneklerdir. Uzak durum yönetimi kullanırken, Terraform yapılandırmanızda bir backend bloğu tanımlamanız gerekir.
terraform {
backend "s3" {
bucket = "my-terraform-state-bucket"
key = "global/s3/terraform.tfstate"
region = "us-east-1"
}
}
Bu örnekte, AWS S3’ü backend olarak kullanıyoruz. Bu yapılandırma, Terraform’un durum dosyasını belirtilen S3 bucket’ında saklamasını sağlar. Uzak durum yönetimi, aşağıdaki faydaları sağlar:
- Eşzamanlılık Kontrolü (Locking): Birden fazla kullanıcının aynı anda durum dosyasını değiştirmesini engeller.
- Veri Güvenliği: Durum dosyası şifrelenebilir ve güvenli bir şekilde saklanır.
- Paylaşılabilirlik: Ekip üyeleri arasında durum dosyasının kolayca paylaşılmasını sağlar.
- Geri Yükleme Yeteneği: Durum dosyasının yedekleri alınabilir ve gerektiğinde geri yüklenebilir.
Doğru durum yönetimi stratejisi, altyapınızın güvenliğini, tutarlılığını ve ekip içinde işbirliğini sağlamak için kritik öneme sahiptir.
Terraform ile Güvenlik ve En İyi Uygulamalar
Infrastructure as Code (IaC) benimsemek, operasyonel verimliliği artırmanın yanı sıra güvenlik duruşunuzu da önemli ölçüde güçlendirebilir. Ancak, Terraform’u güvenli bir şekilde kullanmak için bazı en iyi uygulamalara dikkat etmek gerekir.
Gizli Bilgilerin Yönetimi (Secrets Management)
Terraform yapılandırmalarınızda veritabanı şifreleri, API anahtarları veya özel anahtarlar gibi hassas bilgileri (secrets) doğrudan kodunuza gömmek büyük bir güvenlik açığıdır. Bu tür bilgileri yönetmek için çeşitli yöntemler mevcuttur:
- Ortam Değişkenleri (Environment Variables): Hassas bilgileri ortam değişkenleri aracılığıyla Terraform’a aktarabilirsiniz.
- Terraform Cloud/Enterprise Secrets: Terraform’un kendi çözümleri, hassas bilgileri güvenli bir şekilde saklamak ve yönetmek için gelişmiş özellikler sunar.
- Harici Gizli Bilgi Yönetim Araçları: HashiCorp Vault, AWS Secrets Manager, Azure Key Vault gibi özel gizli bilgi yönetim servislerini Terraform ile entegre edebilirsiniz.
Bu araçlar, hassas bilgilerinizi güvenli bir şekilde saklamanıza, erişimi kontrol etmenize ve gerektiğinde bu bilgileri döndürmenize olanak tanır.
Erişim Kontrolü ve İzinler
Terraform’u çalıştıran kimliklerin (kullanıcılar veya servis hesapları) yalnızca ihtiyaç duydukları kaynaklara erişebildiğinden emin olun. Bulut sağlayıcınızın rol tabanlı erişim kontrolü (RBAC) mekanizmalarını kullanarak Terraform’a minimum ayrıcalık ilkesiyle yetki verin. Bu, olası bir yetkisiz erişim durumunda zarar görme potansiyelini sınırlar.
Kod İncelemeleri ve Sürüm Kontrolü
Terraform kodlarınızı da tıpkı uygulama kodlarınız gibi sürüm kontrol sistemlerinde (örneğin, Git) saklayın. Tüm değişiklikleri kod incelemelerinden geçirin. Bu, hataları erken tespit etmenize, kod kalitesini artırmanıza ve ekip içinde bilgi paylaşımını teşvik etmenize yardımcı olur.
Düzenli Denetimler ve Güvenlik Taramaları
Altyapı yapılandırmalarınızı düzenli olarak güvenlik taramalarından geçirin. Özel güvenlik tarama araçları veya linting araçları, yapılandırmalarınızdaki potansiyel güvenlik açıklarını ve uyumsuzlukları tespit etmenize yardımcı olabilir. Ayrıca, Terraform’un durum dosyasını ve altyapı kaynaklarını düzenli olarak denetlemek, beklenmedik değişiklikleri veya yetkisiz erişimleri tespit etmek için önemlidir. Bu önlemler, Terraform’un sadece verimlilik artışı sağlamakla kalmayıp, aynı zamanda altyapınızın güvenliğini de en üst düzeye çıkarmasını sağlar.
Sonuç: IaC ile Geleceğe Hazır Bir Altyapı İnşa Edin
Bu kapsamlı rehberde, Terraform ile Infrastructure as Code (IaC) dünyasına derinlemesine bir dalış yaptık. Geleneksel altyapı yönetiminin zorluklarından başlayarak, Terraform’un temel kavramlarını, kurulumunu, yaşam döngüsü komutlarını, modül kullanımını ve güvenli uygulamalarını inceledik. Artık biliyorsunuz ki altyapınızı kodla yönetmek, sadece bir trend değil, modern bulut bilişim ve DevOps pratiklerinin temel bir taşıdır.
Terraform’un sunduğu deklaratif dil, çoklu bulut desteği ve güçlü durum yönetimi yetenekleri, altyapınızı daha hızlı, daha güvenli ve daha tekrarlanabilir hale getirmenizi sağlar. Modüler yapısı sayesinde karmaşık sistemleri yönetmek kolaylaşır ve gizli bilgilerin güvenli yönetimi ile altyapınızın güvenlik duruşu güçlenir. Bu araçları benimseyen ekipler, sadece operasyonel maliyetleri düşürmekle kalmaz, aynı zamanda geliştirme süreçlerini hızlandırır ve yenilik yapma kabiliyetlerini artırır.
Unutmayın, IaC bir yolculuktur. Başlangıçta küçük adımlarla başlayın, temel kavramları sağlam bir şekilde öğrenin ve zamanla daha karmaşık senaryolara geçin. Terraform topluluğu oldukça geniştir ve bol miktarda kaynak, örnek ve destek mevcuttur. Bu rehberin, kariyerinizin hangi aşamasında olursanız olun, altyapı yönetimi anlayışınızı dönüştürmeniz için size ilham verdiğini umuyoruz. Kodu kullanmaya başlayın, altyapınızı geleceğe hazırlayın!
Sıkça Sorulan Sorular (SSS)
-
S: Terraform’u öğrenmek zor mu?
C: Terraform’un temel kavramları oldukça anlaşılırdır. HCL dilinin söz dizimi basittir ve deklaratif yapısı, ne istediğinizi belirtmenize odaklanır. Başlangıçta biraz pratik gerektirse de, sunduğu faydalar öğrenme eğrisini fazlasıyla telafi eder. Özellikle kodlama geçmişi olanlar için adapte olmak daha kolay olacaktır.
-
S: Terraform hangi bulut sağlayıcılarını destekliyor?
C: Terraform, AWS, Azure, Google Cloud Platform (GCP) gibi büyük bulut sağlayıcılarının yanı sıra Kubernetes, Docker, VMware, OpenStack ve yüzlerce farklı hizmet ve platformu destekleyen geniş bir provider ekosistemine sahiptir. Bu, onu çoklu bulut ve hibrit bulut ortamları için ideal kılar.
-
S: Terraform’un ücretli bir sürümü var mı?
C: Terraform’un kendisi açık kaynaklı ve ücretsizdir (Terraform Core). Ancak, daha gelişmiş özellikler, merkezi yönetim ve işbirliği araçları sunan Terraform Cloud ve Terraform Enterprise gibi ücretli ürünleri de bulunmaktadır. Çoğu bireysel kullanıcı ve küçük/orta ölçekli ekipler için Terraform Core yeterli olacaktır.
-
S: Terraform ile mevcut altyapımı yönetebilir miyim?
C: Evet, Terraform mevcut altyapıyı “içe aktarma” (import) yeteneğine sahiptir. Bu sayede, Terraform tarafından yönetilmeyen mevcut kaynaklarınızı Terraform durum dosyasına ekleyebilir ve ardından bu kaynakları Terraform ile yönetmeye başlayabilirsiniz. Bu işlem, özellikle mevcut altyapıyı IaC’ye taşırken oldukça kullanışlıdır.