Meglévő Azure-beli virtuális hálózat elérése az Azure VM Image Builder for Linux rendszerű virtuális gépekhez
A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek rugalmas méretezési ✔️ csoportjai
Ez a cikk bemutatja, hogyan hozhat létre alapszintű, testre szabott Linux-rendszerképet az Azure VM Image Builder használatával, amely hozzáféréssel rendelkezik a virtuális hálózaton lévő meglévő erőforrásokhoz. A létrehozott build virtuális gép (VM) az előfizetésben megadott új vagy meglévő virtuális hálózaton lesz üzembe helyezve. Meglévő Azure-beli virtuális hálózat használatakor a VM Image Builder nem igényel nyilvános hálózati kapcsolatot.
Előfeltételek
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
Változók és engedélyek beállítása
Ehhez a feladathoz ismétlődően használ néhány információt. Hozzon létre néhány változót az információk tárolásához.
# set your environment variables here!!!!
# destination image resource group
imageResourceGroup=aibImageRG01
# location (see possible locations in main docs)
location=WestUS2
# your subscription
# get the current subID : 'az account show | grep id'
subscriptionID=$(az account show --query id --output tsv)
# name of the image to be created
imageName=aibCustomLinuxImg01
# image distribution metadata reference name
runOutputName=aibCustLinManImg01ro
# VNET properties (update to match your existing VNET, or leave as-is for demo)
# VNET name
vnetName=myexistingvnet01
# subnet name
subnetName=subnet01
# VNET resource group name
# NOTE! The VNET must always be in the same region as the Azure Image Builder service region.
vnetRgName=existingVnetRG
# Existing Subnet NSG Name or the demo will create it
nsgName=aibdemoNsg
Hozza létre az erőforráscsoportot.
az group create -n $imageResourceGroup -l $location
Hálózatkezelés beállítása
Ha nem rendelkezik meglévő virtuális hálózattal, alhálózattal vagy hálózati biztonsági csoporttal (NSG), az alábbi szkripttel hozzon létre egyet.
# Create a resource group
az group create -n $vnetRgName -l $location
# Create VNET
az network vnet create \
--resource-group $vnetRgName \
--name $vnetName --address-prefix 10.0.0.0/16 \
--subnet-name $subnetName --subnet-prefix 10.0.0.0/24
# Create base NSG to simulate an existing NSG
az network nsg create -g $vnetRgName -n $nsgName
az network vnet subnet update \
--resource-group $vnetRgName \
--vnet-name $vnetName \
--name $subnetName \
--network-security-group $nsgName
# NOTE! The virtual network must always be in the same region as the Azure Image Builder service region.
NSG-szabály hozzáadása
Ez a szabály lehetővé teszi a virtuális gép Képszerkesztőjének terheléselosztója és a proxy virtuális gép közötti kapcsolatot. A 60001-s port Linuxhoz, a 60000-hez pedig Windowshoz készült. A proxy virtuális gép a buildelési virtuális géphez a Linux 22-s portjával vagy a Windows 5986-os portjával csatlakozik.
az network nsg rule create \
--resource-group $vnetRgName \
--nsg-name $nsgName \
-n AzureImageBuilderNsgRule \
--priority 400 \
--source-address-prefixes AzureLoadBalancer \
--destination-address-prefixes VirtualNetwork \
--destination-port-ranges 60000-60001 --direction inbound \
--access Allow --protocol Tcp \
--description "Allow Image Builder Private Link Access to Proxy VM"
Privát szolgáltatási szabályzat letiltása az alhálózaton
Ennek módja az alábbi:
az network vnet subnet update \
--name $subnetName \
--resource-group $vnetRgName \
--vnet-name $vnetName \
--disable-private-link-service-network-policies true
További információ: Azure VM Image Builder hálózatkezelési lehetőségek.
A példasablon módosítása és szerepkör létrehozása
A hálózatkezelés konfigurálása után módosíthatja a példasablont, és létrehozhat egy szerepkört. Ennek módja az alábbi:
# download the example and configure it with your vars
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/quickquickstarts/1a_Creating_a_Custom_Linux_Image_on_Existing_VNET/existingVNETLinux.json -o existingVNETLinux.json
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleNetworking.json -o aibRoleNetworking.json
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleImageCreation.json -o aibRoleImageCreation.json
sed -i -e "s/<subscriptionID>/$subscriptionID/g" existingVNETLinux.json
sed -i -e "s/<rgName>/$imageResourceGroup/g" existingVNETLinux.json
sed -i -e "s/<region>/$location/g" existingVNETLinux.json
sed -i -e "s/<imageName>/$imageName/g" existingVNETLinux.json
sed -i -e "s/<runOutputName>/$runOutputName/g" existingVNETLinux.json
sed -i -e "s/<vnetName>/$vnetName/g" existingVNETLinux.json
sed -i -e "s/<subnetName>/$subnetName/g" existingVNETLinux.json
sed -i -e "s/<vnetRgName>/$vnetRgName/g" existingVNETLinux.json
sed -i -e "s/<subscriptionID>/$subscriptionID/g" aibRoleImageCreation.json
sed -i -e "s/<rgName>/$imageResourceGroup/g" aibRoleImageCreation.json
sed -i -e "s/<subscriptionID>/$subscriptionID/g" aibRoleNetworking.json
sed -i -e "s/<vnetRgName>/$vnetRgName/g" aibRoleNetworking.json
Engedélyek beállítása az erőforráscsoporton
A VM Image Builder a megadott felhasználói identitással injektálja a rendszerképet az Azure Compute Gallerybe. Ebben a példában létrehoz egy Azure-szerepkördefiníciót, amely elosztja a képet a katalógusban. A szerepkördefiníció ezután hozzá lesz rendelve a felhasználói identitáshoz.
# create user assigned identity for image builder
identityName=aibBuiUserId$(date +'%s')
az identity create -g $imageResourceGroup -n $identityName
# get identity id
imgBuilderCliId=$(az identity show -g $imageResourceGroup -n $identityName --query clientId -o tsv)
# get the user identity URI, needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$identityName
# update the template
sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" existingVNETLinux.json
# make role name unique, to avoid clashes in the same Azure Active Directory domain
imageRoleDefName="Azure Image Builder Image Def"$(date +'%s')
netRoleDefName="Azure Image Builder Network Def"$(date +'%s')
# update the definitions
sed -i -e "s/Azure Image Builder Service Image Creation Role/$imageRoleDefName/g" aibRoleImageCreation.json
sed -i -e "s/Azure Image Builder Service Networking Role/$netRoleDefName/g" aibRoleNetworking.json
Ahelyett, hogy alacsonyabb részletességet és nagyobb jogosultságot biztosít a VM Image Buildernek, két szerepkört is létrehozhat. Az egyik szerepkör engedélyt ad a szerkesztőnek egy rendszerkép létrehozására, a másik pedig lehetővé teszi a build virtuális gép és a terheléselosztó csatlakoztatását a virtuális hálózathoz.
# create role definitions
az role definition create --role-definition ./aibRoleImageCreation.json
az role definition create --role-definition ./aibRoleNetworking.json
# grant role definition to the user assigned identity
az role assignment create \
--assignee $imgBuilderCliId \
--role "$imageRoleDefName" \
--scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup
az role assignment create \
--assignee $imgBuilderCliId \
--role "$netRoleDefName" \
--scope /subscriptions/$subscriptionID/resourceGroups/$vnetRgName
További információ: Azure VM Image Builder-engedélyek konfigurálása az Azure CLI használatával vagy az Azure VM Image Builder-engedélyek konfigurálása a PowerShell használatával.
A rendszerkép létrehozása
Küldje el a képkonfigurációt a VM Image Buildernek.
az resource create \
--resource-group $imageResourceGroup \
--properties @existingVNETLinux.json \
--is-full-object \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n existingVNETLinuxTemplate01
# Wait approximately 1-3 mins (validation, permissions etc.)
Indítsa el a rendszerkép összeállítását.
az resource invoke-action \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n existingVNETLinuxTemplate01 \
--action Run
# Wait approximately 15 mins
A rendszerkép létrehozása és replikálása mindkét régióba eltarthat. Várjon, amíg ez a rész befejeződik, mielőtt továbblépne egy virtuális gép létrehozására.
Virtuális gép létrehozása
Hozzon létre egy virtuális gépet a VM Image Builder által létrehozott képverzióból.
az vm create \
--resource-group $imageResourceGroup \
--name aibImgVm0001 \
--admin-username aibuser \
--image $imageName \
--location $location \
--generate-ssh-keys
A Secure Shell (SSH) használatával lépjen be a virtuális gépre.
ssh aibuser@<publicIpAddress>
Amint létrejött az SSH-kapcsolat, látnia kell, hogy a rendszerkép a nap üzenetével lett testre szabva!
*******************************************************
** This VM was built from the: **
** !! AZURE VM IMAGE BUILDER Custom Image !! **
** You have just been Customized :-) **
*******************************************************
Az erőforrások eltávolítása
Ha újra szeretné használni a rendszerkép verzióját, hogy egy új verziót hozzon létre ugyanannak a rendszerképnek, hagyja ki a következő lépéseket, és folytassa az Azure VM Image Builder használatával egy másik képverzió létrehozásához.
Az alábbiakban a létrehozott rendszerképet, valamint az összes többi erőforrásfájlt töröljük. Az erőforrások törlése előtt győződjön meg arról, hogy befejezte az üzembe helyezést.
A katalógus erőforrásainak törlésekor törölnie kell az összes képverziót, mielőtt törölheti a létrehozásukhoz használt képdefiníciót. Katalógus törléséhez először törölnie kell a katalógus összes képdefinícióját.
Törölje a VM Image Builder-sablont:
az resource delete \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n existingVNETLinuxTemplate01
Engedélyek hozzárendeléseinek, szerepköreinek és identitásának törlése:
az role assignment delete \
--assignee $imgBuilderCliId \
--role $imageRoleDefName \
--scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup
az role assignment delete \
--assignee $imgBuilderCliId \
--role $netRoleDefName \
--scope /subscriptions/$subscriptionID/resourceGroups/$vnetRgName
az role definition delete --name "$imageRoleDefName"
az role definition delete --name "$netRoleDefName"
az identity delete --ids $imgBuilderId
Törölje az erőforráscsoportot:
az group delete -n $imageResourceGroup
Ha létrehozott egy virtuális hálózatot ehhez a rövid útmutatóhoz, törölheti a virtuális hálózatot, ha már nincs használatban.