/ / विंडोज़ एज़ूर रीस्ट एपीआई मीडियालिंक - विंडोज़, एपीआई, आराम, एज़ूर

विंडोज़ एज़ूर आरईएसटी एपीआई मीडियालिंक - विंडोज़, एपीआई, आराम, एज़ूर

मैं वर्चुअल मशीन परिनियोजन बनाने के लिए विंडोज़ एज़ूर के एपीआई आरईएसटी का उपयोग करने की कोशिश कर रहा हूं। हालांकि, मुझे निम्न XML फ़ाइल में ओएस छवि निर्दिष्ट करने का प्रयास करते समय समस्या आई है:

<Deployment xmlns="http://schemas.microsoft.com/windowsazure"   xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Name>SomeName</Name>
<DeploymentSlot>Production</DeploymentSlot>
<Label></Label>
<RoleList>
<Role i:type="PersistentVMRole">
<RoleName>SomeName</RoleName>
<OsVersion i:nil="true"/>
<RoleType>PersistentVMRole</RoleType>
<ConfigurationSets>
<ConfigurationSet i:type="WindowsProvisioningConfigurationSet">
<ConfigurationSetType>WindowsProvisioningConfiguration</ConfigurationSetType>
<ComputerName>SomeName</ComputerName>
<AdminPassword>XXXXXXXXXX</AdminPassword>
<EnableAutomaticUpdates>true</EnableAutomaticUpdates>
<ResetPasswordOnFirstLogon>false</ResetPasswordOnFirstLogon>
</ConfigurationSet>
<ConfigurationSet i:type="NetworkConfigurationSet">
<ConfigurationSetType>NetworkConfiguration</ConfigurationSetType>
<InputEndpoints>
<InputEndpoint>
<LocalPort>3389</LocalPort>
<Name>RemoteDesktop</Name>
<Protocol>tcp</Protocol>
</InputEndpoint>
</InputEndpoints>
</ConfigurationSet>
</ConfigurationSets>
<DataVirtualHardDisks/>
<Label></Label>
<OSVirtualHardDisk>
<MediaLink>¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿???????????????</MediaLink>
<SourceImageName>¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿??????????????????</SourceImageName>
</OSVirtualHardDisk>
</Role>
</RoleList>
</Deployment>`

मुझे मीडियालिंक (ओएस छवि का यूआरआई) चाहिए औरSourceImageName (ओएस छवि का कैनोलिक नाम)। मेरा सवाल यह है कि, वेब पोर्टल कई पूर्वनिर्धारित छवियां प्रदान करता है लेकिन मैं यूआरआई और उनके वैचारिक नाम को निर्धारित नहीं कर सकता। क्या मुझे अपनी खुद की ओएस छवि बनाने और अपने विंडोज़ एज़ूर खाते के तहत किसी भी स्टोरेज सेवाओं में अपलोड करने के लिए मजबूर होना होगा?

उत्तर:

उत्तर № 1 के लिए 1

इन पैरामीटर को प्राप्त करने के लिए, आप प्रदर्शन कर सकते हैं List OS Images आपकी सदस्यता पर सेवा प्रबंधन API ऑपरेशन।

अद्यतन करें कृपया नीचे दी गई मेरी कुछ टिप्पणियां छोड़ दें (उन लोगों के बारे में खेद है)। मैं अंत में आरईएसटी एपीआई का उपयोग कर एक वीएम बनाने में सक्षम था :)। यहां "कुछ चीजें हैं:

  1. <MediaLink> तत्व को वीएचडी के यूआरएल को निर्दिष्ट करना चाहिएजो आपका वीएम बनाया जाएगा। यह आपके वर्चुअल मशीन क्लाउड सेवा के समान सदस्यता में आपके किसी स्टोरेज खाते में एक यूआरएल होना चाहिए। तो इसके लिए, आप एक यूआरएल निर्दिष्ट कर सकते हैं जैसे: https: // [yourstorageaccount] .blob.core.windows.net / [blobcontainer] / [filename] .vhd जहां [blobcontainer] ब्लॉब कंटेनर का नाम होगा जहां आप चाहते हैं कि एपीआई वीएचडी स्टोर करे, जबकि [filename] कोई भी नाम है जिसे आप अपने वीएचडी को देना चाहते हैं। आरईएसटी एपीआई क्या करता है कि यह निर्दिष्ट स्रोत छवि की प्रतिलिपि बनाता है <SourceImageName> और इसे निर्दिष्ट यूआरआई में बचाता है <MediaLink> तत्व।
  2. सुनिश्चित करें कि आपकी सेवा और संग्रहण खाताजहां आपका वीएचडी संग्रहीत किया जाएगा उसी डेटा सेंटर / एफ़िनिटी समूह में हैं। इसके अलावा डेटा केंद्र वर्चुअल मशीनों का समर्थन करने में सक्षम होना चाहिए। यह पता चला है कि सभी डेटा केंद्र वर्चुअल मशीनों का समर्थन नहीं करते हैं।
  3. एक्सएमएल तत्व का आदेश अत्यंत महत्वपूर्ण है। आप एक तत्व को ऊपर या नीचे ले जाते हैं जिसके परिणामस्वरूप 400 त्रुटि होगी।

मेरे प्रयोग के आधार पर, यहां कोड है:

        private static void CreateVirtualMachineDeployment(string subscriptionId, X509Certificate2 cert, string cloudServiceName)
{
try
{
string uri = string.Format("https://management.core.windows.net/{0}/services/hostedservices/{1}/deployments", subscriptionId, cloudServiceName);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/xml";
request.Headers.Add("x-ms-version", "2013-03-01");
request.ClientCertificates.Add(cert);
string requestPayload = @"<Deployment xmlns=""http://schemas.microsoft.com/windowsazure"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"">
<Name>[SomeName]</Name>
<DeploymentSlot>Production</DeploymentSlot>
<Label>[SomeLabel]</Label>
<RoleList>
<Role i:type=""PersistentVMRole"">
<RoleName>MyTestRole</RoleName>
<OsVersion i:nil=""true""/>
<RoleType>PersistentVMRole</RoleType>
<ConfigurationSets>
<ConfigurationSet i:type=""WindowsProvisioningConfigurationSet"">
<ConfigurationSetType>WindowsProvisioningConfiguration</ConfigurationSetType>
<ComputerName>[ComputerName]</ComputerName>
<AdminPassword>[AdminPassword - Ensure it"s strong Password]</AdminPassword>
<AdminUsername>[Admin Username]</AdminUsername>
<EnableAutomaticUpdates>true</EnableAutomaticUpdates>
<ResetPasswordOnFirstLogon>false</ResetPasswordOnFirstLogon>
</ConfigurationSet>
<ConfigurationSet i:type=""NetworkConfigurationSet"">
<ConfigurationSetType>NetworkConfiguration</ConfigurationSetType>
<InputEndpoints>
<InputEndpoint>
<LocalPort>3389</LocalPort>
<Name>RemoteDesktop</Name>
<Protocol>tcp</Protocol>
</InputEndpoint>
</InputEndpoints>
</ConfigurationSet>
</ConfigurationSets>
<DataVirtualHardDisks/>
<Label></Label>
<OSVirtualHardDisk>
<MediaLink>https://[storageaccount].blob.core.windows.net/vhds/fb83b3509582419d99629ce476bcb5c8__Microsoft-SQL-Server-2012SP1-Web-CY13SU04-SQL11-SP1-CU3-11.0.3350.0.vhd</MediaLink>
<SourceImageName>fb83b3509582419d99629ce476bcb5c8__Microsoft-SQL-Server-2012SP1-Web-CY13SU04-SQL11-SP1-CU3-11.0.3350.0</SourceImageName>
</OSVirtualHardDisk>
</Role>
</RoleList>
</Deployment>";
byte[] content = Encoding.UTF8.GetBytes(requestPayload);
request.ContentLength = content.Length;
using (var requestStream = request.GetRequestStream())
{
requestStream.Write(content, 0, content.Length);
}

using (HttpWebResponse resp = (HttpWebResponse)request.GetResponse())
{
}
}
catch (WebException webEx)
{
using (var streamReader = new StreamReader(webEx.Response.GetResponseStream()))
{
string result = streamReader.ReadToEnd();
Console.WriteLine(result);
}
}

}

उम्मीद है की यह मदद करेगा!