1. Ana Sayfa
  2. DevOps
  3. Terraform – Part 5 – Önerilen Dosya Mimarisi ile Azure Web App Deployment İşlemi

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

032219_0523_TerraformPa1.png

Önceki makalelerimde 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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

https://www.terraform.io/

TAGs: Terraform, , terraform nasıl kullanılır, , IAC, Compliance management, Auto remediation, , , configuration as a code, , terraform basics, Azure with terraform, , 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