Samouczek: wdrażanie rozszerzeń maszyn wirtualnych przy użyciu szablonów usługi ARM

Dowiedz się, jak używać rozszerzeń maszyny wirtualnej platformy Azure do wykonywania konfiguracji po wdrożeniu oraz zadań automatyzacji na maszynach wirtualnych platformy Azure. Wielu różnych rozszerzeń maszyny wirtualnej można używać z maszynami wirtualnymi platformy Azure. W tym samouczku wdrożysz rozszerzenie niestandardowego skryptu z szablonu usługi Azure Resource Manager (szablon usługi ARM), aby uruchomić skrypt programu PowerShell na maszynie wirtualnej z systemem Windows. Skrypt instaluje serwer internetowy na maszynie wirtualnej.

Ten samouczek obejmuje następujące zadania:

  • Przygotowywanie skryptu programu PowerShell
  • Otwieranie szablonu szybkiego startu
  • Edytowanie szablonu
  • Wdrożenie szablonu

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Wymagania wstępne

Aby ukończyć pracę z tym artykułem, potrzebne są następujące zasoby:

Przygotowywanie skryptu programu PowerShell

Możesz użyć wbudowanego skryptu programu PowerShell lub pliku skryptu. W tym samouczku pokazano, jak używać pliku skryptu. Skrypt programu PowerShell z następującą zawartością jest udostępniany w usłudze GitHub:

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

Jeśli zdecydujesz się opublikować plik we własnej lokalizacji, zaktualizuj fileUri element w szablonie w dalszej części samouczka.

Otwieranie szablonu szybkiego startu

Szablony szybkiego startu platformy Azure to repozytorium szablonów usługi ARM. Zamiast tworzyć szablon od podstaw, możesz znaleźć szablon przykładowy i zmodyfikować go. Szablon używany w tym samouczku nazywa się Wdrożenie prostej maszyny wirtualnej z systemem Windows.

  1. W Visual Studio Code wybierz pozycję Plik>Otwórz plik.

  2. W polu Nazwa pliku wklej następujący adres URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Wybierz pozycję Otwórz, aby otworzyć plik. Szablon definiuje pięć zasobów:

  4. Aby zapisać kopię pliku o nazwie azuredeploy.json na komputerze lokalnym, wybierz pozycję Plik>Zapisz jako.

Edytowanie szablonu

Dodaj zasób rozszerzenia maszyny wirtualnej do istniejącego szablonu o następującej zawartości:

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "apiVersion": "2021-04-01",
  "name": "[format('{0}/{1}', variables('vmName'), 'InstallWebServer')]",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[format('Microsoft.Compute/virtualMachines/{0}',variables('vmName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.7",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorial-vm-extension/installWebServer.ps1"
      ],
      "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File installWebServer.ps1"
    }
  }
}

Zobacz informacje szczegółowe o rozszerzeniu, jeśli potrzebujesz więcej informacji na temat tej definicji zasobu. Poniżej przedstawiono niektóre ważne elementy:

  • name: Ponieważ zasób rozszerzenia jest zasobem podrzędnym obiektu maszyny wirtualnej, nazwa musi mieć prefiks nazwy maszyny wirtualnej. Zobacz Ustawianie nazwy i typu dla zasobów podrzędnych.
  • dependsOn: Utwórz zasób rozszerzenia po utworzeniu maszyny wirtualnej.
  • fileUris: lokalizacje, w których są przechowywane pliki skryptów. Jeśli nie chcesz używać podanej lokalizacji, musisz zaktualizować wartości.
  • commandToExecute: to polecenie wywołuje skrypt.

Aby użyć wbudowanego skryptu, usuń fileUrispolecenie i zaktualizuj commandToExecute polecenie w celu:

powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)

Ten wbudowany skrypt aktualizuje również zawartość iisstart.html .

Należy również otworzyć port HTTP, aby można było uzyskać dostęp do serwera internetowego.

  1. Znajdź securityRules w szablonie.

  2. Dodaj następującą regułę obok pozycji default-allow-3389.

    {
      "name": "AllowHTTPInBound",
      "properties": {
        "priority": 1010,
        "access": "Allow",
        "direction": "Inbound",
        "destinationPortRange": "80",
        "protocol": "Tcp",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "*",
        "destinationAddressPrefix": "*"
      }
    }
    

Wdrożenie szablonu

Aby zapoznać się z procedurą wdrażania, zobacz sekcję Wdrażanie szablonu w temacie Samouczek: tworzenie szablonów usługi ARM z zasobami zależnymi. Zalecamy użycie wygenerowanego hasła dla konta administratora maszyny wirtualnej. Zobacz sekcję Wymagania wstępne tego artykułu.

W Cloud Shell uruchom następujące polecenie, aby pobrać publiczny adres IP maszyny wirtualnej:

(Get-AzPublicIpAddress -ResourceGroupName $resourceGroupName).IpAddress

Wklej adres IP do przeglądarki sieci Web. Zostanie otwarta domyślna strona powitalna usług Internet Information Services (IIS):

Zrzut ekranu przedstawiający stronę powitalną usług Internet Information Services.

Czyszczenie zasobów

Jeśli nie potrzebujesz już zasobów platformy Azure wdrożonych przez Ciebie, wyczyść je, usuwając grupę zasobów.

  1. W witrynie Azure Portal w okienku po lewej wybierz pozycję Grupa zasobów.
  2. W polu Filtruj według nazwy podaj nazwę grupy zasobów.
  3. Wybierz nazwę grupy zasobów. W grupie zasobów jest wyświetlanych sześć zasobów.
  4. Wybierz pozycję Usuń grupę zasobów w górnym menu.

Następne kroki

W tym samouczku wdrożono maszynę wirtualną i rozszerzenie maszyny wirtualnej. Rozszerzenie zainstalowało serwer internetowy usług IIS na maszynie wirtualnej. Aby dowiedzieć się, jak zaimportować plik BACPAC za pomocą rozszerzenia usługi Azure SQL Database, zobacz: