如何通过Azure Python SDK创建VM时指定可用区
在Azure Python SDK中创建虚拟机时指定可用区的方法
你提到的begin_start方法是用于启动已存在的虚拟机,而非创建虚拟机。创建或更新虚拟机需要使用VirtualMachinesOperations类中的begin_create_or_update方法,该方法完全支持指定可用区,和Azure CLI的功能一致。
指定可用区的具体步骤:
在构造VirtualMachine对象参数时,除了指定location(区域),还需设置zone属性为目标可用区的编号(字符串类型,例如"1"、"2"或"3")。
代码示例:
from azure.mgmt.compute import ComputeManagementClient from azure.mgmt.compute.models import ( VirtualMachine, VirtualMachineHardwareProfile, VirtualMachineStorageProfile, VirtualMachineOSProfile, VirtualMachineNetworkProfile, NetworkInterfaceReference ) # 初始化客户端(需提前完成身份验证,获取credential和subscription_id) compute_client = ComputeManagementClient(credential, subscription_id) # 构建虚拟机配置参数 vm_config = VirtualMachine( location="eastus", zone="1", # 这里指定可用区 hardware_profile=VirtualMachineHardwareProfile(vm_size="Standard_D2s_v3"), storage_profile=VirtualMachineStorageProfile( image_reference={ "publisher": "Canonical", "offer": "0001-com-ubuntu-server-jammy", "sku": "22_04-lts", "version": "latest" } ), os_profile=VirtualMachineOSProfile( computer_name="my-zone-vm", admin_username="adminuser", admin_password="StrongPass123!" # 生产环境推荐使用SSH密钥替代密码 ), network_profile=VirtualMachineNetworkProfile( network_interfaces=[ NetworkInterfaceReference( id="/subscriptions/{你的订阅ID}/resourceGroups/{资源组名}/providers/Microsoft.Network/networkInterfaces/{网卡名}" ) ] ) ) # 发起创建虚拟机请求 poller = compute_client.virtual_machines.begin_create_or_update( resource_group_name="你的资源组名", vm_name="my-zone-vm", parameters=vm_config ) # 等待操作完成 vm_result = poller.result()
补充说明:
如果需要修改已存在虚拟机的可用区(仅部分区域和VM SKU支持该操作),同样使用begin_create_or_update方法,传入包含新zone值的VirtualMachine参数即可,但需提前确认目标区域和VM规格支持可用区变更。
内容的提问来源于stack exchange,提问作者prometheus
相关产品推荐
相关产品推荐

