Category: Infrastructure

Powershell – Diziler hakkında bilmek istediğiniz her şey – Bölüm 1

Uzun zamandır yazmak istediğim yazının ilk adımını atmış bulunuyorum. Powershell ile çok fazla zamanı geçiyorum fakat deneyimimi aktaracak derli toplu bir yazı olmadığını farkındayım bu yüzden Level 100 bir seri ile olan Powershell ile Diziler ( Array ) konusuna değineceğim. Konuya başlamadan önce kesinlikle bir uyarı yapmam gerekiyor, bunun en başı temel programlama bilgisinde olan değişken nedir, nasıl atanır gibi konulara göz gezdirmeniz olacaktır. Bu yazı hiçbir şekilde Değişken ( Variable ) gibi detayları kapsamıyor. Sizin bildiğinizi en azından Powershell içerisinde değişken nasıl oluşturulur, nasıl atanr gibi konulara ucundan hâkim olmanız yeterlidir.

Powershell Diziler Nedir, Ne için kullanmayalıyız?

En basit haliyle ‘Diziler’ nedir bunu bir anlayalım. Diziler, birden fazla aynı veya farklı tipte veri tipinin bir araya gelmesiyle oluşur. Bu veriler String, Integer, PSObject vd. gibi tipler olabilecegi gibi, kendi yazdigimiz nesneler de olabilir. Buna ek olarak birden fazla değişkeninde bir araya gelmesiylede oluşabilir diye tanımlayabiliriz. Çok geçmise gidersek, Matematikteki sonlu dizi adında bir konu var, oraya dönüp hafızayı pekiştirebilirsiniz. Yazımında devamında artık Dizilere ( ‘Array’ ) olarak sesleniyor olacağım bu yüzden kafanız karışmasın.

Array, birden çok öğenin bir koleksiyonu olarak işlev gören bir veri yapısıdır. Koleksiyon kelimesi çok önemli bunu lütfen aklınızda yer etmesini sağlayın. Koleksiyon dediğimiz zaman aklınıza elinizde birden fazla erişebildiğiniz bir değerler bütünü olduğunu hayal ediniz. Array’ler üzerinde yeni eleman ekleyebilir veya Array içerisinden belirlediğiniz bir elemana erişebilirsiniz.

Array oluşturmaya ilk adım

Powershell içerisinden değişken bildiğiniz üzere ‘$’ işareti ile başlanarak oluşturulmaya başlanır. Vereceğiniz değişken adını ‘$’ işaretinden sonra yazarsınız ve Powershell tarafından otomatik olarak algılanır ve ‘=’ eşittir ile atamasını gerçekleştirirsiniz. Hemen aşağıdaki basit kullanım ile başlayalım.



Powershell – Diziler hakkında bilmek istediğiniz her şey – Bölüm 2

Serimizin ilk yazısında, Powershell içerisinden Array kullanımı, oluşturma ve ne şekilde oluşturabileceğimiz üzerine değindik. Şimdi kaldığımız yerden hız kesmeden devam edelim.

Array içerisindeki eleman sayısı bulmak

Oluşturduğumuz array içerisinde kaç eleman var olduğunu merak ediyorsanız bunun için ‘Count’ niteliğini çağırarak değeri bulabilirsiniz.

Görüldüğü üzere sadece tanımladığım Array çağırıp onun özelliklerine indikten sonra, kaç elema olduğunu gördüm. Noktaya bastığınız birçok nitelik ve methodlar karşınıza çıkacaktır. Tek tek ne olduğuna Microsoft Web sitesinden bakabilirsiniz.



Powershell – Diziler hakkında bilmek istediğiniz her şey – Bölüm 3

Artık Array hakkında baya bir bilgi edindiğinimizi düşünüyorum ama yetmez diyebilirim. Geliştirdiğiniz Script, Workflow vd süreçlerde kesinlikle kullanacağınız farklı modeller olacaktır. Şimdi ise, Array içerisinden filter yapma sürecine değinelim.

Array ile Where kullanımı

En basit haliyle, Where-Object veya Where olarak bilinen bu cmdlet bizlere Pipeline sürecinden gelen değerleri filtreleme yapmamıza imkân sağlar. Daha yalın haliyle, Array içerisinde birçok elemanınız var bunların içerisinde çok özel bir karakteri olan veya belirli bir değere eşit olanları bulmak isteyebilirsiniz.

Bildiğiniz gibi yukarıdaki şekilde bir Array kollekisyonumuz bulunmaktaydı. Bunun üzerinden devam ederek Where kullanımı incelleyeceğim. İlk örnek ‘$myfirstArray’ array tipindeki değişken içerisinde ‘Where’ methodunu çağırarak bir Script Block içerisinde değerimi gönderip filtreleme işlemini yapmak. Yukarıdaki örnek içerisinde sadece ‘remote-pc4’ eşit olmayan değerleri dönmesini istedik. Eğer Powershell özelinde karşılaştırma operatörlerini bilmiyorsanız lütfen göz gezdirin. Mevcut bir programlama diline göre biraz farklılıklar var. Örnek olarak ‘==’ yerine ‘-eq’ olarak kullanılmaktadır. Bunun gibi detayları için önce karşılaştırma operatörlerini öğrenmenizi tavsiye ederim.



Packer kullanarak ile Azure üzerinde VM Image Yönetimi – Bölüm 1

Packer, HashiCorp tarafından sunulan tek bir kaynak konfigürasyonı ile birden fazla farklı platformlar için Virtual Machine veya konteyner imajları oluşturmak için kullanılan bir araçtır. Bu yazı serisinde Azure özelinde custom image’lerin nasıl oluşturulacağını açıklayacağım ancak önce Packer nedir kendisi tanıyalım. Kısacası Packer, Microsoft Azure’da spesific image oluşturmak, tanımlamak için kullanılabilen açık kaynaklı bir araçtır. HashiCorp tarafından bizlere sunulan bu araç ile Ansible, Powershell DSC etc. İle birlikte kullandığınız zaman Infrastructure as code yönetimini başka bir boyuta taşıyor olacaksınız. MsHowto üzerinde bulabileceğiniz, Mustafa Kara tarafından yazılan Ansible yazı serisi okumanızı tavsiye ederim. Packer, birden fazla platformda çalışır, Bu yazı serisinde Microsoft Azure üzerinde custom image’ler oluşturmak ve saklamak için örnekler gerçekleştirip, Packer’in Azure Resource Manager (ARM) bütünleşip, Azure Managed Image ile harika ve sorunsuz bir uyum içinde çalıştığına şahit olacaksınız.



Packer kullanarak ile Azure üzerinde VM Image Yönetimi – Bölüm 2

Packer ile Azure üzerinde VM image yönetimine devam ediyoruz. Bir önceki yazımızda Service Principal ve Packer tanımlaması için JSON dosya oluşturup Variable tanımlarını yaptık fakat karşılarına değerler girmedik. Şimdi dilerseniz bizden istenilen tanıımlamaları tek tek girelim. Aşağıdaki resim içerisinde göreceğiniz gibi Variables olarak adlandırılan bölümde, Azure Subscription detayları, Service Principal bilgileri ve son olarak oluşturulacak olan image için saklanacak resource group ve image name bilgileri yer almaktadır. Bu bilgileri doldurduktan sonra, daha sonra onları ilerki tanımlamalarda kullanıyor olacağız. Adından anlaşılacağı gibi, bunlar sadece bizim abonelik ve packer için kullanılacak bilgileri içermektedir.



Packer kullanarak ile Azure üzerinde VM Image Yönetimi – Bölüm 3

Packer serimize Provisioners’ ile devam ediyoruz. Packer Image Template’leri içerisinde, ‘Provisioners’ bölümü en çok dikkat çeken kısım olarak karşımıza çıktığını daha önce belirtmiştim. Packer ile oluşturmak istediğiniz imaj için öncesinde içerisinde olmasını istediğiniz yazılımı yüklemek veya işletim sistemini yapılandırmak için kullanması gereken bir özelliktir. Basit olarak bunu kullanmanızda birçok aşama var. Öncelikle bildiğiniz gibi bir imaj alırken, Sysprep önem arz eder, bunun dışında belki o imaj içerisinde belirli bir yazılım olsun, Registry içerisinde şu şekilde bir kayıt olsun, bunu değeri bu olsun, hatta Package Management üzerinden bir yazılım yüklensin gibi her türlü detayı belirtebiliryorsunuz. Öncelikle ‘Provisioners’ isteğe bağlıdır. Bir şablon içinde hiçbir hazırlayıcı tanımlanmamışsa, sonuçta ortaya çıkan makine görüntülerine varsayılanlardan başka hiçbir yazılım yüklenmeyecektir. Bununla birlikte, bu tipik değildir, çünkü Packer’ın değerinin çoğu önceden yapılandırılmış yazılımın çoklu özdeş resimlerini üretmektir. Provisioners genellikle bir Powershell Script, bash script vb. nitelikler ile tanımlanır.



Create Docker Host on Azure using Docker Machine CLI

Before reading the article, you have to know that I’m not going to explain what are Docker and Container etc. On the internet, you may be able to find a lot of article series to understand Container and Docker structure. Basically, in this one, we will comprehend how can we create docker host on Azure via Docker Machine CLI. I could say, One brief (and incomplete) description is that Docker creates something similar to Virtual Machines, only that Docker containers run on the host machine’s OS, rather than on a VM. Each Docker container should ideally contain one service and an application can comprise multiple containers.



YAML kullanarak Azure Resource Manager Template Deployment Nasıl Yapılır? – Bölüm 2

Yazımızın ilk serisinde Azure Resource Manager Template dağıtım modelini ( JSON Template ) kullanırken yaşadığımız zorlukları ve JSON formatının göz yoran zorluklarından bahsetmiştim. Şimdi ise, YAML formatını kullanarak geliştireceğimiz Azure Resource Manager Template arasında farklılıklara bakıp daha sonra geliştirdiğimiz YAML template dosyasını tekrar nasıl JSON formatına kolay bir şekilde nasıl dönüştüreceğimizden bahsedeceğim.

Öncelikle YAML-CLI aracını github üzerinden indirelim ve ne tür parametreler göndererek kullanıldığına bakalım. Bunun için aşağıdaki Powershell Script çalıştırabilirsiniz, Script belirli parametreler almaktadır.



YAML kullanarak Azure Resource Manager Template Deployment Nasıl Yapılır? – Bölüm 1

Bu yazı serisine başlamadan önce Azure Resource Manager Template Deployment modelini neden ve niçin kullanıldığını çok iyi anlamamız lazım. Bu yüzden blog üzerinde bunun anlatan yazıları yazmıştım, fakat kısa bir hatırlatma yapmak için kısaca tekar üzerinden geçmek istiyorum. Azure Resource Manager’ın Template Deployment özelliği bize sağladığı en büyük özellik, Infrastructure as code kültürüne ayak uydurmamız ve Azure üzerinde hizmet veren kaynakları devamlı kontrol altında tutup, incremental şekilde değişiklik yapmamıza olanak sağlamaktadır. Çok fazla organizasyon Azure Resource Manager – Template Deployment modeline mevcut ortamlarının template geliştirerek deployment süreçlerini CI/CD içerisine dahil etmektedirler, özetle bu bize JSON formatında sunulan ve Azure üzerinde tüm kaynaklarınızın detaylarını bu template içerisine belirterek çok hızlı bir şekilde deploy edip, aynı şekilde değişen bir şey var mı yok mu diye kontrol altına alabiliyorsunuz, biraz daha farklı bir süreçten örnek vermek gerekirse, DEV/TEST ortamların çoğu Resource Manager Template modeline yazılmış ve deploy edilmeye hazır halde bekliyor. Bu template geliştirmenin bir çok yöntemi var, JSON formatında olan bu dağıtım modeli, Visual Studio Code ve Visual Studio aracılığı ile kolayca geliştirilebilir durumdadır. Dilerseniz Mevcut kaynaklarınızın template detaylarını Azure Portal üzerinden export etme şansınıza sahipsiniz, biraz fikir vermesi için aşağıdaki kısa görüntü size açıklayacaklar.



Overview of Azure Load Balancer with Powershell

If you provide web services with clients spread across multiple locations, you must be able to run your apps in a load-balanced manner across many datacenters. Azure Load Balancer gives you to scale your applications and create high availability for your services. Azure Load Balancer can use Internal and Outbound scenarios. It will be providing low latency, high throughput, and scales up to millions of flows for all TCP and UDP applications. To give an example, I would say “Azure Load Balancer supports TCP/UDP-based protocols such as HTTP, HTTPS, and SMTP, and protocols used for real-time voice and video messaging applications.” There are two different types of Tier. We generally announce it “Basic and Standard.”

multi-vm-diagram