Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: ✔️ Windows-VM's
Een virtuele Azure-machine (VM) heeft verschillende ondersteunende Azure-resources nodig. In dit artikel wordt beschreven hoe u VM-resources maakt, beheert en verwijdert met behulp van Java. U leert het volgende:
- Een Maven-project maken
- Afhankelijkheden toevoegen
- Referenties maken
- Resources maken
- Beheertaken uitvoeren
- Bronnen verwijderen
- De toepassing uitvoeren
Het duurt ongeveer 20 minuten om deze stappen uit te voeren.
Een Maven-project maken
Als u dit nog niet hebt gedaan, installeert u Java.
Maak een nieuwe map en het project:
mkdir java-azure-test cd java-azure-test mvn archetype:generate -DgroupId=com.fabrikam -DartifactId=testAzureApp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Afhankelijkheden toevoegen
Open het
pom.xmlbestand onder detestAzureAppmap en voeg de buildconfiguratie toe aan <het project> om het bouwen van uw toepassing mogelijk te maken:<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <configuration> <mainClass>com.fabrikam.testAzureApp.App</mainClass> </configuration> </plugin> </plugins> </build>Voeg de afhankelijkheden toe die nodig zijn voor toegang tot de Azure Java SDK.
<dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> <version>1.3.6</version> </dependency> <dependency> <groupId>com.azure.resourcemanager</groupId> <artifactId>azure-resourcemanager</artifactId> <version>2.8.0</version> </dependency>Sla het bestand op.
Verificatie instellen
Meer informatie over het instellen van verificatie.
De beheerclient maken
Open het
App.javabestand ondersrc\main\java\com\fabrikamen zorg ervoor dat deze pakketinstructie bovenaan staat:package com.fabrikam.testAzureApp;AzureResourceManager maken:
TokenCredential credential = new EnvironmentCredentialBuilder() .authorityHost(AzureAuthorityHosts.AZURE_PUBLIC_CLOUD) .build(); // Please finish 'Set up authentication' step first to set the four environment variables: AZURE_SUBSCRIPTION_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE); AzureResourceManager azureResourceManager = AzureResourceManager.configure() .withLogLevel(HttpLogDetailLevel.BASIC) .authenticate(credential, profile) .withDefaultSubscription();
Resources maken
Maak de resourcegroep aan
Alle resources moeten zijn opgenomen in een resourcegroep.
Als u waarden voor de toepassing wilt opgeven en de resourcegroep wilt maken, voegt u deze code toe aan het try-blok in de hoofdmethode:
System.out.println("Creating resource group...");
ResourceGroup resourceGroup = azure.resourceGroups()
.define("myResourceGroup")
.withRegion(Region.US_EAST)
.create();
De beschikbaarheidsset maken
Met beschikbaarheidssets kunt u de virtuele machines die door uw toepassing worden gebruikt eenvoudiger onderhouden.
Als u de beschikbaarheidsset wilt maken, voegt u deze code toe aan het try-blok in de hoofdmethode:
System.out.println("Creating availability set...");
AvailabilitySet availabilitySet = azure.availabilitySets()
.define("myAvailabilitySet")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.create();
Het openbare IP-adres maken
Er is een openbaar IP-adres nodig om te communiceren met de virtuele machine.
Als u het openbare IP-adres voor de virtuele machine wilt maken, voegt u deze code toe aan het try-blok in de hoofdmethode:
System.out.println("Creating public IP address...");
PublicIpAddress publicIPAddress = azure.publicIpAddresses()
.define("myPublicIP")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withDynamicIP()
.create();
Het virtuele netwerk maken
Een virtuele machine moet zich in een subnet van een virtueel netwerk bevinden.
Als u een subnet en een virtueel netwerk wilt maken, voegt u deze code toe aan het try-blok in de hoofdmethode:
System.out.println("Creating virtual network...");
Network network = azure.networks()
.define("myVN")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withAddressSpace("10.0.0.0/16")
.withSubnet("mySubnet", "10.0.0.0/24")
.create();
De netwerkinterface maken
Een virtuele machine heeft een netwerkinterface nodig om te communiceren in het virtuele netwerk.
Als u een netwerkinterface wilt maken, voegt u deze code toe aan het try-blok in de hoofdmethode:
System.out.println("Creating network interface...");
NetworkInterface networkInterface = azure.networkInterfaces()
.define("myNIC")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withExistingPrimaryNetwork(network)
.withSubnet("mySubnet")
.withPrimaryPrivateIPAddressDynamic()
.withExistingPrimaryPublicIPAddress(publicIPAddress)
.create();
De virtuele machine maken
Nu u alle ondersteunende resources hebt gemaakt, kunt u een virtuele machine maken.
Als u de virtuele machine wilt maken, voegt u deze code toe aan het try-blok in de hoofdmethode:
System.out.println("Creating virtual machine...");
VirtualMachine virtualMachine = azure.virtualMachines()
.define("myVM")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withExistingPrimaryNetworkInterface(networkInterface)
.withLatestWindowsImage("MicrosoftWindowsServer", "WindowsServer", "2012-R2-Datacenter")
.withAdminUsername("azureuser")
.withAdminPassword("Azure12345678")
.withComputerName("myVM")
.withExistingAvailabilitySet(availabilitySet)
.withSize("Standard_DS1")
.create();
Scanner input = new Scanner(System.in);
System.out.println("Press enter to get information about the VM...");
input.nextLine();
Opmerking
In deze zelfstudie maakt u een virtuele machine waarop een versie van het Windows Server-besturingssysteem wordt uitgevoerd. Zie Navigeren en installatiekopieën van virtuele Azure-machines selecteren met Windows PowerShell en de Azure CLI voor meer informatie over het selecteren van andere installatiekopieën.
Als u een bestaande schijf wilt gebruiken in plaats van een marketplace-afbeelding, gebruik deze code:
Disk managedDisk = azure.disks().define("myosdisk")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withWindowsFromVhd("https://mystorage.blob.core.windows.net/vhds/myosdisk.vhd")
.withStorageAccountName("mystorage")
.withSizeInGB(128)
.withSku(DiskSkuTypes.PREMIUM_LRS)
.create();
azure.virtualMachines().define("myVM")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withExistingPrimaryNetworkInterface(networkInterface)
.withSpecializedOSDisk(managedDisk, OperatingSystemTypes.WINDOWS)
.withExistingAvailabilitySet(availabilitySet)
.withSize(VirtualMachineSizeTypes.STANDARD_DS1)
.create();
Beheertaken uitvoeren
Tijdens de levenscyclus van een virtuele machine kunt u beheertaken uitvoeren, zoals het starten, stoppen of verwijderen van een virtuele machine. Daarnaast kunt u code maken om terugkerende of complexe taken te automatiseren.
Wanneer u iets met de virtuele machine moet doen, moet u een exemplaar hiervan ophalen. Voeg deze code toe aan het try-blok van de hoofdmethode:
VirtualMachine vm = azure.virtualMachines().getByResourceGroup("myResourceGroup", "myVM");
Informatie over de VM ophalen
Als u informatie over de virtuele machine wilt ophalen, voegt u deze code toe aan het try-blok in de hoofdmethode:
System.out.println("hardwareProfile");
System.out.println(" vmSize: " + vm.size());
System.out.println("storageProfile");
System.out.println(" imageReference");
System.out.println(" publisher: " + vm.storageProfile().imageReference().publisher());
System.out.println(" offer: " + vm.storageProfile().imageReference().offer());
System.out.println(" sku: " + vm.storageProfile().imageReference().sku());
System.out.println(" version: " + vm.storageProfile().imageReference().version());
System.out.println(" osDisk");
System.out.println(" osType: " + vm.storageProfile().osDisk().osType());
System.out.println(" name: " + vm.storageProfile().osDisk().name());
System.out.println(" createOption: " + vm.storageProfile().osDisk().createOption());
System.out.println(" caching: " + vm.storageProfile().osDisk().caching());
System.out.println("osProfile");
System.out.println(" computerName: " + vm.osProfile().computerName());
System.out.println(" adminUserName: " + vm.osProfile().adminUsername());
System.out.println(" provisionVMAgent: " + vm.osProfile().windowsConfiguration().provisionVMAgent());
System.out.println(
" enableAutomaticUpdates: " + vm.osProfile().windowsConfiguration().enableAutomaticUpdates());
System.out.println("networkProfile");
System.out.println(" networkInterface: " + vm.primaryNetworkInterfaceId());
System.out.println("vmAgent");
System.out.println(" vmAgentVersion: " + vm.instanceView().vmAgent().vmAgentVersion());
System.out.println(" statuses");
for (InstanceViewStatus status : vm.instanceView().vmAgent().statuses()) {
System.out.println(" code: " + status.code());
System.out.println(" displayStatus: " + status.displayStatus());
System.out.println(" message: " + status.message());
System.out.println(" time: " + status.time());
}
System.out.println("disks");
for (DiskInstanceView disk : vm.instanceView().disks()) {
System.out.println(" name: " + disk.name());
System.out.println(" statuses");
for (InstanceViewStatus status : disk.statuses()) {
System.out.println(" code: " + status.code());
System.out.println(" displayStatus: " + status.displayStatus());
System.out.println(" time: " + status.time());
}
}
System.out.println("VM general status");
System.out.println(" provisioningStatus: " + vm.provisioningState());
System.out.println(" id: " + vm.id());
System.out.println(" name: " + vm.name());
System.out.println(" type: " + vm.type());
System.out.println("VM instance status");
for (InstanceViewStatus status : vm.instanceView().statuses()) {
System.out.println(" code: " + status.code());
System.out.println(" displayStatus: " + status.displayStatus());
}
System.out.println("Press enter to continue...");
input.nextLine();
De virtuele machine stoppen
U kunt een virtuele machine stoppen en alle instellingen ervan behouden, maar hiervoor nog steeds kosten in rekening worden gebracht, of u kunt een virtuele machine stoppen en de toewijzing ervan ongedaan maken. Wanneer een virtuele machine wordt uitgeschakeld, worden alle bijbehorende resources ook uitgeschakeld en eindigt de facturering voor deze machine.
Als u de virtuele machine wilt stoppen zonder de toewijzing ervan ongedaan te maken, voegt u deze code toe aan het try-blok in de hoofdmethode:
System.out.println("Stopping vm...");
vm.powerOff();
System.out.println("Press enter to continue...");
input.nextLine();
Als u de toewijzing van de virtuele machine ongedaan wilt maken, wijzigt u de PowerOff-aanroep in deze code:
vm.deallocate();
De VIRTUELE machine starten
Als u de virtuele machine wilt starten, voegt u deze code toe aan het try-blok in de hoofdmethode:
System.out.println("Starting vm...");
vm.start();
System.out.println("Press enter to continue...");
input.nextLine();
Het formaat van de VM wijzigen
Veel aspecten van de implementatie moeten worden overwogen bij het bepalen van een grootte voor uw virtuele machine. Voor meer informatie, zie VM-grootten.
Als u de grootte van de virtuele machine wilt wijzigen, voegt u deze code toe aan het try-blok in de hoofdmethode:
System.out.println("Resizing vm...");
vm.update()
.withSize(VirtualMachineSizeTypes.STANDARD_DS2)
.apply();
System.out.println("Press enter to continue...");
input.nextLine();
Een gegevensschijf toevoegen aan de virtuele machine
Als u een gegevensschijf wilt toevoegen aan de virtuele machine die 2 GB groot is, een LUN van 0 heeft en een cachetype ReadWrite, voegt u deze code toe aan het try-blok in de hoofdmethode:
System.out.println("Adding data disk...");
vm.update()
.withNewDataDisk(2, 0, CachingTypes.READ_WRITE)
.apply();
System.out.println("Press enter to delete resources...");
input.nextLine();
Bronnen verwijderen
Omdat er kosten in rekening worden gebracht voor resources die worden gebruikt in Azure, is het altijd raadzaam om resources te verwijderen die niet meer nodig zijn. Als u de virtuele machines en alle ondersteunende resources wilt verwijderen, hoeft u alleen de resourcegroep te verwijderen.
Als u de resourcegroep wilt verwijderen, voegt u deze code toe aan het try-blok in de hoofdmethode:
System.out.println("Deleting resources..."); azure.resourceGroups().deleteByName("myResourceGroup");Sla het bestand App.java op.
De toepassing uitvoeren
Het duurt ongeveer vijf minuten voordat deze consoletoepassing volledig van begin tot eind wordt uitgevoerd.
Gebruik deze Maven-opdracht om de toepassing uit te voeren:
mvn compile exec:javaVoordat u op Enter drukt om resources te verwijderen, kan het enkele minuten duren voordat u het maken van de resources in Azure Portal controleert. Klik op de implementatiestatus om informatie over de implementatie te bekijken.
Volgende stappen
- Meer informatie over het gebruik van de Azure-bibliotheken voor Java.