04/18/18

REST Call (GET) with Powershell

This post is about “How can I use Powershell to get data from my vROps Instance over the API”?

It sounds really easy and the line of code for an invoke is really short but there are some painful points.
So we will start with a GET Method with Powershell for vROps.
This is the REST Call:

invoke-webrequest -credential $cred -Uri Invoke-RestMethod -Credential $RESTcredential -Uri https://vrops.pso.local/suite-api/api/adapters -ContentType "application/json" -Method Get

The $cred variable is based on the following code. It is important for me to haven’t the password in plain text.

$user = "admin"
$secpasswd = Get-Content C:\Users\kbruesch\Desktop\Scripts\RESTCallCreds.txt | ConvertTo-SecureString
$RESTcredential = New-Object System.Management.Automation.PSCredential($user, $secpasswd)

My biggest problem with this CALL was that I got always the same error message:
the underlying connection was closed: an unexpected error occurred on a send.

The solution for me wasn’t to easy allow self-signed certificates with: [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

I used this implementation in my script:
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

After your Invoke-Request is running you get an Status Code of 200 which means it was succeeded:
Bildschirmfoto 2018-04-18 um 22.40.52

Now you can use the content part to get all the data you want like Adapter Instance Name to Adapter Instance ID

04/16/18

Using the vROps API

Everytime I’m onsite at a customer the statement comes up … “What about the integration of…”. Sometimes you can say  “Yes, that is integrated per default”. But you have also these UseCases where you have no OOTB Solution. You can solve some of these with the REST API or Powershell Commands for vROps.
In the past I used a lot the REST API to get data or to push data to vROps. I was using Postman for all these tasks. But it was only to test some things and to start with the REST Call procedure.
Some stuff are easier to get or post over the API then to do it manually. But there are lots of things that are not possible over the API like Export of a vROps View or Dashboard creation … So it is not the mechanism to solve all problems but a lot. 😉

You will start with some easy things like to get all resources from vROps. Oh Yes, good point there is ofc an easier way called Powershell (try this):

Connect to the vROps Server Instance
#connect-omserver vROPsFQDN

List all resources from vRops
#get-omresource

Bildschirmfoto 2018-04-16 um 20.19.51

Or you can use the REST API instead:

Bildschirmfoto 2018-04-16 um 20.38.40

Bildschirmfoto 2018-04-16 um 20.38.18

Bildschirmfoto 2018-04-16 um 20.21.43

Here you can find the documentation for the vROps CLI CMDLETS (Link)

And here you get the API Documentation:

  • https://FQDNofyourvROps/suite-api/docs/rest/index.html

(keep in mind there are two different types of APIs – Public and Internal. Only the public one is supported by VMware

But I think one of the most requested things in the past are POST calls to extend vROps with content that are customer / UseCase related … So one of my next Post will be about how to automate a REST Call (POST) in vROps with the Powershell! For example your own script result in vROps?

04/16/18

VMware vRealize Automation in vRealize Operation Manager 6.7

After VMware announced the new vRealize Operations Manager Version 6.7 I think it is time to spend more time in writing some posts about my experiences over the last years.
There are some interesting features that are coming with 6.7 and I think there are lots of blogs (Like here) with the basic integration. So I don’t want to bother you with the exactly same stuff.

So let starts with the vRA Integration in vROps.

vRealize Automation – Adapter Version 4.0 (included in vROps)
In the release 6.6.1 with the vRA Solution Adapter maybe you already realized that there were some metrics missing which are really relevant to analyse or calculate vRA content like Business Groups or Reservations.
Most of my customer were using this Management Pack to see the relationships between objects like Reservation to Cluster … Business Groups to VM etc. Cause there were not so much more information about the vRA content. In the past you can remember you had usage metrics and total capacity.
Now in vRA 4.0 you can see again such stuff like Free, Allocation, Reserved, Used, Deployment Count, Failed Requests count and Total Reservation Count for Business Groups. Or similiar things for the whole tenant or the reservations. Furthermore you don’t need to create a Supermetric to count the VMs now you have a metric that shows you the VM Count for Business Group. 😉

Have fun …

02/27/15

VMware vRealize Operations Manager 6 – Custom Views

In VMware vRealize Operations Manager 6 ist die Möglichkeit Custom Views und Reports zu erstellen für die Kunden ein guter Gewinn. Sie sind in der Lage unternehmensspezifische Abfragen und Darstellungen zu generieren und diese später in Ihren Reports aufgeschlüsselt/Sortiert/Übersichtlich und als PDF/CSV per Mail zu verschicken.

Wir starten mit den Custom Views. VMware bringt mit dem vCOPs 6 sehr viele vorkonfigurierte Views mit. Um ein individuellen View zu erstellen, gehen wir zunächst auf die Content PageBildschirmfoto 2015-02-27 um 09.21.42

Hier gibt es die Möglichkeit den Operations Manager individuell durch custom Reports, custom Views, Dashboard Konfigurationen und weitere Einstellungen anzupassen. Ein Klick auf Views und wir können die vorkonfigurierten Views sehen. Um einen eigenen View zu erstellen klicken wir auf das “grüne Plus” und hangeln uns durch den Wizard.

Namen und Beschreibung des Views definieren, am Besten etwas Aussagekräftiges. Wie zum Beispiel “VM Snapshot Summary”.
Bildschirmfoto 2015-02-27 um 09.27.47

Dann wählen wir die Art wie die Daten dargestellt werden sollen. Wir wählen die Darstellungsart “List” aus, da diese für unsere Art von Daten am übersichtlichsten ist.
Bildschirmfoto 2015-02-27 um 10.30.29

Bei Subjects, wählen wir im Drop-Down Menü die Ressource aus, von wo wir die Daten haben wollen. Also VM, Datastore, Cluster, Folder, etc. Wir nehmen Virtual Machine, da wir Informationen von VMs in unseren Views integriert haben wollen.

Nächster Step ist die Auswahl der Daten die wir haben wollen, da können alle Metriken ausgewählt werden, die für unser Objekt (VM) zur Verfügung stehen. Ich nehme dabei den Snapshot Space. Bildschirmfoto 2015-02-27 um 10.32.01

Da wir uns nach der Auswahl die Darstellung unserer Daten so nicht vorstellen können, kann man über den Link “Select preview Source” eine Datensource angeben, um unser Summary mit Daten anzuzeigen. Ich wähle den vCenter Server aus.
Bildschirmfoto 2015-02-27 um 10.35.48

Bildschirmfoto 2015-02-27 um 10.36.12

Jetzt können wir auch noch ein Summary hinzufügen, um die Gesamtgröße aller Snapshots anzeigen zu lassen. Dazu auf “Summary” klicken und auf wieder auf das “grüne Plus” für Add. Bildschirmfoto 2015-02-27 um 10.37.23

Und zum Schluss sieht unser View folgendermaßen aus.

Bildschirmfoto 2015-02-27 um 10.39.42

02/26/15

Installation vCenter Appliance 6.0

Bei der Installation der vCenter Appliance 6.0 hat sich das ein oder andere verändert. So können nun auch bei der Appliance Service auf unterschiedlich Systeme bereitgestellt werden. Aber nicht ganz so granular wie beim vCenter auf der Windows Plattform. Man unterscheidet bei der Installation zwischen dem vCenter Server System und dem Infrastruktur Controller. Sie unterscheiden sich in der Bereitstellung der Dienste, d.h. wer stellt welche Dienste Bereit.

vCenter Server
– vCenter Dienst
– vSphere WebClient
– Inventory Service
– Auto Deploy
– vSphere ESXi Dump Collector
– vSphere ESXi Syslog Collector

Infrastruktur Controller
– SSO Service
– Lizenz Service
– Lookup Service
– VMware Certificate Authority

Man ist natürlich auch in der Lage alle Dienste wieder auf dem selben System bereitzustellen. Allerdings kann es für manche Kunden nützlich sein, Dienste auf zwei Systeme zu verteilen um besser mit den virtuellen Ressourcen zu managen. Des Weiteren kann der Infrastruktur Controller auch für mehrere vCenter Server System dienen um eine zentrale Authentifizierung mit SSO zu gewährleisten.

Nun zur Installation, man kann die Appliance entweder explizit runterladen, allerdings handelt es sich dabei um keine OVF/OVA Datei, sondern um ein ISO. Dieses ISO beinhaltet Dateien für die Installation der Appliance, Startpunkt ist die Index.html.

Bildschirmfoto 2015-02-26 um 09.58.43

Die Index.html ist unser Startpunkt.

Bildschirmfoto 2015-02-26 um 09.59.20

Dann die EULA akzeptieren und das Target System definieren auf dem die Appliance ausgerollt werden soll. Dies kann ein einzelner ESXi Host sein, oder aber ein anderes vCenter (MGM Cluster).
Bildschirmfoto 2015-02-26 um 09.59.30

Login und Hostdaten für die Appliance definieren.
Bildschirmfoto 2015-02-26 um 09.59.39

Dann wird die Art des Deployments ausgewählt. (Siehe obere Beschreibung, vCenter Server, Infrastruktur Controller)
Bildschirmfoto 2015-02-26 um 09.59.45

Hier werden SSO Account Daten hinterlegt und die Appliance Größe wird definiert, wahrscheinlich aufgrund der Ressourcen Größe (vCPUs, vRAM) und der Java Cache Size.
Bildschirmfoto 2015-02-26 um 09.59.57

Jetzt wird der Target Datastore ausgewählt und die Datenbank konfiguriert, entweder die Embedded vPostgres oder eine externe Oracle DB.
Bildschirmfoto 2015-02-26 um 13.07.42

IP Settings eintragen.
Bildschirmfoto 2015-02-26 um 13.08.08

Und fertig ist die Installation der vCenter Appliance 6.0
Bildschirmfoto 2015-02-26 um 13.08.35

Zusätzlich wäre auch die Installation über das VIM-SETUP (vCenter Windows Installations ISO möglich)
Bildschirmfoto 2015-02-26 um 12.55.41

02/26/15

vSphere 6 – Features

Es mal wieder viel zu lange gedauert, allerdings hier die angekündigten Neuerungen von vSphere 6:
– VVOLS
– Content Library
– vSMP FT
– Long Distance vMotion (100ms Latencies)
– vMotion across Switches (dvSwitch / Standard vSwitch)
– vMotion von MSCS VMs mit pRDM
– VMFork (Instant Cloning)
– Network I/O Control (per VM)
– vSAN Neuerungen (Max. Werte und Features)
– vSphere Replication: Traffic Isolation und Komprimierung
– OpenStack

Ich werde versuchen in naher Zukunft auf die Neuerung individuell einzugehen, um euch unteranderem auch den UseCase näher zu bringen.

11/19/14

TPS – Security Risk

In Future Releases and Patches TPS is disable for Security Reasons. It is possible to use Transparent Page Sharing to gain unauthorized access to data, but this was tested under highly controlled conditions.

If you have a high overcommitted rate and would like to use TPS on the future Versions, you can enable TPS manually. You must configure “salt”. The vmkernel can control the participant for tps. In earlier Release it was enough that the Memory Page Content was the same, but now the vms must have the same “salt” value.
To set “salt” go to the Advanced option and set Mem.ShareForceSalting to 1.( 0 = disabled, 1 = enabled).

Each VM that should share the RAM with another one, should have the same salt value. This Value can you configure in the VMX File of each VM:
sched.mem.pshare.salt. If the options is not set in the vmx file vmkernel uses the vc.uuid value, but this value is unique for each vm and so we have no tps. 😉

If you have an older release or Patch, but you would like to disable TPS:

1. Go to the Advanced Setting of the ESXi Host
2. Click Mem
3. Search for Mem.ShareScanGHz and set this value to 0 (disable)
To take affect the host need a restart.

If you later use an new Patch, think about the Setting, because you must than set the value to the default value: Mem.ShareScanGHz to 4.

KB Number kb2080735

Thanks for READING!

11/19/14

iSCSI Port Binding – Where is the usecase?

iSCSI Port Binding is the function that you use to bind multiple vmkernel Interfaces to the iSCSI Initiator to use Multipathing. But sometimes you don’t need iSCSI Port Binding.

If you have a single subnet for communication to the SAN you should use iSCSI Port Binding. Because the ESXi Host can only use one physical NIC to communicate with the SAN if you have multiple NICS.
So we have only a single connection. With iSCSI Port Binding the ESXi take both vmkernel to communicate.

But if you have multiple vmkernel Interfaces in different Subnet and the Storage SPs are in different Subnets you don’t need iSCSI Port Binding and you shouldn’t use it. The vmkernel make multiple Connection for each Subnet and there no longer is a need for Port Binding.

Here the KB Site kb2038869

07/23/14

vCenter SQL Database – Purging old Data

Immer häufiger treten Probleme beim Kunden bzgl. vCenter Dienst auf. Nicht selten ist es der Fall, dass es einfach eine volle DB ist, die von ihrer größer her (aufgrund der Lizenzierung) beschränkt ist.
Installiert man die vCenter DB als Embedded auf einem Windows OS, dann ist dies bei eine Microsoft SQL Express DB, die bei SQL 2005 auf 4 GB und bei SQL 2008 auf 10 GB beschränkt ist. Ist die Größe der DB erreicht, so bleibt entweder der Dienst stehen, oder es treten kuriose Fehler auf, wie z.B. Snaphshots ergeben Verbindungsabbrüche am vCenter. Der Grund liegt darin, dass alles was wir an Events und Tasks am vCenter durchführen in die DB geschrieben wird. Es werden auch die Performance Statistiken dort reingeschrieben, ist diese voll können solche Fehler auftreten.
Abhilfe schafft zum einen das Purging der DB und zum anderen Einstellungsänderungen, damit wir die Größe der DB ein wenig beschränken können, z.B. nur Task und Events der letzten 180 Tage.
Im Event Viewer von Microsoft, wird auch darauf hingewiesen, dass es ein Lizenz Problem ist!

Zuerst die Retention Policy ändern, dazu auf die vCenter Setting gehen:
Bildschirmfoto 2014-07-23 um 08.48.40

Und dann für die Task und Events die Tage definieren wie lange sie beibehalten werden sollen:
Bildschirmfoto 2014-07-23 um 08.48.49

Danach wird auf Basis der definierten Tage die DB entrümpelt. Hierbei auf die vCenter DB gehen (VIM_VCDB) > Programability > Stored Procedures > Rechts Klick auf dbo.cleanup_events_tasks_porc und dann auf Execute Stored Procedure.. klicken und abwarten, dies kann basierend auf der DB Größe ein wenig dauern.
Bildschirmfoto 2014-07-23 um 09.02.29

07/22/14

Change language (vSphere WebClient)?

To change the language for the WebClient you can add a string to the URL, so you don’t need to change the language for the whole Browser:

https://client-ip-hostname:9443/vsphere-client/?locale=en_US

Mögliche Optionen wären:
English = /?locale=en_US
German = /?locale=de_DE
French = /?locale=fr_FR
Japanese = /?locale=ja_JP
Korean = /?locale=ko_KR
Chinese = /?locale=zh_CN