Haikos Blog Blog von Haiko Hertes zu allen Themen rund um Microsoft und Datacenter

18Feb/202

Azure – RBAC Custom Role für das starten und stoppen von VMs

Weil es die Tage bei einem meiner Kunden wieder mal ein Thema war, möchte ich es hier nun mal im Detail beleuchten. Und zwar geht es um die Anforderung, Virtuelle Maschinen in Azure starten und stoppen zu können, ohne beispielsweise die VM löschen zu können oder ihre SKU zu verändern. Natürlich gibt es den "Virtual Machine Contributor" als built-in Role, aber diese darf eben deutlich zu viel.

Wie geht man nun an das Thema heran? Zunächst muss man zwei Dinge in Erfahrung bringen:

  • Den Namen des Resource-Providers um den es geht
  • Die Operationen auf diesem Provider, die man erlauben oder verbieten möchte

Dazu kann man sich in den Microsoft Docs informieren:

Für den Fall der Virtual Machine finden wir dazu also:

  • Der Resource Provider heisst "Microsoft.Compute"
  • Auf diesem sind u.a. folgende Aktionen vorgesehen:
    • Microsoft.Compute/virtualMachines/powerOff/action
      • Powers off the virtual machine. Note that the virtual machine will continue to be billed.
    • Microsoft.Compute/virtualMachines/read
      • Get the properties of a virtual machine
    • Microsoft.Compute/virtualMachines/restart/action
      • Restarts the virtual machine
    • Microsoft.Compute/virtualMachines/start/action
      • Starts the virtual machine

Die Liste der möglichen Aktionen auf einem Resource Provider kann man auch via PowerShell bekommen, z.B.:

1
Get-AzProviderOperation "Microsoft.Compute/*" | FT Operation, Description -AutoSize

Man muss allerdings berücksichtigen, dass es zum Starten einer VM auch erstmal nötig ist, die VM überhaupt sehen zu dürfen...

Als nächstes muss man die Rollen-Definition im JSON-Format schreiben. Dazu kann man sich auch vorab eine bereits existierende Rollendefinition herunterladen, z.B. mit

1
Get-AzRoleDefinition -Name "Virtual Machine Contributor" | ConvertTo-Json

Nun passt man sich das JSON so an, dass die gewünschten Aktionen abgedeckt sind. Dabei wird die "ID" Zeile entfernt und "IsCustom" auf "true" gesetzt. Außerdem muss der AssignableScope gesetzt werden. In unserem Fall führt das in etwa zu dieser Definition:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
  "Name": "Virtual Machine Starter-Stopper",
  "IsCustom": true,
  "Description": "Lets you see, start, restart and stop Virtual Machines.",
  "Actions": [
	"Microsoft.Resources/subscriptions/resourceGroups/read",
    "Microsoft.Compute/virtualMachines/read",
	"Microsoft.Compute/virtualMachines/start/action",
	"Microsoft.Compute/virtualMachines/restart/action",
	"Microsoft.Compute/virtualMachines/powerOff/action",
	"Microsoft.Compute/virtualMachines/deallocate/action"
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/00000000-1234-5678-91234-000000000000"
  ]
}

Diese Definition kann man z.B. mit vi in der Azure Cloud Shell in ein File schreiben. Diese kann man dann wiederum mit

1
New-AzRoleDefinition -InputFile myRole.json

in eine neue Rolle schreiben lassen.

Nun kann man die Rolle bspw. über das Azure Portal zuweisen:

Und damit kann der Benutzer dann genau die definierten Rechte wahrnehmen - und nicht mehr!

Viel Spaß beim Ausprobieren!

6Feb/200

Azure – Account Failover für Storage Accounts in der Preview

Wie Microsoft in seinem Blog-Artikel angekündigt hat, ist das "Account Failover" Feature für den Storage Account nun in der Public Preview. Aber worum handelt es sich hier überhaupt?

Schon seit Längerem bieten Storage Accounts die Möglichkeit, die Daten georedundant vorzuhalten. Dabei werden in den Optionen ZRS, GRS und RA-GRS (und neuerdings auch GZRS) die Daten (die am primären Speicherort schon 3-fach vorgehalten werden) in ein anderes Azure Rechenzentrum in der selben Region (ZRS) oder in einer anderen Region gespiegelt. Dies geschieht allerdings asynchron, d.h., bei einem Ausfall in der Ursprungsregion kann es sein, dass nicht alle Daten vollständig gespiegelt worden, somit kann es zu Datenverlust kommen.

Clients write data to the storage account in the primary region

In der Option RA-GRS (Read-access geo-redundant Storage) gibt es die Option, die Daten auch am sekundären Speicherort zu nutzen, aber nur lesend! Das heisst: Kommt es zu einem Ausfall des primären Datacenters, sind meine Daten zwar nach wie vor vorhanden, allerdings komme ich nicht oder nur lesend an diese ran. Das dürfte für die meisten Anwendungsfälle, bei denen die Daten nicht nur als Archiv abgelegt sondern permanent genutzt werden ein Problem sein.

Diesem begegnet Microsoft jetzt mit einem tollen Feature: Account Failover.

Damit kann man nun den Failover (manuell) einleiten, wenn der primäre Endpunkt nicht verfügbar ist. Dadurch wird der bisherige sekundäre Endpunkt zum primären und andersherum. Und das wiederum hat zur Folge, dass man die Daten eben von dort weiterhin lesend und auch schreibend nutzen kann. Allerdings dauert dieser Failover laut Microsoft etwa eine Stunde - eine Dienstunterbrechung kann man damit also im Regelfall nicht vermeiden. Der Failover biegt die DNS-Einträge und Service Endpoints auf den sekundären Endpunkt um.

Customer initiates account failover to secondary endpoint

Allerdings wird der Storage Account dadurch zu einem LRS Account (also ohne zonenübergreifende Redundanz). Wenn gewünscht kann man ihn aber dann wieder in einen georedundanten Storage Account umwandeln - dies ist dann aber mit einer vollständigen (Neu)Replikation und den damit einhergehenden Kosten verbunden! Allerdings scheint das aktuell der einzige Weg für ein Failback zu sein - hier muss man aber dann warten, bis die vollständige Replikation abgeschlossen ist. Microsoft warnt hier vor sonst möglicherweise auftretenden gravierenden Datenverlusten!

Die Preview ist leider nur in diesen Regionen verfügbar:

  • Asia East
  • Asia Southeast
  • Australia East
  • Australia Southeast
  • US Central
  • US East 2
  • US West Central
  • US West 2

Wie bei Previews üblich sind diese nicht für produktive Workloads gedacht und es gibt auch keinen SLA!

Hier findet sich die komplette Doku zu diesem Feature:

https://docs.microsoft.com/en-us/azure/storage/common/storage-disaster-recovery-guidance

31Jan/200

Mein Beitrag zum Azure Day 2020 in der Schweiz

In den letzten Tagen habe ich auf dem Microsoft-Event "Azure Day" sowohl in der Westschweiz als auch Zürich über Azure App Service, Web Apps und Container gesprochen.

Die Folien zum Vortrag sind hier zu finden:

https://github.com/HaikoHertes/slides/tree/master/AzureDaySuisse2020

Die Aufzeichnungen der beiden Sessions finden sich auf meinem YouTube-Kanal.

Hier einmal die Variante aus Zürich in Deutsch:

Und hier die Aufzeichnung in Englisch aus der West-Schweiz:

Viel Spaß damit!

21Jan/200

Kostenloses Azure Cloud Governance Webinar!

Die Cloud-Einführung richtig planen: ​Mit dem Azure Governance Workshop entsteht anhand Ihrer Anforderungen ein fundiertes Cloud-Konzept. Zur Prüfung der Wirtschaftlichkeit und der Einhaltung von Compliance-Regeln analysieren dabei Experten Ihre Anforderungen. Erfahren Sie im Detail, wie wir dabei vorgehen und Ihnen mit der Modernisierung Ihrer IT-Infrastruktur helfen können. Kostenlos zum Webinar anmelden:

https://bit.ly/37efMyL

17Sep/190

PowerShell – Nicht verwendete Azure Ressourcen finden

Ein regelmäßiges Problem im Azure-Alltag ist das Aufräumen nicht mehr benötigter Azure-Ressourcen. Diese kosten in der Regel unnötig Geld und stellen zum Teil auch ein (Sicherheits-)Risiko dar (wenn zum Beispiel eine nicht mehr verwendete VM aus dem Fokus gerät und über Jahre nicht gepatcht wird).

Um dieser Herausforderung zu begegnen gilt es zunächst, die Ressourcen, die "weg" können, zu identifizieren. Dazu habe ich eine erste Version eines PowerShell Skriptes erstellt, welches:

  • Nicht verwendete Public IPs
  • Nicht verwendete NICs
  • Nicht verwendete NSGs
  • Nicht verwendete Managed Disks

findet und aufführt.

Über die Zeit möchte ich das Skript weiter ausbauen.

Ihr findet es in meinem GitHub Repository:

https://github.com/HaikoHertes/scripts/blob/master/Azure/Management/GetOrphanedAzureRessources.ps1

Und ja, natürlich bietet Azure mit seinen Recommendations hier auch schon einiges, allerdings eben nicht "live"...

Viel Spaß beim Ausprobieren - über Kommentare freue ich mich!

28Aug/190

Azure jetzt (wieder) in Deutschland verfügbar!

Zumindest für einige wenige...

Microsoft hat heute (still und heimlich und ohne großes Event) die neuen Deutschen Rechenzentren für Azure freigeschalten. Man kann sie auch im Portal schon sehen/auswählen:

Allerdings ist diese Region bisher nur für ausgewählte Kunden nutzbar. Beim Versuch, eine Ressource dorthin bereit zu stellen, kommt derzeit noch ein Fehler:

Einem Beitrag von Microsoft selbst sind auch weitere Details zu entnehmen, auch, wann und wie es weitergeht:

https://news.microsoft.com/de-de/microsoft-eroeffnet-neue-cloud-rechenzentrumsregionen-in-deutschland/
21Jul/190

Azure – VMs nach zeit gesteuert hoch- und runterfahren

In meinen Workshops und anderen Kundenterminen kommt immer wieder die Frage, wie man Virtuelle Maschinen in Azure nach Zeit gesteuert hoch- und wieder runterfahren kann. Das ist eigentlich ganz einfach – man benötigt dazu nur folgendes:

  • Einen Azure Automation Account
  • Ein PowerShell Runbook mit entsprechendem Skript
  • VMs mit den entsprechenden Tags

Ich habe mich dazu zu folgenden Tags entschieden:

  • AutoShutdown – Entscheidet, ob die VM automatisch heruntergefahren werden soll; kennt die Werte “Yes” and “No”
  • AutoShutdownTime – enthält die entsprechende Zeit für den Shutdown im Format HH:mm:ss nach UTC
  • AutoStartup – Entscheidet, ob die VM automatisch gestartet werden soll; kennt die Werte “Yes” and “No”
  • AutoStartupTime – enthält die entsprechende Zeit für den Start im Format HH:mm:ss nach UTC

image

 

Das PowerShell-Skript findet ihr in meinem GitHub Repo:

https://github.com/HaikoHertes/scripts/blob/master/Azure/Management/StartAndStopVMsWithAzureAutomation.ps1

Das Skript ist etwas komplexer als die beiden anderen im Repo, berücksichtigt dabei aber auch, dass eine VM ggf. morgens heruntergefahren und abends gestartet werden soll.

image

Auf Youtube habe ich ein Video veröffentlicht, dass das Vorgehen mit anderen Skripten zeigt:

YoutubeStartfolieAzure

Probiert es einfach mal aus – viel Spaß!

31Mai/190

PowerShell 7 – Erste Preview verfügbar

Seit ein paar Stunden ist sie nun endlich verfügbar - die erste Preview-Version von PowerShell 7, genannt "PowerShell 7 Preview.1". Sie kann wie üblich auf verschiedensten Wegen bezogen werden. Einer davon ist der direkte Download aus GitHub:

https://github.com/PowerShell/PowerShell

(Aufpassen, dass ihr die Spalte "Downloads (preview)" benutzt, sonst bekommt ihr die Stable-Version 6.2)

Das PowerShell-Team beschreibt in einem langen Blog-Post einige Details zum Release und wie die nahe Zukunft aussehen wird:

Auf der GitHub-Seite zum Release stehen auch jede Menge Changes und Bugfixes:

https://github.com/PowerShell/PowerShell/releases/tag/v7.0.0-preview.1

Also, dann viel Spaß beim Ausprobieren der neuen Version! Und denkt daran - Preview heisst, es gibt keinen Support und die Version sollte nicht produktiv eingesetzt werden!

19Mai/191

Azure Portal App für Windows (Preview)

Seit kurzem gibt es eine Preview-Version der Azure Portal App für Windows. Diese könnt ihr hier herunterladen:

https://preview.portal.azure.com/app/welcome

Viel Spaß beim Ausprobieren!

28Apr/190

Global Azure Bootcamp 2019 – Slides und Recording meiner Session

Für alle Interessierten gibt es hier die Slides und das Recording meiner gestrigen Session zu "DevOps mit OpenSource Tools" auf dem Global Azure Bootcamp 2019:

Recording auf YouTube:

Die URL dazu ist https://youtu.be/gqAKGJWeDVY

Slides:

https://1drv.ms/b/s!ArnVhBG12m2DmO8XqGRXX36qns7GvQ