Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✔️ macchine virtuali di Windows
Una macchina virtuale di Azure (VM) richiede diverse risorse di supporto di Azure. Questo articolo descrive come creare, gestire ed eliminare le risorse della macchina virtuale usando Java. Scopri come:
- Creare un progetto Maven
- Aggiungere le dipendenze
- Crea credenziali
- Creare le risorse
- Eseguire le attività di gestione
- Eliminare risorse
- Eseguire l'applicazione
L'esecuzione di questi passaggi richiede circa 20 minuti.
Creare un progetto Maven
Installare Java, se non lo si è già fatto.
Installare Maven.
Creare una nuova cartella e il progetto:
mkdir java-azure-test cd java-azure-test mvn archetype:generate -DgroupId=com.fabrikam -DartifactId=testAzureApp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Aggiungere le dipendenze
Nella cartella
testAzureAppaprire il filepom.xmle aggiungere la configurazione della build al <progetto> per abilitare la compilazione dell'applicazione:<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <configuration> <mainClass>com.fabrikam.testAzureApp.App</mainClass> </configuration> </plugin> </plugins> </build>Aggiungere le dipendenze necessarie per accedere ad Azure SDK per Java.
<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>Salvare il file.
Configurazione dell'autenticazione
Informazioni su come configurare l'autenticazione.
Creare il client di gestione
Aprire il file
App.javainsrc\main\java\com\fabrikame verificare che questa istruzione package si trovi all'inizio del file:package com.fabrikam.testAzureApp;Creare AzureResourceManager:
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();
Creare le risorse
Creare il gruppo di risorse
Tutte le risorse devono essere contenute in un gruppo di risorse.
Per specificare i valori per l'applicazione e creare il gruppo di risorse, aggiungere questo codice al blocco try nel metodo main:
System.out.println("Creating resource group...");
ResourceGroup resourceGroup = azure.resourceGroups()
.define("myResourceGroup")
.withRegion(Region.US_EAST)
.create();
Creare il set di disponibilità
I set di disponibilità semplificano la manutenzione delle macchine virtuali usate dall'applicazione.
Per creare il set di disponibilità, aggiungere questo codice al blocco try nel metodo main:
System.out.println("Creating availability set...");
AvailabilitySet availabilitySet = azure.availabilitySets()
.define("myAvailabilitySet")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.create();
Creare l'indirizzo IP pubblico
Un indirizzo IP pubblico è necessario per comunicare con la macchina virtuale.
Per creare l'indirizzo IP pubblico per la macchina virtuale, aggiungere questo codice al blocco try nel metodo main:
System.out.println("Creating public IP address...");
PublicIpAddress publicIPAddress = azure.publicIpAddresses()
.define("myPublicIP")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withDynamicIP()
.create();
Creare la rete virtuale
Una macchina virtuale deve essere inclusa in una subnet di una rete virtuale.
Per creare una subnet e una rete virtuale, aggiungere questo codice al blocco try nel metodo main:
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();
Creare l'interfaccia di rete
Una macchina virtuale richiede un'interfaccia di rete per comunicare nella rete virtuale.
Per creare un'interfaccia di rete, aggiungere questo codice al blocco try nel metodo main:
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();
Creare la macchina virtuale
Dopo avere creato tutte le risorse di supporto, è possibile creare una macchina virtuale.
Per creare la macchina virtuale, aggiungere questo codice al blocco try nel metodo main:
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();
Nota
Questa esercitazione illustra come creare una macchina virtuale in cui è in esecuzione una versione del sistema operativo Windows Server. Per altre informazioni sulla selezione di altre immagini, vedere Esplorare e selezionare immagini delle macchine virtuali di Azure con Windows PowerShell e l'interfaccia della riga di comando di Azure.
Se si desidera usare un disco esistente invece di un'immagine del marketplace, usare questo codice:
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();
Eseguire le attività di gestione
Durante il ciclo di vita di una macchina virtuale si eseguono attività di gestione come l'avvio, l'arresto o l'eliminazione della macchina virtuale. È inoltre possibile creare codice per automatizzare le attività ripetitive o complesse.
Quando si deve eseguire un'operazione con la macchina virtuale, è necessario ottenere un'istanza della VM. Aggiungere questo codice al blocco try nel metodo main:
VirtualMachine vm = azure.virtualMachines().getByResourceGroup("myResourceGroup", "myVM");
Ottenere informazioni sulla VM
Per ottenere informazioni sulla macchina virtuale, aggiungere questo codice al blocco try nel metodo main:
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();
Arrestare la VM
È possibile arrestare una macchina virtuale e mantenere tutte le sue impostazioni, pur continuando a vedersela addebitata oppure è possibile arrestare una macchina virtuale e deallocarla. Quando una macchina virtuale viene deallocata, lo stesso viene fatto per tutte le risorse associate e la fatturazione termina.
Per arrestare la macchina virtuale senza deallocarla, aggiungere questo codice al blocco try nel metodo main:
System.out.println("Stopping vm...");
vm.powerOff();
System.out.println("Press enter to continue...");
input.nextLine();
Per deallocare la macchina virtuale, sostituire la chiamata PowerOff con il codice seguente:
vm.deallocate();
Avviare la macchina Virtuale
Per avviare la macchina virtuale, aggiungere questo codice al blocco try nel metodo main:
System.out.println("Starting vm...");
vm.start();
System.out.println("Press enter to continue...");
input.nextLine();
Ridimensionare la VM
Al momento di decidere le dimensioni della macchina virtuale, è necessario considerare molti aspetti della distribuzione. Per altre informazioni, vedere Dimensioni delle macchine virtuali.
Per modificare le dimensioni della macchina virtuale, aggiungere questo codice al blocco try nel metodo main:
System.out.println("Resizing vm...");
vm.update()
.withSize(VirtualMachineSizeTypes.STANDARD_DS2)
.apply();
System.out.println("Press enter to continue...");
input.nextLine();
Aggiungere un disco dati alla macchina virtuale
Per aggiungere un disco dati alla macchina virtuale con dimensioni di 2 GB, un numero di unità logica pari a 0 e una memorizzazione nella cache di tipo ReadWrite, aggiungere questo codice al blocco try nel metodo main:
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();
Eliminare risorse
Poiché vengono applicati addebiti per le risorse usate in Azure, è sempre consigliabile eliminare le risorse che non sono più necessarie. Per eliminare le macchine virtuali e tutte le risorse di supporto, è sufficiente eliminare il gruppo di risorse.
Per eliminare il gruppo di risorse, aggiungere questo codice al blocco try nel metodo main:
System.out.println("Deleting resources..."); azure.resourceGroups().deleteByName("myResourceGroup");Salvare il file App.java.
Eseguire l'applicazione
L'esecuzione completa dell'applicazione console dall'inizio alla fine richiederà circa cinque minuti.
Per eseguire l'applicazione, usare questo comando di Maven:
mvn compile exec:javaPrima di premere INVIO per avviare l'eliminazione delle risorse, è consigliabile dedicare alcuni minuti alla verifica della creazione delle risorse nel Portale di Azure. Fare clic sullo stato della distribuzione per visualizzare le informazioni corrispondenti.
Passaggi successivi
- Altre informazioni sull'uso delle librerie di Azure per Java.