1. Ana Sayfa
  2. DevOps
  3. Terraform – Part 4 – Modül Kullanımı

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

032219_0523_TerraformPa5.png

Bugün 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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda 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, , Infrastructure as a code, IAC, , Auto remediation, , , , terraform overview, , , , terraform.exe, , Azure Resource manager, , Terraform variabes, terraform map variables

Yorum Yap

Yazar Hakkında

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.

Yorum Yap