In dieser Übung werden wir einen Storage Account in Azure deployen. Unser erstes Ziel ist es, eine lokal verfügbare Bilddatei als Blob in Azure BlobStorage zur Verfügung zu stellen. Das zweite Ziel ist es, eine lokal verfügbare HTML Datei als statische Website in Azure Blobstorage zu deployen.
- Ein neues Pulumi Azure-Native Typescript Projekt mit Namen
lab3
erstellen. Bei Auswahl der Azure-RegionWestEurope
verwenden. - Einen neuen Stack
dev
hinzufügen. - Im Terminal überprüfen, dass die azure-cli verfügbar ist:
az version
- Führe
az login
aus und melde Dich mit Deinem Azure Account an. Solltest Du mehrere Subscriptions haben, kannst Du mitaz account list
alle anzeigen lassen und mitaz account set -s <subscriptionId>
auswählen.
Dem Projektverzeichnis eine beliebige Bilddatei hinzufügen, z.B. den Pulumipus.
Imports hinzufügen und Projekt- und Stackname abfragen:
import * as pulumi from "@pulumi/pulumi";
import * as azure from "@pulumi/azure-native";
import { enums } from "@pulumi/azure-native/types";
const stackName = ...;
const projectName = ...;
Eine Azure ResourceGroup erstellen.
const resourceGroup = new azure.resources.ResourceGroup(`${stackName}-${projectName}`);
StorageAccount, BlobContainer und Bild-Blob in dieser ResourceGroup erstellen (Azure BlobStorage).
const storageAccount = new azure.storage.StorageAccount("storage", {
kind: azure.storage.Kind.StorageV2,
resourceGroupName: ...,
sku: {
name: azure.storage.SkuName.Standard_LRS
},
allowBlobPublicAccess: ...
});
const storageContainer = new azure.storage.BlobContainer("images", {
containerName: ... // ContainerName soll {storageAccountName}-images sein
accountName: ...,
publicAccess: enums.storage.PublicAccess.Container,
resourceGroupName: ...
});
const myImage = new azure.storage.Blob("pulumipus", {
... // Tip: Für die source könnt Ihr ein pulumi.asset.FileAsset verwenden
});
Die Url des Bild-Blobs wird als Output exportiert.
export const imageUrl = myImage.url;
💪 Weitere Aufgaben
1. Führe pulumi up
aus und überprüfe, dass unter der ausgegebenen Url das Bild abrufbar ist.
2. Überprüfe außerdem im Azure-Portal, welche Resourcen erzeugt wurden und wie deren Namen lauten.
3. Füge dem Projekt ein weiteres Bild hinzu, ändere das FileAsset im Pulumi-Programm ab, und stelle das neue Bild als Blob zur Verfügung.
Als nächstes stellen wir eine HTML-Datei (via FileAsset wie das Bild zuvor) als statische Website in Azure BlobStorage zur Verfügung und exportieren die Url der neu deployten Website als Output unseres Pulumi Programms. Verwendet einfach dieses simple HTML und fügt es in eine index.html
ins Projektverzeichnis ein.
<!DOCTYPE html>
<html>
<head>
<title>Pulumi Workshop Static Website</title>
<meta charset="utf-8">
</head>
<body>
<h1>Static website deployed with pulumi!</h1>
</body>
</html>
Pulumi stellt m.E. recht umfangreiche Doku zur Verfügung, hier z.B. zur StorageAccountStaticWebsite. Diese gibt einem nochmal einen guten Überblick über einzelne Resourcen, wenn das Intellisense in VS Code nicht ausreichend ist.
const websiteIndex = new azure.storage.Blob(...
const staticWebsite = new azure.storage.StorageAccountStaticWebsite(...
export const websiteUrl = ...;
💪 Aufgaben
1. Vervollständige das Codegerüst und erzeuge einen Blob mit der zuvor erstellten index.html
.
2. Erstelle - auch unter Zuhilfenahme der Doku - die StorageAccountStaticWebsite
Resource und exportiere die Url der Website als Output.
3. Führe pulumi up
aus und überprüfe, dass unter der ausgegebenen Url die Website abrufbar ist.