Bir önceki makalemde Terraform ile Azure platformu üzerinde resource oluşturmuştum. Bu makalemde ise oluşturduğum bu resource’lar üzerinde güncelleme işlemlerinin nasıl yapılacağından bahsedeceğim.
Terraform mimarisinde konfigürasyon dosyasının bulunduğu dizinde .tfstate uzantılı bir dosya bulunur. Bu dosya deploy edilen konfigürasyonlara ilişkin bilgiyi JSON formatında tutar. Bunu tutmasının sebebi bir sonra yapılacak konfigürasyon deployment’larında karşılaştırma yapmak içindir. Bu karşılaştırma sonrasında yapılan işlemin yeni bir resource oluşturmak mı, yoksa var olan bir resource’u update etmekmi olduğuna bu .tfstate uzantılı dosyaya bakılarak karar verilir.
Eğer deploy edilen resource’lar hedef platform üzerinde değişikliğe uğradıysa, .tfstate dosyası ve hedef konfigürasyon arasında farklılık var demektir. Bu durumda da terraform’un refresh komutu kullanılarak platform üzerinde yapılan değişiklik terraform state dosyasına sync edilir.
Şimdi bir örnek ile ilerleyelim. Bir önceki makalemin devamı şeklinde ilerleyeceğim. Bir önceki makalemde Terraform ile Azure platformu üzerinde bir adet resource group ve bir adet virtual network oluşturmuştum. Şimdi bu virtual network üzerinde bir adet subnet oluşturalım. Ayrıca virtual network’ü de belli etiketler ile tag’leyelim.
Aşağıdaki resimde görüldüğü üzere, Subnet yeni bir resource olarak eklenirken, tag’leme işlemi var olan virtual network resource’u üzerinde bir update işlemi olarak Terraform tarafından algınalacaktır.
Resim-1
Update işlemi öncesinde konfigürasyon üzerinde yapılan değişiklikleri kontrol etmek için execution plan’ı çalıştıralım. Bu işlemin sonucunda çıktı aşağıdaki gibi olacaktır.
Resimde de görüldüğü gibi, yeni oluşturulan resource’lar yeşil ile, update edilen resource’lar da sarı ile işaretlenmişdir. Gerekli kontroller yapıldıktan sonra deployment işlemine başlayabiliriz.
Resim-2
Deployment işlemi için “Apply” komutunu kullanarak konfigürasyonu Azure platformu üzerinde deploy edelim.
Resim-3
Deployment işlemi tamamlandığında şekilde işaretlediğim gibi yeni eklenen ve update edilen resource sayısınu komut çıktısında görebilirsiniz. Ayrıca yapılan konfigürasyon islemleride bu kısımda ayrıntılı olarak görünecektir.
Deployment işleminin ardından resource’lar kontrol edildiğinde eklediğimiz tagların update işlemi ile atandığını ve yeni eklenen subnetin virtual network üzerine eklendiğini görebilirsiniz.
Resim-4
Resim-5
Yaptığımız bu işlem basit bir konfigürasyon ekleme ve update etme işlemiydi. Daha komplex konfigürasyonlarda bu işlemler biraz daha kalabalık konfigürasyonlar içerebilir. Bu daha daha özenli kontrol mekanizmalarını gerektirir.
Bir sonraki bölümde değişkenler ile devam edeceğim.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
https://www.terraform.io/docs/providers/azurerm/index.html
TAGs: Terraform, Terraform nedir, terraform nasıl kullanılır, Infrastructure as a code, IAC, Compliance management, Auto remediation, Deploy Azure Resource with terraform, Deploy configuration with terraform, configuration as a code, terraform overview, terraform basics, Azure with terraform, deploy resources to azure with terraform, terraform.exe, Update resources with terraform, Azure Resource manager, ARM