0

Merhaba,

Daha önceki makalelerimde Powershell Enhanced HTML modülünden bahsetmiştim. Bu makalemde de bu modülü kullanarak Azure VM’lere ait bilgileri nasıl HTML formatına dönüştürebileceğinizden bahsedeceğim.

Aslına bakarsanız modül ile ilgili özelliklerden pek bahsetmeyeceğim. Daha önceki üç makalemi bu konu ile ilgili inceleyebilirsiniz. Bu makalede AzureRM powershell modülünü kulanarak VM’lere ait bilgileri nasıl elde edebileceğiniz üzerine yoğunlaşacağım.

Bildiğiniz gibi günümüzde raporlama ve dashboard’lar bilgileri bir arada görmemizi sağlayan, hatta çeşitli algoritmalar ile belli ölçümler yapmamızı sağlayan önemli araçların başında gelirler. Azure üzerinde bulunan VM’lerin özelliklerini tabiki Azure portal üzerinden görmeniz mümkün. Ancak bilgilere tek bir yerden ulaşma kısmı biraz sıkıntılı. Çünkü Azure resource manager mimarisinde kaynaklar birbirleri ile relation kurarak bir yapıyı meydana getirdikleri için, her kaynağın özelliklerini görüntülemek için ilgili kaynağa gitmek ve özelliklerine ulaşmak gerekir.

Bu sebeplerden ötürü bir VM’e ait önemli özellikleri bir script ile elde edip VM’e ait bir obje oluşturmak ve buna ilişkin de bir tablo ile sunmak istedim. Belki IIS üzerinden bu dosyayı da yayınlarsanız ve belli aralıklar ile scripti çalıştırarak güncellerseniz, static fakat VM’ler hakkında ayrıntılı bilgi almayı sağlayan bir dashboard’u basit şekilde oluşturmuş olursunuz.

Bu amaçla aşağıdaki scripti yazdım. Umarım işinize yarar. Scripti geliştirip ek özellikler de kolaylıkla ekleyebilirsiniz.

Script’i çalıştırıp çıktısı olan html uzantılı dosyayı bir browser’da açtığınızda aşağıdaki gibi basit bir html dashboard’u elde edebilirsiniz.

Resim – 1

Scriptin tamamına aşağıdaki gibidir. Komutlara ilişkin açıklamaları komutların bir önceki satırında bulabilirsiniz.

Login-AzureRmAccount

#Tüm VM’leri get edip değişkene ata (Burada isterseniz farklı filtreler de kullanabilirsiniz.

$VMs Get-AzureRmVM

If ($($VMs).count -gt 0){

#Her VM için gerekli bilgileri elde edip PS object oluştur.
ForEach ($vmi in $VMs)

{
#VM size bilgisini değişkene ata
$sizeinfo Get-AzureRmVMSize -Location $vmi.location where-object {$_.name -eq $($vmi.hardwareprofile.vmsize)

}
#VM durum bilgisini değişkene ata
$statusinfo Get-AzureRmVM -ResourceGroupName $vmi.ResourceGroupName -Name $vmi.Name -Status 

$vmst = ($statusinfo.Statuses[1].DisplayStatus).Split(” “)[1]


#VM’in NIC bilgisi üzerinden vnet ve subnet bilgisini değişkene ata.
$vmNIC Get-AzureRmNetworkInterface where {$_.Id -eq $vmi.NetworkProfile.NetworkInterfaces[0].Id}
$vnet $vmNIC.IpConfigurations[0].Subnet[0].Id.Split(‘/’)[8]
$subnet $vmNIC.IpConfigurations[0].Subnet[0].Id.Split(‘/’)[10]

#VM’e ait tüm preperty’leri içeren bir hash table oluştur
$props [ordered]@{ “Name” $vmi.name
                     “HardwareProfile” $vmi.hardwareprofile.vmsize
                     “Location” $vmi.location
                     “NumberofCores” $sizeinfo.NumberOfCores
                     “MemoryInMB” = ($sizeinfo.MemoryinMB/1024).ToString() ” GB”
                     “MaxDataDiskCount” $sizeinfo.MaxDataDiskCount
                     “OSDiskSizeInMB” = ($sizeinfo.OSDiskSizeInMB/1024).ToString() ” GB”
                     “ResourceDiskSizeInMB” = ($sizeinfo.ResourceDiskSizeInMB/1024).ToString() ” GB”
                     “Status” $vmst
                     “VNet” $vnet
                     “Subnet” $subnet

}


#Hash table’ı kullanarak her bir vm için ps object oluştur

$Results += @(New-Object pscustomobject -Property $props)

}

}

#Enhanced HTML parametreleri için hash table oluştur.

    $params = @{‘As’=‘Table’;

    ‘PreContent’=‘<h2> + FRT Azure Vms</h2>’;

    ‘EvenRowCssClass’=‘even’;

    ‘OddRowCssClass’=‘odd’;

    ‘MakeTableDynamic’=$true;

    ‘MakeHiddenSection’=$true;

    ‘TableCssClass’=‘grid’;

    ‘Properties’=‘Name’,‘HardwareProfile’,‘Location’,‘NumberofCores’,‘MemoryInMB’,‘MaxDataDiskCount’,‘OSDiskSizeInMB’,‘ResourceDiskSizeInMB’, @{n=‘Status’;e={$_.Status};css={if ($_.Status -eq “deallocated”) { ‘red’ } else {‘green’}}},‘Vnet’,‘Subnet’}

#Her bir VM için oluşturulan ps objelerini kullanarak html fragment oluştur
$azurevms $Results ConvertTo-EnhancedHTMLFragment @params

#HTML fragment’i kullanarak ve gerekli css’leri kullanarak HTMl uzantılı dosyayı oluştur.

ConvertTo-EnhancedHTML -HTMLFragments $azurevms -CssUri C:\CSS\styles2.css -PreContent “<H1>FRT Azure VM Report</H1>”
Out-File “FRTAzureVM.html”

 

Kullandığım CSS dosyası da aşağıdaki gibidir.

body {
color:#333333;
font-family:Calibri,Tahoma;
font-size: 10pt;
}
h1 {
text-align:center;
}
h2 {
border-top:1px solid #666666;
}
th {
font-weight:bold;
color:#eeeeee;
background-color:#333333;
cursor:pointer;
}
.odd { background-color:#ffffff; }
.even { background-color:#dddddd; }

.paginate_enabled_next, .paginate_enabled_previous {
cursor:pointer;
border:1px solid #222222;
background-color:#dddddd;
padding:2px;
margin:4px;
border-radius:2px;
}
.paginate_disabled_previous, .paginate_disabled_next {
color:#666666;
cursor:pointer;
background-color:#dddddd;
padding:2px;
margin:4px;
border-radius:2px;
}
.dataTables_info { margin-bottom:4px; }
.sectionheader { cursor:pointer; }
.sectionheader:hover { color:red; }
.grid { width:100% }
.red {
color:red;
font-weight:bold;
}
.green {
color:green;
font-weight:bold;
}

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

https://www.pluralsight.com/courses/reporting-powershell-enhanced-html

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, Azure VM Dashboard, Create Azure VM Dashboard, Azure VM Dashboard via Powershell, Enhanced HTML module, Powershell Enhanced HTML for Azure VM, Azure VM Dashboard with Enhanced HTML

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