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

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…

Eine Variante wäre sicherlich, in diesem Skript

https://github.com/HaikoHertes/ActionsDemo/blob/master/.github/workflows/DeployARMtoAzure.yml#L23

mehrfach das „az deployment group create“ aufzurufen – aber dann müssten man wissen, wie viele Templates es sind und das Skript würde auch schnell sehr lang.

Als aus meiner Sicht bessere Lösung habe ich ein PowerShell Skript geschrieben, dass in der Verzeichnisstruktur des Repositories einen Ordner „arm\“ erwartet und darin Unterordner mit den Namen der gewünschten Resource Groups. Diese werden falls nötig vom Skript angelegt. Außerdem sucht das Skript Templates im Format XYZ.json und dazugehörige Parameter-Files im Format XYZ.parameters.json. Diese Templates werden nun alphabetisch geordnet mittels ARM bereitgestellt – egal, wie viele es sind. Dabei werden aus einer Datei „tags.txt“ falls gewünscht die Tages im Format

Tag = Wert

geladen und bei der Bereitstellung der RGs und Ressourcen mit angewendet. Die zu verwendende Location (nur eine pro RG ist erlaubt, aber das entspricht weitgehend dem üblichen Vorgehen) wird ebenfalls aus einer TXT-Datei location.txt gelesen.

Der erwartete Verzeichnisbaum

Im GitHub Repo müssen zwei Secrets hinterlegt werden:

Screenshot der GitHub Secrets

Einmal ein Secret für die Credentials (wie man die anlegt zeige ich im Video ab 20:27) und einmal die Subscription ID der zu verwendenden Subscription. Ergo ist ein Repo pro Subscription nötig…

Das PowerShell Script selbst könnt ihr hier herunterladen:

https://github.com/HaikoHertes/ActionsDemo.v2/blob/master/DeployARMtoAzure.ps1

Alternativ könnt ihr gleich mein ganzes Demo Repo auf GitHub clonen:

https://github.com/HaikoHertes/ActionsDemo.v2 bzw
https://github.com/HaikoHertes/ActionsDemo.v2.git

Wichtig: Damit mit -Tag bzw. -Tags auch die tags gleich mit bereitgestellt werden können braucht man das Az Modul in Version 4.1.0 und das wiederum ist derzeit nur im Ubuntu-20.04 Image auf GitHub enthalten. Siehe dazu auch hier:

https://github.com/marketplace/actions/azure-powershell-action
https://github.com/actions/virtual-environments/blob/master/images/linux/Ubuntu2004-README.md
https://github.com/actions/virtual-environments/tree/master/images

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.