- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel) - Kurswechsler Dropdown mit Direktnavigation - Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage - Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets - Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor - Saubere Bereinigung redundanter statischer Legacy-Sidebars |
||
|---|---|---|
| .. | ||
| aufgabe.ps1 | ||
| index.html | ||
| musterloesung.ps1 | ||
| README.md | ||
| test_aufgabe.ps1 | ||
PS 15: Cross-Platform Cloud Automation (Azure Az & AWS CLI) ☁️
Willkommen zu Modul 15 des PowerShell 7+ DevOps-Kurses!
PowerShell ist längst kein reines Windows-Admin-Tool mehr: Als PowerShell 7+ (Core) läuft es nativ auf Linux, macOS, in Docker-Containern und Kubernetes Pods. In modernen Hybrid-Cloud-Architekturen steuert PowerShell sowohl Microsoft Azure (Az-Modul) als auch AWS (AWS CLI / AWS.Tools) und Google Cloud (GoogleCloudPlatform).
💡 1. Das Wichtigste in Kürze
A. Cross-Platform Besonderheiten in PowerShell 7+
- Automatische Plattform-Variablen:
$IsLinux,$IsWindows,$IsMacOS. - Dateipfade: Verwende immer
Join-Pathoder[System.IO.Path]::Combine(), um plattformunabhängige Pfade (/vs\) zu garantieren. - Case-Sensitivity: Auf Linux/Docker sind Dateinamen und Pfade strikt case-sensitive (
config.json!=Config.json)!
if ($IsLinux) {
Write-Host "Läuft in einer Linux/Container-Umgebung."
}
B. Cloud Governance: Idempotenz & Tagging
In Infrastructure as Code (IaC) müssen Konfigurationen idempotent sein: Mehrfaches Ausführen führt immer zum gleichen fehlerfreien Zustand, ohne Duplikate zu erzeugen. Zudem sind strukturierte Tags Pflicht:
$tags = @{
Environment = "Production"
ManagedBy = "PowerShellAutomation"
CostCenter = "DevOps-Core"
CreatedDate = (Get-Date -Format "yyyy-MM-dd")
}
C. AWS CLI & Multi-Cloud Parsing
Während das Azure Az-Modul native PowerShell-Objekte liefert, gibt das AWS CLI rohes JSON aus. Mit ConvertFrom-Json binden wir AWS-Outputs nahtlos in PowerShell-Pipelines ein:
# AWS CLI Ausgabe direkt in PowerShell-Objekte wandeln:
$ec2Json = aws ec2 describe-instances --output json
$instances = ($ec2Json | ConvertFrom-Json).Reservations.Instances
$instances | Where-Object { $_.State.Name -eq 'running' } | Select-Object InstanceId, InstanceType
🎼 Die didaktische Analogie: "Der universelle Cloud-Dirigent"
- Das Orchester der Cloud-Provider:
Azure, AWS und lokale Linux-Server sprechen unterschiedliche Sprachen und Dialekte. - PowerShell 7+ (Der Dirigent):
Steht plattformunabhängig im Zentrum. Er liest die Noten (JSON-Manifeste), hebt den Taktstock und steuert alle Musiker harmonisch über eine einheitliche Objekt-Pipeline!
🎯 Aufgaben & Teilziele in aufgabe.ps1
- TODO 1:
Get-PlatformDiagnostics
Ermittle Betriebssystem, Pfadtrennzeichen und CoreCLR-Status für Cross-Platform-Skripte. - TODO 2:
New-IdempotentResourceConfig
Erzeuge eine Azure-Ressourcenkonfiguration mit Pflicht-Tags (Environment,ManagedBy,CreatedDate). - TODO 3:
Convert-AwsCliOutputToPsObject
Parse und normalisiere rohe JSON-Ausgaben von AWS CLI-Befehlen (EC2 / S3). - TODO 4:
Audit-CloudResourceCompliance
Führe ein automatisches Governance-Audit über Cloud-Ressourcen durch (Prüfung von Pflicht-Tags und Regionen).
🧪 Tests ausführen
Invoke-Pester ./test_aufgabe.ps1