Vytvoření virtuálního počítače s Windows pomocí Azure VM Image Builderu

Platí pro: ✔️ Virtuální počítače s Windows

V tomto článku se dozvíte, jak vytvořit přizpůsobenou image Windows pomocí Azure VM Image Builderu. V příkladu v tomto článku se k přizpůsobení image používají vlastníci :

  • PowerShell (ScriptUri): Stáhněte a spusťte skript PowerShellu.
  • Restartování systému Windows: Restartuje virtuální počítač.
  • PowerShell (vložený): Spustí konkrétní příkaz. V tomto příkladu vytvoří adresář na virtuálním počítači pomocí mkdir c:\\buildActions.
  • Soubor: Zkopíruje soubor z GitHubu na virtuální počítač. Tento příklad zkopíruje index.md na c:\buildArtifacts\index.html virtuální počítač.
  • buildTimeoutInMinutes: Určuje čas sestavení v minutách. Výchozí hodnota je 240 minut, což můžete zvýšit, abyste umožnili delší spouštění sestavení. Minimální povolená hodnota je 6 minut. Hodnoty kratší než 6 minut způsobí chyby.
  • vmProfile: Určuje vmSize vlastnosti sítě a vlastnosti sítě.
  • osDiskSizeGB: Dá se použít ke zvětšení velikosti obrázku.
  • identity. Poskytuje identitu pro Tvůrce imagí virtuálních počítačů, která se má použít během sestavování.

Ke konfiguraci obrázku použijte následující ukázkovou šablonu JSON: helloImageTemplateWin.json.

Poznámka:

Uživatelé Windows můžou spouštět následující příklady Azure CLI v Azure Cloud Shellu pomocí bashe.

Registrace poskytovatelů

Pokud chcete používat Image Builder virtuálního počítače, musíte tuto funkci zaregistrovat. Zkontrolujte registraci spuštěním následujících příkazů:

az provider show -n Microsoft.VirtualMachineImages | grep registrationState
az provider show -n Microsoft.KeyVault | grep registrationState
az provider show -n Microsoft.Compute | grep registrationState
az provider show -n Microsoft.Storage | grep registrationState
az provider show -n Microsoft.Network | grep registrationState
az provider show -n Microsoft.ContainerInstance -o json | grep registrationState

Pokud výstup neřekne zaregistrovaný, spusťte následující příkazy:

az provider register -n Microsoft.VirtualMachineImages
az provider register -n Microsoft.Compute
az provider register -n Microsoft.KeyVault
az provider register -n Microsoft.Storage
az provider register -n Microsoft.Network
az provider register -n Microsoft.ContainerInstance

Nastavit proměnné

Protože budete opakovaně používat některé části informací, vytvořte některé proměnné pro uložení těchto informací:

# Resource group name - we're using myImageBuilderRG in this example
imageResourceGroup='myWinImgBuilderRG'
# Region location
location='WestUS2'
# Run output name
runOutputName='aibWindows'
# The name of the image to be created
imageName='aibWinImage'

Vytvořte proměnnou pro ID předplatného:

subscriptionID=$(az account show --query id --output tsv)

Vytvoření skupiny prostředků

Pokud chcete uložit artefakt šablony konfigurace image a image, použijte následující skupinu prostředků:

az group create -n $imageResourceGroup -l $location

Vytvoření identity přiřazené uživatelem a nastavení oprávnění pro skupinu prostředků

Image Builder virtuálního počítače používá zadanou identitu uživatele k vložení image do skupiny prostředků. V tomto příkladu vytvoříte definici role Azure s konkrétními oprávněními pro distribuci image. Definice role se pak přiřadí identitě uživatele.

Vytvoření spravované identity přiřazené uživatelem a udělení oprávnění

Vytvořte identitu přiřazenou uživatelem, aby nástroj Image Builder virtuálního počítače mohl získat přístup k účtu úložiště, ve kterém je skript uložený.

identityName=aibBuiUserId$(date +'%s')
az identity create -g $imageResourceGroup -n $identityName

# Get the identity ID
imgBuilderCliId=$(az identity show -g $imageResourceGroup -n $identityName --query clientId -o tsv)

# Get the user identity URI that's needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$identityName

# Download the preconfigured role definition example
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleImageCreation.json -o aibRoleImageCreation.json

imageRoleDefName="Azure Image Builder Image Def"$(date +'%s')

# Update the definition
sed -i -e "s%<subscriptionID>%$subscriptionID%g" aibRoleImageCreation.json
sed -i -e "s%<rgName>%$imageResourceGroup%g" aibRoleImageCreation.json
sed -i -e "s%Azure Image Builder Service Image Creation Role%$imageRoleDefName%g" aibRoleImageCreation.json

# Create role definitions
az role definition create --role-definition ./aibRoleImageCreation.json

# Grant a role definition to the user-assigned identity
az role assignment create \
    --assignee $imgBuilderCliId \
    --role "$imageRoleDefName" \
    --scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup

Stažení šablony konfigurace image

Vytvořili jsme parametrizovanou šablonu konfigurace image, kterou můžete vyzkoušet. Stáhněte si ukázkový soubor JSON a nakonfigurujte ho s proměnnými, které jste nastavili dříve.

curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/quickquickstarts/0_Creating_a_Custom_Windows_Managed_Image/helloImageTemplateWin.json -o helloImageTemplateWin.json

sed -i -e "s%<subscriptionID>%$subscriptionID%g" helloImageTemplateWin.json
sed -i -e "s%<rgName>%$imageResourceGroup%g" helloImageTemplateWin.json
sed -i -e "s%<region>%$location%g" helloImageTemplateWin.json
sed -i -e "s%<imageName>%$imageName%g" helloImageTemplateWin.json
sed -i -e "s%<runOutputName>%$runOutputName%g" helloImageTemplateWin.json
sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateWin.json

Tento příklad můžete upravit v terminálu pomocí textového editoru, například vi.

vi helloImageTemplateWin.json

Poznámka:

Pro zdrojovou image vždy zadejte verzi. Jako verzi nemůžete zadat latest .

Pokud přidáte nebo změníte skupinu prostředků, do které je image distribuovaná, ujistěte se, že jsou oprávnění nastavená ve skupině prostředků.

Vytvoření image

Spuštěním následujících příkazů odešlete konfiguraci image do služby VM Image Builder:

az resource create \
    --resource-group $imageResourceGroup \
    --properties @helloImageTemplateWin.json \
    --is-full-object \
    --resource-type Microsoft.VirtualMachineImages/imageTemplates \
    -n helloImageTemplateWin01

Po dokončení se do konzoly vrátí zpráva o úspěchu a v nástroji Image Builder se vytvoří šablona konfigurace VM Image Builderu $imageResourceGroup.

Na pozadí vytvoří Image Builder virtuálního počítače také pracovní skupinu prostředků ve vašem předplatném. Tato skupina prostředků se používá k sestavení image v následujícím formátu: IT_<DestinationResourceGroup>_<TemplateName>.

Poznámka:

Pokud je odstranění potřeba, neodstraňovat přípravnou skupinu prostředků přímo. Nejprve odstraňte artefakt šablony obrázku, který následně odstraní pracovní skupinu prostředků. V opačném případě může šablona obrázku zadat stav selhání.

Pokud služba hlásí chybu při odeslání šablony konfigurace image, postupujte takto:

  • Viz Řešení potíží se službou Azure VM Image Builder.
  • Než se pokusíte šablonu znovu odeslat, odstraňte ji spuštěním následujících příkazů:
az resource delete \
    --resource-group $imageResourceGroup \
    --resource-type Microsoft.VirtualMachineImages/imageTemplates \
    -n helloImageTemplateWin01

Spuštění sestavení image

Spusťte proces vytváření imagí pomocí příkazu az resource invoke-action.

az resource invoke-action \
     --resource-group $imageResourceGroup \
     --resource-type  Microsoft.VirtualMachineImages/imageTemplates \
     -n helloImageTemplateWin01 \
     --action Run

Počkejte, až se sestavení dokončí.

Pokud dojde k nějakým chybám, přečtěte si téma Řešení potíží se službou Azure VM Image Builder.

Vytvoření virtuálního počítače

Vytvořte virtuální počítač pomocí image, kterou jste vytvořili. V následujícím kódu nahraďte <heslo> vlastním heslem pro uživatele aibuser na virtuálním počítači.

az vm create \
  --resource-group $imageResourceGroup \
  --name aibImgWinVm00 \
  --admin-username aibuser \
  --admin-password <password> \
  --image $imageName \
  --location $location

Ověření vlastního nastavení

Vytvořte připojení ke vzdálené ploše k virtuálnímu počítači pomocí uživatelského jména a hesla, které jste nastavili při vytváření virtuálního počítače. Na virtuálním počítači otevřete okno příkazového řádku a zadejte:

dir c:\

Během přizpůsobení image se vytvoří následující dva adresáře:

  • buildActions
  • buildArtifacts

Vyčištění prostředků

Až budete hotovi, odstraňte prostředky, které jste vytvořili.

  1. Odstraňte šablonu Image Builderu virtuálního počítače.

    az resource delete \
        --resource-group $imageResourceGroup \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateWin01
    
  2. Odstraňte přiřazení role, definici role a identitu uživatele.

    az role assignment delete \
        --assignee $imgBuilderCliId \
        --role "$imageRoleDefName" \
        --scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup
    
    az role definition delete --name "$imageRoleDefName"
    
    az identity delete --ids $imgBuilderId
    
  3. Odstraňte skupinu prostředků image.

    az group delete -n $imageResourceGroup
    

Další kroky

Další informace o součástech souboru JSON, které tento článek používá, najdete v referenčních informacích k šabloně Image Builderu virtuálního počítače.