Virtuele machines (VM) maken - Azure CLI-| Microsoft Docs
In deze zelfstudie leert u alle stappen voor het maken van een virtuele machine met de Azure CLI. Onder de zelfstudie vallen ook uitvoerquery's, het hergebruiken van Azure-resources en het opschonen van resources.
Deze zelfstudie kan worden voltooid met de interactieve ervaring die wordt aangeboden via Azure Cloud Shell, maar u kunt ook de CLI lokaal installeren.
Gebruik Ctrl + Shift + V (Cmd + Shift + V in macOS) om tekst uit de zelfstudie in Azure Cloud Shell te plakken.
Aanmelden
Als u een lokale installatie van de CLI gebruikt, moet u zich aanmelden voordat u een van de volgende stappen uitvoert.
az login
Voltooi het verificatieproces door de weergegeven stappen in uw terminal te volgen.
Een resourcegroep maken
In Azure worden alle resources toegewezen in een resourcebeheergroep. Resourcegroepen bieden logische groeperingen van resources, waardoor het gemakkelijker is om met resources als verzameling te werken. Voor deze zelfstudie worden alle gemaakte resources opgenomen in één groep met de naam TutorialResources.
az group create --name TutorialResources --location eastus
Een virtuele machine maken
Virtuele machines in Azure hebben een groot aantal afhankelijkheden. De CLI maakt deze resources voor u op basis van opdrachtregelargumenten die u opgeeft.
Maak een nieuwe virtuele machine waarop Ubuntu wordt uitgevoerd en die voor aanmelding gebruikmaakt van SSH-verificatie.
az vm create --resource-group TutorialResources \
--name TutorialVM1 \
--image UbuntuLTS \
--generate-ssh-keys \
--output json \
--verbose
Notitie
Als er al een SSH-sleutel met de naam id_rsa beschikbaar is, gebruikt u deze sleutel voor verificatie in plaats van een nieuwe sleutel te genereren.
Terwijl de VM wordt gemaakt, ziet u dankzij de optie --verbose de lokale waarden die worden gebruikt en de Azure-resources die worden gemaakt.
Wanneer de VM gereed is, wordt er vanuit de Azure-service JSON geretourneerd, waaronder het openbare IP-adres.
{
"fqdns": "",
"id": "...",
"location": "eastus",
"macAddress": "...",
"powerState": "VM running",
"privateIpAddress": "...",
"publicIpAddress": <PUBLIC_IP_ADDRESS>,
"resourceGroup": "TutorialResources",
"zones": ""
}
Bevestig dat de machine wordt uitgevoerd door via SSH verbinding te maken.
ssh <PUBLIC_IP_ADDRESS>
Meld u nu weer af bij de VM.
Er zijn andere manieren om dit IP-adres te verkrijgen nadat de VM is gestart. In het volgende gedeelte ziet u hoe u gedetailleerde informatie over de VM kunt ophalen en filteren.
VM-informatie ophalen met query's
Nu er een VM is gemaakt, kan er gedetailleerde informatie over de VM worden opgehaald. De algemene opdracht om informatie op te halen uit een resource is show.
az vm show --name TutorialVM1 --resource-group TutorialResources
U ziet een grote hoeveelheid informatie, die mogelijk lastig visueel te parseren is. De geretourneerde JSON bevat informatie over verificatie, netwerkinterfaces, opslag en meer. Bovenal bevat de JSON de Azure-object-id's van de resources waarmee de VM is verbonden. Met object-id's kan er rechtstreeks toegang worden verkregen tot deze resources om meer informatie over de configuratie en de mogelijkheden van de VM te krijgen.
Gebruik het argument --query om de gewenste object-id op te halen. Query's zijn in de querytaal JMESPath geschreven. Haal om te beginnen de object-id van de Network Interface Controller (NIC) op.
az vm show --name TutorialVM1 \
--resource-group TutorialResources \
--query 'networkProfile.networkInterfaces[].id' \
--output tsv
Door simpelweg de query toe te voegen, wordt er van alles in gang gezet. Elk onderdeel van de query verwijst naar een sleutel in de uitvoer-JSON of is een JMESPath-operator.
networkProfileis een sleutel van de bovenste JSON dienetworkInterfacesals subsleutel heeft. Als een JSON-waarde een woordenlijst is, wordt er vanaf de bovenste sleutel met de operator.verwezen naar de sleutels hiervan.- De waarde
networkInterfacesis een matrix, dus deze wordt platgemaakt met de operator[]. Deze operator voert de rest van de query uit op elk matrixelement. In dit geval haalt de operator van elk matrixelement de waardeidop.
De indeling van de uitvoer tsv (door tabs gescheiden waarden) bevat gegarandeerd alleen de resultaatgegevens en witruimte in de vorm van tabs en nieuwe regels.
Aangezien de geretourneerde waarde één kale reeks is, is het veilig om deze rechtstreeks toe te wijzen aan een omgevingsvariabele.
Wijs de object-id van de NIC nu toe aan een omgevingsvariabele.
NIC_ID=$(az vm show -n TutorialVM1 -g TutorialResources \
--query 'networkProfile.networkInterfaces[].id' \
-o tsv)
In dit voorbeeld wordt ook het gebruik van korte argumenten getoond. U kunt -g gebruiken in plaats van --resource-group, -n in plaats van --name en -o in plaats van --output.
Omgevingsvariabelen instellen vanuit de CLI-uitvoer
Nu u de id van de NIC hebt, voert u az network nic show uit om de informatie ervan op te halen. Houd er rekening mee dat u hier geen resourcegroep nodig hebt, omdat de naam van de resourcegroep is opgenomen in de Azure-resource-id.
az network nic show --ids $NIC_ID
Deze opdracht toont alle informatie van de netwerkinterface van de VM. Tot deze informatie behoren DNS-instellingen, IP-informatie, beveiligingsinstellingen en het MAC-adres. Het doel is nu om het openbare IP-adres en de object-id's van het subnet op te halen.
az network nic show --ids $NIC_ID \
--query '{IP:ipConfigurations[].publicIpAddress.id, Subnet:ipConfigurations[].subnet.id}' \
-o json
{
"IP": [
"/subscriptions/.../resourceGroups/TutorialResources/providers/Microsoft.Network/publicIPAddresses/TutorialVM1PublicIP"
],
"Subnet": [
"/subscriptions/.../resourceGroups/TutorialResources/providers/Microsoft.Network/virtualNetworks/TutorialVM1VNET/subnets/TutorialVM1Subnet"
]
}
In deze opdracht wordt een JSON-object weergegeven met aangepaste sleutels (IP en Subnet) die voor de uitgepakte waarden staan. Hoewel de stijl van deze uitvoer mogelijk niet handig is voor opdrachtregelprogramma's, is de uitvoer wel leesbaarder voor mensen en kan deze worden gebruikt met aangepaste scripts.
Als u opdrachtregelprogramma's wilt gebruiken, wijzigt u de opdracht zodanig dat de aangepaste JSON-sleutel en -uitvoer als tsv worden verwijderd. Deze uitvoerstijl kan worden verwerkt door de shell-opdracht read om de resultaten in meerdere variabelen te laden. Aangezien de twee waarden op afzonderlijke regels worden weergegeven, moet het scheidingsteken van de opdracht read worden ingesteld op de lege reeks in plaats van op de standaardwitruimte van een niet-nieuwe regel.
read -d '' IP_ID SUBNET_ID <<< $(az network nic show \
--ids $NIC_ID \
--query '[ipConfigurations[].publicIpAddress.id, ipConfigurations[].subnet.id]' \
-o tsv)
U gaat de subnet-id niet meteen gebruiken, maar u moet de id nu wel opslaan om te voorkomen dat u deze later opnieuw moet opzoeken. Gebruik in deze fase de object-id van het openbare IP-adres om het openbare IP-adres op te zoeken en op te slaan in een shell-variabele.
VM1_IP_ADDR=$(az network public-ip show --ids $IP_ID \
--query ipAddress \
-o tsv)
U hebt nu het IP-adres van de VM opgeslagen in een shell-variabele. Controleer of de waarde inderdaad gelijk is aan de waarde die u hebt gebruikt om in het begin verbinding te maken met de VM.
echo $VM1_IP_ADDR
Een nieuwe VM in het bestaande subnet maken
De tweede VM maakt gebruik van het bestaande subnet. U kunt een paar stappen overslaan om het openbare IP-adres van de VM alvast op te slaan in een omgevingsvariabele, aangezien dat adres wordt geretourneerd in de aanmaakinformatie van de VM. Als u later andere informatie over de VM nodig hebt, kan die altijd worden opgehaald met de opdracht az vm show.
VM2_IP_ADDR=$(az vm create -g TutorialResources \
-n TutorialVM2 \
--image UbuntuLTS \
--generate-ssh-keys \
--subnet $SUBNET_ID \
--query publicIpAddress \
-o tsv)
Meld u met behulp van het opgeslagen IP-adres via SSH aan bij de zojuist gemaakte VM.
ssh $VM2_IP_ADDR
Meld u nu weer af bij de VM.
Opschonen
Nu de zelfstudie is voltooid, is het tijd om de gemaakte resources op te schonen. U kunt afzonderlijke resources verwijderen met de opdracht delete, maar de veiligste oplossing om alle resources in een resourcegroep te verwijderen, is met group delete.
az group delete --name TutorialResources --no-wait
Met deze opdracht verwijdert u alle resources die tijdens de zelfstudie zijn gemaakt. De toewijzing van de resources wordt bovendien gegarandeerd in de juiste volgorde ongedaan gemaakt. De parameter --no-wait zorgt ervoor dat de CLI niet blokkeert terwijl de verwijdering plaatsvindt. Als u wilt wachten tot de verwijdering is voltooid of als u de voortgang wilt bekijken, gebruikt u de opdracht group wait.
az group wait --name TutorialResources --deleted
Wanneer het opschonen is voltooid, is deze zelfstudie ook afgerond. Ga verder voor een samenvatting van alles wat u hebt geleerd en voor links naar resources die nuttig zijn voor de volgende stappen.
Samenvatting
Gefeliciteerd! U hebt geleerd hoe u VM's met nieuwe of bestaande resources maakt, de argumenten --query en --output gebruikt om gegevens vast te leggen voor opslag in shell-variabelen en een aantal van de resources bekeken die voor Azure-VM's worden gemaakt.
Wat u nu gaat doen, is afhankelijk van waarvoor u de CLI wilt gebruiken. Er is een aantal materialen waarmee u zich verder kunt verdiepen in de functies die in deze handleiding zijn beschreven.
Voorbeelden
Als u meteen wilt beginnen met specifieke taken, kunt u enkele voorbeeldscripts bekijken.
- Werken met Linux-VM's en Windows-VM's
- Werken met web-apps en Azure Functions
- Werken met databases - Azure SQL-databases, PostgreSQL, MySQL en CosmosDB.
Uitgebreide CLI-documentatie
Er is ook een aantal onderwerpen waarin dieper wordt ingegaan op de CLI-functies die in deze zelfstudie zijn besproken.
- Meer informatie over uitvoerindelingen
- Meer informatie over uitvoerquery's
- Meer informatie over autorisatie in Azure
Andere nuttige documentatie
Het kan een goed idee zijn om wat dieper in te gaan op geavanceerdere functies van de CLI, zoals standaarden configureren of extensies.
Feedback
Als u feedback wilt geven, suggesties hebt of een vraag wilt stellen over de CLI, kunt u op diverse manieren contact met ons opnemen.
az feedbackis een ingebouwde opdracht voor de CLI waarmee u in vrije tekst feedback aan ons team kunt geven.- Een functie-aanvraag of een foutenrapport voor de CLI kunt u indienen in de Azure CLI-opslagplaats.
- Als u een vraag hebt of een probleem ter opheldering wilt indienen, gaat u naar de documentatieopslagplaats van de Azure CLI.
We hopen dat u met plezier gebruikmaakt van de Azure CLI.
Is er een probleem met deze sectie? Als dit het geval is, kunt u ons feedback geven zodat we deze sectie kunnen verbeteren.