Can't create azure virtual machine using the cli - azure

I have a resource group with all of my networking in it. I need to create a VM in another resource group but using the vnets/subnet in the other resource group. It is failing miserably at the cli. Here's the command I'm using:
az vm create --name vm-jmp-poc-e --resource-group rg-mgmt-poc-eastus-001 --public-ip-address "" --image Win2016Datacenter --data-disk-sizes-gb 10 --admin-user adminuser --admin-password ThisIsThePass123$ --availability-set av-cpe-poc-eastus-001 --subnet subscriptions/938b61f6-ecac-4c61-ad3b-7e856c377660/resourceGroups/providers/Micosoft.Network/virtualNetworks/rg-sql-cpe-poc-eastus-001/vnet-primary-poc-eastus-001/subnets/snet-mgmt-poc-eastus-002 --location eastus
Here is the error:
ValidationError: incorrect usage: --subnet ID | --subnet NAME
--vnet-name NAME
Please help!!!

The problem is that you have provided a wrong subnet ID, the correct format is that
/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>
You can get the subnet ID via
az network vnet subnet show -g <rgName> -n <subnetName> --vnet-name <vnetName> --query id -o tsv
You lack the resource group name in your providing subnet ID.
subscriptions/xxxx/resourceGroups/providers/Micosoft.Network/virtualNetworks/rg-sql-cpe-poc-eastus-001/vnet-primary-poc-eastus-001/subnets/snet-mgmt-poc-eastus-002
Result

Related

Create an Azure Internal Loadbalancer with Zone Redundant Properties

This is the command that I tried to use and the error message received is shown below the command
az network lb create --name <name> -g <RG name> --frotnend-ip-name <frontend_name> --frontend-ip-zone "1","2","3" -l southeastasia --private-ip-address <“static_ip”> --private-ip-address-version IPv4 --sku Standard --subnet “<subnet_id>” --subnet-address-prefix “<prefix>” --vnet-name “<vnet_name>” --public-ip-address “”
Below is the error received for the command
az network lb create: '1, 2, 3' is not a valid value for '--frontend-ip-zone'. Allowed values: 1, 2, 3.
You should first create the LB then add frontend-IP to the LB,
Create LB:
az network lb create -g MyResourceGroup -n MyLb --sku Standard
Add Zone redundant frontend across Zones,
az network lb frontend-ip create -g {rg} --lb-name lb -n LoadBalancerFrontEnd -z 1 2 3 --vnet-name vnet --subnet subnet
We are working on Public PR to enable this feature during the creation of LB itself.

Cannot get Azure container network profile Id

We are actually deploying container to Azure using Azure CLI and the create command as specify the sample documentation below :
https://learn.microsoft.com/en-us/azure/container-instances/container-instances-vnet
In this dosucmentation it is clearly specify from the sample command below that when the container and the Vnet/Subnet gets created, azure create for you a Network Profile Id ( that is need for yaml deplyoement)
az container create --name appcontainer --resource-group myResourceGroup --image mcr.microsoft.com/azuredocs/aci-helloworld --vnet aci-vnet --vnet-address-prefix 10.0.0.0/16 --subnet aci-subnet --subnet-address-prefix 10.0.0.0/24
After the container gets created successfully you are supposed to get Network profile name or ID, which you can obtain using "az network profile list"
Which in fact does not return anything
UPDATE :
I update m Azure CLI to 2.30 in powershell but the result is the same the output of the command return nohing even if container and vnet gets succesfully created
Output result
Thanks for your help
regards
I have tested in my environment.
I deployed a container to a new virtual network using the below command:
az container create --name appcontainer --resource-group myResourceGroup --image mcr.microsoft.com/azuredocs/aci-helloworld --vnet aci-vnet --vnet-address-prefix 10.0.0.0/16 --subnet aci-subnet --subnet-address-prefix 10.0.0.0/24
The container got successfully created.
To get the Network Profile ID, I used the below command:
az network profile list --resource-group myResourceGroup --query [0].id --output tsv
In this way, we can fetch the Network Profile ID
If network profile is not getting created using CLI, try using ARM template
The same happened to me. I solve it using Azure CLI version 2.27.2. Any newer version leaves me with the same problem.
There seems to be a problem with the latest versions of the Azure CLI

Azure: Script or Command to delete instance and all its associated resources (disks, network interface)

I am trying to find a way to delete an Instance in azure and all its associated resources. But I don't see any straightforward approach to accomplish it. I am using az vm delete -g resourcegroup -n myinstancename--yes command which currently only deletes instances. In my scenario, I can't use powershell.
For testing ,I created a VM with 1 NIC, 1 Public IP and 2 Data disks.
Then, I used the below az CLI script :
$osDisk = (az vm show --resource-group ansumantest --name ansumantest --query "storageProfile.osDisk.name" --output tsv)
$datadisks = (az vm show --resource-group ansumantest --name ansumantest --query "storageProfile.dataDisks[].name" --output tsv)
$nics= (az vm show --resource-group ansumantest --name ansumantest --query "networkProfile.networkInterfaces[].id" --output tsv)
foreach ($nic in $nics){
$publicIps=az network nic show --id $nic --query "ipConfigurations[].publicIpAddress.id" --output tsv
}
az vm delete --resource-group ansumantest --name ansumantest --yes
if ($osDisk) {
az disk show --resource-group ansumantest --name $osDisk --yes
}
foreach ($datadisk in $Datadisks){
az disk delete --resource-group ansumantest --name $datadisk --yes
}
foreach ($nic in $nics){
az network nic delete --id $nic
}
foreach ($publicIp in $publicIps){
az network public-ip delete --id $publicIp
}
Outputs:
OR
You can directly delete all the resources while the running the VM delete Command as well but there are some Prerequisites for this method i.e. While creating the VM using CLI you have to configure couple of features like below :
As per Microsoft Document in az vm create section:
[--os-disk-delete-option {Delete, Detach}]
Specify the behavior of
the managed disk when the VM gets deleted i.e whether the managed
disk is deleted or detached.
accepted values: Delete, Detach
[--data-disk-delete-option]
Specify whether data disk should be deleted or detached upon VM deletion.
[--nic-delete-option]
Specify what happens to the network interface when the VM is
deleted. Use a singular value to apply on all resources, or use = to
configure the delete behavior for individual resources. Possible
options are Delete and Detach.
If the above 3 are configured to delete while creating the VM then , when you run the az vm delete it defaults to delete these resources when the VM is to be deleted.
Reference:
Github Support

Azure API Management - How to set the VNET/SubNet using Azure CLI?

I have created my VNET & SubNet as mentioned below
RESOURCE_GROUP="POC-RG"
LOCATION="westus"
APIMNAME="poc-apim-98"
PUBLISHER="Demo"
PUBLISHEREMAIL="myemail#demo.com"
SKU="Premium"
VNETNAME="app-vnet"
APITYPE="External"
az network vnet create \
--resource-group ${RESOURCE_GROUP} \
--name ${VNETNAME} \
--location ${LOCATION}
az network vnet subnet create \
--resource-group ${RESOURCE_GROUP} \
--vnet-name ${VNETNAME} \
--name apim \
--address-prefixes 10.0.5.0/24
and I want to provision the Azure API Management in the apim subnet created above
az apim create --name ${APIMNAME} -g ${RESOURCE_GROUP} -l ${LOCATION} --sku-name ${SKU} --publisher-email ${PUBLISHEREMAIL} --publisher-name ${PUBLISHER} --virtual-network ${APITYPE}
Looks like Azure CLI does not take the subnet parameter while creating the APIM, how do I set the subnet and create the Azure API Management using azure cli?
You are right. For some reason az apim create does not provide option to input a subnet reference of a VNET.
You have 2 options:
Use ARM template. Refer Create an API Management service in External Virtual Network for sample template.
az group deployment create --resource-group <my-resource-group> --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-api-management-create-with-external-vnet/azuredeploy.json
Or,
Use az resource command to add subnet reference after you create APIM.
az apim create --name ${APIMNAME} -g ${RESOURCE_GROUP} -l ${LOCATION} --sku-name ${SKU} --publisher-email ${PUBLISHEREMAIL} --publisher-name ${PUBLISHER} --virtual-network ${APITYPE}
$apimResourceId = az apim show -n ${APIMNAME} -g ${RESOURCE_GROUP} --query 'id' -o json
$subnetResourceId = az network vnet subnet show -g ${RESOURCE_GROUP} -n apim --vnet-name ${VNETNAME} --query 'id' -o json
az resource update --ids $apimResourceId --set properties.virtualNetworkConfiguration.subnetResourceId=$subnetResourceId

Azure VM change IP address to static via CLI

I am taking a course and stuck for almost a week. I created a VM and now it wants me to change the IP config method to static. The exact words are.
"You have created a ubuntu virtual machine in the second step, in which check the public IP (publicIpAllocationMethod) address and change it to Static by executing the azure CLI commands."
I created the VM with below command.
az vm create -n MyVm1 -g groupname --admin-username "n1234" --admin-password "nk123#9090" --location westUS --image UbuntuLTS
Got the VM NIC with below command.
nic_id=$(az vm show -g gropname -n MyVm1 -d --query networkProfile.networkInterfaces[0].id)
az network nic show --ids MyVm1VMNic
I have the IP of the VM but not sure how to change it to static.
I got it resolved by using the below command.
az network public-ip update -g GROUPNAME -n MyVm1PublicIP --allocation-method Static
What you're looking for can be found here: https://learn.microsoft.com/en-us/cli/azure/network/nic/ip-config?view=azure-cli-latest#az-network-nic-ip-config-update
With your example, you would run the following:
nic_id=$(az vm show -g gropname -n MyVm1 -d --query
networkProfile.networkInterfaces[0].id --output tsv)
nicName=$(az network nic show --ids $nic_id --query name --output tsv)
ipconfig=$(az network nic show --ids $nic_id --query ipConfigurations[0].name
--output tsv)
az network nic ip-config update -g gropname --nic-name $nicName -n $ipconfig --private-ip-address <static ip address>
By setting the private IP, the IP configuration will be updated to static. The above code relies on the VM having a single NIC, which is assumed based on your example.
Hopefully that helps!

Resources