1. Ana Sayfa
  2. DevOps
  3. Yazılım Geliştiriciler için Azure: Pulumi ile Azure Üzerinde Infrastructure as Code – Bölüm 1

Yazılım Geliştiriciler için Azure: Pulumi ile Azure Üzerinde Infrastructure as Code – Bölüm 1

pulumi

Infrastructure as Code Nedir” terimini ilk kez duyduysanız infra nasıl kod olarak tanımlanabiliyor diye düşünebilirsiniz. Bunun için ilk akla gelebilecek örnekler portal üzerinden “next next” yapmadan deployment template’leri ve kullanmak ve bu işin otomasyonunu sağlamak olarak düşünebiliriz. Peki gerçekten “as code” olarak bu işi nasıl yapabiliriz?

Pulumi tam burada devreye giriyor ve bize TypeScript, JavaScript, Python ve (henüz preview olsa da) Core desteği ile C#, VB.NET veya F# kullanabilmemizi sağlıyor. sadece resource oluşturmak için değil aynı zamanda mevcut resource’ları da yönetebilmemize de imkan sağlıyor. Ayrıca Azure dışında AWS ve Google Cloud üzerinde de kullanabilirsiniz.

Basit bir örnekle başlayalım ve ( kullanmadan) oluşturalım.

Öncelikle bilgisayarınızda (örneği Windows 10 üzerinde yapacağız) Pulumi kurmamız gerekiyor. Bunun için aşağıdaki script’ini Resim-1‘de gördüğünüz gibi çalıştırarak ilgili SDK’yı indirip, pulumi CLI komutlarını kullanmak için gerekli olan $PATH değişkenine tanımlama yapacağım.

 

Resim-1

NOT: Bilgisayarınızda pulumi cli ile yapacağımız işlemler öncesinde az login komutu (Azure CLI kurulu olmalı) ile mevcut Azure hesabınıza bağlanmanız gerekiyor. Azure CLI kurulu değilse buradan kurabilirsiniz.

Pulumi ile gelen azure-csharp template’ini kullanarak başlayalım. Resim-3‘te göreceğiniz gibi pulumi new azure-csharp komutunu çalıştırdığınızda bize access token ya da Azure CLI’da olduğu gibi browser açarak login olabileceğimizi söylüyor.


Resim-3

Browser seçeneği ile ilerlemeyi seçiyorum ve Resim-4‘te göreceğiniz pulumi login sayfası açılıyor. Pulumi’ye GitHub, GitLab, Atlassian ya da bu hesaplara sahip değilseniz klasik yöntem olarak email/password ile giriş yapabilirsiniz. Ben klasik yöntemi tercih edeceğim diyorsanız Pulumi üzerinde hesap açmak için buraya tıklayabilirsiniz.

Resim-4

Login işlemi sonrasında Resim-5‘te göreceğiniz hoş geldin ekranı ile bizden proje ile ilgili bazı bilgileri istiyor. Proje adını varsayılan değer olarak mevcutta bulunan klasör adı (örnekte mshowto) olarak alıyor. Proje tanımı ve oluşturacağı stack (development) bilgilerini ise varsayılan olarak bırakıp, Azure datacenter lokasyonunu ise WestEurope olarak değiştiriyorum.

Resim-5

Projenin bağımlı olduğu paketlerin kurulumu tamamlandıktan sonra dotnet build komutunu çalıştırılıyor. Pulumi’nin azure-csharp template’inde yer alan ve örnek bir Azure Storage oluşturduğu projeyi Resim-6‘da görebilirsiniz. Burada Azure Portal üzerinde yaptığımız gibi öncelikle bir Resource Group oluşturuyor. Sonra bir (Storage) Account nesnesi oluşturup gerekli olan ResourceGroupName, ReplicationType ve AccountTier değerleri set ediliyor. Son olarak da işlem bittiği zaman geriye dönecek olan primary connection string değeri tanımlanıyor. Burada farklı bir değer de dönebilirsiniz.

Resim-6

Örnekte Resource Group ya da Storage Account için Azure lokasyonu belirtmedik. Bu durumda CLI üzerinde belirtmiş olduğumuz lokasyonu kullanıyor. Bunu pulumu.dev.yaml dosyası içerisinde de görebilirsiniz; pulumi.yaml dosyası içerisinde ise proje adı, kullandığımız runtime (dotnet) ve yine CLI üzerine belirttiğimiz proje detayı bilgilerini bulabilirsiniz.

Yazının başında Azure Container Registry oluşturacağımızı belirtmiştim, bunun için örnek kod üzerinde Resim-7‘de göreceğiniz değişiklikleri yaparak devam ediyorum. Resource Group adını mshowto_rg olarak değiştiriyorum ve mshowtocr adında bir (Container) Registry objesi oluşturuyorum. Burada da RegistryArgs olarak ResourceGroupName ve Sku değerlerini set ediyorum. Geri dönüş değeri olarak da container registry’nin Id değerini kullanıyorum.


Resim-7

Şimdi tekrar PowerShell ekranına dönüyorum ve projeyi oluşturduğumuz klasör içerisinde pulumi up komutunu çalıştırıyorum (Resim-8). Burada bize oluşturacağı resource’lar ile bilgilerin özetini verip bu güncellemeyi yapmak isteyip istemediğimiz soruyor, “yes” seçeneği ile devam ediyorum.


Resim-8

Kod üzerinde belirttiğimiz resource’lar Azure üzerinde oluşturulduktan sonra bize Resim-9‘da göreceğiniz gibi container registry id değerini, kaç tane resource oluşturduğunu ve bu işlemlerin ne kadar zaman aldığı gibi bilgileri veriyor. Ayrıca pulumi üzerindeki ilgili stack’e gidebilmemiz için bir de url bulunuyor.


Resim-9

Şimdi de Azure Portal’a giderek gerçekten istediğimiz resource’lar oluşturuldu mı diye bakıyorum. Resim-10‘da göreceğiniz gibi kod üzerinde belirttiğimiz isimlerin sonuna bir ekleme yapılmış. Bu pulumi tarafından isimlerin benzersiz (unique) olmasını sağlamak için yapılan bir işlem.


Resim-10

Fakat ben isimlerin benzersiz olduğuna eminim ve sonuna yapılan eklemeleri istemiyorum diyorsanız Resim-11‘de göreceğiniz gibi ResourceGroup ve Registry nesnelerini oluştururken, constructor parametresine ek olarak tekrar Name değerini set ederek bu sorunu çözebilirsiniz.


Resim-11

Pulumi web sayfası üzerinde yer alan stack bilgilerine de Resim-12‘de göreceğiniz gibi erişebilirsiniz. Activity sekmesi altında yaptığınız güncelleme detaylarını, Resources sekmesi altında ise bu stack’te yer alan resource bilgilerine ulaşabilirsiniz. Bu stack altında yer alan resource veya stack’in kendisini silmek istiyorsanız Settings sekmesine gidebilirsiniz.


Resim-12

Bu konuyla ilgili sorularınızı http://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

https://docs.microsoft.com/en-gb/azure/container-registry/

https://www.pulumi.com/

TAGs: Azure, Azure Portal, , Azure Container Registry, , PowerShell, Azure CLI, , .NET, , Pulumi, Infrastructure as Code

 

Yorum Yap

Yazar Hakkında

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi Gemi İnşaatı Mühendisliği bölümünde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi Bilgi Teknolojileri bölümünde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı QBasic ile başlayan Mert, .NET ve SQL Server gibi Microsoft teknolojileri ile devam etmiş; yüksek lisans tezini ise Linux konusunda yapmıştır. Netaş ve Ziraat Teknoloji gibi sektörün önde gelen firmalarında C#, .NET, SQL Server, Cisco Contact Center ürünleri ve Linux üzerine çalışmış, bir çok firmaya da bu konularda danışmanlık vermiştir. Şu anda da Done'de Cloud Development Manager olarak Azure, .NET Core, SQL Server, Docker vb güncel teknolojiler üzerinde çalışmaktadır.

Yorum Yap