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čujevmSize
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.
Odstraňte šablonu Image Builderu virtuálního počítače.
az resource delete \ --resource-group $imageResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateWin01
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
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.