The Azure CLI 2.0 is Azure’s new command line experience for managing Azure resources. It can be used on MacOS, Linux, and Windows.
We can use Azure CLI for administrating Azure resources and building automation scripts against Azure Resource Manager.To start with Azure CLI follow this doc for step by step guide for installation.
From this post I will walk-through how we can use Azure CLI to create a virtual machine.
After installing the Azure CLI first we should login to the subscription.When you run the following command it will prompt a URL,browse the URL and enter the code, then select the login credential of the subscription.
#Login Azure az login
Create a new resource group.
#create a resource group az group create --location southeastasia --name clivm
Create Public IP, We use this public IP for the VM and it attached to the NIC of the VM
#Create a Public IP az network public-ip create --name linuxvm-ip --resource-group clivm --location southeastasia
Create a VNet for VM deployment
#Create VNET az network vnet create --name vm-test --resource-group clivm --address-prefixes 10.10.0.0/16 --location southeastasia --subnet-name vmsubnet --subnet-prefix 10.10.1.0/24
Create Network Security Group
#Create Network Security Group az network nsg create --name vmsubnet --resource-group clivm --location southeastasia
For this NSG is attached to the subnet alternatively we can attach the NSG to NIC
#Associate the NSG to the subnet az network vnet subnet update --name vmsubnet --resource-group clivm --vnet-name vm-test --network-security-group vmsubnet
Create NIC for VM
#Create NIC az network nic create --resource-group clivm --name linuxvm-nic --subnet vmsubnet --vnet-name vm-test --location southeastasia --public-ip-address linuxvm-ip
Create a VM (CentOS)
#Create a VM az vm create --name linuxvm --resource-group clivm --admin-username localadmin --admin-password [email protected] --image CentOS --authentication-type password --nics linuxvm-nic --size Standard_DS1 --location southeastasia
Open SSH port to communicate with the VM
#Open port 22 for SSH az vm open-port --name linuxvm --port 22 --resource-group clivm --apply-to-subnet --priority 1000 #OR # az network nsg rule create --name SSH --nsg-name vmsubnet --priority 1100 --resource-group clivm --source-address-prefix * --source-port-range * --destination-address-prefix * --destination-port-range 22 --protocol Tcp
Following is the full script if your running this as a bash file
We use #!/bin/bash as the interpreter then it will start to execute the commands.
Before execute the script make sure the script has execute permissions
#Giving Read,Write,Execute permissions chmod 700 ./CreateLinuxVM.sh
#!/bin/bash #Login Azure az login #create a resource group az group create --location southeastasia --name clivm #Create a Public IP az network public-ip create --name linuxvm-ip --resource-group clivm --location southeastasia #Create VNET az network vnet create --name vm-test --resource-group clivm --address-prefixes 10.10.0.0/16 --location southeastasia --subnet-name vmsubnet --subnet-prefix 10.10.1.0/24 #Create Network Security Group az network nsg create --name vmsubnet --resource-group clivm --location southeastasia #Associate the NSG to the subnet az network vnet subnet update --name vmsubnet --resource-group clivm --vnet-name vm-test --network-security-group vmsubnet #Create NIC az network nic create --resource-group clivm --name linuxvm-nic --subnet vmsubnet --vnet-name vm-test --location southeastasia --public-ip-address linuxvm-ip #Create a VM az vm create --name linuxvm --resource-group clivm --admin-username localadmin --admin-password [email protected] --image CentOS --authentication-type password --nics linuxvm-nic --size Standard_DS1 --location southeastasia #Open port 22 for SSH az vm open-port --name linuxvm --port 22 --resource-group clivm --apply-to-subnet --priority 1000 #OR # az network nsg rule create --name SSH --nsg-name vmsubnet --priority 1100 --resource-group clivm --source-address-prefix * --source-port-range * --destination-address-prefix * --destination-port-range 22 --protocol Tcp
After the script runs we can SSH to the sever as bellow. Here I use Azure Cloud Shell to SSH the server.