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

Haikos Blog Posts

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...

Azure ARM Templates mit GitHub Actions deployen

Geht es um den Aufbau automatisierter CI/CD Pipelines für Azure, so denken die meisten wohl eher an Azure DevOps. Aber auch mit GitHub lässt sich so etwas erreichen – und zwar völlig kostenlos. Das Werkzeug dazu heißt GitHub Actions. Zu GitHub Actions selbst will ich hier gar nicht so viel schreiben – es gibt bereits einige Blogartikel und co. dazu. Ich verweise aber gerne auf mein Video, welches ich dazu gemacht habe:

Mein YouTube Video zu GitHub Actions

Nun kam von einem meiner geschätzten Kollegen zu Recht die Frage, wie man denn in dieser (ersten, im Video gezeigten) Variante mehrere ARM Templates bereitstellen kann. Und dazu möchte ich hier die passende Antwort liefern…

Schreibe einen Kommentar...

CSV, Excel und das Trennzeichen

Öffnet man (auf einem europäischen System) eine korrekt formatierte CSV Datei in Excel, dann ergibt sich ein altbekanntes Problem: Die einzelnen Zeilen werden zu einer Zelle „zusammengeschmissen“, statt in Spalten getrennt dargestellt zu werden.

Der Grund hierfür ist, dass das eigentlich als CSV-Trennzeichen vorgesehene Komma „,“ im europäischen Sprachraum das Trennzeichen für Nachkommastellen ist. Im englischen Sprachraum ergibt sich das Problem nicht, hier werden Nachkommastellen mit dem Punkt „.“ abgetrennt und das Komma ist dadurch frei. Als Lösung für dieses Problem verwendet (und erwartet) Excel daher auf europäischen Systemen ein Semikolon „;“ als Trennzeichen.

Als Workaround waren mir bisher zwei Lösungen bekannt:

  • Ersetzen der Kommas vor dem Öffnen durch Semikolons bzw. Ersetzen der Semikolons nach dem Speichern durch Kommas
  • Ändern der Regions- und Spracheeinstellungen

Nun habe ich aber eine neue Lösung gesehen, die so simpel wie genial ist:

Schreibe einen Kommentar...

Azure Migrate YouTube Serie

Ich wollte euch an dieser Stelle gerne auf meine Mini-Serie zu Azure Migrate auf YouTube aufmerksam machen:

Im ersten Teil zeige ich euch, wie man das Azure Migrate Assessment einrichtet, um Kostenabschätzung, Sizing und co. zu bekommen.

Im zweiten Part zeige ich die Replikation, Testmigration und Migration von VMs.

Und im dritten Part geht es nochmal dediziert um das Assessment auf der Basis von ausschließlich CSV Daten.

Viel Spaß beim Ansehen!

Schreibe einen Kommentar...