Drücke "Enter", um den Text zu überspringen.

Kategorie: Azure

Azure Automation – Neue Runbooks für VMs

Vor einiger Zeit (muss mehrere Jahre her sein) habe ich ein paar Azure Automation PowerShell Runbooks auf GitHub und hier veröffentlich, um VMs Zeit- und Tag- gesteuert starten und stoppen zu können und um heruntergefahren, nicht-deallokierte VMs zu deallokieren. Diese basierten auf AzureRM PowerShell Cmdlets / Modulen und einer etwas komplizierten Herangehensweise. Ich habe die Runbooks nun massiv überarbeitet, so dass diese erstens das neuere Az Modul verwenden und auch vom Aufbau her wesentlich einfacher sind. U.a. verwenden die Runbooks jetzt lokale Deutsche Zeit und sind robuster bei der Schreibweise der Tags (Groß-/Kleinschreibung).

Ihr findet diese Runbooks wie immer in meinem GitHub Repo, konkret genau hier:

VMs starten und stoppen:

scripts/StartAndStopVMsWithAzureAutomation.ps1 at master · HaikoHertes/scripts (github.com)

VMs deallokieren:

scripts/DeallocateTaggedStoppedVMs.ps1 at master · HaikoHertes/scripts (github.com)

Viel Spaß damit!

Weitere Informationen zu Azure Automation und Runbooks:

Azure Quickstart – Create an Azure Automation account | Microsoft Docs
Create an Azure Automation Run As account | Microsoft Docs
Create a standalone Azure Automation account | Microsoft Docs
Create a PowerShell Workflow runbook in Azure Automation | Microsoft Docs

Schreibe einen Kommentar...

Windows Server 2022 Preview

Seit ein paar Tagen steht er fest – der Name des nächsten Windows Servers. Und wenig überraschend lautet er Windows Server 2022. Dieses ist nun als öffentlich zugängliche Preview verfügbar, sowohl als Image zum Download für lokalen Einsatz, als auch als Marketplace-Image in Azure.

Dazu können folgende Links benutzt werden:

http://aka.ms/WS2022Preview

http://aka.ms/WS2022AzurePreview

Viel Spaß beim Ausprobieren! Wenn ich etwas Zeit finde, werde ich dazu auch einen ersten Review (vermutlich dann auf YouTube) veröffentlichen.

Schreibe einen Kommentar...

Azure Firewall – Unerwartetes Verhalten mit DNAT Rules

Die Azure Firewall hat ein für mich zunächst nicht nachvollziehbares, aber dann verständliches, wenn auch nicht erwartetes Verhalten. Allerdings steht es, wenn man dann genau nachliest, auch genau so, wie es passiert in der Doku. Aber nochmal langsam…

Ich habe auf einer Azure Firewall einige DNAT Rules, um auf Jump-Hosts zu kommen, die in unterschiedlichen Netzwerken stehen:

Hier ist also für zwei VMs aus dem freien Internet über die Public IP der Azure Firewall und zwei höhere Ports der Durchgriff auf RDP TCP/3389 konfiguriert.

Zwischen den beiden Netzwerken, in denen sich die VMs befinden, soll der Traffic aber stark reglementiert sein. Daher sind dort nur einige Ports explizit erlaubt, für den Rest sollte die Azure Firewall „per default“ blockieren:

Jedoch ist es dennoch so, dass zwischen den beiden VMs, die ja in getrennten Netzen stehen, weiterhin Kommunikation möglich ist, auch jenseits von ICMP und HTTP(S). Getestet hatte ich es mit RDP – das geht noch, obwohl das nach meiner Meinung nicht so sein sollte.

Und das hatte mich sehr verwundert. Zunächst hatte ich das als Fehlverhalten interpretiert. Ein kurzer Call mit dem Support hat aber geklärt, dass dieses Verhalten so ganz normal ist. Das wiederum war für mich unerwartet.

Die Lösung hier ist, dass eine DNAT Rule eine implizite Network Rule nach sich zieht. Dabei werden allerdings nicht Port und Destination IP sondern Translated Adress und Translated Port für die Destination verwendet. So steht es auch in der Doku:

(Quelle: https://docs.microsoft.com/en-us/azure/firewall/rule-processing)

Es gibt hier also zwei Lösungen, um das Ziel, keine Kommunikation zwischen den Netzen zu haben, zu erreichen:

  • In den DNAT Rules konkrete Source-IPs / Netze eintragen
  • Explizite Network Rules mit einem Deny zwischen den Netzen

Schreibe einen Kommentar...

Ignite 2021 – News im Bereich Azure

Normalerweise schreibe ich ja nicht über Neuerungen – dafür sind es einfach jede Woche viel zu viele. Aber auf der Ignite wurden nun einige Neuerungen bekannt gegeben, die aus meiner Sicht sehr spannend sind. Diese möchte ich hier kurz beschreiben.

Private Azure Marketplace

Der Private Azure Marketplace ist jetzt GA und erlaubt es, dass Angebot des Azure Marketplace auf die eigenen Bedürfnisse und Compliance Vorgaben zuzuschneiden und dabei das Angebot auf die Services zu beschränken, die im Unternehmen erlaubt sein sollen.
Create and manage Private Azure Marketplace in the Azure portal – Microsoft marketplace | Microsoft Docs

Azure Automanage

Azure Automanage ist jetzt in Preview und bietet jede Menge Neuerungen, u.a. die Möglichkeit, Windows Server ohne Reboot zu patchen. Außerdem unterstützt Automanage auch Linux.
Azure Automanage | Microsoft Azure

Backup Center

Das Backup Center ist jetzt GA und erlaubt zentralisiertes Backup Management für verschiedene Workloads. Außerdem gibt es jetzt die Option, Backups auf Archive-Storage zu lagern, um damit Speicherkosten zu sparen (Limited Preview).
https://aka.ms/AAb396g

Zonenredundanz für Managed Disks

Premium SSDs und Standard SSDs kennen nun auch die Option, Daten zonenredundant (ZRS) zu speichern. Dadurch ist auch der Ausfall / Verlust eines Datacenters oder einer Zone zu kompensieren. Dieses Feature hat sich bereits vor einigen Wochen in den Preislisten angekündigt, was mich sehr gefreut hat. Das kann an einigen Stellen den Einsatz von Availiability Sets oder Zones mit dem verbundenen Aufwand eines Clusters und den Kosten der Redundanz unnötig machen!

Auto-Key Rotation für selbstverwaltete Keys

Bisher musste man alle betroffenen Azure Ressourcen anpassen, wenn man einen Verschlüsselungskey erneuern wollte.. Nun ist es möglich, alle Disks, Snapshots und Images automatisch aktualisieren zu lassen, wenn eine neue Schlüssel-Version erzeugt wurde.
https://aka.ms/AAb3968

Neuerungen bei Azure Migrate

Neben vielen anderen Neuerungen bekommt Azure Migrate jetzt ein umfangreiches Discovery und Assessment für SQL Server und Datenbanken. Außerdem gibt es ein „Containerization Tool“ für ASP.NET und Java basierende Webanwendungen. Und auch das Az.Migrate PowerShell Modul wurde erweitert und unterstützt nun die agentenlose VMWare Migration.
https://aka.ms/AAb3255

Azure Load Balancer

Der Azure Load Balancer kann nun (bzw. sehr bald) im Backend direkt mit IPs umgehen, nicht nur mit VMs/VMSSs. Dadurch kann man z.B. auch zwischen Containern load-balancen. Da nun auch Public IPs von Basic auf Standard heraufgestuft werden können, geht dies auch mit der Load Balancer SKU. Dabei bleibt die Public IP jeweils erhalten.

VNET Routing Preference

Dieses Feature ist nun GA und erlaubt es, den Traffic in Richtung Internet entweder möglichst lange im Microsoft-Backbone zu routen (höhere Performance, aber auch Kosten) oder frühzeitig ins Internet zu „entlassen“ (geringere Kosten, aber auch keine sichere Performance mehr).
https://azure.microsoft.com/en-us/blog/optimize-for-internet-traffic-with-peering-service-and-the-routing-preference-option/

Azure Firewall Premium

Auch wenn dies bereits vor einigen Tagen veröffentlicht wurde, ist es dennoch auch hier eine Erwähnung wert – Die Azure Firewall hat nun einen Premium-Tier mit deutlich erweitertem Funktionsumfang (z.B. Intrusion Detection, Website-Kategorien und mehr.
Azure Firewall Premium now in preview | Azure Blog and Updates | Microsoft Azure

Windows Server 2022 als Marketplace Image verfügbar

Die Preview-Version des Windows Server 2022 ist nun im Azure Marketplace als Image verfügbar.
https://aka.ms/AAb325f

Universal Print

Der „Druckservice aus der Cloud“ ist nun GA und wird von den meisten großen Druckeranbietern unterstützt.
Universal Print | Microsoft Docs

Trusted Launch

VMs können un gegen Boot Kits / Rootkits und Kernel-Level Malware abgesichert werden, das Feature ist für Confidential und non-Confidential VMs verfügbar.

Azure AD Passwordless Authentication

Passwordless Authentication ist nun GA und erlaubt die passwortlose Anmeldung gegen Azure AD mit Hilfe von Windows Hello for Business, Microsoft Authenticator oder anderen FIDO2 Security Keys.

Viel Spaß bei der Ignite und dem Ausprobieren der neuen Features!

Schreibe einen Kommentar...

Azure und PowerShell – Preise abfragen

Immer wieder ist es für Automatisierungs- oder Optimierungsthemen sinnvoll, Preise für Azure Services abzufragen – und zwar so, dass man sie automatisiert bzw. in Skripten verwerten kann.

Dazu gibt es eine recht simple Lösung – und natürlich hat sie mit PowerShell zu tun 🙂

Es gibt eine API, die man abfragen kann. Diese ist unter

https://prices.azure.com/api/retail/prices

zu erreichen. Sie liefert bei direkter Abfrage eine riesige Menge an Daten, so dass es sinnvoll ist, schon bei der Abfrage zu filtern. Außerdem muss man die Abfrage in mehreren Durchläufen verwenden, sonst kommt es ggf. zu Timeouts oder es kommenden nicht alle Daten zurück.

Das Code-Schnippselchen, dass das erledigt, sieht dann folgendermaßen aus:

$pricelistApiUrl = "https://prices.azure.com/api/retail/prices?`$filter=armRegionName eq 'westeurope' and serviceName eq 'Virtual Machines'"
$reponseSkus = @()
do
{
    $webRequest = Invoke-WebRequest -Uri $pricelistApiUrl | ConvertFrom-Json
    $pricelistApiUrl = $webRequest.NextPageLink
    $reponseSkus += $webRequest.Items
    #$pricelistApiUrl
}
while ($pricelistApiUrl -ne $null)
$vmPrices = $reponseSkus | Where-Object {($_.type -eq "Consumption") -and ($_.skuName -notlike "*Low Priority*") -and ($_.skuName -notlike "*Spot*") }|  Sort-Object armSkuName,retailPrice -Descending
$vMPrices | Export-Csv -Path "VMPrices.csv" -Encoding UTF8 -NoTypeInformation -ErrorAction SilentlyContinue # In case the CSV is still open; For German systems, use '-Delimiter ";"'<p></p>

$pricelistApiUrl = "https://prices.azure.com/api/retail/prices?`$filter=armRegionName eq 'westeurope' and serviceName eq 'Virtual Machines'" $reponseSkus = @() do { $webRequest = Invoke-WebRequest -Uri $pricelistApiUrl | ConvertFrom-Json $pricelistApiUrl = $webRequest.NextPageLink $reponseSkus += $webRequest.Items #$pricelistApiUrl } while ($pricelistApiUrl -ne $null) $vmPrices = $reponseSkus | Where-Object {($_.type -eq "Consumption") -and ($_.skuName -notlike "*Low Priority*") -and ($_.skuName -notlike "*Spot*") }| Sort-Object armSkuName,retailPrice -Descending $vMPrices | Export-Csv -Path "VMPrices.csv" -Encoding UTF8 -NoTypeInformation -ErrorAction SilentlyContinue # In case the CSV is still open; For German systems, use '-Delimiter ";"'<p></p>

Das Ganze lässt sich natürlich auch auf beliebige andere Regionen und Services oder auch auf die anderen Attribute / Spalten filtern. Allerdings werden die Preise ausschließlich in Dollar geliefert! Mehr dazu siehe:

Azure Retail Prices REST API overview | Microsoft Docs

Es gibt noch weitere API für Preise, die teilweise auch andere Funktionen, z.B. auch Währungsumrechnung, haben. Diese sind aber erstens scheinbar nicht vollständig und zweitens auch komplizierter in der Handhabung.

Viel Spaß beim Ausprobieren und Verwenden!

Schreibe einen Kommentar...

Azure Adventskalender 2020 – Zusammenfassung

Weihnachten 2020 ist nun Geschichte und damit endete auch mein Azure Adventskalender in diesem Jahr. Jeden Tag ein neues Video für euch – das hat mir viel Spaß, aber auch einiges an Arbeit bereitet. Daher möchte ich natürlich, dass die Videos auch nach der Weihnachtszeit weiterhin zu eurem Nutzen sind. Und deswegen fasse ich euch hier nochmal alle Videos kurz zusammen:

01. Dezember 2020

Hinter Tür Nummer eins verbarg sich ein Video zu den Diagnostic Settings in Azure. Ihr findet es hier:
https://youtu.be/cAjqU0202X4

02. Dezember 2020

Das zweite Türchen hielt einen Überblick zu den verschiedenen VM-Größen in Azure und eine Erklärung selbiger bereit. Es ist hier zu finden:
https://youtu.be/mTZbOxKrlrM

03. Dezember 2020

Hinter diesem Türchen war ein Video zu den Resource Locks zu finden. Hier geht es zum Video:
https://youtu.be/X0IHwU6EA_E

04. Dezember 2020

Das vierte Türchen verbarg einen Überblick zum Azure Advisor und Erklärungen zu seinen Empfehlungen. Das Video gibt es hier:
https://youtu.be/RmTaXwZfP6o

05. Dezember 2020

Am fünften Tag gab es ein Video zur Datenbank-Migration in Azure. Es ist über diesen Link zu erreichen:
https://youtu.be/c1xfZqY-eyM

06. Dezember 2020

Am Nikolaustag ging es im täglichen Video um die Azure Firewall (verbunden mit VNET-Peering). Das Video findet ihr hier:
https://youtu.be/EsX2B1DZvzA

07. Dezember 2020

Für das siebte Türchen habe ich ein Video zu einem netten Sicherheitsfeature des Security Center bzw. Defender aufgezeichnet – es geht um Just-in Time (JIT) VM Access. Das Video ist über diesen Link zu sehen:
https://youtu.be/k2LUYmMxOx4

08. Dezember 2020

Für diesen Tag gab es ein Video zu den Network Security Groups (NSG) und den Application Secruity Groups (ASG). Ihr findet es hier:
https://youtu.be/FBmInxpkSEM

09. Dezember 2020

Das neunte Türchen hat ein Video zu den verschiedenen Disk-Typen für Azure VMs beschert. Schaut es euch hier an:
https://youtu.be/oANdFp21W9k

10. Dezember 2020

Budgets
https://youtu.be/qoANsC2lhx4

11. Dezember 2020

Resource Graph
https://youtu.be/ApMXdfioDt4

12. Dezember 2020

Azure SQL Serverless
https://youtu.be/l7YNtr8Zr8c

13. Dezember 2020

IaaS Antimalware Extension
https://youtu.be/HP_i0eTSr-0

14. Dezember 2020

Azure Active Directory Conditional Access
https://youtu.be/V1PBESIvjOY

15. Dezember 2020

ARM Template Export
https://youtu.be/fft5e14gZk8

16. Dezember 2020

Burstable VMs (B-Serie)
https://youtu.be/Ow79XJ5UKZQ

17. Dezember 2020

Quotas
https://youtu.be/wUoTbb9q220

18. Dezember 2020

Azure VM Backup
https://youtu.be/oabUJSEyAakhttps://youtu.be/oabUJSEyAak

19. Dezember 2020

Azure Loadbalancer
https://youtu.be/K4p6QzWrevM

20. Dezember 2020

Azure SQL Elastic Pool
https://youtu.be/neS9UzfoZYs

21. Dezember 2020

Update Management für VMs
https://youtu.be/oCHzHir1YDE

22. Dezember 2020

Availability Sets
https://youtu.be/gxVTZHgtQTY

23. Dezember 2020

Availability Zones
https://youtu.be/nQXuU2OCZ8c

24. Dezember 2020

Azure Monitor
https://youtu.be/QJpDo1X6wCs

Die gesamte Playlist findet ihr hier:

Adventskalender 2020 – YouTube

Schreibe einen Kommentar...

Azure Adventskalender 2020

In einer Woche ist es soweit – mit dem 01.12. beginnt die jährliche Saison der Adventskalender. Ich habe mir für dieses Jahr etwas Besonderes überlegt. ich werde jeden Tag ein virtuelles Türchen auf meinem YouTube-Kanal bereithalten, hinter dem sich dann jeweils ein neues Video verbergen wird! Also seid gespannt, abonniert meinen Kanal und schaut euch die täglichen Videos an.

https://www.youtube.com/c/HaikoHertes

Schreibe einen Kommentar...

Deploy multiple ARM templates to Azure using PowerShell and GitHub Actions

This is kind of an experiment. Usually, I produce all my content in German language, but to see if englisch content is of higher use for the community, I will give it a try…

In the last days, I dealt a lot with GitHub Actions to find out, how it can be used to deploy Azure ARM templates to the cloud. My last „evolution“ step now – I was working on this because of the very valuable hint of a collegue – is able to deploy ARM templates to all 4 available scope levels:

  • Tenant level
  • Management Group level
  • Subscription level
  • Resource Group level

And it also could be used, even when you don’t use GitHub Actions! But let’s start from the beginning…

Schreibe einen Kommentar...