Terraform – Part 5 – Önerilen Dosya Mimarisi ile Azure Web App Deployment İşlemi
0

Önceki makalelerimde terraform ile resource oluşturma ve update etme işlemlerinden bahsetmiştim. Hatta Azure MVP’si Hasan Güral ile söyleşi yaptığımız bir videoda da bu konuları ele almıştık.

Bu bölümde aslında yine yeni bir kaynak oluşturacağım. Ancak burada kaynak oluştururken bazı bileşenleri ayrı dosyalarda yapılandıracağım. Çünkü terraform ile deployment yapmak istediğinizde değişkenleri, çıktıları ve konfigürasyonları ayrı dosyalarda yapılandırmanız önerilmektedir. Bunun sebebi birden fazla ortam yönettiğiniz durumlarda, bu ortamlara bağlı olarak değişkenler ve yapılandırılacak resource’lar farklılık gösterebilir. Örneğin prod ortamı için yapılandırdığınız kaynakların daha yüksek tier’lara sahip olması istenirken test ortamı için oluşturduğunuz kaynakların daha düşük tier’larda olması istenebilir. Bu farklı ortamlar için ayrı ayrı konfigürasyon dosyaları yazmak yerine farklı değişken dosyalarını aynı konfigürasyon dosyaları ile kullanabilirsiniz. Böylece değişken dosyaları ihtiyaca yönelik olarak değişirken, tek bir konfigürasyon dosyanı olmuş olur. Yine aynı şekilde deployment sonrası oluşan çıktıları da ayrı bir dosyada yapılandırıp, ortamlara göre farklı çıktılar oluşturabilirsiniz. Yada oluşturacağınız kaynaklar için farklı değişken dosyalarında farklı prefix’ler tanımlayıp, resource’ları belli bir isim standartında oluşturabilirsiniz. Bu örnekler çoğaltılabilir.

Şimdi bu makalemde öncelikle bir resource group oluşturacağım. Ardından bu resource group içerisinde bir app service plan oluşturacağım. Son olarak da oluşturmuş olduğum bu app service plan üzerinde bir adet web app oluşturma işlemi yapacağım. Bu işlemi yaparken 4 adet farklı dosyadan faydalanacağım. Bunları birer cümle ile açıklayacak olursak:

  1. Main : Konfigüre edilecek resource’lara ait konfigürasyonları içeren dosya
  2. Variables: Değişkenleri tanımladığımız dosya
  3. Outputs: deployment sonrası oluşacak çıktıları tanımladığımız dosya
  4. Tfvariables.tfvars : Azure’a connection kurmak için gerekli bileşenlerin tutulduğu dosya. (Bunlar önemli bileşenler olduğu için herhangi bir konfigürasyon dosyasında direk yazmadan, ayrı bir dosya içerisinde tuttum)

Aşağıdaki şekile baktığımızda değişkenleri ayrıntılı olarak görebiliriz. Burada ilk dört değişken .tfvars uzantılı dosyadan gerekli değerleri çektiği için herhangi bir değer göstermemektedir. Ancak prefix ve location değişkenlerine ilişkin değerleri görebilirsiniz. (Resimde gördüğünüz gibi script içerisine de açıklamaları ekledim).

Resim-1

.tfvars uzantılı dosyayı kontrol ettiğimizde değişkenlerin ve değerlerinin bu dosyada yazıldığını görebilirsiniz. Tekrar belirteyim bu değerler Azure platformuna bağlantı kurmayı sağlayan hassas değerler olduğu için ayrı bir dosyada tutulması, konfigürasyon sırasında değişkenler ile çağrılması önerilen metoddur.

Resim-2

Output dosyası deployment işleminden sonra console’da çıkacak olan çıktıların belirlendiği dosyadır. Burada app service plan ismi, app service ismi ve app service hostname’i gibi bilgiler listelenecektir.

Resim-3

Main dosyasına geldiğimizde de oluşturulacak kaynaklar için gerekli olan konfigürasyonları görebiliriz. Zaten daha önceki örneklerimde bu işlemleri bolca açıklamıştım.

Resim-4

Her zaman ki gibi deployment öncesi plan komutunu çalıştırıp yapılacak deployment’ı kontrol edelim. Eğer aşağıdaki gibi hata alırsanız provider’ı yüklemeniz gerekir. Bunun için terraform.exe init komutunu çalıştırmanız yeterli olacaktır.

Resim-5

Başarılı bir yüklemenin ardından konsol çıktısı aşağıdaki gibi olacaktır.

Resim-6

Ardından plan komutunu aşağıdaki gibi çalıştırabiliriz.

Terraform.exe plan –var-file=”.\tfvariables.tfvars”

Komutun ardından çıktı kontrol edilip deployment işlemi kolaylıkla doğrulanabilir.

Resim-7

Oluşturulacak 3 adet kaynak olduğu ve hepsinin yeni oluşturma işlemi ile oluşturulacağı çıktıda belirtilmiştir.

Resim-8

Bu işlemlerin ardından apply komutu kullanılarak deployment işlemini yapabiliriz.

Terraform.exe plan –var-file=”.\tfvariables.tfvars”

Resim-9

İşlemin ardından outputs dosyasında tanımladığımız konfigürasyonların sonucu olarak çıktılar aşağıdaki gibi listelenecektir.

Resim-10

İşlemin ardından Azure portal’ı kontrol ettiğinizde resource’ların başarılı şekilde oluştuğunu görebilirsiniz.

Resim-11

Bu makaleyi yazmamdaki amaç aslında resource’ların nasıl deploy edildiğini göstermek değildi. Burada terraform’da değişken,konfigürasyon,ve çıktılara ait bileşenlerin nasıl ayrı dosyalarda yapılandırabileceğinizi ele almak istedim.

Bu sebeple Infrastructure as Code mimarisini belli bir dizayn’da yapmak istiyorsanız, izlemeniz gereken isimlendirme standartı ve yapısı bu şekilde olmalıdır. Tabi daha advanced mimariler de var. Onları da ilerleyen zamanlarda ele almaya çalışacağım.

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

Referanslar

www.mshowto.org

https://www.terraform.io/

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, Terraform modules, Terraform file structure

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    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