0

Merhaba,

Powershell ile Azure RM VM’lerin yönetimini anlattığım makale serisinin bu bölümünde AzureRM powershell modülü ile tüm özellikleri özelleştirilmiş bir VM’i nasıl oluşturacağınızı anlatacağım.

Daha önceki bölümde New-Azurermvm cmdlet’ini ve ona ait parametreleri kullanarak sample VM’leri nasıl oluşturabileceğinizden bahsetmiştim. Çok fazla özelleştirme yapılmayan ve cmdlet’in desteklediği parametreleri içeren bir yöntem olduğunu belirtmiştim. Şimdi ise VM oluşturma sürecini daha da özelleştirilmiş bir hale getirmeyi ve VM için gerekli kaynakları istediğimiz şekilde tek tek oluşturup VM oluşturma işlemine dahil etmeyi ayrıntılı olarak anlatacağım. Umarım herkes için faydalı bir makale olur :)

Şimdi öncelikle script’i yazmadan önce Azure ortamına login olalım. Bunun için Login-AzureRMAccount cmdlet’ini kullanmamız gerekir. Eğer Azure üzerindeki Cloud Shell’i kullanırsanız, bu aşamaya gerek kalmayacaktır. Login işleminin ardından neredeyse tüm komutlarda kullanacağımız resource group ismi ve location’ı birer değişkene atayalım. Bu sayede komutlarda her defasında bu bileşenleri tekrarlamaya gerek kalmayacaktır. Tabi bir de oluşturacağımız VM’e vereceğimiz ismi de değişkene atayalım.

Login-AzureRmAccount

# Değişkenler

$resourceGroup “FRTVMRG”

$location “WestEurope”

$vmName “FRTVM01”

Değişken atama işlemlerinin ardından VM için gerekli olan bileşenleri oluşturmadan önce VM için gerekli olan local admin bilgilerini (kullanıcı adı ve parola) bir değişkene atayalım. Komut çalıştırıldığında kimlik bilgilerinin girileceği bir pencere açılacaktır. Bu pencere yardımı ile kullanıcı adı ve parola bilgisi $cred değişkenine atanmış olacaktır.

# VM için credential oluşturulması

$cred Get-Credential -Message “Enter a username and password for the virtual machine.”


Resim – 1

Account bilgilerinin ardından tüm resource’ları barındıracak resource group’u oluşturabiliriz. Bu amaçla ilk sırada verdiğimiz değişkenleri de kullanarak resource group’u oluşturalım.

# Resource Group oluşturma işlemi

New-AzureRmResourceGroup -Name $resourceGroup -Location $location

Resim – 2

Resource group’un başarılı şekilde oluşturulmasının ardından gerekli konfigürasyonlara başlayabiliriz. İlk olarak VM’in yer alacağı subnet’i config’ini oluşturup ardından bu subnet’i kullanarak Vnet’i oluşturalım.

Subnet’i oluşturuken subnet’in ismini ve bu subnet’e ait AddressPrefix’ini oluşturalım.

# Subnet oluşturma işlemi

$subnetConfig New-AzureRmVirtualNetworkSubnetConfig -Name VMSubnet -AddressPrefix 192.168.1.0/24


Resim – 3

Ardından oluşturduğumuz bu subnet’i de kullanarak Vnet’i oluşturalım. Vnet’i oluştururken Vnet’in address range’ini, lokasyonunu, resource group’unu belirtmek gerekir. Bunlara ek olarak da bir önceki adımda oluşturmuş olduğumuz subnetconfig’i –Subnet parametresine atamak gerekir. Bu özelliklere göre aşağıdaki komut ile vnet’i oluşturalım.

# Subnet config kullanılaran Vnet oluşturulması işlemi

$vnet New-AzureRmVirtualNetwork -ResourceGroupName $resourceGroup -Location $location -Name FRTVNET -AddressPrefix 192.168.0.0/16 -Subnet $subnetConfig

Resim – 4

Şimdi de public ip’yi oluşturalım. Bu adım VM’in durumuna göre opsiyonel olabilir. Burada önemli noktalardan birisi Ip’nin dynamic yada static olmasıdır. –AllocatedMethod parametresini kullanarak bunu belirleyebiliriz.

# Public IP adres ve dns ismi oluşturma işlemi

$pip New-AzureRmPublicIpAddress -ResourceGroupName $resourceGroup -Location $location -Name “FRTpublicdns$(Get-Random)” -AllocationMethod Static -IdleTimeoutInMinutes 4

Resim – 5

Public Ip oluşturduktan sonra şimdi de VM’in kullanacağı network security group’u oluşturalım. Bu da VM için zorunlu bir konfigürasyon değil. Opsiyonel olarak yapılandırabilir siniz.

Burada ilk aşamada NSG için bir rule oluşturalım. Bu rule ile RDP’ye izin verelim. Komutu okuduğunuzda da oldukça anlaşılır olduğunu görebilirsiniz. En azından firewall konfigürasyonu yaptıysanız parametreler oldukça tanıdık gelecektir :)

# RDP için nsg rule oluşturma

$nsgRuleRDP New-AzureRmNetworkSecurityRuleConfig -Name FRTNetworkSecurityGroupRuleRDP -Protocol Tcp `

-Direction Inbound -Priority 1000 -SourceAddressPrefix -SourcePortRange -DestinationAddressPrefix * `

-DestinationPortRange 3389 -Access Allow

Bu işlemin ardından bir önceki adımda oluşturduğumuz rule’u da kullanarak network security group’u oluşturabiliriz. Diğer komutlardan farklı olarak –securitygroup değişkenine bir önceki adımda oluşturduğumuz rule değişkenini atamamız yeterli olacaktır.

# Oluşturulan NSG rule kullanılarak nsg oluşturma

$nsg New-AzureRmNetworkSecurityGroup -ResourceGroupName $resourceGroup -Location $location `

-Name FRTNetworkSecurityGroup -SecurityRules $nsgRuleRDP


Resim – 6

Şimdi de subnet,public ip ve nsg bileşenlerini kullanarak VM’in kullanacağı NIC’i oluşturalım.

$nic New-AzureRmNetworkInterface -Name FRTVMNic -ResourceGroupName $resourceGroup -Location $location `

-SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id


Resim – 7

Tüm bu bileşenleri oluşturduktan sonra asıl önemli olan kısma geldik. Daha önceki makalelerimde ARM mimarisindeki VM konfigürasyonunun farklı profillerden oluştuğundan bahsetmiştim. Biz de burada bu profillere göre bir config oluşturup VM oluşturma işlemine dahil edeceğiz.

Bahsettiğim profilleri içeren config’i hazırlarken adım adım değişkeni işleyip en sonunda VM oluşturma işlemine ekleyeceğiz.

Aşağıdaki komutta ilk olarak VM’in hardware konfigürasyonunu config değişkenine kaydediyoruz. Böylece Hardware’e ilişkin bilgileri $vmConfig değişkenine yazıyoruz. Resimde görüldüğü gibi bu işlem sonucunda Hardware profile işlenmiş olacaktır.

#Hardware Profile

$vmConfig New-AzureRmVMConfig -VMName $vmName -VMSize Standard_A1

Resim – 8

OS profile ise makine ismi, işletim sistemi, local admin kullanıcısı gibi bilgileri içerir. Bu bilgiler için de aşağıdaki komuta gerekli parametreleri vererek OS profile’ını kaydedelim.

#OS Profile

$vmConfig Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $cred

Resim – 9

Storage profile’ı kullanılacak imaja ait bilgileri içerir.Buraya farklı komutlarla farklı bilgiler de yazabiliriz.(Örneğin var olan bir disk kullanılacağı zaman) Bir sonraki makalede bu konuyu ele alacağız. Şimdi bu komutu çalıştırıp storage profile’ına ilişkin config’leri değişkene kaydedelim.

#Storage Profile

$vmConfig Set-AzureRmVMSourceImage -VM $vmConfig -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus
2016-Datacenter -Version latest

Resim – 10

Son olarak oluşturduğumuz Nic’i network profile’ına ekleyelim.

#Network Profile

$vmConfig Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id

Resim – 11

Evet bütün profile’lar için gerekli bilgileri yazdık ve bir değişkene kaydettik. Şimdi bu değişkeni kullanarak aşağıdaki komut ile VM’i oluşturalım.

# Belirtilen konfigürasyonlar kullanılıp VM’i oluşturma

New-AzureRmVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig


Resim – 12

Oluşturma işlemi tamamlandığında portal üzerinden resource group altındaki tüm resource’ları görüntüleyebilir siniz.

Resim – 13

Bu makalede VM oluşturma işlemi sırasında bileşenlerin hepsini sıfırdan oluştururken nasıl özelleştirebileceğinizi anlatmaya çalıştım. Bir sonraki bölümde var olan disk ve vnet’i kullanarak VM oluşturma sürecini nasıl özelleştireceğinizi anlatacağım.

Scriptin tamamı aşağıdaki gibidir.

Login-AzureRmAccount

# Değişkenler

$resourceGroup “FRTVMRG”

$location “WestEurope” 

$vmName “FRTVM01”

# VM için credential oluşturulması

$cred Get-Credential -Message “VM için kullanıcı adı ve parola giriniz.”

# Resource Group oluşturma işlemi

New-AzureRmResourceGroup -Name $resourceGroup -Location $location

# Subnet oluşturma işlemi

$subnetConfig New-AzureRmVirtualNetworkSubnetConfig -Name VMSubnet -AddressPrefix 192.168.1.0/24

# Subnet config kullanılaran Vnet oluşturulması işlemi

$vnet New-AzureRmVirtualNetwork -ResourceGroupName $resourceGroup -Location $location -Name FRTVNET -AddressPrefix
192.168.0.0/16 -Subnet $subnetConfig

# Public IP adres ve dns ismi oluşturma işlemi

$pip New-AzureRmPublicIpAddress -ResourceGroupName $resourceGroup -Location $location -Name “FRTpublicdns$(Get-Random)
-AllocationMethod Static -IdleTimeoutInMinutes 4

# RDP için nsg rule oluşturma

$nsgRuleRDP New-AzureRmNetworkSecurityRuleConfig -Name FRTNetworkSecurityGroupRuleRDP -Protocol Tcp `

-Direction Inbound -Priority 1000 -SourceAddressPrefix -SourcePortRange -DestinationAddressPrefix * `

-DestinationPortRange 3389 -Access Allow

# Oluşturulan NSG rule kullanılarak nsg oluşturma

$nsg New-AzureRmNetworkSecurityGroup -ResourceGroupName $resourceGroup -Location $location `

-Name FRTNetworkSecurityGroup -SecurityRules $nsgRuleRDP

# Subnet,public IP ve nsg kullanılarak nic oluşturma

$nic New-AzureRmNetworkInterface -Name FRTVMNic1 -ResourceGroupName $resourceGroup -Location $location `

-SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id

# VM profile’larına ilişkin konfigürasyonları oluşturma

#Hardware Profile

$vmConfig New-AzureRmVMConfig -VMName $vmName -VMSize Standard_A1

#OS Profile

$vmConfig Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $cred

#Storage Profile

$vmConfig Set-AzureRmVMSourceImage -VM $vmConfig -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus
2016-Datacenter -Version latest

#Network Profile

$vmConfig Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id

# Belirtilen konfigürasyonlar kullanılıp VM’i oluşturma

New-AzureRmVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig

Bir sonraki makalede görüşmek üzere.

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

https://docs.microsoft.com/en-us/azure/virtual-machines/windows/overview

TAGs: powershell, Azure Rm Powershell Module, Create Azure VM , Create Azure RM VM with Powershell, Azure RM VM via powershell, Create Azure virtual machine via powershell, Powershell Azure VM Command, Azure RM Module, Manage azure vm with powershell, Azure Powershell, Powershell Module for Azure

Fırat

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Sakarya doğumludur. İstanbul Üniversitesi’nde Matematik/Fen ve Teknoloji öğretmenliğini bitirmiştir. Yüksek lisansını Sakarya Üniversitesi Bilgisayar Mühendisliği’nde yapmıştır. Bilişim sektöründe çeşitli firmalarda sistem ve network sorumlusu olarak çalışmıştır. Bazı kurumlarda sistem ve network üzerine uzmanlık eğitimleri vermiştir. Şu anda Netaş şirketinde kurumsal danışman olarak görev yapmaktadır. Microsoft System Center ürünleri, Powershell ve Azure teknolojileri ile ilgilenmektedir. 2016 yılında Microsoft tarafından Cloud and Datacenter alanında MVP unvanını almıştır.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir