VMware – VMs mit PowerCLI/PowerShell provisionieren

Wir arbeiten aktuell an einem kleinen Projekt, in dem wir einige VM-“Placeholder” erstellen müssen.

Konkret geht es um VMs ohne Disks. Man könnte das alles mittels GUI machen, allerdings gibt es da angenehmere Varianten. Hier eine kurze Herangehensweise wie man das mit der PowerCLI machen kann:

VMware – VMs mit PowerCLI/PowerShell provisionieren weiterlesen

ESXCLI Commands mit PowerCLI ausführen

Hallo,

aktuell ist die Hölle los, weshalb hier auch weniger neue Beiträge landen.

Das hier fande ich jetzt aber so lässig, dass ich mich trotzdem kurz hinhocken musste um etwas darüber zu schreiben.

Konkret geht es darum, ESXCLI Befehle via PowerCLI (also PowerShell) auf ESX-Hosts auszuführen. Wie geht das? Genau so:

$esxcli = Get-EsxCli -VMHost 1.1.1.1

$esxcli

====================
EsxCli: 1.1.1.1

   Elements:
   ---------
   esxcli
   fcoe
   hardware
   iscsi
   network
   software
   storage
   system
   vm

Wie kann man das verwenden?

$esxcli.network.nic.list()

Description : Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
Driver      : e1000
Duplex      : Full
Link        : Up
MACAddress  : 00:0c:29:80:f9:a0
MTU         : 1500
Name        : vmnic0
PCIDevice   : 0000:002:01.0
Speed       : 1000

Nachdem man mit ESXCLI ja bekanntlich nicht nur Abfragen starten kann, sondern auch Konfigurationen verändern kann.

Hier nur ein Beispiel. Zunächst holen wir mal die Config:

$esxcli.system.syslog.config.get()


DefaultNetworkRetryTimeout : 180
DefaultRotationSize        : 1024
DefaultRotations           : 8
LogOutput                  : /scratch/log
LogToUniqueSubdirectory    : false
RemoteHost                 : <none>

 

$esxcli.system.coredump.network.set

TypeNameOfValue     : VMware.VimAutomation.ViCore.Util10Ps.EsxCliExtensionMethod
OverloadDefinitions : {boolean set(boolean enable, string interfacename, string serveripv4, long serverport)}
MemberType          : CodeMethod
Value               : boolean set(boolean enable, string interfacename, string serveripv4, long serverport)
Name                : set
IsInstance          : True

Genau in dieser Reihenfolge können wir jetzt das “SET” starten:

$esxcli.system.syslog.config.set(8,1024,180,"/scratch/log",$false,"1.1.1.2")
true

Kontrolle mit GET:

$esxcli.system.syslog.config.get()

DefaultNetworkRetryTimeout : 180
DefaultRotationSize        : 1024
DefaultRotations           : 8
LogOutput                  : /scratch/log
LogToUniqueSubdirectory    : false
RemoteHost                 : 1.1.1.2

Hier gibt es eine Übersicht über alle möglichen ESXCLI-Commands:

How to list all the PowerCLI ESXCLI commands

Durchaus nützlich in meinen Augen. Was meint ihr?

 

Bis demnächst.

 

Liebe Grüße

Falk