我正在使用" new"用于python的azure sdk: https://github.com/Azure/azure-sdk-for-python
Linked是一个用作文档的用法示例: https://azure-sdk-for-python.readthedocs.org/en/latest/resourcemanagementcomputenetwork.html
在此示例中,他们从公共图像创建实例,提供图像发布者,商品,SKU和版本。 我想从自定义图像创建一个实例(存在于"我的图像"在天蓝色的门户网站上),我只有一个图像名称,没有发布者或SKU。
支持吗?我该怎么办?
注意:如果可能的话,我想避免使用azure CLI命令,只依赖于python库。
谢谢!
答案 0 :(得分:1)
如果其他人遇到此问题,SourceImage实际上是旧方法(ASM)。对于ARM,以下内容将初始化StorageProfile以提供对自定义映像的引用:
storage_profile = azure.mgmt.compute.StorageProfile(
os_disk=azure.mgmt.compute.OSDisk(
caching=azure.mgmt.compute.CachingTypes.none,
create_option=azure.mgmt.compute.DiskCreateOptionTypes.from_image,
name=OS_DISK_NAME,
virtual_hard_disk=azure.mgmt.compute.VirtualHardDisk(
uri='https://{0}.blob.core.windows.net/vhds/{1}.vhd'.
format(STORAGE_NAME, OS_DISK_NAME),
),
operating_system_type='Linux',
source_image=azure.mgmt.compute.VirtualHardDisk(
uri='https://{0}.blob.core.windows.net/{1}/{2}'.format(
STORAGE_NAME, CUSTOM_IMAGE_PATH, CUSTOM_IMAGE_VHD),
),
),
)
以上两个非常重要的事情是' operating_system_type'以及创建source_image的方式。
答案 1 :(得分:0)
Azure SDK for Python支持使用自定义映像创建VM。
如果Azure门户上的“我的图像”中存在自定义图像,则可以使用Azure Python在存储上创建具有VHD图像OS_DISK_NAME
和STORAGE_NAME
参数的VM SDK。
Azure Python SDK API包装相同的功能REST API。请参阅REST API文档“创建或更新虚拟机”https://msdn.microsoft.com/en-us/library/azure/mt163591.aspx,创建具有映像的VM只需要osDisk
存储配置文件元素(请参阅下面的快照)。
因此,示例代码仅部分修改(删除image_reference
部分),如下所示:
# 4. Create the virtual machine
result = compute_client.virtual_machines.create_or_update(
GROUP_NAME,
azure.mgmt.compute.VirtualMachine(
location=REGION,
name=VM_NAME,
os_profile=azure.mgmt.compute.OSProfile(
admin_username=ADMIN_USERNAME,
admin_password=ADMIN_PASSWORD,
computer_name=COMPUTER_NAME,
),
hardware_profile=azure.mgmt.compute.HardwareProfile(
virtual_machine_size=azure.mgmt.compute.VirtualMachineSizeTypes.standard_a0
),
network_profile=azure.mgmt.compute.NetworkProfile(
network_interfaces=[
azure.mgmt.compute.NetworkInterfaceReference(
reference_uri=nic_id,
),
],
),
storage_profile=azure.mgmt.compute.StorageProfile(
os_disk=azure.mgmt.compute.OSDisk(
caching=azure.mgmt.compute.CachingTypes.none,
create_option=azure.mgmt.compute.DiskCreateOptionTypes.from_image,
name=OS_DISK_NAME, // Your VHD name
virtual_hard_disk=azure.mgmt.compute.VirtualHardDisk(
uri='https://{0}.blob.core.windows.net/vhds/{1}.vhd'.format(
STORAGE_NAME, // your storage account name
OS_DISK_NAME, // Your VHD name
),
),
)
),
),
)