Azure’a Powershell İle VM Kurmak
Powershell ile Azure’da VM yaratmak hem kolay hem de gayet işlevseldir. Portal üzerinden ilk kurulum esnasında yapamadığınız birçok işlemi powershell yardımıyla yapabilirsiniz. Sunucu kurulmasını otomatikleştirmek veya self-service portalınız üzerinden kullanıcılarınızın Azure’da VM yaratmasını sağlayabilirsiniz.
Azure’da bulunan her VM’in bir bölgeye veya affinity group’a ait olması gerekmektedir. Eğer hesabınızda daha önceden bir affinity group tanımlanmışsa “Get-AzureAffinityGroup” komutunu kullanarak gruplarınızı görebilirsiniz. Aksi takdirde affinity group yaratmanızı tavsiye ederim,VM’leri direk veri merkezi belirterek kurabilseniz de zamanla sayı çoğaldıkça bazı karışıklıklar yaşayabiliyorsunuz;Affinity Group kaynak atanması,planlama ve network ayarlarını yaparken size toplu olarak servis ve VM’ler üzerinde işlem yapabilmenizi sağlayacaktır. VM’in sahip olması gereken ikinci özellikse servis adıdır. Affinity Group’da olduğu gibi “Get-AzureService” ile görebiliriz.Aynı şekilde bir birleriyle ilişki VM’leri aynı Azure servisi altında toplamanızı öneririm.
Bu iki parametre VM’in hangi veri merkezinde ve mantıksal servis grubunda olacağını belirlemek için önemlidir. Bunların yanında VM’in doğal olarak bir ismi, büyüklüğü(kaynakları), işletim sistemi ve kullanıcı adı da belirtilmelidir. Eğer VM’in kurulumu esnasında kullanabileceğiniz VM imajlarını görmek isterseniz “Get-AzureVMImage | Select ImageName” komutunu kullanabilirsiniz. Burada hem Azure Galerisinde ki imajlar hem de sizin yüklemiş olduğunuz imajlar bulunmaktadır.
VM nereye, hangi servis içerisinde ve imaj ile kuracağımıza karar verdiysek scriptimize geçebiliriz.
$vmOS = “Windows-Server-2012-Essentials-20140618-enus” #vm’in kurulacağı imaj $vm = New-AzureVMConfig -Name "vmTest" -InstanceSize "Small" -Image $image #instancesize ile vm’in büyüklüğünü seçeriz
VM’in kaynaklarını, imajını ve ismini belirttik şimdide Windows ile ilgili temel ayarları yapalım. Bunun için “Add-AzureProvisioningConfig” komutunu kullanmamız gerekiyor.
$vmPass = “supersecret1” $vmUser = “emre” $vm | Add-AzureProvisioningConfig -Windows -AdminUserName $vmUser -Password $vmPass –DisableAutomaticUpdates ########Linux kulurumu####### #$vm | Add-AzureProvisioningConfig -Linux -LinuxUser $vmUser -Password $vmPass ############################
Add-AzureProvisioningConfig’in msdn sayfasına mutlaka bakmanızı öneririm. Kurulum esnasında VM’i domain’e dâhil etmekten tutun otomatik güncellemelere kadar birçok Windows ayarına ilk kurulumda müdahale edebiliyor.
Benim sıkça kullandığım birkaç parametreyi burada paylaşmak istiyorum
-DisableAutomaticUpdates : Windows’un otomatik güncellemelerini kapatır
-EnableWinRMHttp : Powershell scriptlerini http üzerinden çalıştırabilirsiniz
-TimeZone : Windowsun zaman dilimini belirler
-ResetPasswordOnFirstLogon : Kullanıcı ilk kez giriş yaptığında şifresini değiştirmeye zorlar.
Domain’e dâhil etmek içinse aşağıda ki parametreleri kullanabilirsiniz
-Domain "emrebozlak.local" -DomainUserName "domainadminuser" -DomainPassword "domainPassword" -MachineObjectOU 'OU=VMs,DC=emrebozlak,DC=local'
Tabii ki Linux sunucular için bu parametreler tamamen farklı olacaktır. Onları da başka bir yazımda değinmek istiyorum.
Vm’in tüm ayarlarını yaptığımıza göre artık kurabiliriz.
New-AzureVM -ServiceName “get-azureservice ile aldığımız servis ismi ” -VMs $vm -AffinityGroup “get-azureaffinitygroup ile aldığımız lokasyon”
Vm’i yarattık ama şirket politikası gereği veya imajımız içerisinde gelen ön tanımlı bazı servislerin portlarını dış dünyaya açmak isteyebiliriz. Bunun için daha önce ki bir yazımda bahsettiğim Endpoint’leri ayarlamamız lazım.
$VM | Add-AzureEndpoint -Name "webserver" -Protocol "http" -PublicPort 80 -LocalPort 8080
Ve son olarak VM’I başlatıyoruz.
$VM | Start-AzureVM
Bu yazıda değinmediğim birkaç önemli özellik daha var bunlardan biri VM ilk kurulurken statik ip atanması, bunun için “Set-AzureStaticVNetIP” kullanılmaktadır.
En altta scripti toplu olarak veriyorum iyi eğlenceler.
$vmOS = “Windows-Server-2012-Essentials-20140618-enus” #vm’in kurulacağı imaj $vm = New-AzureVMConfig -Name "vmTest" -InstanceSize "Small" -Image $vmOs #instancesize ile vm’in büyüklüğünü seçeriz $vmPass = “supersecret1” $vmUser = “emre” $vm | Add-AzureProvisioningConfig -Windows -AdminUserName $vmUser -Password $vmPass –DisableAutomaticUpdates ########Linux kulurumu####### #$vm | Add-AzureProvisioningConfig -Linux -LinuxUser $vmUser -Password $vmPass ############################ New-AzureVM -ServiceName “get-azureservice ile aldığımız servis ismi ”-VMs $vm -AffinityGroup “get-azureaffinitygroup ile aldığımız lokasyon” $VM | Add-AzureEndpoint -Name "webserver" -Protocol "http" -PublicPort 80 -LocalPort 8080 $VM | Start-AzureVM
One Trackback
[…] beraber kullanarak da bir VM yaratmamız mümkündür. Aslında yaptığımız şey daha önce ki yazımda da bahsettiğim gibi OS diski olarak yüklediğimiz VHD’i […]