|
| 1 | +# Lab 3 - Erstes Azure Deployment |
| 2 | + |
| 3 | +## Überblick |
| 4 | + |
| 5 | +In dieser Übung werden wir einen Storage Account in Azure deployen. Unser Ziel ist es, eine lokal verfügbare HTML Datei als Blob in Azure Blobstorage zu deployen. |
| 6 | + |
| 7 | + |
| 8 | +### Neues Projekt erstellen |
| 9 | + |
| 10 | +1. Ein neues Pulumi Azure-Native Typescript Projekt mit Namen `lab3` erstellen. Bei Auswahl der Azure-Region `WestEurope`verwenden. |
| 11 | +2. Einen neuen Stack `dev` hinzufügen. |
| 12 | +3. Im Terminal überprüfen, dass die azure-cli verfügbar ist: `az version` |
| 13 | +4. Führe `az login` aus und melde Dich mit Deinem Azure Account an. Solltest Du mehrere Subscriptions haben, kannst Du mit `az account list` alle anzeigen lassen und mit `az account set -s <subscriptionId>` auswählen. |
| 14 | + |
| 15 | +### Statische Website via BlobStorage zur Verfügung stellen |
| 16 | + |
| 17 | +Wir wollen eine HTML-Datei als statische Website in Azure BlobStorage zur Verfügung stellen und die Url der neu deployten Website als Output unseres Pulumi Programms exportieren. Verwendet einfach dieses simple HTML Snippet und fügt es in eine `index.html` ins Projektverzeichnis ein. |
| 18 | + |
| 19 | +```html |
| 20 | +<!DOCTYPE html> |
| 21 | +<html> |
| 22 | + |
| 23 | +<head> |
| 24 | + <title>Pulumi Workshop Static Website</title> |
| 25 | + <meta charset="utf-8"> |
| 26 | +</head> |
| 27 | + |
| 28 | +<body> |
| 29 | + <h1>Static website deployed with pulumi!</h1> |
| 30 | +</body> |
| 31 | + |
| 32 | +</html> |
| 33 | +``` |
| 34 | + |
| 35 | +Imports hinzufügen und Projekt- und Stackname abfragen: |
| 36 | + |
| 37 | +```ts |
| 38 | +import * as pulumi from "@pulumi/pulumi"; |
| 39 | +import * as azure from "@pulumi/azure-native"; |
| 40 | +import { enums } from "@pulumi/azure-native/types"; |
| 41 | + |
| 42 | +const stackName = ...; |
| 43 | +const projectName = ...; |
| 44 | +``` |
| 45 | + |
| 46 | +Eine Azure [ResourceGroup](https://www.pulumi.com/docs/reference/pkg/azure-native/resources/resourcegroup/) erstellen. |
| 47 | + |
| 48 | +```ts |
| 49 | +const resourceGroup = new azure.resources.ResourceGroup(`${stackName}-${projectName}`); |
| 50 | +``` |
| 51 | + |
| 52 | +StorageAccount, BlobContainer und HTML-Blob in dieser ResourceGroup erstellen ([Azure BlobStorage](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction)). |
| 53 | + |
| 54 | +```ts |
| 55 | +const storageAccount = new azure.storage.StorageAccount("storage", { |
| 56 | + kind: azure.storage.Kind.StorageV2, |
| 57 | + resourceGroupName: ..., |
| 58 | + sku: { |
| 59 | + name: azure.storage.SkuName.Standard_LRS |
| 60 | + }, |
| 61 | + allowBlobPublicAccess: ... |
| 62 | +}); |
| 63 | + |
| 64 | +const storageContainer = new azure.storage.BlobContainer("content", { |
| 65 | + containerName: ... // ContainerName soll {storageAccountName}-content sein |
| 66 | + accountName: ..., |
| 67 | + publicAccess: enums.storage.PublicAccess.Container, |
| 68 | + resourceGroupName: ... |
| 69 | +}); |
| 70 | + |
| 71 | +const website = new azure.storage.Blob("website", { |
| 72 | + ... // Tip: Für die source könnt Ihr ein pulumi.asset.FileAsset verwenden |
| 73 | +}); |
| 74 | +``` |
| 75 | + |
| 76 | +Die Url des HTML-Blobs wird als Output exportiert. |
| 77 | + |
| 78 | +```ts |
| 79 | +export const websiteUrl = website.url; |
| 80 | +``` |
| 81 | + |
| 82 | +:muscle: **Aufgaben** |
| 83 | +1. Vervollständige das Codegerüst und erzeuge einen Blob mit der zuvor erstellten `index.html`. |
| 84 | +2. Führe `pulumi up` aus und überprüfe, dass unter der ausgegebenen Url das HTML abrufbar ist. |
| 85 | +2. Überprüfe außerdem im Azure-Portal, welche Resourcen erzeugt wurden und wie deren Namen lauten. |
| 86 | +3. Ändere die HTML Datei und deploye ein Update. |
0 commit comments