簡體   English   中英

windows azure rest api - 創建虛擬機

[英]windows azure rest api - creating a virtual machine

我正在研究使用Windows Azure REST API在Windows Azure環境中創建虛擬機。 查看Windows Azure REST API參考,我看到應該向其發出POST請求的URL是:

https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deployments/<deployment-name>/roles

我在這里的困惑是需要<cloudservice-name><deployment-name> 實際上,如果我直接登錄到我的Windows Azure訂閱門戶並通過菜單創建虛擬機,我就不必指定cloudservice-name或deployment-name。 我所做的就是為VM選擇一個圖像(centos,ubuntu,windows等),為VM選擇一個風格(xsmall,small,large等)並單擊“Create”,幾分鍾后創建VM 。

鑒於我可以通過這種方式創建VM,我無法理解為什么我必須在REST API curl調用中傳遞<cloudservice-name><deployment-name>參數以及傳遞給這些參數的值。 事實上,我的訂閱中沒有部署,也沒有打算訂閱。 我想要的只是創建一個我可以使用的虛擬機。

我是否可以跳過這些參數,仍然可以在Azure訂閱中創建虛擬機? 即只是通過傳遞<subscription-id>

以前使用Windows Azure REST API的人或者具有Windows Azure專業知識的人是否會對此有所了解並幫助澄清?

更新於2013年7月31日星期三:再次感謝您對我的問題的反饋。 我想更新一下,我能夠最終使用REST API調用創建虛擬機。 但奇怪的是,創建虛擬機只能成功運行一次。 隨后,當我嘗試使用不同的名稱創建VM時,它出現了“暫存部署被阻止”之類的錯誤。 因此,為了理智,我繼續刪除現有的VM並進行了一些帳戶清理。 我嘗試了POST操作再次創建VM,現在發生的事情是POST響應回復正常,帶有202 Accepted消息,但盡管如此,我還是看不到在我的Azure帳戶中創建的VM。 我不知道在哪里以及如何開始解決這個問題,因為我既沒有收到錯誤,也沒有創建VM。

我發布在我發布的用於創建VM的整個XML請求主體下面:

<Deployment xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Name>Staging</Name>
  <DeploymentSlot>Staging</DeploymentSlot>
  <Label>stk_curl_label_1</Label>
  <RoleList>
    <Role>
      <RoleName>stk_curl_role_1</RoleName>
      <RoleType>PersistentVMRole</RoleType>
      <ConfigurationSets>
        <ConfigurationSet>
          <ConfigurationSetType>WindowsProvisioningConfiguration</ConfigurationSetType>
          <ComputerName>stkVm1</ComputerName>
          <AdminPassword>Password123</AdminPassword>
          <EnableAutomaticUpdates>false</EnableAutomaticUpdates>
        </ConfigurationSet>
      </ConfigurationSets>
      <OSVirtualHardDisk>
        <HostCaching>ReadWrite</HostCaching>
        <DiskLabel>Visual studio ultimate</DiskLabel>
        <DiskName>stk_disk_1</DiskName>
        <MediaLink>http://stk11.blob.core.windows.net/communityimages/visual_studio_ultimate.vhd</MediaLink>
        <SourceImageName>03f55de797f546a1b29d1b8d66be687a__Visual-Studio-2013-Preview-Ultimate-12.0.20617.1</SourceImageName>
      </OSVirtualHardDisk>
      <RoleSize>ExtraSmall</RoleSize>
    </Role>
  </RoleList>
</Deployment>

而且我正在接受我收到的卷曲電話響應的尾部:

> User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host: management.core.windows.net
> Accept: */*
> x-ms-version: 2012-03-01
> Content-Type: application/xml
> Content-Length: 1236
> Expect: 100-continue
>
* SSLv3, TLS handshake, Hello request (0):
SSLv3, TLS handshake, Client hello (1):
SSLv3, TLS handshake, Server hello (2):
SSLv3, TLS handshake, CERT (11):
SSLv3, TLS handshake, Request CERT (13):
SSLv3, TLS handshake, Server finished (14):
SSLv3, TLS handshake, CERT (11):
SSLv3, TLS handshake, Client key exchange (16):
SSLv3, TLS handshake, CERT verify (15):
SSLv3, TLS change cipher, Client hello (1):
SSLv3, TLS handshake, Finished (20):
SSLv3, TLS change cipher, Client hello (1):
SSLv3, TLS handshake, Finished (20):
HTTP/1.1 100 Continue
HTTP/1.1 202 Accepted
< Cache-Control: no-cache
< Content-Length: 0
< Server: 33.0.6198.68 (rd_rdfe_stable.130710-0833) Microsoft-HTTPAPI/2.0
< x-ms-servedbyregion: ussouth
< x-ms-request-id: b2f3dd01319049a5a6728bbdbcde6c4a
< Date: Wed, 31 Jul 2013 17:26:54 GMT
* Connection #0 to host management.core.windows.net left intact
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):

你可以清楚地看到,它是一個“202 Accepted”響應。 但正如我之前提到的,盡管如此,當我查看我的Azure帳戶時,我看不到正在創建VM。

非常感謝任何有關如何找出導致其無法正常工作的根本原因的專家見解/想法?

你所看到的是門戶幕后的一點魔力。 部署虛擬機時,它確實最終位於Cloud Service容器中。 最近這個更改在門戶網站中變得更加明顯,之前他們正在隱藏這個。 當人們刪除VM或將其他VM添加到同一組(以前稱為“附加到”)時,雲服務將顯示在門戶中。 人們對這是什么感到困惑,只是引起了更多的問題。

現在,在門戶中,系統會提示您提供雲服務。 如果您在快速創建時詢問DNS名稱(並在其旁邊顯示.cloudapp.net),那么這就是您提供的Cloud Service名稱。 當您通過Gallery進行創建時,在第3步中要求創建新的Cloud Service或選擇已存在的Cloud Service更為明顯。

要通過REST API執行所需操作,您需要提前創建雲服務,或者在創建VM之前調用。 此外,您提供的鏈接用於添加Cloud Service角色,而不是創建虛擬機。 對於那個REST API調用,您將要使用它: http//msdn.microsoft.com/en-us/library/windowsazure/jj157194.aspx它仍然需要雲服務,但不需要部署名稱。

有兩種不同的API,一種用於在雲服務下創建部署和VM,另一種用於向先前創建的部署添加角色。

這些是2個API

用於VM部署

http://msdn.microsoft.com/en-us/library/azure/jj157194.aspx

對於部署中的角色

http://msdn.microsoft.com/en-us/library/azure/jj157186.aspx

您使用的是第二個,首先需要使用第一個API創建VM部署,然后使用第二個API在同一個雲服務中添加更多角色。

我遇到了同樣的問題,添加角色讓我接受了202但沒有創建VM。 經過幾個小時試圖找出問題之后,我發現在管理門戶上他們有這些管理服務 - >操作日志,它會顯示所有API調用的日志。

正是在這里,我的添加角色API調用告訴我這是一個404錯誤請求而不是202接受,它也向我顯示了特定錯誤。

管理服務 - >操作日志在您遇到API時非常有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM