Terraform – Part 4 – Modül Kullanımı
0

Bugün terraform mimarisinde modül yapılarını konfigürasyon dasyalarınızda nasıl kullanabileceğinizden bahsedeceğim.

Module tekrardan kulanılabilecek resource’ları barındıran konteynıra verilen isimdir. Modülleri kullanarak kolaylıkla advanced alt yapılar oluşturabilirsiniz. Oluşturduğunuz yapılarda modüller diğer modülleri çağırabilir. Hatta birisinin output değeri diğerinin input değeri olabilir.

Genelde modüllerin hepsi tüm konfigürasyon birimlerinde kullanılabilecek şekilde dizayn edilmişlerdir. Örneğin,

  1. Input Değişkenleri : Kendilerini çağıran modüllerden değer alabilirler.
  2. Output değişkenleri : Kendilerini çağıran modüllere sonuç dönebilirler.
  3. Resource’lar : Modülün yönettiği altyapı bileşenlerini tanımlamak için bir yada daha çok kez modülleri kullanabilirler.

Bir modülü tanımlamak için öncelikle ona bir directory oluşturmak gerekir. Daha sonra ilişkili olan tüm .tf uzantılı dosyalar bu directory içerisine atılabilir. Modüller birbirini çağıracak şekilde konfigüre edilebilirler. Bu durum kullanım şekline göre değişiklik gösterebilir. Ancak önerilen konfigürasyon, modüllerin bireysel olarak tekrarlanacak şekilde kullanılabilmesidir. Bu sebeple farklı kombinasyonlarda modülleri kompozisyonlar halinde kullanmak daha yerinde olacaktır. Bunu da modül tree’lerini düz olarak konfigüre ederek sağlayabilirsiniz. Aşağıda modül kompozisyonuna ait bir örneği görebilirsiniz.

Resim-1

Tabi modül kullanımı yapılacağı zaman ne ölçüde yapılacağının da belirlenmesi gerekir. Çok fazla modül kullanımı bir süre sonra içinden çıkılamayacak karmaşıklığı da beraberinde getirecektir. Hatta modüllerin aşırı kullanımı sorun çözme aşamalarında konfigürasyonların anlaşılmasını da zorlaştıracaktır. Bu sebeple modüllerin ölçülü olarak kullanılması önerilmektedir. Örneğin x bir sisteme ait konfigürasyonun bileşenlerinin belirli bir provider üzerinde konfigüre edilmesini bir modül olarak yapılandırabilirsiniz.

Modüller temelde standart yada nested(iç içe) şekilde yapılandırılabilirler. Burada main,outputs ve variables dosyaları aynı dizinde tutulur. Bir de modülün kullanımına ilişkin bilgileri içeren README dosyasının burada yer alması önerilir. Farklı bir directory’de tutulduğu için tekrar tekrar kullanılabilirler.

Nested modüllerde ise yapı biraz daha komplekstir. Aslında yine standart modüldeki gibi ana dizinde main,outputs ve variables dosyaları bulunur. README dosyasının da bulunması önerilir. Ancak bu dizinde modules isimli bir dizin daha bulunur ve nested olan modüller bu dizin altında ayrı ayrı dizinlerde tutulurlar. Aşağıdaki dizinde examples isimli bir dizin de bulunur. Bu dizin modülün kullanımına ilişkin örneklerin bulunduğu konfigürasyon dosyalarını içerir. Bunun olmasının sebebi buradan kopya alıp editleyip kendi konfigürasyonlarınızı oluşturmanız içindir.

Resim-2

Yukarıdaki yapıda ana konfigürasyon dosyasından nested olan modülleri çağırmak için ./modules/netedA şeklinde relative path kullanmanız yeterli olacaktır.

Bir modüle içerisinden diğer bir modulu çağırmak için de “Source” attribute’unu kullanmanız yeterli olacaktır.

Ayrıntılı bilgi için aşağıdaki kaynak linklerinden faydalanabilirsiniz.

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

https://www.terraform.io/docs/configuration/variables.html

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, Terraform variabes, terraform map variables

Bu İçeriğe Tepkin Ne Oldu?
  • 2
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 1
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Sakarya doğumludur. İstanbul Üniversitesi’nde Matematik/Fen ve Teknoloji öğretmenliğini bitirmiştir. Yüksek lisansını Sakarya Üniversitesi Bilgisayar Mühendisliği’nde yapmıştır. Bilişim sektöründe çeşitli firmalarda sistem ve network sorumlusu olarak çalışmıştır. Bazı kurumlarda sistem ve network üzerine uzmanlık eğitimleri vermiştir. Şu anda Netaş şirketinde kurumsal danışman olarak görev yapmaktadır. Microsoft System Center ürünleri, Powershell ve Azure teknolojileri ile ilgilenmektedir. 2016 yılında Microsoft tarafından Cloud and Datacenter alanında MVP unvanını almıştır.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir