MCP Cloud Automation mit PowerShell

PowerShell erfreut sich großer Beliebtheit. Fast jeder Admin hatte in den letzten Jahren Berührungspunkte mit dieser Scriptingsprache. Kein Wunder, man kann damit wunderbar automatisieren.

Auch unsere Cloud-Services lassen sich damit administrieren. Aktuell schreibe ich ein kleines Script für das automatische Rollout von Backup-Agents.

Das bringt mich zu diesem Blog-Post, denn ich möchte nur kurz demonstrieren wie schnell man tägliche Tasks mit unseren PowerShell-Modulen automatisieren kann.

Log geht’s.

Wir starten mit einem Link. Unsere offizielle Seite zu diesem Thema, inkl. Tutorials und Download-Links.

https://docs.mcp-services.net/display/PFC/Getting+started

Wie man auf dieser Seite sehen kann, gibt es zwei Möglichkeiten um sich die CaaS module zu installieren. Diese Sind abhängig von der PowerShell Version:

Hat man alles installiert, kann man die Module nutzen. Am einfachsten mit der PowerShell ISE.

Wie geht es weiter? Zunächst loggt man sich ein, dafür einfach die folgende Zeile verwenden.

New-CaasConnection -Vendor DimensionData -Region Europe_EU -ApiCredentials (Get-Credential)

Nach hergestellter Verbindung kann man dann auch loslegen. ZB mit:

Get-CaasServer -name *BAAS* |select name,datacenterId,state,started


name              datacenterId state  started

----              ------------ -----  -------

BaaS01-Win2k12r2  EU6          NORMAL    True

BaaS-W2k12-OnPrem EU6          NORMAL    True

Das sind meine zwei BaaS Nodes für mein oben erwähntes Script. Hier gibt es nun tatsächlich einen Use-Case, nämlich folgenden:

Diese zwei Nodes haben im Grunde den Status „Testing“ oder „PoC“. Es macht also absolut keinen Sinn, dass die Nodes über Nacht oder am Wochenende laufen.
Self-Service Portal hin oder her, man loggt sich nicht jeden Abend ein um die VMs zu beenden. Am Freitag hat man schon gleich besseres zu tun. Das Wochenende ruft schließlich. 🙂

Hier nun also ein ein einfacher Weg, wie trotzdem der Zähler aufhört zu drehen:

$myservers = Get-CaasServer -Name *BAAS*

foreach ($server in $myservers) {
    Set-CaasServerState -Server $server -Action Shutdown
}

Noch einmal zur Kontrolle:

Get-CaasServer -name *BAAS* |select name,datacenterId,state,started




name              datacenterId state          started

----              ------------ -----          -------

BaaS01-Win2k12r2  EU6          PENDING_CHANGE    True

BaaS-W2k12-OnPrem EU6          NORMAL           False

Aha, sieht sehr gut aus. Ein Server ist bereits heruntergefahren und ein weiterer ist dabei.

Nach dem gleichen Prinzip können wir die VMs auch wieder starten:

foreach ($server in $myservers) {
    Set-CaasServerState -Server $server -Action PowerOn
}

Was ist hier das Problem? Wir bekommen einen Bad Request wenn sich die VM bereits in gewünschten State befindet. Also prüfen wir besser noch den aktuellen Status vorher:

if ( $server.started) { Set-CaasServerState -Server $server -Action Shutdown }

Mein Script sieht schlussendlich so aus:

$myservers = Get-CaasServer -Name *BAAS*
foreach ($server in $myservers) {
    if ( $server.started) { Set-CaasServerState -Server $server -Action Shutdown }
    else { Set-CaasServerState -Server $server -Action PowerOn }
}

Sollten die VMs also gerade laufen, werden sie automatisch heruntergefahren. Wenn die ausgeschaltet sind, werden sie gestartet. Das gleiche Script kann also  in der Früh und am Abend laufen.

Spart gerade in einem PoC doch einiges an Geld.

Das war es vorerst. Es handelt sich hierbei natürlich nur um ein kleines Beispiel. Man kann fast alles mit dem CaaS PS-Modul machen. Bei Fragen helfen wir aber gerne weiter.

Schönes Wochenende.

Liebe Grüße

Falk

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.