Terraform ile Azure Linux VM Kurulumu

Fatih Kelesoglu
lTunes Tribe
Published in
6 min readSep 9, 2022

Merhaba, bu makalemizin konusu Terraform ile Azure üzerinde Linux bir sanal makina kurulumu hakkında olacaktır. Öncelikle çalıştığımız ortamımıza Terraform kurulumu yapacağız daha sonrasında oluşturacağımız bir Terraform yapılandırma dosyası “main.tf” sayesinde Microsoft Azure üzerinde bir Linux VM oluşturarak Ubuntu dağıtımı sağlayacağız.

Kurulum aşamalarına geçmeden önce uygulayacağımız senaryomuzun mantığını daha iyi anlamak amacıyla son zamanlarda çokca duyduğumuz Infrastructure as Code (IaC) ve Terraform kavramları hakkında biraz ön bilgi vermek istiyorum.

Infrastructure as Code (IaC) Kavramı Nedir ?

Son zamanlarda Cloud’a geçiş daha popüler bir hale geldikçe, kaynakları buluta taşımanın verimli yollarını bulmaya başladık. Bu ihtiyaç doğrultusunda hayatımıza IaC kavramı girmiş oldu diyebiliriz.Infrasructure as Code yani türkçesi ile telaffuz edecek olursak “Kod Olarak Altyapı” ağlar, sanal makineler, yük dengeleyiciler ve bağlantı topolojileri gibi altyapıyı tanımlamak ve dağıtmak için açıklayıcı bir modelle DevOps metodolojisini ve sürüm oluşturmayı kullanır.

Kısacası Infrastructure as Code (IaC) ; önemli bir DevOps uygulaması ve sürekli teslimin bir bileşenidir. IaC ile DevOps ekipleri, uygulamaları ve destekleyici altyapılarını büyük ölçekte hızlı ve güvenilir bir şekilde sunmak için birleştirilmiş bir dizi uygulama ve araçla çalışabilirler.

Terraform Nedir ?

Terraform, HashiCorp tarafından oluşturulan ve Go programlama dilinde yazılmış açık kaynaklı bir araçtır. Open source bir tool olmasıyla beraber “Terraform Enterprise” versiyonu da mevcuttur. Go kodu, terraform adı verilen tek bir binary dosyada derlenir. Terraform ile çeşitli genel bulut sağlayıcılarını (ör. AWS, Microsoft Azure, GCP , DigitalOcean v.b) birkaç komut kullanarak yönetebilirsiniz. Eminimki birçoğumuz daha öncesinde herhangi bir bulut sağlayıcı üzerinde sanal bir makina oluşturmuşuzdur. Bu aşamaları aklımıza getirdiğimizde önce kullandığımız bulut sağlayıcının portalına erişiriz daha sonrasında manuel olarak istediğimiz konfigürasyonları yapar ve istediğimiz kaynağı oluştururuz işte Terraform sayesinde bunların hepsini ufak bir kod parçası sayesinde yapabiliriz. Yani altyapınızı bir web sayfasını tıklatarak veya shell komutlarını manuel olarak yürüterek değil, kod aracılığıyla yönetebilirsiniz.

Kısacası Terraform ; basit ve declarative bir dil kullanarak altyapınızı kod olarak tanımlamanızı sağlayan açık kaynak kodlu bir araçtır. Burada kod olarak bahsettiğimiz, HashiCorp şirketi tarafından geliştirilmiş, okunması, yazılması ve anlaşılması oldukça kolay olan HCLHashicorp Configuration Language)’dir. HCL, ayrıca HashiCorp şirketinin diğer ürünlerinde de kullandığı bir syntax yapısıdır.

Terraform Yaşam Döngüsü Nedir ?

Terraform kullanarak infrastructure oluşturmak istediğimizde konfigürasyon dosyalarımız temelde 5 aşamadan geçer ve bunun sonucunda altyapımız hazır hale gelir.

Bu 5 aşamalı döngüye Terraform konsept veya Terraform Lifecycle diyebiliriz.

Write : Önce altyapıyı oluşturabilmek için ilgili terraform kodunu yazıp bir dosyaya koymalıyız, dosya uzantısını .tf olarak kaydetmeliyiz.

Init : Workspace üzerindeki tüm Terraform dosyalarını initialize eder.

Plan : Plan evresi değişiklikleri kontrol ediyor olacak , apply evresi öncesi ne çıkartılacağının ve ekleneceğinin bir listesini verecek.

Apply : Uyarlama bu evrede olacak, plan’da belirtilen yapılandırmalar ne ise onları harfiyen uygulamaya çalışacak.

Destroy : Apply aşamasından sonra, terminate edilmesi gerekli olan tüm altyapı kaynaklarını silmek için kullanılır.

Terraform Nasıl Kurulur ?

Artık hazır olduğumuza göre kurulum aşamalarımıza başlayabiliriz. Öncelikle Terraform kurulumu yapabileceğimiz bir ortama ihtiyacımız mevcut ben daha öncesinde Azure üzerinde hazırladığım Ubuntu 20.04 makinamı kullanacağım sizler de isterseniz ayrı bir ortam ayarlayabilir veya kendi local pc nizi kullanabilirsiniz.

Öncelikle sırasıyla aşağıdaki adımları takip ederek sunucumuz üzerine Terraform kurulumu yapmamız gerekiyor.

  • sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl komutu paket güncellemesi yapıyoruz ve bağımlılıkları indiriyoruz.
  • sudo apt-get update && sudo apt-get install terraform komutu ile Terraform’u kuruyoruz.
  • terraform -version komutu ile Terraform’un sorunsuz bir şekilde kurulduğunu görebiliriz.

Terraform ile Azure VM Nasıl Oluşturulur ?

Bu aşamaya geçmeden önce çalıştığımız ortamımızda Terraform ve Azure CLI kurulu olması gerekiyor.Biz yukarıdaki işlemlerle sunucumuza Terraform kurulumunu yapmıştık şimdi Azure CLI’ı kurup daha sonrasında Azure aboneliğimizi ayarlayacağız.

  • sudo apt install azure-cli komutu ile Azure CLI kurulumu yapıyoruz.
  • az login komutu ile Azure aboneliğimize giriş yapıyoruz.
  • az account set — subscription “<subscription id>” komutu ile Azure aboneliğimizi ayarlıyoruz.

NOT : Azure kullanıyorsanız subscription id’nize Azure Portal üzerinden ulaşabilirsiniz.

Ön koşullarla ilgili son adım olarak oluşturacağımız sanal makinemizin dağıtımı için uygun bir konum seçmemiz gerekiyor. Aşağıdaki komutu girerek konumların tam listesini görüntüleyebiliriz.

  • az account list-locations -o table

Ben bu lokasyonlardan “West Europe” olanı seçeceğim sizler istediğiniz lokasyonu seçerek sanal makinanızı o lokasyonda oluşturabilirsiniz.

Tüm bu hazırlık aşamalarımızdan sonra şimdi ilk olarak main.tf isimli Terraform yapılandırma dosyamızı oluşturacağız ve daha sonrasında istediğimiz infrastructure ortaya çıkmış olacak.

Sunucum üzerinde terraform_vm isimli bir dizin oluşturuyorum ve içerisinde main.tf olarak isimlendirdiğim Terraform yapılandırma dosyamı oluşturuyorum.

Terraform yapılandırma dosyamın içerisinde aşağıda gördüğünüz gibi oluşturmak istediğimiz sanal makineye ait vm özelliklerini ve resource group, virtual network, subnet, public ip gibi tanımlamaları ve specleri belirteceğiz.

Artık Terraform Lifecycle ı uygulama adımına geçebilir ve sanal makinamızı oluşturabiliriz.

  • terraform init komutu ile arka uçla bir bağlantı başlatıyoruz.
  • terraform validate komutu ile Terraform yapılandırma dosyamızın geçerli olduğunu kontrol ediyoruz.
  • terraform plan komutu sayesinde apply evresinden önce yapılandırma dosyamızda nelerin olduğunun bir listesini görüntülüyoruz.

main.tf dosyamızı incelersek Resource olarak 6 tane spec tanımlamıştık ve aşağıdaki görselde gördüğünüz üzere “Plan : 6 to add “ çıktısından kontrol sağlayabiliriz.

  • terraform apply komutu ile infrastructure ı oluşturup sanal makinemizi yaratmış oluyoruz.

Azure Portal üzerinden kaynaklarımızın oluştuğunu kontrol edebiliriz. Gördüğünüz gibi “example-machine” isminde bir Ubuntu 16.04 dağıtımı West Europe lokasyonunda oluşturulmuş.Terraform yapılandırma dosyasında belirttiğimiz tüm detayları kurulan sanal makinemizin özelliklerine bakarak kontrol edebilirsiniz. Yine Azure Portal üzerinden Resource Groups kısmına gelirseniz yapılandırdığımız tüm kaynaklara ait çıktıları görebilirsiniz.

Terraform ile oluşturduğumuz sanal makinamıza main.tf dosyasında belirttiğimiz admin ve password bilgileriyle PuTTY üzerinden ssh bağlantısı yapıp kontrol sağlayabiliriz. Aşağıda gördüğünüz gibi yeni oluşturduğumuz sunucuya başarılı bir şekilde erişmeyi başardık.

Bu aşamayla birlikte senaryomuzu uygulayıp tamamlamış olduk şimdi ise yarattığımız tüm kaynakları silip yok edebiliriz.

  • terraform destroy komutu ile oluşturduğumuz tüm ortamı yok ediyoruz.

Böylece uzun süren kurulum aşamalarımızın sonucunda öncelikle çalıştığımız ortamda Terraform kurulumu yaptık, daha sonra adımlarımıza Azure CLI kurulumu ile devam ettik. Terraform sayesinde oluşturduğumuz main.tf yapılandırma dosyamızı Azure CLI kullanımı ile birlikte bir Infrastructure as Code (IaC) senaryosu olacak şekilde uyguladık ve Azure üzerinde Linux VM oluşturacak şekilde dağıtımını sağladık. Bir sonraki makalemizde görüşmek üzere :)

--

--