如何使用python代码在Azure上创建虚拟机?

时间:2015-07-09 20:17:24

标签: python azure virtual-machine azure-virtual-machine

我是使用azure sdk并使用它的新手。 我读了很多关于如何创建虚拟机的例子,但没有一个能为我工作。

在创建虚拟机之前,我在sms.add_os_image方法中遇到错误。 可以在没有该方法的情况下创建VM吗?在这种情况下应该用作媒体链接和图像名称?

我当前错误代码的一部分如下所示:

#storage account:
result = sms.create_storage_account(name, desc, label, affinity_group=name)

operation_result = sms.get_operation_status(result.request_id)
print('Operation status: ' + operation_result.status)

result = sms.list_storage_accounts()
for account in result:
print('Service name: ' + account.service_name)
print('Affinity group: ' + account.storage_service_properties.affinity_group)
print('Location: ' + account.storage_service_properties.location)
print('')

#blob service:

storage_response=sms.get_storage_account_keys(name)
print "finished getting primary key " + storage_response.storage_service_keys.primary
account_key = storage_response.storage_service_keys.primary
blob_service = BlobService(account_name=name, account_key=account_key)

#container:

blob_service.create_container('containermaryland13')
target_blob_name = name+'.vhd'
os_image_url='https://{}.blob.core.windows.net/containermaryland13/{}'.format(name, target_blob_name)
image_name = '03f55de797f546a1b29d1b8d66be687a__CoreCLR-x64-Beta5-Linux-PartsUnlimited-Demo-App-201504.29'
sms.add_os_image(label=image_name, media_link=os_image_url, name=image_name, os='Linux')



linux_config = LinuxConfigurationSet(host_name='hostname', user_name='username', user_password='mypassword', disable_ssh_password_authentication=True)
os_hd = OSVirtualHardDisk(source_image_name=image_name, media_link=os_image_url)

sms.create_virtual_machine_deployment(service_name=name,
                                  deployment_name=name,
                                  deployment_slot='production',
                                  label=name,
                                  role_name=name,
                                  system_config=linux_config,
                                  os_virtual_hard_disk=os_hd,
                                  role_size='Small')
                                  """

有人可以帮我解决这个错误吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

通常情况下,如果此图片已经在您的图片库中,您将会遇到错误"冲突"当你重复添加它。因此,我建议您查看此图片是否已在IMAGE Gallery中注册。如果您的IMAGE Gallery已有图像,则可以直接使用其图像名称和URL。 另外,我创建了一个测试此方法的项目:

os_image_url='https://**.blob.core.windows.net/communityimages/**-**-**-1.vhd'
image_name = 'ub-13-4-test'
sms.add_os_image(label=image_name, media_link=os_image_url, name=image_name, os='Linux')

在创建VM之前,您需要创建一个云服务作为VM的容器。 你可以看到这段代码:

name = 'myvmPython'
location = 'East Asia'
sms.create_hosted_service(service_name=name,
    label=name,
    location=location)
linux_config = LinuxConfigurationSet(host_name=name, user_name='*', user_password='*', disable_ssh_password_authentication=True)
os_hd = OSVirtualHardDisk(source_image_name=image_name, media_link=os_image_url)

sms.create_virtual_machine_deployment(service_name=name,
                                  deployment_name=name,
                                  deployment_slot='production',
                                  label=name,
                                  role_name=name,
                                  system_config=linux_config,
                                  os_virtual_hard_disk=os_hd,
                                  role_size='Small')

顺便说一句,我使用的是Python 2.7。此外,您可以与我们分享您的错误消息以获得进一步的帮助。

答案 1 :(得分:0)

您可以检查图像是否存在于图像面板中,如下图所示: enter image description here 此外,您可以将图像添加到图像库: enter image description here

如果图像位于图像存储库中,则可以直接使用其名称和URL。 enter image description here

根据错误消息,这意味着您的项目找不到VHD资源,请检查您的Blob URL。