Создание виртуальной машины на основе универсального образа
Статья
Создайте виртуальную машину из универсальной версии образа, хранящейся в Коллекции вычислений Azure (ранее известная как Общая коллекция образов). Сведения о том, как создать виртуальную машину на основе специализированного образа, см. здесь.
В этой статье показано, как создать виртуальную машину из обобщенного изображения:
Укажите определения образов в коллекции, используя команду az sig image-definition list для просмотра имен и идентификаторов определений.
resourceGroup=myGalleryRG
gallery=myGallery
az sig image-definition list --resource-group $resourceGroup --gallery-name $gallery --query "[].[name, id]" --output tsv
Создайте виртуальную машину, выполнив команду az vm create. Чтобы использовать последнюю версию образа, задайте значение --image в качестве идентификатора определения образа.
Этот пример предназначен для создания виртуальной машины Linux, защищенной с помощью SSH. Для Windows или для защиты виртуальной машины Linux с помощью пароля удалите --generate-ssh-keys, чтобы получить запрос на ввод пароля. Если вы хотите предоставить пароль напрямую, замените --generate-ssh-keys на --admin-password. При необходимости замените имена ресурсов в этом примере.
imgDef="/subscriptions/<subscription ID where the gallery is located>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition"
vmResourceGroup=myResourceGroup
location=eastus
vmName=myVM
adminUsername=azureuser
az group create --name $vmResourceGroup --location $location
az vm create\
--resource-group $vmResourceGroup \
--name $vmName \
--image $imgDef \
--admin-username $adminUsername \
--generate-ssh-keys
Вы также можете указать определенную версию, добавив параметр --image с идентификатором версии образа. Например, чтобы использовать образ версии 1.0.0, введите --image "/subscriptions/<subscription ID where the gallery is located>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition/versions/1.0.0".
Получив версию обобщенного образа, вы можете создать одну или несколько виртуальных машин. Используйте командлет New-AzVM.
В этом примере мы применяем идентификатор определения образа, чтобы новая виртуальная машина использовала самую последнюю версию образа. Вы также можете использовать определенную версию, добавив параметр Set-AzVMSourceImage -Id с идентификатором версии образа. Например, чтобы использовать образ версии 1.0.0, введите Set-AzVMSourceImage -Id "/subscriptions/<subscription ID where the gallery is located>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition/versions/1.0.0".
Имейте в виду, что при использовании конкретной версии образа автоматизация может завершиться ошибкой, если эта версия будет недоступна из-за того, что она была удалена из региона или полностью удалена. Для создания новой виртуальной машины рекомендуется использовать идентификатор определения образа, если только не требуется определенная версия образа.
При необходимости замените имена ресурсов в этих примерах.
Упрощенный набор параметров
Упрощенный набор параметров позволяет быстро создать виртуальную машину на основе образа. Упрощенный набор параметров использует имя виртуальной машины для автоматического создания некоторых необходимых ресурсов, таких как виртуальная сеть и общедоступный IP-адрес.
# Create some variables for the new VM
$resourceGroup = "myResourceGroup"
$location = "South Central US"
$vmName = "myVMfromImage"
# Get the image. Replace the name of your resource group, gallery, and image definition. This will create the VM from the latest image version available.
$imageDefinition = Get-AzGalleryImageDefinition `
-GalleryName myGallery `
-ResourceGroupName myResourceGroup `
-Name myImageDefinition
# Create user object
$cred = Get-Credential `
-Message "Enter a username and password for the virtual machine."
# Create a resource group
New-AzResourceGroup `
-Name $resourceGroup `
-Location $location
New-AzVM `
-ResourceGroupName $resourceGroup `
-Location $location `
-Name $vmName `
-Image $imageDefinition.Id
-Credential $cred
Полный набор параметров
Вы можете создать виртуальную машину с помощью конкретных ресурсов, используя полный набор параметров.
# Create some variables for the new VM
$resourceGroup = "myResourceGroup"
$location = "South Central US"
$vmName = "myVMfromImage"
# Get the image. Replace the name of your resource group, gallery, and image definition. This will create the VM from the latest image version available.
$imageDefinition = Get-AzGalleryImageDefinition `
-GalleryName myGallery `
-ResourceGroupName myResourceGroup `
-Name myImageDefinition
# Create user object
$cred = Get-Credential `
-Message "Enter a username and password for the virtual machine."
# Create a resource group
New-AzResourceGroup `
-Name $resourceGroup `
-Location $location
# Network pieces
$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 myNic `
-ResourceGroupName $resourceGroup `
-Location $location `
-SubnetId $vnet.Subnets[0].Id `
-PublicIpAddressId $pip.Id `
-NetworkSecurityGroupId $nsg.Id
# Create a virtual machine configuration using $imageDefinition.Id to use the latest image version.
$vmConfig = New-AzVMConfig `
-VMName $vmName `
-VMSize Standard_D1_v2 | `
Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred | `
Set-AzVMSourceImage -Id $imageDefinition.Id | `
Add-AzVMNetworkInterface -Id $nic.Id
# Create a virtual machine
New-AzVM `
-ResourceGroupName $resourceGroup `
-Location $location `
-VM $vmConfig
Теперь можно создать одну или несколько новых виртуальных машин. В этом примере создается виртуальная машина myVM в группе ресурсов myResourceGroup в регионе Восточная часть США.
Перейдите к определению образа. С помощью фильтра ресурсов можно отобразить все доступные определения изображений.
На странице определения образа выберите Создать виртуальную машину в меню в верхней части страницы.
В поле Группа ресурсов установите флажок Создать и введите в качестве имени myResourceGroup.
В качестве имени виртуальной машины введите myVM.
В поле Страна или регион выберите Восточная часть США.
В поле Параметры доступности оставьте для параметра Избыточность инфраструктуры не требуется значение по умолчанию.
В поле Образ автоматически указывается версия образа latest, если вы начали со страницы определения образа.
В поле Размер выберите размер виртуальной машины в списке доступных размеров и нажмите кнопку Выбрать.
В разделе Учетная запись администратора нужно указать имя пользователя, например azureuser, и пароль или ключ SSH. Пароль должен содержать минимум 12 символов и соответствовать заданным требованиям к сложности.
Чтобы разрешить удаленный доступ к виртуальной машине, в разделе Общедоступные входящие порты выберите Разрешить выбранные порты, а затем в раскрывающемся списке выберите SSH (22) или RDP (3389). Если вы не хотите разрешать удаленный доступ к виртуальной машине, оставьте выбранным значение Нет в поле Общедоступные входящие порты.
По завершении настройки нажмите кнопку Просмотр и создание в нижней части страницы.
После того как виртуальная машина пройдет проверку, выберите Создать в нижней части страницы, чтобы начать развертывание.
RBAC — общий доступ в организации
Если подписка, в которой находится коллекция, находится в одном клиенте, образы, общие образы с помощью RBAC можно использовать для создания виртуальных машин с помощью интерфейса командной строки и PowerShell.
Вам потребуется imageID образ, который вы хотите использовать, и необходимо убедиться, что он реплицируется в регион, где требуется создать виртуальную машину.
imgDef="/SharedGalleries/1a2b3c4d-1234-abcd-1234-1a2b3c4d5e6f-MYDIRECTSHARED/Images/myDirectDefinition/Versions/latest"
vmResourceGroup=myResourceGroup
location=westus
vmName=myVM
adminUsername=azureuser
az group create --name $vmResourceGroup --location $location
az vm create\
--resource-group $vmResourceGroup \
--name $vmName \
--image $imgDef \
--admin-username $adminUsername \
--generate-ssh-keys
Создайте виртуальную машину. Замените сведения в этом примере реальными данными. Перед созданием виртуальной машины убедитесь, что образ реплицируется в регион, в котором требуется создать виртуальную машину.
$resourceGroup = "myResourceGroup"
$location = "South Central US"
$vmName = "myVMfromImage"
# Set a variable for the image version in Tenant 1 using the full image ID of the image version
$image = "/subscriptions/<Tenant 1 subscription>/resourceGroups/<Resource group>/providers/Microsoft.Compute/galleries/<Gallery>/images/<Image definition>/versions/<version>"
# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
# Create a resource group
New-AzResourceGroup -Name $resourceGroup -Location $location
# Networking pieces
$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 Allow
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroup -Location $location `
-Name myNetworkSecurityGroup -SecurityRules $nsgRuleRDP
$nic = New-AzNetworkInterface -Name myNic -ResourceGroupName $resourceGroup -Location $location `
-SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
# Create a virtual machine configuration using the $image variable to specify the image
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize Standard_D1_v2 | `
Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred | `
Set-AzVMSourceImage -Id $image | `
Add-AzVMNetworkInterface -Id $nic.Id
# Create a virtual machine
New-AzVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig
RBAC — общий доступ из другого клиента
Если образ, который вы хотите использовать, хранится в коллекции, которая не находится в одном клиенте (каталоге), необходимо войти в каждый клиент, чтобы убедиться, что у вас есть доступ.
Вам также нужен imageID образ, который вы хотите использовать, и необходимо убедиться, что он реплицируется в регион, где требуется создать виртуальную машину. Кроме того, вам потребуется tenantID исходная коллекция и tenantID место для создания виртуальной машины.
Необходимо войти в клиент, в котором хранится образ, получить маркер доступа, а затем войти в клиент, в котором требуется создать виртуальную машину. В этом случае клиент1 находится там, где хранится образ, а клиент2 — где вы хотите создать виртуальную машину. Вот как Azure проходит проверку подлинности, доступ к изображению.
tenant1='<ID for tenant 1>'
tenant2='<ID for tenant 2>'
az account clear
az login --tenant $tenant1
az account get-access-token
az login --tenant $tenant2
az account get-access-token
Создайте виртуальную машину. Замените сведения в этом примере реальными данными. Перед созданием виртуальной машины убедитесь, что образ реплицируется в регион, в котором требуется создать виртуальную машину.
imageid="<ID of the image that you want to use>"
resourcegroup="<name for the resource group>"
location="<location where the image is replicated>"
user='<username for the VM>'
name='<name for the VM>'
az group create --location $location --resource-group $resourcegroup
az vm create \
--resource-group $resourcegroup \
--name $name \
--image $imageid \
--admin-username $user \
--generate-ssh-keys
Необходимо войти в клиент, в котором хранится образ, получить маркер доступа, а затем войти в клиент, в котором требуется создать виртуальную машину. В этом случае клиент1 находится там, где хранится образ, а клиент2 — где вы хотите создать виртуальную машину. Вот как Azure проходит проверку подлинности, доступ к изображению.
Создайте виртуальную машину. Замените сведения в этом примере реальными данными. Перед созданием виртуальной машины убедитесь, что образ реплицируется в регион, в котором требуется создать виртуальную машину.
$resourceGroup = "myResourceGroup"
$location = "South Central US"
$vmName = "myVMfromImage"
# Set a variable for the image version in Tenant 1 using the full image ID of the image version
$image = "/subscriptions/<Tenant 1 subscription>/resourceGroups/<Resource group>/providers/Microsoft.Compute/galleries/<Gallery>/images/<Image definition>/versions/<version>"
# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
# Create a resource group
New-AzResourceGroup -Name $resourceGroup -Location $location
# Networking pieces
$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 Allow
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroup -Location $location `
-Name myNetworkSecurityGroup -SecurityRules $nsgRuleRDP
$nic = New-AzNetworkInterface -Name myNic -ResourceGroupName $resourceGroup -Location $location `
-SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
# Create a virtual machine configuration using the $image variable to specify the image
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize Standard_D1_v2 | `
Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred | `
Set-AzVMSourceImage -Id $image | `
Add-AzVMNetworkInterface -Id $nic.Id
# Create a virtual machine
New-AzVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig
Коллекция сообщества
Внимание
Корпорация Майкрософт не предоставляет поддержку образов из коллекции сообщества.
Создание отчетов о проблемах с изображением сообщества
Использование образов виртуальных машин, отправленных сообществом, имеет несколько рисков. Изображения могут содержать вредоносные программы, уязвимости безопасности или нарушать интеллектуальную собственность кого-то. Чтобы создать безопасный и надежный интерфейс для сообщества, вы можете сообщить о изображениях при появлении этих проблем.
Самый простой способ сообщить о проблемах с коллекцией сообщества — использовать портал, который будет предварительно заполнять сведения для отчета:
Для проблем с ссылками или другими сведениями в полях определения изображения выберите образ сообщества отчетов.
Если версия образа содержит вредоносный код или возникают другие проблемы с определенной версией образа, выберите отчет в столбце версии отчетав таблице версий образа.
Кроме того, можно использовать следующие ссылки на проблемы с отчетом, но формы не будут заполнены.
Чтобы создать виртуальную машину, используя образ, предоставленный для коллекции сообщества, используйте уникальный идентификатор образа для --image, который будет иметь следующий формат:
Следуйте приведенным ниже инструкциям, чтобы получить список образов сообщества с помощью ИНТЕРФЕЙСА командной строки:
Step 1: Show all 'Community images' in a specific location
az sig list-community --location westus2
Step 2: Once you have the public gallery name from Step 1, Get the Image definition (Name) of the image by running the following command
az sig image-definition list-community --public-gallery-name <<public gallery name>> --location westus2
Step 3: Finally, run the following command to list different image versions available for the specific image
az sig image-version list-community --public-gallery-name <<galleryname>> --gallery-image-definition <<image name>> --location westus2
Чтобы получить общедоступное имя коллекции сообщества на портале. Выберите Виртуальные машины>Создать>Виртуальная машина Azure>Образ>Просмотреть все образы>Образы сообщества>Имя общедоступной коллекции.
В этом примере мы создадим виртуальную машину на основе образа Linux и создадим ключи SSH для проверки подлинности.
imgDef="/CommunityGalleries/ContosoImages-1a2b3c4d-1234-abcd-1234-1a2b3c4d5e6f>/Images/myLinuxImage/Versions/latest"
vmResourceGroup=myResourceGroup
location=eastus
vmName=myVM
adminUsername=azureuser
az group create --name $vmResourceGroup --location $location
az vm create\
--resource-group $vmResourceGroup \
--name $vmName \
--image $imgDef \
--admin-username $adminUsername \
--generate-ssh-keys
При использовании образа сообщества вам необходимо будет принять юридические условия. Сообщение выглядит следующим образом:
To create the VM from community gallery image, you must accept the license agreement and privacy statement: http://contoso.com. (If you want to accept the legal terms by default, please use the option '--accept-term' when creating VM/VMSS) (Y/n):
Получите идентификатор версии образа. Значение будет использоваться в запросе на развертывание виртуальной машины.
GET
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/Locations/{location}/CommunityGalleries/{CommunityGalleryPublicName}/Images/{galleryImageName}/Versions/{1.0.0}?api-version=2021-07-01
Выберите изображение из списка доступных изображений. Фильтр можно использовать для сужения списка по мере необходимости.
На странице образа выберите "Создать виртуальную машину". Откроется страница "Создание виртуальной машины " со значением "Изображение ".
На вкладке Основные сведения в разделе Сведения о проекте убедитесь, что выбрана правильная подписка, а затем выберите Создать группу ресурсов или выберите группу в раскрывающемся списке.
В разделе Сведения об экземпляре укажите имя в поле Имя виртуальной машины.
Заполните остальные параметры и нажмите кнопку Просмотр и создание в нижней части страницы.
На странице Создание виртуальной машины отображаются сведения о создаваемой виртуальной машине. Когда будете готовы, нажмите Создать.
Чтобы опубликовать образы в коллекции, к которой предоставлен прямой доступ, на этапе предварительной версии, необходимо зарегистрироваться на странице https://aka.ms/directsharedgallery-preview. Создавать виртуальные машины из коллекции, к которой предоставлен прямой доступ, могут все пользователи Azure.
На этапе предварительной версии необходимо создать коллекцию со свойством sharingProfile.permissions со значением Groups. При использовании CLI для создания коллекции воспользуйтесь параметром --permissions groups. Существующую коллекцию использовать нельзя; в настоящее время свойство обновить нельзя.
Чтобы создать виртуальную машину с использованием изображения, предоставленного вашей подписке или арендатору, вам потребуется уникальный идентификатор изображения в следующем формате:
Чтобы найти uniqueID коллекции, к которой вам предоставлен общий доступ, используйте az sig list-shared. В этом примере мы ищем коллекции в западном регионе США.
region=westus
az sig list-shared --location $region --query "[].name" -o tsv
Используйте имя коллекции, чтобы найти доступные изображения. В этом примере мы отобразим список всех образов в западной части США, а также по имени, уникальный идентификатор, необходимый для создания виртуальной машины, операционную систему и состояние ОС.
galleryName="1a2b3c4d-1234-abcd-1234-1a2b3c4d5e6f-myDirectShared"
az sig image-definition list-shared \
--gallery-unique-name $galleryName \
--location $region \
--query [*]."{Name:name,ID:uniqueId,OS:osType,State:osState}" -o table
Id Используйте выходные данные, добавленные для /Versions/latest использования последней версии, в качестве значения для --image создания виртуальной машины. В этом примере мы создадим виртуальную машину из образа Linux, который напрямую предоставлен нам, и создадим ключи SSH для проверки подлинности.
imgDef="/SharedGalleries/1a2b3c4d-1234-abcd-1234-1a2b3c4d5e6f-MYDIRECTSHARED/Images/myDirectDefinition/Versions/latest"
vmResourceGroup=myResourceGroup
location=westus
vmName=myVM
adminUsername=azureuser
az group create --name $vmResourceGroup --location $location
az vm create\
--resource-group $vmResourceGroup \
--name $vmName \
--image $imgDef \
--admin-username $adminUsername \
--generate-ssh-keys
Получите идентификатор версии образа. Значение будет использоваться в запросе на развертывание виртуальной машины.
GET
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/Locations/{location}/sharedGalleries/{galleryUniqueName}/Images/{galleryImageName}/Versions/{1.0.0}?api-version=2021-07-01
Известная проблема: в портал Azure, если выбрать регион, выберите изображение, а затем измените регион, вы получите сообщение об ошибке: "Вы можете создать виртуальную машину только в регионах репликации этого образа", даже если образ реплицируется в этом регионе. Чтобы устранить ошибку, выберите другой регион, а затем снова выберите нужный регион. Если образ доступен, сообщение об ошибке не отображается.
Кроме того, можно использовать Azure CLI для проверки того, к каким образам вам предоставлен общий доступ. Например, можно использовать az sig list-shared --location westus для просмотра общих изображений в регионе "Западная часть США".
В поле поиска введите виртуальные машины.
В разделе Службы выберите Виртуальные машины.
На странице Виртуальные машины выберите Создать и щелкните Виртуальная машина. Откроется страница Создание виртуальной машины.
На вкладке Основные сведения в разделе Сведения о проекте убедитесь, что выбрана правильная подписка, а затем выберите Создать группу ресурсов или выберите группу в раскрывающемся списке.
В разделе Сведения об экземпляре укажите имя в поле Имя виртуальной машины.
Для параметра Тип безопасности необходимо выбрать параметр Стандартный.
Для образа выберите Просмотреть все образы. Откроется страница выбора изображения .
В меню слева в разделе Другие элементы выберите Direct Shared Images (PREVIEW) (Образы с прямым доступом (предварительная версия)). Другие элементы | Откроется страница прямых общих образов (предварительная версия).
Область в этом разделе имеет значение "Подписка" по умолчанию, измените область на "Клиент", если вы не видите изображения и щелкните за пределами поля, чтобы просмотреть список образов, общих для всего клиента.
Выберите образ в списке. Убедитесь, что состояние ОС является обобщенным. Если требуется использовать специализированный образ, см. раздел Создание виртуальной машины на основе специализированной версии образа. В зависимости от выбранного образа, регион, в котором будет создана виртуальная машина, изменится в соответствии с образом.
Заполните остальные параметры и нажмите кнопку Просмотр и создание в нижней части страницы.
На странице Создание виртуальной машины отображаются сведения о создаваемой виртуальной машине. Когда будете готовы, нажмите Создать.