VMware vRealize Operations
VMware vRealize Operations, dit vROps, est un logiciel de métrologie de serveurs.
Nous allons voir ici comment y accéder en ligne de commande sous Linux.
Prérequis
Avoir Powershell d'installé sous votre Ubuntu.
Un serveur vROps Serveur-vROps.intra opérationnel et les droits utilisateur suffisant pour accéder à ce serveur.
Installation
exécuter Powershell en root :
sudo pwsh
Installer le module client VMware :
install-module -name VMware-PowerCLI
Configurations initiales
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false
Pour voir la version de son client :
Get-PowerCLIVersion
Ensuite il faut ignorer les erreurs d'identification de certificat https :
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore
Connexion au serveur
Vous pouvez vous connecter au serveur avec
$vrops = Connect-OMServer -Server Serveur-vROps.intra -User "votrenomutilisateur" -Password "motdepasse" -AuthSource "Domaine"
Exemple d'utilisation
Pour exécuter un rapport
Recherche des éléments du rapport :
Import-Module VMware.VimAutomation.vROps
Get-OMResource -Name "vSphere World" | Select-Object Id
Id -- xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
$vrops.ExtensionData.GetReportDefinitions($null, $null, "Oversized Virtual Machines").ReportDefinition
Name : Optimization Report - Oversized Virtual Machines Description : Oversized VMs Report. Subject : {Virtual Machine} Traversalspecs : {Custom Datacenters, Application Dependency, vSphere Hosts and Clusters, vSphere Storage…} LastRunTime : 01/01/0001 00:00:00 LastRunTimeSpecified : False Owner : admin Links : Any : Id : yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy CreationTime : 01/01/0001 00:00:00 Active : True ActiveSpecified : True AnyAttr :
Définition du rapport à utiliser :
$TraversalSpec = New-Object VMware.VimAutomation.VROps.Views.TraversalSpec
$TraversalSpec.Name = "vSphere Hosts and Clusters"
$TraversalSpec.RootAdapterKindKey = "VMWARE"
$TraversalSpec.RootResourceKindKey = "vSphere World"
$Report = New-Object VMware.VimAutomation.VROps.Views.Report
$Report.ResourceId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$Report.ReportDefinitionId = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
$Report.TraversalSpec = $TraversalSpec
Exécution du rapport :
$vrops.ExtensionData.CreateReport($Report)
Name : Description : Oversized VMs Report. ResourceId : aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa ReportDefinitionId : bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb TraversalSpec : Subject : VirtualMachine VirtualMachine Owner : cccccccc-cccc-cccc-cccc-cccccccccccc CompletionTime : null Status : QUEUED Links : {linkToSelf, linkToResource, linkToReportDefinition} Any : Id : zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz AnyAttr :
Récupération du rapport :
$vrops.ExtensionData.GetReport("zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz")
Name : Description : Oversized VMs Report. ResourceId : aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa ReportDefinitionId : bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb TraversalSpec : Subject : VirtualMachine VirtualMachine Owner : cccccccc-cccc-cccc-cccc-cccccccccccc CompletionTime : Tue Feb 28 11:14:27 UTC 2023 Status : COMPLETED Links : {linkToSelf, linkToResource, linkToReportDefinition} Any : Id : zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz AnyAttr :
Récupérer le rapport :
$DataReport = $vrops.ExtensionData.GetReport("zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz")
$DataReport.Links
Description Href Rel Name ----------- ---- --- ---- /suite-api/api/reports/pppppppp-pppp-pppp-pppp-pppppppppppp SELF linkToSelf /suite-api/api/resources/rrrrrrrr-rrrr-rrrr-rrrr-rrrrrrrrrrrr RELATED linkToResource /suite-api/api/reportdefinitions/ssssssss-ssss-ssss-ssss-ssssssssssss RELATED linkToReportDefinition
Par lien WEB :
Pour récupérer le rapport dans le script :
git clone https://github.com/ryan-jan/vROps-Reports.git
Import-Module ./vROps-Reports/vROps-Reports/vROps-Reports.psd1
Receive-OMReport -Report $DataReport -CSV -Path "./Rapport.csv"
Receive-OMReport -Report $DataReport -PDF -Path "./Rapport.pdf"
Pour le récupérer sans le module externe :
$MemoryStream = New-Object System.IO.MemoryStream
$DataReport.DownloadReport($MemoryStream, "CSV")
$ReadStream = New-Object System.IO.StreamReader($MemoryStream)
$MemoryStream.Seek(0, "Begin")
while ($ReadStream.Peek() -ne -1) { $ReadStream.ReadLine() >> Rapport1.csv }
sed -i '/^$/d' ./Rapport.csv