Samouczek: tworzenie obrazów maszyn wirtualnych z systemem Windows przy użyciu programu Azure PowerShell

Dotyczy: ✔️ Maszyny wirtualne z systemem Windows — elastyczne zestawy skalowania ✔️

Obrazy mogą służyć do uruchamiania wdrożeń i zapewnienia spójności na wielu maszynach wirtualnych. W tym samouczku utworzysz własny wyspecjalizowany obraz maszyny wirtualnej platformy Azure przy użyciu programu PowerShell i zapiszesz go w galerii obliczeń platformy Azure (wcześniej nazywanej galerią obrazów udostępnionych). Dowiedz się, jak odbywa się:

  • Tworzenie galerii zasobów obliczeniowych platformy Azure
  • Tworzenie definicji obrazu
  • Tworzenie wersji obrazu
  • Tworzenie maszyny wirtualnej na podstawie obrazu
  • Udostępnianie galerii

Zanim rozpoczniesz

W poniższych krokach szczegółowo opisano sposób wykonywania istniejącej maszyny wirtualnej i przekształcania jej w obraz niestandardowy wielokrotnego użytku, którego można użyć do tworzenia nowych maszyn wirtualnych.

Do utworzenia przykładu przedstawionego w tym samouczku potrzebna jest istniejąca maszyna wirtualna. W razie potrzeby możesz zobaczyć przewodnik Szybki start programu PowerShell, aby utworzyć maszynę wirtualną do użycia na potrzeby tego samouczka. Podczas pracy z samouczkiem zastąp nazwy zasobów w razie potrzeby.

Omówienie

Galeria zasobów obliczeniowych platformy Azure upraszcza udostępnianie obrazów niestandardowych w całej organizacji. Obrazy niestandardowe są podobne do obrazów z platformy handlowej, ale tworzy się je samodzielnie. Obrazy niestandardowe mogą służyć do ładowania początkowego konfiguracji, na przykład do wstępnego ładowania aplikacji, konfiguracji aplikacji i innych konfiguracji systemu operacyjnego.

Galeria obliczeń platformy Azure umożliwia udostępnianie niestandardowych obrazów maszyn wirtualnych innym osobom. Wybierz obrazy, które chcesz udostępnić, a w których regionach chcesz je udostępnić, oraz do kogo chcesz je udostępnić.

Funkcja galerii obliczeń platformy Azure ma wiele typów zasobów:

Zasób opis
Źródło obrazu Jest to zasób, którego można użyć do utworzenia wersji obrazu w galerii. Źródłem obrazu może być istniejąca maszyna wirtualna platformy Azure, która jest uogólniona lub wyspecjalizowana, obraz zarządzany, migawka lub wersja obrazu w innej galerii.
Galeria Podobnie jak w witrynie Azure Marketplace, galeria to repozytorium do zarządzania obrazami i udostępnianiem obrazów i aplikacji maszyn wirtualnych, ale kontrolujesz, kto ma dostęp.
Definicja obrazu Definicje obrazów są tworzone w galerii i zawierają informacje o obrazie i wymaganiach dotyczących korzystania z niego wewnętrznie. Obejmuje to, czy obraz jest windows, czy Linux, informacje o wersji oraz minimalne i maksymalne wymagania dotyczące pamięci. Jest to definicja typu obrazu.
Wersja obrazu Wersja obrazu służy do tworzenia maszyny wirtualnej podczas korzystania z galerii. Możesz mieć wiele wersji obrazu zgodnie z potrzebami w danym środowisku. Podobnie jak w przypadku obrazu zarządzanego , gdy używasz wersji obrazu do utworzenia maszyny wirtualnej, wersja obrazu jest używana do tworzenia nowych dysków dla maszyny wirtualnej. Wersje obrazów mogą być używane wiele razy.

Uruchamianie usługi Azure Cloud Shell

Usługa Azure Cloud Shell to bezpłatna interaktywna powłoka, której możesz używać do wykonywania kroków opisanych w tym artykule. Udostępnia ona wstępnie zainstalowane i najczęściej używane narzędzia platformy Azure, które są skonfigurowane do użycia na koncie.

Aby otworzyć usługę Cloud Shell, wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu. Możesz również uruchomić usługę Cloud Shell w oddzielnej karcie przeglądarki, przechodząc do strony https://shell.azure.com/powershell. Wybierz przycisk Kopiuj, aby skopiować bloki kodu, wklej je do usługi Cloud Shell, a następnie naciśnij klawisz Enter, aby je uruchomić.

Pobieranie maszyny wirtualnej

Możesz wyświetlić listę maszyn wirtualnych, które są dostępne w grupie zasobów przy użyciu polecenia Get-AzVM. Gdy znasz nazwę maszyny wirtualnej i grupę zasobów, możesz użyć Get-AzVM jej ponownie, aby pobrać obiekt maszyny wirtualnej i zapisać go w zmiennej do późniejszego użycia. Ten przykład pobiera maszynę wirtualną o nazwie sourceVM z grupy zasobów myResourceGroup i przypisuje ją do zmiennej $sourceVM.

$sourceVM = Get-AzVM `
   -Name sourceVM `
   -ResourceGroupName myResourceGroup

Tworzenie grupy zasobów

Utwórz grupę zasobów za pomocą polecenia New-AzResourceGroup.

Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi. W poniższym przykładzie grupa zasobów o nazwie myGalleryRG jest tworzona w regionie EastUS:

$resourceGroup = New-AzResourceGroup `
   -Name 'myGalleryRG' `
   -Location 'EastUS'

Galeria jest podstawowym zasobem używanym do włączania udostępniania obrazów. Dozwolone znaki dla nazwy galerii to wielkie lub małe litery, cyfry, kropki i kropki. Nazwa galerii nie może zawierać kreski. Nazwy galerii muszą być unikatowe w ramach subskrypcji.

Utwórz galerię przy użyciu polecenia New-AzGallery. Poniższy przykład tworzy galerię o nazwie myGallery w grupie zasobów myGalleryRG .

$gallery = New-AzGallery `
   -GalleryName 'myGallery' `
   -ResourceGroupName $resourceGroup.ResourceGroupName `
   -Location $resourceGroup.Location `
   -Description 'Azure Compute Gallery for my organization'	

Tworzenie definicji obrazu

Definicje obrazów tworzą logiczne grupowanie obrazów. Są one używane do zarządzania informacjami o wersjach obrazów, które są w nich tworzone. Nazwy definicji obrazów mogą składać się z wielkich lub małych liter, cyfr, kropek, kreski i kropek. Aby uzyskać więcej informacji na temat wartości, które można określić dla definicji obrazu, zobacz Definicje obrazów.

Utwórz definicję obrazu przy użyciu polecenia New-AzGalleryImageDefinition. W tym przykładzie obraz galerii nosi nazwę myGalleryImage i jest tworzony dla wyspecjalizowanego obrazu.

$galleryImage = New-AzGalleryImageDefinition `
   -GalleryName $gallery.Name `
   -ResourceGroupName $resourceGroup.ResourceGroupName `
   -Location $gallery.Location `
   -Name 'myImageDefinition' `
   -OsState specialized `
   -OsType Windows `
   -Publisher 'myPublisher' `
   -Offer 'myOffer' `
   -Sku 'mySKU'

Tworzenie wersji obrazu

Utwórz wersję obrazu na podstawie maszyny wirtualnej przy użyciu polecenia New-AzGalleryImageVersion.

Dozwolone znaki dla wersji obrazu to liczby i kropki. Liczby muszą należeć do zakresu 32-bitowej liczby całkowitej. Format: MajorVersion.Wersja pomocnicza.Stosowanie poprawek.

W tym przykładzie wersja obrazu to 1.0.0 i jest replikowana do centrów danych Wschodnie stany USA i Południowo-środkowe stany USA . Podczas wybierania regionów docelowych na potrzeby replikacji należy uwzględnić region źródłowy jako docelowy dla replikacji.

Aby utworzyć wersję obrazu na podstawie maszyny wirtualnej, użyj polecenia $vm.Id.ToString() dla elementu -Source.

   $region1 = @{Name='South Central US';ReplicaCount=1}
   $region2 = @{Name='East US';ReplicaCount=2}
   $targetRegions = @($region1,$region2)

New-AzGalleryImageVersion `
   -GalleryImageDefinitionName $galleryImage.Name`
   -GalleryImageVersionName '1.0.0' `
   -GalleryName $gallery.Name `
   -ResourceGroupName $resourceGroup.ResourceGroupName `
   -Location $resourceGroup.Location `
   -TargetRegion $targetRegions  `
   -Source $sourceVM.Id.ToString() `
   -PublishingProfileEndOfLifeDate '2030-12-01'

Replikacja obrazu do wszystkich regionów docelowych może zająć trochę czasu.

Tworzenie maszyny wirtualnej

Po utworzeniu wyspecjalizowanego obrazu można utworzyć co najmniej jedną nową maszynę wirtualną. Za pomocą polecenia cmdlet New-AzVM. Aby użyć obrazu, użyj Set-AzVMSourceImage i ustaw -Id parametr na identyfikator definicji obrazu ($galleryImage.Id w tym przypadku), aby zawsze używać najnowszej wersji obrazu.

W tym przykładzie zastąp nazwy zasobów zgodnie z potrzebami.

# Create some variables for the new VM.
$resourceGroup = "myResourceGroup"
$location = "South Central US"
$vmName = "mySpecializedVM"

# Create a resource group
New-AzResourceGroup -Name $resourceGroup -Location $location

# Create the network resources.
$subnetConfig = New-AzVirtualNetworkSubnetConfig -Name mySubnet -AddressPrefix 192.168.1.0/24
$vnet = New-AzVirtualNetwork -ResourceGroupName $resourceGroup -Location $location `
  -Name MYvNET -AddressPrefix 192.168.0.0/16 -Subnet $subnetConfig
$pip = New-AzPublicIpAddress -ResourceGroupName $resourceGroup -Location $location `
  -Name "mypublicdns$(Get-Random)" -AllocationMethod Static -IdleTimeoutInMinutes 4
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name myNetworkSecurityGroupRuleRDP  -Protocol Tcp `
  -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
  -DestinationPortRange 3389 -Access Deny
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroup -Location $location `
  -Name myNetworkSecurityGroup -SecurityRules $nsgRuleRDP
$nic = New-AzNetworkInterface -Name $vmName -ResourceGroupName $resourceGroup -Location $location `
  -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id

# Create a virtual machine configuration using $imageVersion.Id to specify the image version.
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize Standard_D1_v2 | `
Set-AzVMSourceImage -Id $galleryImage.Id | `
Add-AzVMNetworkInterface -Id $nic.Id

# Create a virtual machine
New-AzVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig

Zalecamy udostępnienie dostępu na poziomie galerii. Użyj adresu e-mail i polecenia cmdlet Get-AzADUser , aby uzyskać identyfikator obiektu dla użytkownika, a następnie użyj polecenia New-AzRoleAssignment , aby udzielić im dostępu do galerii. Zastąp przykładowy adres e-mail w alinne_montes@contoso.com tym przykładzie własnymi informacjami.

# Get the object ID for the user
$user = Get-AzADUser -StartsWith alinne_montes@contoso.com
# Grant access to the user for our gallery
New-AzRoleAssignment `
   -ObjectId $user.Id `
   -RoleDefinitionName Reader `
   -ResourceName $gallery.Name `
   -ResourceType Microsoft.Compute/galleries `
   -ResourceGroupName $resourceGroup.ResourceGroupName

Czyszczenie zasobów

Gdy grupa zasobów nie będzie już potrzebna, możesz usunąć grupę zasobów i wszystkie powiązane zasoby za pomocą polecenia cmdlet Remove-AzResourceGroup :

# Delete the gallery 
Remove-AzResourceGroup -Name myGalleryRG

# Delete the VM
Remove-AzResourceGroup -Name myResoureceGroup

Konstruktor obrazów platformy Azure

Platforma Azure oferuje również usługę utworzoną na platformie Packer i Azure VM Image Builder. Wystarczy opisać dostosowania w szablonie i obsłużyć tworzenie obrazu.

Następne kroki

W tym samouczku utworzono wyspecjalizowany obraz maszyny wirtualnej. W tym samouczku omówiono:

  • Tworzenie galerii zasobów obliczeniowych platformy Azure
  • Tworzenie definicji obrazu
  • Tworzenie wersji obrazu
  • Tworzenie maszyny wirtualnej na podstawie obrazu
  • Udostępnianie galerii

Przejdź do następnego samouczka, aby dowiedzieć się więcej o zestawach skalowania maszyn wirtualnych.