Skip to main content

CREATE AZURE VIRTUAL MACHINE

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

 

1.Manually create VM via Wizard - Go to VM wizard and fill VM details

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

Popular posts from this blog

MICROSOFT.NETWORK API COLLECTIONS

Recently I used Microsoft network rest API call. I would like to share with you all. Network API calls includes  PublicIpAddress, VirtualNetworks, Subnets, NetworkInterfaces, Disks, NetworkSecurityGroups.  GET, PUT, DELETE -  Mostly I used {0} - subscriptionId  {1} - resourceGroupName  {2} - virtualMachinesName{3} - apiVersion  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 publicIpAddressDeleteUri = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Network/publicIPAddresses/{2}?api-version={3}"; private string...