As a Azure user I can create VM machine within 3 min by following below said ways.
1.Manually create VM via Wizard
2.API request to create VM
VM successfully created.
2.API request to create VM
string ip_St = "Ip";
string vNet_St = "VNet";
string sub_St = "Subnet";
string nic_St = "Nic";
string nsg_St = "nsg";
//Setp1
CreatePulicIpAddress(ip_St);
//Setp2
CreateVirtualNetworks(vNet_St);
//Setp3
CreateSubnets(vNet_St, sub_St);
//Setp4
CreateNetworkSecurityGroups(nsg_St);
//Step5
CreateNetworkInterfaces(nic_St, ip_St, vNet_St, sub_St, nsg_St);
//Setp6
CreateVirtualMachine(vmDetails);
private string azureDomain = "https://management.azure.com";
private string apiVersion = "2019-12-01";
private string _apiV_2019_12_01 = "2019-12-01";
private string _apiV_2019_07_01 = "2019-07-01";
private string _apiV_2020_04_01 = "2020-04-01";
private string publicIpAddressPutUri = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Network/publicIPAddresses/{2}?api-version={3}";
private string virtualNetworksPutUri = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Network/virtualNetworks/{2}?api-version={3}";
private string subnetsPutUri = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Network/virtualNetworks/{2}/subnets/{3}?api-version={4}";
private string networkInterfacesPutUri = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Network/networkInterfaces/{2}?api-version={3}";
private string networkSecurityGroupsPutUri = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Network/networkSecurityGroups/{2}?api-version={3}";
private string vmCreateUri = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Compute/virtualMachines/{2}?api-version={3}";
private void CreatePulicIpAddress(string ipAdd)
{
string publicIpAddressPutUrl = string.Format(azureDomain + publicIpAddressPutUri, _subscriptionId, _resourceGroupName, ipAdd, _apiV_2020_04_01);
var payload = GetPublicIPAddresse_Payload().ToString();
_apiRequest.PutRESTfulResponseWithToken(_token, publicIpAddressPutUrl, payload);
Thread.Sleep(10000);
}
private void CreateVirtualNetworks(string vNetwork)
{
var payload = GetVirtualNetworks_Payload().ToString();
string virtualNetworksPutUrl = string.Format(azureDomain + virtualNetworksPutUri, _subscriptionId, _resourceGroupName, vNetwork, _apiV_2020_04_01);
_apiRequest.PutRESTfulResponseWithToken(_token, virtualNetworksPutUrl, payload);
Thread.Sleep(10000);
}
private void CreateSubnets(string vNetwork, string subNet)
{
var payload = GetSubnets_Payload().ToString();
string subnetsPutUrl = string.Format(azureDomain + subnetsPutUri, _subscriptionId, _resourceGroupName, vNetwork, subNet, _apiV_2020_04_01);
_apiRequest.PutRESTfulResponseWithToken(_token, subnetsPutUrl, payload);
Thread.Sleep(10000);
}
private void CreateNetworkInterfaces(string nicName, string ipAdd, string vNetwork, string subNet, string nsg)
{
var payload = GetNetworkInterfaces_Payload().ToString();
string updatedPayload = payload.Replace("{0}", _subscriptionId).Replace("{1}",
_resourceGroupName).Replace("{2}", ipAdd).Replace("{3}", vNetwork).Replace("{4}", subNet).Replace("{5}", nsg);
string networkInterfacesPutUrl = string.Format(azureDomain + networkInterfacesPutUri, _subscriptionId, _resourceGroupName, nicName, _apiV_2020_04_01);
_apiRequest.PutRESTfulResponseWithToken(_token, networkInterfacesPutUrl, updatedPayload);
Thread.Sleep(10000);
}
public void CreateNetworkSecurityGroups(string nsgName)
{
var payload = GetNetworkSecurityGroups_Payload().ToString();
string updatedPayload = payload.Replace("accessKey", "Allow");
string networkInterfacesPutUrl = string.Format(azureDomain + networkSecurityGroupsPutUri, _subscriptionId, _resourceGroupName, nsgName, _apiV_2020_04_01);
_apiRequest.PutRESTfulResponseWithToken(_token, networkInterfacesPutUrl, updatedPayload);
Thread.Sleep(10000);
}
private dynamic CreateVirtualMachine(VMLibrary vmDetails)
{
var payload = GetVm_Payload().ToString();
string updatedPayload = payload.Replace("locationKey", vmDetails.Region)
.Replace("vmSizeKey", vmDetails.Size)
.Replace("subscriptionKey", _subscriptionId)
.Replace("resourceKey", vmDetails.ResourceGroup)
.Replace("nicKey", vmDetails.VmName + "Nic")
.Replace("vmUserKey", _vm_UserName)
.Replace("vmNameKey", vmDetails.VmName)
.Replace("vmPassKey", _vm_Password);
string createVmUrl = string.Format(azureDomain + vmCreateUri, _subscriptionId, _resourceGroupName, vmDetails.VmName, _apiV_2019_12_01);
var response = _apiRequest.PutRESTfulResponseWithToken(_token, createVmUrl, updatedPayload);
Thread.Sleep(60000);
return response.Content.ReadAsStringAsync().Result;
}
private JObject GetVm_Payload()
{
string payloadContent = File.ReadAllText(@"../../../Resources/JSON/CreateVirtualMachine.json");
var payload = JObject.Parse(payloadContent.ToString());
return payload;
}
CreateVirtualMachine.json
{
"location": "locationKey",
"properties": {
"hardwareProfile": {
"vmSize": "vmSizeKey"
},
"storageProfile": {
"imageReference": {
"sku": "2019-Datacenter",
"publisher": "MicrosoftWindowsServer",
"version": "latest",
"offer": "WindowsServer"
},
"osDisk": {
"caching": "ReadWrite",
"managedDisk": {
"storageAccountType": "Standard_LRS"
},
"name": "myVMosdisk",
"createOption": "FromImage"
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "/subscriptions/subscriptionKey/resourceGroups/resourceKey/providers/Microsoft.Network/networkInterfaces/nicKey",
"properties": {
"primary": true
}
}
]
},
"osProfile": {
"adminUsername": "vmUserKey",
"computerName": "vmNameKey",
"adminPassword": "vmPassKey"
}
}
}
Comments
Post a Comment