Tworzenie szablonu Kreatora obrazów platformy Azure

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

Narzędzie Azure Image Builder używa pliku json do przekazywania informacji do usługi Image Builder. W tym artykule omówimy sekcje pliku json, dzięki czemu możesz utworzyć własny plik. Aby wyświetlić przykłady pełnych plików json, zobacz Artykuł GitHub narzędzia Azure Image Builder.

Jest to podstawowy format szablonu:

{
  "type": "Microsoft.VirtualMachineImages/imageTemplates",
  "apiVersion": "2021-10-01",
  "location": "<region>",
  "tags": {
    "<name>": "<value>",
    "<name>": "<value>"
  },
  "identity": {},
  "properties": {
    "buildTimeoutInMinutes": <minutes>,
    "stagingResourceGroup": "/subscriptions/<subscriptionID>/resourceGroups/<stagingResourceGroupName>",
    "vmProfile": {
      "vmSize": "<vmSize>",
      "proxyVmSize": "<vmSize>",
      "osDiskSizeGB": <sizeInGB>,
      "vnetConfig": {
        "subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>"
      },
"userAssignedIdentities": [
        "/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName1>",
  "/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName2>",
  "/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName3>",
  ...
    ]
    },
    "source": {},
    "customize": [],
    "validate": {},
    "distribute": []
  }
}

Typ i wersja interfejsu API

Jest type to typ zasobu, który musi mieć wartość "Microsoft.VirtualMachineImages/imageTemplates". Element apiVersion zmieni się wraz ze zmianami interfejsu API, ale powinien być "2021-10-01" na razie.

"type": "Microsoft.VirtualMachineImages/imageTemplates",
"apiVersion": "2021-10-01",

Lokalizacja

Lokalizacja to region, w którym zostanie utworzony obraz niestandardowy. Obsługiwane są następujące regiony:

  • East US
  • Wschodnie stany USA 2
  • Zachodnio-środkowe stany USA
  • Zachodnie stany USA
  • Zachodnie stany USA 2
  • Zachodnie stany USA 3
  • South Central US
  • Europa Północna
  • West Europe
  • Azja Południowo-Wschodnia
  • Australia Południowo-Wschodnia
  • Australia Wschodnia
  • Południowe Zjednoczone Królestwo
  • Zachodnie Zjednoczone Królestwo
  • Brazylia Południowa
  • Kanada Środkowa
  • Indie Środkowe
  • Central US
  • Francja Środkowa
  • Niemcy Środkowo-Zachodnie
  • Japonia Wschodnia
  • Północno-środkowe stany USA
  • Norwegia Wschodnia
  • Szwajcaria Północna
  • Jio Indie Zachodnie
  • Zjednoczone Emiraty Arabskie Na Północ
  • Azja Wschodnia
  • Korea Środkowa
  • Północna Republika Południowej Afryki
  • USGov Arizona (publiczna wersja zapoznawcza)
  • USGov Virginia (publiczna wersja zapoznawcza)

Ważne

Zarejestruj funkcję "Microsoft.VirtualMachineImages/FairfaxPublicPreview", aby uzyskać dostęp do publicznej wersji zapoznawczej programu Azure Image Builder w regionach Azure Government (USGov Arizona i USGov Virginia).

Użyj następującego polecenia, aby zarejestrować funkcję narzędzia Azure Image Builder w regionach Azure Government (USGov Arizona i USGov Virginia).

az feature register --namespace Microsoft.VirtualMachineImages --name FairfaxPublicPreview
"location": "<region>",

Data Residency

Usługa Azure VM Image Builder nie przechowuje ani nie przetwarza danych klientów poza regionami, które mają ścisłe wymagania dotyczące przechowywania danych w jednym regionie, gdy klient żąda kompilacji w tym regionie. W przypadku awarii usługi dla regionów, które mają wymagania dotyczące rezydencji danych, należy utworzyć szablony w innym regionie i lokalizacji geograficznej.

Nadmiarowość stref

Dystrybucja obsługuje nadmiarowość stref, dyski VHD są domyślnie dystrybuowane do konta magazynu strefowo nadmiarowego (ZRS), a wersja usługi Azure Compute Gallery (wcześniej znana jako Shared Image Gallery) będzie obsługiwać typ magazynu ZRS, jeśli zostanie określony.

vmProfile

buildVM

Program Image Builder użyje domyślnego rozmiaru jednostki SKU "Standard_D1_v2" dla obrazów gen1 i "Standard_D2ds_v4" dla obrazów gen2. Generowanie jest definiowane przez obraz określony w elemecie source. Możesz to zastąpić i może to zrobić z następujących powodów:

  1. Wykonywanie dostosowań wymagających zwiększonej ilości pamięci, procesora CPU i obsługi dużych plików (GB).
  2. Uruchamianie kompilacji systemu Windows należy użyć "Standard_D2_v2" lub równoważnego rozmiaru maszyny wirtualnej.
  3. Wymagaj izolacji maszyny wirtualnej.
  4. Dostosuj obraz, który wymaga określonego sprzętu. Na przykład dla maszyny wirtualnej z procesorem GPU potrzebny jest rozmiar maszyny wirtualnej z procesorem GPU.
  5. Wymagaj kompleksowego szyfrowania w pozostałej części maszyny wirtualnej kompilacji. Należy określić rozmiar maszyny wirtualnej kompilacji, który nie korzysta z lokalnych dysków tymczasowych.

Jest to opcjonalne.

osDiskSizeGB

Domyślnie konstruktor obrazów nie zmieni rozmiaru obrazu, będzie używać rozmiaru z obrazu źródłowego. Można zwiększyć rozmiar dysku systemu operacyjnego (Win i Linux), jest to opcjonalne, a wartość 0 oznacza pozostawienie tego samego rozmiaru co obraz źródłowy. Nie można zmniejszyć rozmiaru dysku systemu operacyjnego do mniejszego niż rozmiar obrazu źródłowego.

{
  "osDiskSizeGB": 100
},

vnetConfig

Jeśli nie określisz żadnych właściwości sieci wirtualnej, program Image Builder utworzy własną sieć wirtualną, publiczny adres IP i sieciową grupę zabezpieczeń. Publiczny adres IP jest używany do komunikacji z maszyną wirtualną kompilacji, jednak jeśli nie chcesz, aby publiczny adres IP lub program Image Builder miał dostęp do istniejących zasobów sieci wirtualnej, takich jak serwery konfiguracji (DSC, Chef, Puppet, Ansible), udziały plików, można określić sieć wirtualną. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją sieci, jest to opcjonalne.

"vnetConfig": {
    "subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>"
    }
}

Tagi

Są to pary klucz/wartość, które można określić dla wygenerowanego obrazu.

Tożsamość

Poniżej wyjaśniono dwa sposoby dodawania tożsamości przypisanych przez użytkownika.

Tożsamość przypisana przez użytkownika dla zasobu szablonu obrazu programu Azure Image Builder

Wymagane — aby program Image Builder miał uprawnienia do odczytu/zapisu obrazów, przeczytaj skrypty z usługi Azure Storage, musisz utworzyć tożsamość usługi Azure User-Assigned, która ma uprawnienia do poszczególnych zasobów. Aby uzyskać szczegółowe informacje na temat działania uprawnień programu Image Builder i odpowiednich kroków, zapoznaj się z dokumentacją.

"identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "<imgBuilderId>": {}
    }
},

Tożsamość przypisana przez użytkownika usługi Image Builder:

  • Obsługuje tylko jedną tożsamość
  • Nie obsługuje niestandardowych nazw domen

Aby dowiedzieć się więcej, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure?. Aby uzyskać więcej informacji na temat wdrażania tej funkcji, zobacz Konfigurowanie tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure.

Tożsamość przypisana przez użytkownika dla maszyny wirtualnej kompilacji konstruktora obrazów

To pole jest dostępne tylko w interfejsie API w wersjach 2021-10-01 i nowszych.

Opcjonalnie — maszyna wirtualna kompilacji konstruktora obrazów utworzona przez usługę Image Builder w ramach subskrypcji służy do kompilowania i dostosowywania obrazu. Aby maszyna wirtualna kompilacji programu Image Builder miała uprawnienia do uwierzytelniania w innych usługach, takich jak Azure Key Vault w ramach subskrypcji, należy utworzyć co najmniej jedną tożsamość przypisaną przez użytkownika platformy Azure, która ma uprawnienia do poszczególnych zasobów. Program Azure Image Builder może następnie skojarzyć te tożsamości przypisane przez użytkownika z maszyną wirtualną kompilacji. Skrypty konfiguratora uruchomione wewnątrz maszyny wirtualnej kompilacji mogą następnie pobierać tokeny dla tych tożsamości i w razie potrzeby korzystać z innych zasobów platformy Azure. Należy pamiętać, że tożsamość przypisana przez użytkownika dla programu Azure Image Builder musi mieć przypisanie roli "Operator tożsamości zarządzanej" dla wszystkich tożsamości przypisanych przez użytkownika dla programu Azure Image Builder, aby móc skojarzyć je z maszyną wirtualną kompilacji.

Uwaga

Należy pamiętać, że dla maszyny wirtualnej kompilacji programu Image Builder można określić wiele tożsamości, w tym tożsamość utworzoną dla zasobu szablonu obrazu. Domyślnie tożsamość utworzona dla zasobu szablonu obrazu nie zostanie automatycznie dodana do maszyny wirtualnej kompilacji.

"properties": {
  "vmProfile": {
  "userAssignedIdentities": [
    "/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName>"
  ]
  },
},

Tożsamość przypisana przez użytkownika maszyny wirtualnej w konstruktorze obrazów:

  • Obsługuje listę co najmniej jednej tożsamości zarządzanej przypisanej przez użytkownika do skonfigurowania na maszynie wirtualnej
  • Obsługuje scenariusze między subskrypcjami (tożsamość utworzona w jednej subskrypcji, gdy szablon obrazu jest tworzony w innej subskrypcji w ramach tej samej dzierżawy)
  • Nie obsługuje scenariuszy między dzierżawami (tożsamość utworzona w jednej dzierżawie podczas tworzenia szablonu obrazu w innej dzierżawie)

Aby dowiedzieć się więcej, zobacz Jak używać tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej platformy Azure w celu uzyskania tokenu dostępu i Jak używać tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej platformy Azure na potrzeby logowania.

Właściwości: stagingResourceGroup

Pole stagingResourceGroup zawiera informacje o przejściowej grupie zasobów utworzonej przez usługę Image Builder do użycia podczas procesu kompilacji obrazu. Jest stagingResourceGroup to opcjonalne pole dla każdej osoby, która chce mieć większą kontrolę nad grupą zasobów utworzoną przez program Image Builder podczas procesu kompilacji obrazu. Możesz utworzyć własną grupę zasobów i określić ją w stagingResourceGroup sekcji lub utworzyć narzędzie Image Builder w twoim imieniu.

"properties": {
  "stagingResourceGroup": "/subscriptions/<subscriptionID>/resourceGroups/<stagingResourceGroupName>"
}

Scenariusze tworzenia szablonów

Pole stagingResourceGroup jest pozostawione puste

stagingResourceGroup Jeśli pole nie zostanie określone lub określone z pustym ciągiem, usługa Image Builder utworzy tymczasową grupę zasobów z domyślną konwencją nazw "IT_***". W przejściowej grupie zasobów zostaną zastosowane domyślne tagi: createdBy, , imageTemplateNameimageTemplateResourceGroupName. Ponadto domyślna kontrola RBAC zostanie zastosowana do tożsamości przypisanej do zasobu szablonu narzędzia Azure Image Builder, czyli "Współautor".

Pole stagingResourceGroup jest określone z grupą zasobów, która istnieje

stagingResourceGroup Jeśli pole zostanie określone z grupą zasobów, która istnieje, usługa Image Builder sprawdzi, czy grupa zasobów jest pusta (brak zasobów wewnątrz), w tym samym regionie co szablon obrazu i ma rolę "Współautor" lub "Właściciel" RBAC zastosowaną do tożsamości przypisanej do zasobu szablonu obrazu usługi Azure Image Builder. Jeśli którekolwiek z wyżej wymienionych wymagań nie zostaną spełnione, zostanie zgłoszony błąd. W tymczasowej grupie zasobów zostaną dodane następujące tagi: usedBy, imageTemplateName, imageTemplateResourceGroupName. Istniejące tagi nie są usuwane.

Pole stagingResourceGroup jest określone z grupą zasobów, która nie istnieje

stagingResourceGroup Jeśli pole zostanie określone z grupą zasobów, która nie istnieje, usługa Image Builder utworzy tymczasową grupę zasobów o nazwie podanej stagingResourceGroup w polu. Jeśli dana nazwa nie spełnia wymagań dotyczących nazewnictwa platformy Azure dla grup zasobów, wystąpi błąd. W przejściowej grupie zasobów zostaną zastosowane domyślne tagi: createdBy, , imageTemplateNameimageTemplateResourceGroupName. Domyślnie tożsamość przypisana do zasobu szablonu obrazu usługi Azure Image Builder będzie miała zastosowaną kontrolę dostępu opartą na rolach współautora w grupie zasobów.

Usuwanie szablonu

Każda tymczasowa grupa zasobów utworzona przez usługę Image Builder zostanie usunięta po usunięciu szablonu obrazu. Obejmuje to przejściowe grupy zasobów, które zostały określone w stagingResourceGroup polu, ale nie istniały przed kompilacją obrazu.

Jeśli konstruktor obrazów nie utworzył przejściowej grupy zasobów, ale utworzył zasoby wewnątrz niej, te zasoby zostaną usunięte po usunięciu szablonu obrazu, o ile usługa Image Builder ma odpowiednie uprawnienia lub rolę wymaganą do usunięcia zasobów.

Właściwości: źródło

Sekcja source zawiera informacje o obrazie źródłowym, który będzie używany przez program Image Builder. Program Image Builder obecnie obsługuje tylko natywnie tworzenie obrazów generacji funkcji Hyper-V (Gen1) do galerii obliczeń platformy Azure (SIG) lub obrazu zarządzanego. Jeśli chcesz utworzyć obrazy gen2, musisz użyć źródłowego obrazu gen2 i rozpowszechnić go na dysku VHD. Następnie należy utworzyć obraz zarządzany na podstawie wirtualnego dysku twardego i wstrzyknąć go do obrazu SIG jako obrazu gen2.

Interfejs API wymaga SourceType , aby zdefiniować źródło kompilacji obrazu, obecnie istnieją trzy typy:

  • PlatformImage — wskazuje, że obraz źródłowy jest obrazem witryny Marketplace.
  • ManagedImage — użyj go podczas uruchamiania z zwykłego obrazu zarządzanego.
  • SharedImageVersion — jest to używane w przypadku korzystania z wersji obrazu w galerii obliczeń platformy Azure jako źródła.

Uwaga

W przypadku korzystania z istniejących obrazów niestandardowych systemu Windows można uruchomić polecenie Sysprep do 3 razy na pojedynczym obrazie systemu Windows 7 lub Windows Server 2008 R2 lub 1001 razy w jednym obrazie systemu Windows dla nowszych wersji; Aby uzyskać więcej informacji, zobacz dokumentację narzędzia sysprep .

Źródło platformyImage

Program Azure Image Builder obsługuje obrazy systemu Windows Server i klienta oraz obrazy systemu Linux Azure Marketplace, zobacz Dowiedz się więcej o narzędziu Azure Image Builder, aby uzyskać pełną listę.

"source": {
  "type": "PlatformImage",
  "publisher": "Canonical",
  "offer": "UbuntuServer",
  "sku": "18.04-LTS",
  "version": "latest"
},

Właściwości są takie same, które są używane do tworzenia maszyn wirtualnych przy użyciu interfejsu wiersza polecenia az, uruchom poniższe polecenie, aby uzyskać właściwości:

az vm image list -l westus -f UbuntuServer -p Canonical --output table --all

Można użyć latest w wersji, wersja jest oceniana podczas kompilacji obrazu, a nie podczas przesyłania szablonu. Jeśli używasz tej funkcji z miejscem docelowym usługi Azure Compute Gallery, możesz uniknąć ponownego ponownego dołączania szablonu i ponownego uruchamiania kompilacji obrazu w odstępach czasu, aby obrazy zostały ponownie utworzone na podstawie najnowszych obrazów.

Pomoc techniczna dotycząca informacji o planie na rynku

Możesz również określić informacje o planie, na przykład:

"source": {
  "type": "PlatformImage",
  "publisher": "RedHat",
  "offer": "rhel-byos",
  "sku": "rhel-lvm75",
  "version": "latest",
  "planInfo": {
    "planName": "rhel-lvm75",
    "planProduct": "rhel-byos",
    "planPublisher": "redhat"
  }

Źródło ManagedImage

Ustawia obraz źródłowy jako istniejący zarządzany obraz uogólnionego wirtualnego dysku twardego lub maszyny wirtualnej.

Uwaga

Źródłowy obraz zarządzany musi być obsługiwanym systemem operacyjnym, a obraz musi znajdować się w tej samej subskrypcji i regionie co szablon narzędzia Azure Image Builder.

"source": {
  "type": "ManagedImage",
  "imageId": "/subscriptions/<subscriptionId>/resourceGroups/{destinationResourceGroupName}/providers/Microsoft.Compute/images/<imageName>"
}

Powinna imageId to być identyfikator ResourceId obrazu zarządzanego. Użyj az image list polecenia , aby wyświetlić listę dostępnych obrazów.

Źródło SharedImageVersion

Ustawia obraz źródłowy jako istniejącą wersję obrazu w galerii obliczeń platformy Azure.

Uwaga

Źródłowa wersja udostępnionego obrazu musi być obsługiwaną wersją systemu operacyjnego, a wersja obrazu musi znajdować się w tym samym regionie co szablon programu Azure Image Builder, jeśli nie, zreplikować wersję obrazu do regionu szablonu narzędzia Image Builder.

"source": {
  "type": "SharedImageVersion",
  "imageVersionID": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/p  roviders/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageDefinitionName/versions/<imageVersion>"
}

Powinna imageVersionId to być identyfikator ResourceId wersji obrazu. Użyj polecenia az sig image-version list , aby wyświetlić listę wersji obrazów.

Właściwości: buildTimeoutInMinutes

Domyślnie program Image Builder będzie uruchamiany przez 240 minut. Po tym czasie limit czasu i zatrzymanie kompilacji obrazu, czy kompilacja obrazu zostanie ukończona. Jeśli upłynął limit czasu, zostanie wyświetlony błąd podobny do następującego:

[ERROR] Failed while waiting for packerizer: Timeout waiting for microservice to
[ERROR] complete: 'context deadline exceeded'

Jeśli nie określisz wartości buildTimeoutInMinutes lub ustawisz ją na 0, zostanie użyta wartość domyślna. Możesz zwiększyć lub zmniejszyć wartość, maksymalnie 960 minut (16 godzin). W przypadku systemu Windows nie zalecamy ustawiania tego poniżej 60 minut. Jeśli znajdziesz przekroczenie limitu czasu, przejrzyj dzienniki, aby sprawdzić, czy krok dostosowywania oczekuje na dane wejściowe użytkownika.

Jeśli okaże się, że potrzebujesz więcej czasu na ukończenie dostosowań, ustaw tę wartość na to, co uważasz za potrzebne, z niewielkim obciążeniem. Nie ustawiaj go jednak zbyt wysoko, ponieważ może być konieczne oczekiwanie na przekroczenie limitu czasu przed wyświetleniem błędu.

Uwaga

Jeśli nie ustawisz wartości na 0, minimalna obsługiwana wartość to 6 minut. Użycie wartości od 1 do 5 zakończy się niepowodzeniem.

Właściwości: dostosowywanie

Program Image Builder obsługuje wiele customizersfunkcji . Konfiguratory to funkcje używane do dostosowywania obrazu, takich jak uruchamianie skryptów lub ponowne uruchamianie serwerów.

W przypadku korzystania z polecenia customize:

  • Można użyć wielu konfiguratorów
  • Konfiguratory są wykonywane w kolejności określonej w szablonie.
  • Jeśli jeden konfigurator zakończy się niepowodzeniem, cały składnik dostosowywania zakończy się niepowodzeniem i zgłosi błąd.
  • Zaleca się dokładne przetestowanie skryptu przed użyciem go w szablonie. Debugowanie skryptu na własnej maszynie wirtualnej będzie łatwiejsze.
  • nie umieszczaj poufnych danych w skryptach.
  • Lokalizacje skryptów muszą być publicznie dostępne, chyba że używasz tożsamości zarządzanej.
"customize": [
  {
    "type": "Shell",
    "name": "<name>",
    "scriptUri": "<path to script>",
    "sha256Checksum": "<sha256 checksum>"
  },
  {
    "type": "Shell",
    "name": "<name>",
    "inline": [
        "<command to run inline>",
    ]
  }
],

Sekcja dostosowywania jest tablicą. Narzędzie Azure Image Builder będzie uruchamiane przez konfiguratory w kolejności sekwencyjnej. Każdy błąd w dowolnym konfiguratorze zakończy się niepowodzeniem procesu kompilacji.

Uwaga

Polecenia wbudowane można wyświetlić w definicji szablonu obrazu. Jeśli masz poufne informacje (w tym hasła, token SAS, tokeny uwierzytelniania itp.), należy je przenieść do skryptów w usłudze Azure Storage, gdzie dostęp wymaga uwierzytelniania.

Konfigurator powłoki

Konfigurator powłoki obsługuje uruchamianie skryptów powłoki. Skrypty powłoki muszą być publicznie dostępne lub musisz skonfigurować usługę MSI dla programu Image Builder w celu uzyskania do nich dostępu.

"customize": [
  {
    "type": "Shell",
    "name": "<name>",
    "scriptUri": "<link to script>",
    "sha256Checksum": "<sha256 checksum>"
  },
],
"customize": [
  {
    "type": "Shell",
    "name": "<name>",
    "inline": "<commands to run>"
  },
],

Obsługa systemu operacyjnego: Linux

Dostosowywanie właściwości:

  • type — Powłoka

  • name — nazwa śledzenia dostosowania

  • scriptUri — identyfikator URI do lokalizacji pliku

  • inline — tablica poleceń powłoki oddzielona przecinkami.

  • sha256Checksum — wartość sumy kontrolnej sha256 pliku, generowana lokalnie, a następnie konstruktor obrazów sprawdzi i zweryfikuje.

    Aby wygenerować algorytm sha256Checksum, użyj terminalu na komputerach Mac/Linux uruchom polecenie: sha256sum <fileName>

Uwaga

Polecenia wbudowane są przechowywane w ramach definicji szablonu obrazu, które można zobaczyć podczas zrzutu definicji obrazu. Jeśli masz poufne polecenia lub wartości (w tym hasła, token SAS, tokeny uwierzytelniania itp.), zaleca się ich przeniesienie do skryptów i użycie tożsamości użytkownika do uwierzytelniania w usłudze Azure Storage.

Uprawnienia administratora

Aby polecenia uruchamiane z uprawnieniami administratora były poprzedzone prefiksem sudo, można dodać je do skryptów lub użyć ich wbudowanych poleceń, na przykład:

"type": "Shell",
"name": "setupBuildPath",
"inline": [
    "sudo mkdir /buildArtifacts",
    "sudo cp /tmp/index.html /buildArtifacts/index.html"
]

Przykład skryptu używającego polecenia sudo, do którego można się odwoływać przy użyciu identyfikatora scriptUri:

#!/bin/bash -e

echo "Telemetry: creating files"
mkdir /myfiles

echo "Telemetry: running sudo 'as-is' in a script"
sudo touch /myfiles/somethingElevated.txt

Konfigurator ponownego uruchamiania systemu Windows

Konfigurator ponownego uruchamiania umożliwia ponowne uruchomienie maszyny wirtualnej z systemem Windows i oczekiwanie na powrót do trybu online. Umożliwia to zainstalowanie oprogramowania wymagającego ponownego uruchomienia.

"customize": [
  {
    "type": "WindowsRestart",
    "restartCommand": "shutdown /r /f /t 0",
    "restartCheckCommand": "echo Azure-Image-Builder-Restarted-the-VM  > c:\\buildArtifacts\\azureImageBuilderRestart.txt",
    "restartTimeout": "5m"
  }
],

Obsługa systemu operacyjnego: Windows

Dostosowywanie właściwości:

  • Typ: WindowsRestart
  • restartCommand — polecenie w celu wykonania ponownego uruchomienia (opcjonalnie). Wartość domyślna to 'shutdown /r /f /t 0 /c \"packer restart\"'.
  • restartCheckCommand — polecenie, aby sprawdzić, czy ponowne uruchomienie zakończyło się pomyślnie (opcjonalnie).
  • restartTimeout — limit czasu ponownego uruchomienia określony jako ciąg wielkości i jednostki. Na przykład 5m (5 minut) lub 2h (2 godziny). Wartość domyślna to: "5m"

Ponowne uruchamianie systemu Linux

Nie ma konfiguratora ponownego uruchamiania systemu Linux. Jeśli instalujesz sterowniki lub składniki wymagające ponownego uruchomienia, możesz je zainstalować i wywołać ponowne uruchomienie przy użyciu konfiguratora powłoki. Istnieje limit czasu 20 minut protokołu SSH dla maszyny wirtualnej kompilacji.

Konfigurator programu PowerShell

Konfigurator powłoki obsługuje uruchamianie skryptów programu PowerShell i wbudowane polecenie. Skrypty muszą być publicznie dostępne dla IB, aby można było uzyskać do nich dostęp.

"customize": [
  {
    "type": "PowerShell",
    "name":   "<name>",
    "scriptUri": "<path to script>",
    "runElevated": <true false>,
    "sha256Checksum": "<sha256 checksum>"
  },
  {
    "type": "PowerShell",
    "name": "<name>",
    "inline": "<PowerShell syntax to run>",
    "validExitCodes": "<exit code>",
    "runElevated": <true or false>
  }
],

Obsługa systemu operacyjnego: Windows

Dostosowywanie właściwości:

  • type — PowerShell.

  • scriptUri — identyfikator URI do lokalizacji pliku skryptu programu PowerShell.

  • inline — polecenia wbudowane do uruchomienia rozdzielone przecinkami.

  • validExitCodes — opcjonalne, prawidłowe kody, które mogą być zwracane za pomocą polecenia skryptu/wbudowanego. Pozwoli to uniknąć zgłoszonego błędu skryptu/polecenia wbudowanego.

  • runElevated — opcjonalne, logiczne, obsługa uruchamiania poleceń i skryptów z podwyższonym poziomem uprawnień.

  • sha256Checksum — wartość sumy kontrolnej sha256 pliku, generowana lokalnie, a następnie narzędzie Image Builder sprawdzi sumę kontrolną i zweryfikuje.

    Aby wygenerować sha256Checksum, przy użyciu programu PowerShell w systemie Windows Get-Hash

Konfigurator plików

Konfigurator plików umożliwia konstruktorowi obrazów pobranie pliku z repozytorium GitHub lub usługi Azure Storage. Jeśli masz potok kompilacji obrazu, który opiera się na artefaktach kompilacji, możesz ustawić konfiguratora plików do pobrania z udziału kompilacji i przenieść artefakty do obrazu.

"customize": [
  {
    "type": "File",
    "name": "<name>",
    "sourceUri": "<source location>",
    "destination": "<destination>",
    "sha256Checksum": "<sha256 checksum>"
  }
]

Obsługa systemu operacyjnego: Linux i Windows

Właściwości konfiguratora plików:

  • sourceUri — dostępny punkt końcowy magazynu, może to być usługa GitHub lub azure storage. Można pobrać tylko jeden plik, a nie cały katalog. Jeśli musisz pobrać katalog, użyj skompresowanego pliku, a następnie usuń jego kompresję przy użyciu konfiguratorów powłoki lub programu PowerShell.

Uwaga

Jeśli identyfikator sourceUri jest kontem usługi Azure Storage, niezależnie od tego, czy obiekt blob jest oznaczony jako publiczny, musisz przyznać tożsamości użytkownika zarządzanego uprawnienia do odczytu w obiekcie blob. Zobacz ten przykład , aby ustawić uprawnienia magazynu.

  • destination — jest to pełna ścieżka docelowa i nazwa pliku. Wszystkie przywoływalne ścieżki i podkatalogi muszą istnieć, użyć konfiguratorów powłoki lub programu PowerShell, aby skonfigurować je wcześniej. Aby utworzyć ścieżkę, możesz użyć konfiguratorów skryptów.

Jest to obsługiwane przez katalogi systemu Windows i ścieżki systemu Linux, ale istnieją pewne różnice:

  • System operacyjny Linux — jedyną ścieżką konstruktora obrazów, do których można zapisywać, jest /tmp.
  • Windows — brak ograniczeń ścieżki, ale ścieżka musi istnieć.

Jeśli wystąpił błąd podczas próby pobrania pliku lub umieścić go w określonym katalogu, krok dostosowywania zakończy się niepowodzeniem i będzie on znajdować się w pliku customization.log.

Uwaga

Konfigurator plików jest odpowiedni tylko dla małych plików do pobrania, < 20 MB. W przypadku większych plików do pobrania użyj skryptu lub polecenia wbudowanego, a następnie użyj kodu do pobierania plików, takich jak, Linux wget lub curl, Windows, Invoke-WebRequest.

konfigurator Windows Update

Ten konfigurator jest oparty na społeczności Windows Update Provisioner for Packer, który jest projektem open source obsługiwanym przez społeczność Packer. Firma Microsoft testuje i weryfikuje dostawcę obsługi administracyjnej za pomocą usługi Image Builder oraz będzie obsługiwać badanie problemów i pracować nad rozwiązaniem problemów, jednak projekt open source nie jest oficjalnie obsługiwany przez firmę Microsoft. Aby uzyskać szczegółową dokumentację dotyczącą Windows Update Provisioner, zobacz repozytorium projektu.

"customize": [
  {
    "type": "WindowsUpdate",
    "searchCriteria": "IsInstalled=0",
    "filters": [
      "exclude:$_.Title -like '*Preview*'",
      "include:$true"
    ],
    "updateLimit": 20
  }
],

Obsługa systemu operacyjnego: Windows

Właściwości konfiguratora:

  • type — WindowsUpdate.
  • searchCriteria — opcjonalnie określa, który typ aktualizacji jest instalowany (np. zalecane lub ważne), wartość domyślna to BrowseOnly=0 i IsInstalled=0 (zalecane).
  • filtry — opcjonalnie umożliwia określenie filtru w celu uwzględnienia lub wykluczenia aktualizacji.
  • updateLimit — opcjonalnie definiuje liczbę aktualizacji, które można zainstalować, wartość domyślna to 1000.

Uwaga

Konfigurator Windows Update może zakończyć się niepowodzeniem, jeśli istnieją zaległe ponowne uruchomienia systemu Windows lub instalacje aplikacji nadal działają, zazwyczaj ten błąd może wystąpić w pliku customization.log, System.Runtime.InteropServices.COMException (0x80240016): Exception from HRESULT: 0x80240016. Zdecydowanie zalecamy dodanie do ponownego uruchomienia systemu Windows i/lub umożliwienie aplikacjom wystarczającego czasu na ukończenie instalacji przy użyciu poleceń usypiania lub oczekiwania w poleceniach lub skryptach wbudowanych przed uruchomieniem Windows Update.

Generalize

Domyślnie narzędzie Azure Image Builder uruchamia deprovision również kod na końcu każdej fazy dostosowywania obrazu, aby uogólnić obraz. Uogólnienie to proces konfigurowania obrazu, dzięki czemu można go użyć ponownie w celu utworzenia wielu maszyn wirtualnych. W przypadku maszyn wirtualnych z systemem Windows narzędzie Azure Image Builder używa narzędzia Sysprep. W przypadku systemu Linux narzędzie Azure Image Builder uruchamia polecenie waagent -deprovision.

Polecenia konstruktora obrazów umożliwiające uogólnienie mogą nie być odpowiednie dla każdej sytuacji, dlatego narzędzie Azure Image Builder umożliwi dostosowanie tego polecenia, jeśli jest to konieczne.

Jeśli migrujesz istniejące dostosowania i używasz różnych poleceń sysprep/waagent, możesz użyć ogólnych poleceń narzędzia Image Builder, a jeśli tworzenie maszyny wirtualnej zakończy się niepowodzeniem, użyj własnych poleceń narzędzia Sysprep lub waagent.

Jeśli program Azure Image Builder pomyślnie utworzy niestandardowy obraz systemu Windows i utworzysz na jego podstawie maszynę wirtualną, okaże się, że tworzenie maszyny wirtualnej nie powiedzie się lub nie zostanie ukończone pomyślnie, należy przejrzeć dokumentację narzędzia Sysprep systemu Windows Server lub zgłosić wniosek o pomoc techniczną z zespołem pomocy technicznej ds. obsługi systemu Windows Server Sysprep, który może rozwiązać problemy i poradzić sobie z prawidłowym użyciem narzędzia Sysprep.

Domyślne polecenie sysprep

Write-Output '>>> Waiting for GA Service (RdAgent) to start ...'
while ((Get-Service RdAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...'
while ((Get-Service WindowsAzureTelemetryService) -and ((Get-Service WindowsAzureTelemetryService).Status -ne 'Running')) { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...'
while ((Get-Service WindowsAzureGuestAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Sysprepping VM ...'
if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
  Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
}
& $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /quiet /quit
while($true) {
  $imageState = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State).ImageState
  Write-Output $imageState
  if ($imageState -eq 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { break }
  Start-Sleep -s 5
}
Write-Output '>>> Sysprep complete ...'

Domyślne polecenie anulowania aprowizacji systemu Linux

WAAGENT=/usr/sbin/waagent
waagent -version 1> /dev/null 2>&1
if [ $? -eq 0 ]; then
  WAAGENT=waagent
fi
$WAAGENT -force -deprovision+user && export HISTSIZE=0 && sync

Zastępowanie poleceń

Aby zastąpić polecenia, użyj aprowizatorów skryptów programu PowerShell lub powłoki, aby utworzyć pliki poleceń z dokładną nazwą pliku i umieścić je w odpowiednich katalogach:

  • Windows: c:\DeprovisioningScript.ps1
  • Linux: /tmp/DeprovisioningScript.sh

Program Image Builder odczytuje te polecenia. Są one zapisywane w dziennikach AIB, customization.log. Zobacz rozwiązywanie problemów dotyczących zbierania dzienników.

Właściwości: weryfikowanie

Możesz użyć validate właściwości do weryfikowania obrazów platformy i wszelkich niestandardowych obrazów utworzonych niezależnie od tego, czy do ich utworzenia użyto narzędzia Azure Image Builder.

Narzędzie Azure Image Builder obsługuje tryb "Tylko weryfikacja źródła", który można ustawić przy użyciu sourceValidationOnly pola . sourceValidationOnly Jeśli pole ma wartość true, obraz określony w source sekcji zostanie zweryfikowany bezpośrednio. W celu wygenerowania nie zostanie uruchomiona żadna oddzielna kompilacja, a następnie zweryfikuj dostosowany obraz.

Pole inVMValidations pobiera listę modułów sprawdzania poprawności, które zostaną wykonane na obrazie. Narzędzie Azure Image Builder obsługuje moduły sprawdzania poprawności programu PowerShell i powłoki.

Pole continueDistributeOnFailure jest odpowiedzialne za to, czy obrazy wyjściowe będą dystrybuowane w przypadku niepowodzenia walidacji. Jeśli walidacja nie powiedzie się i to pole ma wartość false, obrazy wyjściowe nie będą dystrybuowane (jest to zachowanie domyślne). Jeśli walidacja nie powiedzie się i to pole ma wartość true, obrazy wyjściowe będą nadal dystrybuowane. Tej opcji należy używać ostrożnie, ponieważ może to spowodować, że obrazy, które nie będą dystrybuowane do użytku. W obu przypadkach (prawda lub fałsz) uruchomienie obrazu końcowego zostanie zgłoszone jako niepowodzenie w przypadku niepowodzenia weryfikacji. To pole nie ma wpływu na to, czy walidacja zakończy się pomyślnie, czy nie.

W przypadku korzystania z polecenia validate:

  • Można użyć wielu modułów sprawdzania poprawności
  • Moduły sprawdzania poprawności są wykonywane w kolejności określonej w szablonie.
  • Jeśli jeden moduł sprawdzania poprawności zakończy się niepowodzeniem, cały składnik sprawdzania poprawności zakończy się niepowodzeniem i zgłosi błąd.
  • Zaleca się dokładne przetestowanie skryptu przed użyciem go w szablonie. Debugowanie skryptu na własnej maszynie wirtualnej będzie łatwiejsze.
  • Nie umieszczaj poufnych danych w skryptach.
  • Lokalizacje skryptów muszą być publicznie dostępne, chyba że używasz tożsamości usługi zarządzanej.

Jak używać validate właściwości do weryfikowania obrazów systemu Windows

{
  "properties": {
    "validate": {
      "continueDistributeOnFailure": false,
      "sourceValidationOnly": false,
      "inVMValidations": [
        {
          "type": "PowerShell",
          "name": "test PowerShell validator inline",
          "inline": [
            "<command to run inline>"
          ],
          "validExitCodes": "<exit code>",
          "runElevated": <true or false>,
          "runAsSystem": <true or false>
        },
        {
          "type": "PowerShell",
          "name": "<name>",
          "scriptUri": "<path to script>",
          "runElevated": <true false>,
          "sha256Checksum": "<sha256 checksum>"
        }
      ]
    },
  }
}

inVMValidations Właściwości:

  • type — PowerShell.

  • name — nazwa modułu sprawdzania poprawności

  • scriptUri — identyfikator URI pliku skryptu programu PowerShell.

  • inline — tablica poleceń, które mają być uruchamiane, oddzielone przecinkami.

  • validExitCodes — opcjonalne, prawidłowe kody, które można zwrócić ze skryptu/wbudowanego polecenia, spowoduje to uniknięcie zgłoszonego błędu skryptu/polecenia wbudowanego.

  • runElevated — opcjonalne, logiczne, obsługa uruchamiania poleceń i skryptów z podwyższonym poziomem uprawnień.

  • sha256Checksum — wartość sumy kontrolnej sha256 pliku, generowana lokalnie, a następnie konstruktor obrazów sprawdzi i zweryfikuje.

    Aby wygenerować algorytm sha256Checksum, przy użyciu programu PowerShell w systemie Windows Get-Hash

Jak używać właściwości do weryfikowania obrazów systemu validate Linux

{
  "properties": {
    "validate": {
      "continueDistributeOnFailure": false,
      "sourceValidationOnly": false,
      "inVMValidations": [
        {
          "type": "Shell",
          "name": "<name>",
          "inline": [
            "<command to run inline>"
          ]
        },
        {
          "type": "Shell",
          "name": "<name>",
          "scriptUri": "<path to script>",
          "sha256Checksum": "<sha256 checksum>"
        }
      ]
    },
  }
 }

inVMValidations Właściwości:

  • type — Powłoka

  • name — nazwa modułu sprawdzania poprawności

  • scriptUri — identyfikator URI pliku skryptu

  • inline — tablica poleceń, które mają być uruchamiane, oddzielone przecinkami.

  • sha256Checksum — wartość sumy kontrolnej sha256 pliku, generowana lokalnie, a następnie konstruktor obrazów sprawdzi i zweryfikuje.

    Aby wygenerować algorytm sha256Checksum, użyj terminalu na komputerach Mac/Linux uruchom polecenie: sha256sum <fileName>

Właściwości: dystrybucja

Narzędzie Azure Image Builder obsługuje trzy cele dystrybucji:

  • managedImage — obraz zarządzany.
  • sharedImage — galeria obliczeń platformy Azure.
  • VHD — wirtualny dysk twardy na koncie magazynu.

Obraz można dystrybuować do obu typów docelowych w tej samej konfiguracji.

Uwaga

Domyślne polecenie AIB sysprep nie zawiera "/mode:vm", jednak może to być wymagane podczas tworzenia obrazów, które będą miały zainstalowaną rolę HyperV. Jeśli musisz dodać ten argument polecenia, musisz zastąpić polecenie sysprep.

Ponieważ możesz mieć więcej niż jeden element docelowy do dystrybucji, program Image Builder zachowuje stan dla każdego obiektu docelowego dystrybucji, do którego można uzyskać dostęp, wysyłając runOutputNamezapytanie do obiektu . Jest runOutputName to obiekt, który można wysyłać zapytania po dystrybucji, aby uzyskać informacje o tej dystrybucji. Można na przykład wykonać zapytanie dotyczące lokalizacji wirtualnego dysku twardego lub regionów, w których wersja obrazu została zreplikowana do lub do utworzonej wersji obrazu SIG. Jest to właściwość każdego obiektu docelowego dystrybucji. Element runOutputName musi być unikatowy dla każdego elementu docelowego dystrybucji. Oto przykład: wykonuje zapytanie dotyczące dystrybucji galerii obliczeniowej platformy Azure:

subscriptionID=<subcriptionID>
imageResourceGroup=<resourceGroup of image template>
runOutputName=<runOutputName>

az resource show \
        --ids "/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.VirtualMachineImages/imageTemplates/ImageTemplateLinuxRHEL77/runOutputs/$runOutputName"  \
        --api-version=2021-10-01

Dane wyjściowe:

{
  "id": "/subscriptions/xxxxxx/resourcegroups/rheltest/providers/Microsoft.VirtualMachineImages/imageTemplates/ImageTemplateLinuxRHEL77/runOutputs/rhel77",
  "identity": null,
  "kind": null,
  "location": null,
  "managedBy": null,
  "name": "rhel77",
  "plan": null,
  "properties": {
    "artifactId": "/subscriptions/xxxxxx/resourceGroups/aibDevOpsImg/providers/Microsoft.Compute/galleries/devOpsSIG/images/rhel/versions/0.24105.52755",
    "provisioningState": "Succeeded"
  },
  "resourceGroup": "rheltest",
  "sku": null,
  "tags": null,
  "type": "Microsoft.VirtualMachineImages/imageTemplates/runOutputs"
}

Dystrybucja: managedImage

Dane wyjściowe obrazu będą zasobem obrazu zarządzanego.

{
  "type":"managedImage",
  "imageId": "<resource ID>",
  "location": "<region>",
  "runOutputName": "<name>",
  "artifactTags": {
      "<name>": "<value>",
      "<name>": "<value>"
  }
}

Właściwości dystrybucji:

  • type — managedImage
  • imageId — identyfikator zasobu obrazu docelowego, oczekiwany format: /subscriptions/<subscriptionId>/resourceGroups/<destinationResourceGroupName>/providers/Microsoft.Compute/images/<imageName>
  • location — lokalizacja obrazu zarządzanego.
  • runOutputName — unikatowa nazwa identyfikującą dystrybucję.
  • artifactTags — opcjonalne tagi klucz\wartość określonego przez użytkownika.

Uwaga

Docelowa grupa zasobów musi istnieć. Jeśli chcesz, aby obraz był dystrybuowany do innego regionu, zwiększy to czas wdrożenia.

Dystrybucja: sharedImage

Galeria obliczeń platformy Azure to nowa usługa zarządzania obrazami, która umożliwia zarządzanie replikacją regionów obrazów, przechowywanie wersji i udostępnianie obrazów niestandardowych. Program Azure Image Builder obsługuje dystrybucję za pomocą tej usługi, dzięki czemu można dystrybuować obrazy do regionów obsługiwanych przez galerie obliczeniowe platformy Azure.

Galeria zasobów obliczeniowych platformy Azure składa się z:

  • Galeria — kontener dla wielu obrazów. Galeria jest wdrażana w jednym regionie.
  • Definicje obrazów — koncepcyjne grupowanie obrazów.
  • Wersje obrazów — jest to typ obrazu używany do wdrażania maszyny wirtualnej lub zestawu skalowania. Wersje obrazów można replikować do innych regionów, w których należy wdrożyć maszyny wirtualne.

Aby można było rozpowszechnić w galerii, musisz utworzyć galerię i definicję obrazu, zobacz Tworzenie galerii.

{
  "type": "SharedImage",
  "galleryImageId": "<resource ID>",
  "runOutputName": "<name>",
  "artifactTags": {
      "<name>": "<value>",
      "<name>": "<value>"
  },
  "replicationRegions": [
      "<region where the gallery is deployed>",
      "<region>"
  ]
}

Dystrybuowanie właściwości dla galerii:

  • type — sharedImage

  • galleryImageId — identyfikator galerii obliczeń platformy Azure, który może być określony w dwóch formatach:

    • Automatyczne przechowywanie wersji — program Image Builder wygeneruje monotoniczny numer wersji. Jest to przydatne, gdy chcesz zachować ponowne kompilowanie obrazów z tego samego szablonu: Format: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageGalleryName>.
    • Jawne przechowywanie wersji — możesz przekazać numer wersji, który ma być używany przez konstruktora obrazów. Format to: /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<sharedImageGalName>/images/<imageDefName>/versions/<version - for example: 1.1.1>
  • runOutputName — unikatowa nazwa identyfikującą dystrybucję.

  • artifactTags — opcjonalne tagi klucz\wartość określonego przez użytkownika.

  • replicationRegions — tablica regionów na potrzeby replikacji. Jednym z regionów musi być region, w którym wdrożono galerię. Dodanie regionów oznacza wzrost czasu kompilacji, ponieważ kompilacja nie zostanie ukończona, dopóki replikacja nie zostanie ukończona.

  • excludeFromLatest (opcjonalnie) Pozwala to oznaczyć wersję obrazu, która nie jest używana jako najnowsza wersja w definicji galerii, wartość domyślna to "false".

  • Parametr storageAccountType (opcjonalnie) AIB obsługuje określanie tego typu magazynu dla wersji obrazu, która ma zostać utworzona:

    • "Standard_LRS"
    • "Standard_ZRS"

Uwaga

Jeśli szablon obrazu i odwołania image definition nie znajdują się w tej samej lokalizacji, zobaczysz dodatkowy czas na utworzenie obrazów. Konstruktor obrazów obecnie nie ma location parametru dla zasobu wersji obrazu. Bierzemy go z nadrzędnego image definitionelementu . Jeśli na przykład definicja obrazu znajduje się w westus i chcesz, aby wersja obrazu została zreplikowana do eastus, obiekt blob jest kopiowany do westus, z tego zasobu wersji obrazu w westus jest tworzony, a następnie replikowany do eastus. Aby uniknąć dodatkowego czasu replikacji, upewnij się, że image definition szablon obrazu i znajduje się w tej samej lokalizacji.

Dystrybucja: wirtualny dysk twardy

Dane wyjściowe można uzyskać do wirtualnego dysku twardego. Następnie możesz skopiować wirtualny dysk twardy i użyć go do publikowania w usłudze Azure MarketPlace lub użyć go w usłudze Azure Stack.

{
  "type": "VHD",
  "runOutputName": "<VHD name>",
  "artifactTags": {
      "<name>": "<value>",
      "<name>": "<value>"
  }
}

Obsługa systemu operacyjnego: Windows i Linux

Dystrybuowanie parametrów wirtualnego dysku twardego:

  • type — VHD.
  • runOutputName — unikatowa nazwa identyfikującą dystrybucję.
  • tags — opcjonalne tagi pary par klucz określonej przez użytkownika.

Narzędzie Azure Image Builder nie zezwala użytkownikowi na określenie lokalizacji konta magazynu, ale możesz wykonać zapytanie o stan runOutputs , aby uzyskać lokalizację.

az resource show \
   --ids "/subscriptions/$subscriptionId/resourcegroups/<imageResourceGroup>/providers/Microsoft.VirtualMachineImages/imageTemplates/<imageTemplateName>/runOutputs/<runOutputName>"  | grep artifactUri

Uwaga

Po utworzeniu wirtualnego dysku twardego skopiuj go do innej lokalizacji, jak najszybciej. Wirtualny dysk twardy jest przechowywany na koncie magazynu w tymczasowej grupie zasobów utworzonej podczas przesyłania szablonu obrazu do usługi Azure Image Builder. Jeśli usuniesz szablon obrazu, utracisz wirtualny dysk twardy.

Operacje szablonu obrazu

Uruchamianie kompilacji obrazu

Aby uruchomić kompilację, musisz wywołać polecenie "Uruchom" w zasobie szablonu obrazu, przykłady run poleceń:

Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2021-10-01" -Action Run -Force
az resource invoke-action \
  --resource-group $imageResourceGroup \
  --resource-type  Microsoft.VirtualMachineImages/imageTemplates \
  -n helloImageTemplateLinux01 \
  --action Run

Anulowanie kompilacji obrazu

Jeśli uruchamiasz kompilację obrazu, która jest nieprawidłowa, oczekiwanie na wprowadzenie danych przez użytkownika lub nigdy nie zakończy się pomyślnie, możesz anulować kompilację.

Kompilację można anulować w dowolnym momencie. Jeśli faza dystrybucji została uruchomiona, nadal możesz anulować, ale musisz wyczyścić wszystkie obrazy, które mogą nie zostać ukończone. Polecenie anuluj nie czeka na zakończenie anulowania, monitorowanie lastrunstatus.runstate postępu anulowania przy użyciu tych poleceń stanu.

cancel Przykłady poleceń:

Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2021-10-01" -Action Cancel -Force
az resource invoke-action \
     --resource-group $imageResourceGroup \
     --resource-type  Microsoft.VirtualMachineImages/imageTemplates \
     -n helloImageTemplateLinux01 \
     --action Cancel

Następne kroki

Istnieją przykładowe pliki json dla różnych scenariuszy w usłudze Azure Image Builder GitHub.