Azure CloudShell ile VM’ler uzerinde komut kosturmak

Azure CloudShell Azure Yonetimi konusunda gercekten super bir cozum. Browser icinden butun Azure kaynaklarini rahatca yonetebilmenizi saglayan bu tumlesik Powershell cozumunun en cok kullanilan ve en yeni komutlarindan iki tanesine bakalim oyleyse.
Azure uzerindeki VM’lere CloudShell icinden baglanarak istedigimiz butun komutlari sanki VM’nin uzerindeymisiz gibi kosturabiliriz.
Bunun icin once baglanacagimiz ve yonetecegimiz VM’nin “PSremoting” servisini aktif hale getirmeliyiz. Bu islem arka planda VM uzerinde WinRM servisini acarak, ilgili Firewall ayarlarini da bizim icin yapiyor.
[crayon]
Get-AzVm -Name VisualStudi2017 -ResourceGroupName DEVOPS | Enable-AzVMPSRemoting
[/crayon]

Artik baglantiyi kurabiliriz. Bunun icin once VM’ye baglanmak icin kullanilacak kullanici adi ve parolayi bir degisken icine kaydediyoruz. Bunun icin Get-credential komutunu kullanacagim.
[crayon]
$cred = Get-Credential
get-azvm -Name VisualStudi2017 -ResourceGroupName DEVOPS | Enter-AzVM -Credential $cred
[/crayon]

Ve sira baglantiya geldi. Baglandim ve sanki o makine uzerindeymisim gibi komutlarimi calistiriyorum.
[crayon]
Get-azvm -Name VisualStudi2017 -ResourceGroupName DEVOPS | Enter-AzVM -Credential $cred
Hostname
Get-Process
[/crayon]

Isin guzelligi, tum bunlar browser icinden!

Continue Reading Azure CloudShell ile VM’ler uzerinde komut kosturmak

MS Ignite The Tour Londra’da Azure Cloud Shell anlattim

2019 senesi seminerler ve webinerler acisindan son derece hizli basladi ve oldukca Zengin gececege benziyor dogrusu.

26 ve 27 Subat tarihlerinde London ExCel’de MS Ignite The Tour’da 2 farkli oturumda yer aldim ve Ask the Expert Demo istasyonlarinda hem Powershell ve Azure Cloud Shell ile ilgili sorularinizi yanitlamaya calistim.

Muhtesem gecen bu 2 gunun ardindan yeni etkinliklerin hazirliklarina basladim bile. Cok yakinda yeni etkinlikleri de buradan duyuracagim.

Tum destegi olan arkadaslarima tesekkur ediyorum.

Continue Reading MS Ignite The Tour Londra’da Azure Cloud Shell anlattim

Azure CloudShell ile Calismaya Baslamak

Powershell’in Azure Portal icinde butunlesik olarak sunuldugu ve gercekten cok onemli ozelliklerle donatilmis bir platform dusunun. Bunu adi CloudShell.
Kendi bilgisayarinizda bulunan ve surekli guncellemek zorunda oldugunuz Powershell ile kiyaslandiginda hem bakim onarim gereksinimi duymamasi hem de icinde tumlesik olarak gelen bir cok modul ve ozellik barindiran bir Powershell versiyonu! Kulaga hos geliyor elbette
Bunu aktif hale getirmek icin Azure Portal icinde sag ust kosede bulunan PowerShell simgesine tiklamak ve yonergeleri izlemek yeterli.


Cok zor bir soru degil benim icin. Powershell seciyorum!


Peki simdi ne oldu?
Bir adet storage account olusturulgu ya da var olan bir tane kullanildi. Storage account icine 5GB boyutunda bir profil paylasimi olusturuldu. Bu da demek oluyor ki; Powershell oturumu permanent! Yani yaptiginiz degisiklikler silinmiyor. Profil dosyaniz, scriptleriniz ve dosyalariniz hep orada. Evet, nereye giderseniz gidin Browser’I acip Azure Portal’a baglandiginizda ayni deneyime her yerden sahip olabilirsiniz.

Sanki dosya sistmeinde gezer gibi Azure kaynaklari icinde gezebilirsiniz. Buna SHIPS destegi sayesinde sahip oluyoruz aslinda. Simple Hierarchy in Powershell!

Bir de bonus komut vereyim
Get-AzCommand

Bu komutun en guzel yani o anda icinde bulundugunuz dizinin icindeki kaynaklaara gore kullanabileceginiz komutlari listelemesi. Ornegin asagidaki ekranda ben VM’lerin icinde bulundugu sanal dizinde oldugum icin Get-AzCommand bana sadece Az.Compute modulunun icindeki komutlari listeliyor.

Continue Reading Azure CloudShell ile Calismaya Baslamak

Powershell ile Azure Resource Group icindeki Loglara Erismek

Herhangi bir Resource group icinde basarisiz olan aksiyonlari listelemek icin asagidaki tek satiri kullanabilirsiniz.
[crayon]
Get-AzureRmLog -ResourceGroupName ResourceGroup001 -WarningAction SilentlyContinue | where{$_.statusvalue -ne “Succeeded” -and $_.level -eq “Error”} -WarningAction SilentlyContinue | select Level, Properties, HttpsRequest, Caller | fl *
[/crayon]
Gerci yukaridaki Succeeded filtresine gerek yoktu ama oyle icimden geldi, koyayim dedim. Bir zarari yok nihayetinde.

Continue Reading Powershell ile Azure Resource Group icindeki Loglara Erismek

Azure VM Detaylarini Dosyaya Yazdirmak

Azure VM’lerin hepsini ozet olarak listeleyip CSV olarak kaydetmek istediginizde asagidaki komutu kullanabilirsiniz. Hatta Azure uzerinde zamanlanmis gorevler ile bu raporlarin her gun calisarak belirlediginiz bir storage account icine kaydedilmesini de saglayabilirsiniz.
[crayon]
$VMs = Get-AzureRmVM
$vmOutput = $VMs | ForEach-Object {
[PSCustomObject]@{
“VM Adi” = $_.Name
“VM Tipi” = $_.StorageProfile.osDisk.osType
“Lokasyon” = $_.location
“VM Profili” = $_.HardwareProfile.VmSize
“VM OS Disk Boyutu” = $_.StorageProfile.OsDisk.DiskSizeGB
“VM Data Disk Boyutu” = ($_.StorageProfile.DataDisks.DiskSizeGB)
“OS Tipi” = ($_.StorageProfile.OsDisk.OsType) -join ‘,’
}
}
$vmOutput | ft
[/crayon]

Simdi de export edelim.
[crayon]
$vmOutput | Export-Csv c:\sil\AzureVMs.csv -Delimiter “,” -NoTypeInformation
[/crayon]

Continue Reading Azure VM Detaylarini Dosyaya Yazdirmak

8 Aralik gunu Salt Galata’da Azure DevOps Day’i gerceklestirdik

8 Aralik gunu Salt Galat’da Azure DevOps Day’i gerceklestirdik. Yuksek katilimli keyifli oturumlar esliginde guzel bir gun gecirdik.

Tum katilimcilara ve destekcilere cok tesekkurler.

Continue Reading 8 Aralik gunu Salt Galata’da Azure DevOps Day’i gerceklestirdik

Powershell ile Azure Yonetimi – IaaS – Part 11 – VM Scale Set Olusturmak

Scale Set’ler (bundan sonra SS diyecegim) ile tek VM imajini kullanarak birden fazla klonlanmis VM’yi bir arada kullanabilirsiniz. Aslinda bu ozellik bir VM’nin kaynaklarina bir yuklenme oldugunda otomatik olarak ayni konfigurasyon ve dataya sahip yeni bir VM’nin oyuna dahil edilmesi anlamina gelir. Yogunluk gectiginde ise fazladan eklenen VM otomatik olarak ortadan kaldirilir. Bu sayede 1000 adet VM’ye kadar otomatik yuk kontrolu (Auto Scale) saglanabilir. SS olustururken, kullanacagimiz VM imajini da belirleriz. Dilersek custom bir imaj da tanimlayabiliriz. Oyle ya bazen istediginiz butun yazilimlari kurup bir imaj hazirlarsiniz ve tum VM’lerde bu Imajin kullanilmasini istersiniz. Ben, bu ornekte Azure marketplace imaji kullanacagim.
[crayon]
New-AzureRmVmss `
-ResourceGroupName ResourceGroup001 `
-Location “NorthEurope” `
-VMScaleSetName “towershellScaleSet01” `
-VirtualNetworkName “TestVNet003” `
-SubnetName “default” `
-LoadBalancerName “towershellNLB01” `
-UpgradePolicyMode “Automatic” `
-ImageName Win2016Datacenter
[/crayon]

Windows Server 2015 imajim ile birlikte VM SS kuruldu. Asil onemli olan bu SS’nin icinde ka cadet VM gozuktugu ya da gozukecegi. Bu durum icin cesitli kurallar kullaniyoruz. Mesela en az 2 VM olsun ancak bunlarin CPU seviyesi yuzde 80’nin ustune cikarsa o zaman ucuncu bir VM daha olusturulsun ve bu boyle yukariya dogru devam edip gitsin diyebiliriz. Yogunluk azaldiginda alinacak aksiyon icin de yine CPU seviyesi belirli bir duzeyin altina inerse fazladan acilan VM’ler kapatilsin diyebilecegiz.
Simdi oncelikle Scale Set icindeki VM’lere bir goz atalim.
[crayon]
Get-AzureRmVmss `
-ResourceGroupName ResourceGroup001 `
-VMScaleSetName “towershellScaleSet01” | Get-AzureRmVmssVM
[/crayon]

Goruldugu gibi su anda 2 adet VM hazir ve calisir durumda Gelecek gorevleri bekliyor.
Simdi manuel olarak SS icindeki VM’lerin adedini arttiracagim. Bu islemi manuel olarak yapiyorum.
[crayon]
$scaleset01 = Get-AzureRmVmss `
-ResourceGroupName ResourceGroup001 `
-VMScaleSetName “towershellScaleSet01” | Update-AzureRmVmss -SkuCapacity 3
[/crayon]

Simdi bakalim kac VM gorunuyor ve ne durumdalar.

Evet 3 kisi oldular!
Simdi SS icinde bulunan VM’ler uzerindeki yuk artarsa ne olacagini belirlemek icin AutoScale ozelligini configure edecegim. Boylece belirledigim kurallara gore SS icindeki VM sayisi otomatik olarak artacak ya da azalacak.
Asagidaki kurallarla birlikte sunu diyorum:
CPU yuzde 80’nin ustune cikarsa 1 tane daha VM ekle, yuzde 20’nin altina inerse fazla VM’yi kapat.
[crayon]
$scalesetID = (Get-AzureRmVmss `
-ResourceGroupName ResourceGroup001 `
-VMScaleSetName “towershellScaleSet01”).Id
$arttir = New-AzureRmAutoscaleRule `
-MetricName “Percentage CPU” `
-MetricResourceId $scalesetID `
-Operator GreaterThan `
-MetricStatistic Average `
-Threshold 80 `
-TimeGrain 00:01:00 `
-TimeWindow 00:05:00 `
-ScaleActionCooldown 00:05:00 `
-ScaleActionDirection Increase `
-ScaleActionValue 1
$azalt = New-AzureRmAutoscaleRule `
-MetricName “Percentage CPU” `
-MetricResourceId $scalesetID `
-Operator LessThan `
-MetricStatistic Average `
-Threshold 20 `
-TimeGrain 00:01:00 `
-TimeWindow 00:05:00 `
-ScaleActionCooldown 00:05:00 `
-ScaleActionDirection Decrease `
-ScaleActionValue 1
$ScaleProfili = New-AzureRmAutoscaleProfile `
-DefaultCapacity 2 `
-MaximumCapacity 8 `
-MinimumCapacity 2 `
-Rule $arttir,$azalt `
-Name “otomatikprofil”
Add-AzureRmAutoscaleSetting `
-Location “NorthEurope” `
-Name “AutoScale” `
-ResourceGroup ResourceGroup001 `
-TargetResourceId $scalesetID `
-AutoscaleProfile $ScaleProfili
[/crayon]

Continue Reading Powershell ile Azure Yonetimi – IaaS – Part 11 – VM Scale Set Olusturmak