Terraform Durum Yönetimi

Terraform Durum Yonetimi



Kod Olarak Altyapı, büyük ölçekli sağlamanın karmaşıklığının üstesinden gelmeye ve BT kaynaklarını manuel ve tekrar tekrar yönetmeye yardımcı olan kod aracılığıyla BT altyapısını yönetme ve sağlama prosedürüdür. Terraform by HashiCorp, değişiklikleri izlemek ve durum dosyalarını yönetmek için bir durum yönetim sistemi kullanan açık kaynaklı bir IaC aracıdır. Durum yönetim sistemi, temel özelliklerinden biridir ve altyapı değişikliklerini etkin bir şekilde takip etmeye yardımcı olur. Bu makale, Terraform durum yönetiminin nasıl çalıştığını ve etkili bir şekilde nasıl kullanılacağını ele alıyor.

Terraform Devleti

Kodumuzda tanımladığımız kaynaklar ile ilgili bilgileri içeren altyapımızın mevcut durumu Terraform state olarak kayıt altına alınır. Terraform bu durumu, Terraform 'uygula' gibi bir komut yürütüldüğünde altyapımızı istenen duruma getirmek için gereken değişiklikleri belirlemek için kullanır. Değişiklikleri (oluşturma, değiştirme ve silme) yürüttükten sonra, Terraform durum dosyasını altyapınızın yeni durumuyla günceller.

Kavramı net bir şekilde kavramak için bir örnek verelim:







kaynak 'yerel dosya' 'John' {

dosya adı = '/home/John.txt'

içerik = 'Hayvanları severim'

}

Burada “main.tf” adında bir Terraform dosyası oluşturuyoruz. İçinde, iki özniteliği olan 'John' adlı local_file türünde bir kaynak vardır: dosya adı ve içerik.



local_file kaynak türü, Terraform'un çalıştığı makinenin yerel dosya sisteminde bir dosya oluşturmak için kullanılır. Bu durumda dosya “/home” dizininde “John.txt” adıyla oluşturulur ve dosyanın içeriği “I love pet” olur.



Şimdi Terraform akışını gerçekleştirelim – Terraform başlat, planla ve uygula. Terraform “apply” komutunu projemizde ilk defa çalıştırdığımızda Terraform, Terraform projemizin kök dizininde “terraform.tfstate” adlı durum dosyasını otomatik olarak oluşturur. Altyapımızın mevcut durumu ile ilgili tüm bilgileri JSON formatında içerir.





İşte oluşturduğumuz kaynağın durum dosyası:



Şimdi, mevcut kaynağı kaldırmak ve önek, uzunluk ve ayırıcı gibi niteliklere sahip 'my-pet' adlı random_pet türünde başka bir kaynak oluşturmak istediğimizi varsayalım.

kaynak 'rastgele_evcil hayvan' 'Evcil hayvanım' {

önek = 'Bay'

uzunluk = '1'

ayırıcı = '.'

}

Burada local_file kaynağını kaldırıp bir random_pet kaynağı ekliyoruz. İstediğimiz durum sadece random_pet kaynağına sahip olmaktır. Terraform başlatma, planlama ve komutlarını uygulayalım.

Önceki çizimde gösterildiği gibi, Terraform “plan” komutunu yürüttüğümüzde, Terraform'un istenen duruma gelmek için yaptığı eylemleri gösterir. Terraform “apply” komutunu çalıştırdığımızda “my-pet” kaynağı oluşturulur ve “John” kaynağı kaldırılır. Ayrıca, local_file kaynağının meta verileri yok edilerek ve random_pet kaynağının meta verileri eklenerek durum dosyası güncellenir.

İşte güncellenmiş durum dosyasının içeriği:

Yönetilen Durum Terraform Nasıl Çalışır?

Terraform, bir arka uç kullanarak durumu yönetir. Arka uç, Terraform'un durum verilerini depolamak ve almak için kullandığı bir uzak hizmet veya yerel dosya sistemidir. Gereksinimlerimize bağlı olarak, uygun bir arka uç seçebiliriz.

Terraform, yerel, Amazon S3, HashiCorp Consul, Vault ve Azure Storage dahil olmak üzere birçok yerleşik arka ucu destekler. Yerleşik seçeneklerden hiçbiri ihtiyaçları karşılamıyorsa, özel bir arka uç da oluşturabiliriz.

Önceki örneklerde, durum dosyaları yerel arka uçta saklanıyordu. Ancak işbirliğini gerektirdiği ve güvenliği artırdığı için onu uzak bir arka uçta depolamak en iyi uygulamadır.

Devlet Yönetiminin Önemi

Terraform gibi araçlarda durum yönetimi, aşağıdaki kilit noktalardan dolayı önemlidir:

Altyapınızın Mevcut Durumunu Belirleyin

Durum dosyası, mevcut kaynakların ve bunların mevcut özniteliklerinin doğru bir anlık görüntüsünü sağlar. Bu veriler altyapımızı anlamak ve istenilen durumda olmasını sağlamak için şarttır.

Zaman İçinde Altyapıdaki Değişiklikleri İzleyin

Terraform kullanarak değişiklikleri her uyguladığımızda, durum dosyası altyapımızın yeni durumunu yansıtacak şekilde güncellenir. Bu, altyapımızın nasıl geliştiğini takip etmemizi sağlar ve tüm değişikliklerin denetim izini sağlar.

Otomasyon

İstediğiniz altyapı durumunu kodda tanımlamanız, altyapımızın oluşturulmasını ve yönetimini otomatikleştirmemizi sağlar. Devlet yönetimi, zaman içinde değişiklikler yapılsa bile altyapımızın arzulanan kalmasını garanti eder.

Bağımlılıkları Yönet

Terraform ile yapılandırma dosyamızda kaynaklar arasındaki ilişkileri tanımlayabiliriz ve Terraform bu ilişkilerin sürdürülmesini sağlamak için durum dosyasını kullanır. Bu, bir kaynakta yapılan değişikliklerin yanlışlıkla diğer kaynakları etkilememesini sağlar.

Felaket Kurtarma

Bir arıza veya kesinti meydana gelirse, altyapıyı bilinen bir durumda yeniden oluşturmak için durum dosyasını kullanabiliriz. Bu, kesinti süresini en aza indirmeye yardımcı olabilir ve altyapımızın hızlı ve verimli bir şekilde geri yüklenmesini sağlayabilir.

Etkili Devlet Yönetimi için En İyi Uygulamalar

Eyaletleri etkili bir şekilde yönetmek için izleyebileceğimiz bazı ipuçları:

Uzak Bir Arka Uç Kullanın

Uzak bir arka uç, yerel bir arka uca göre çeşitli avantajlar sağlar. Birden fazla kullanıcının aynı altyapı üzerinde çalışmasına izin verir ve ayrıca yerel arka uçlardan daha iyi güvenlik ve güvenilirlik sunar.

Sürüm Oluşturmayı Etkinleştir

Durum dosyasının sürümünü oluşturarak, zaman içindeki değişiklikleri izleyebilir ve gerekirse bir önceki sürüme geri dönebiliriz. Ayrıca sürüm oluşturma, bir denetim izi sağlar ve değişikliklerin uygun şekilde belgelenmesini sağlamaya yardımcı olur.

Bir Kilitleme Mekanizması Kullanın

Birden fazla kullanıcı aynı altyapı üzerinde çalışırken çakışmaları önlemeye yardımcı olan bir kilitleme mekanizması kullanabiliriz. Terraform, DynamoDB, Consul ve S3 dahil olmak üzere çeşitli kilitleme araçlarını destekler.

Durum Dosyanızı Yedekleyin

Durum dosyasını düzenli olarak yedeklersek, veri bozulmasından kurtulabiliriz. Yedekleri güvenli bir yerde saklamalı ve ilgili uyumluluk gerekliliklerine uymalıyız.

Çözüm

Durum dosyalarını anlayıp örneklerle yönetirken IaC ve Terraform'a kısa bir giriş yaptık. Terraform'un devleti nasıl çalıştığını anlamak, yaygın tuzaklardan kaçınmamıza ve altyapımızın arzulanan kalmasını sağlamamıza yardımcı olabilir. Durumları yönetmek için en iyi uygulamaları takip ederek Terraform'u güvenle ve etkili bir şekilde kullanabiliriz.