Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: ✔️ VMs do Windows
Uma Máquina Virtual (VM) do Azure precisa de vários recursos do Azure de suporte. Este artigo aborda a criação, gerenciamento e exclusão de recursos de VM usando Java. Sabe como:
- Criar um projeto do Maven
- Adicionar dependências
- Criar credenciais
- Criar recursos
- Executar tarefas de gerenciamento
- Eliminar recursos
- Executar a aplicação
Leva cerca de 20 minutos para fazer essas etapas.
Criar um projeto do Maven
Se ainda não o fez, instale o Java.
Instale o Maven.
Crie uma nova pasta e o projeto:
mkdir java-azure-test cd java-azure-test mvn archetype:generate -DgroupId=com.fabrikam -DartifactId=testAzureApp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Adicionar dependências
testAzureAppNa pasta, abra opom.xmlarquivo e adicione a configuração de compilação ao <projeto> para habilitar a construção do seu aplicativo:<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <configuration> <mainClass>com.fabrikam.testAzureApp.App</mainClass> </configuration> </plugin> </plugins> </build>Adicione as dependências necessárias para acessar o SDK Java do Azure.
<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>Guarde o ficheiro.
Configurar a autenticação
Saiba como configurar a autenticação.
Criar o cliente de gerenciamento
Abra o
App.javaarquivo abaixosrc\main\java\com\fabrikame verifique se esta instrução de pacote está na parte superior:package com.fabrikam.testAzureApp;Crie 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();
Criar recursos
Criar o grupo de recursos
Todos os recursos devem estar contidos em um grupo de recursos.
Para especificar valores para o aplicativo e criar o grupo de recursos, adicione este código ao bloco try no método principal:
System.out.println("Creating resource group...");
ResourceGroup resourceGroup = azure.resourceGroups()
.define("myResourceGroup")
.withRegion(Region.US_EAST)
.create();
Criar o conjunto de disponibilidade
Os conjuntos de disponibilidade facilitam a manutenção das máquinas virtuais usadas pelo seu aplicativo.
Para criar o conjunto de disponibilidade, adicione este código ao bloco try no método principal:
System.out.println("Creating availability set...");
AvailabilitySet availabilitySet = azure.availabilitySets()
.define("myAvailabilitySet")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.create();
Criar o endereço IP público
Um endereço IP público é necessário para se comunicar com a máquina virtual.
Para criar o endereço IP público para a máquina virtual, adicione este código ao bloco try no método principal:
System.out.println("Creating public IP address...");
PublicIpAddress publicIPAddress = azure.publicIpAddresses()
.define("myPublicIP")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withDynamicIP()
.create();
Criar a rede virtual
Uma máquina virtual deve estar em uma sub-rede de uma rede virtual.
Para criar uma sub-rede e uma rede virtual, adicione este código ao bloco try no método principal:
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();
Criar a interface de rede
Uma máquina virtual precisa de uma interface de rede para se comunicar na rede virtual.
Para criar uma interface de rede, adicione este código ao bloco try no método principal:
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();
Criar a máquina virtual
Agora que você criou todos os recursos de suporte, você pode criar uma máquina virtual.
Para criar a máquina virtual, adicione este código ao bloco try no método principal:
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
Este tutorial cria uma máquina virtual executando uma versão do sistema operacional Windows Server. Para saber mais sobre como selecionar outras imagens, consulte Navegar e selecionar imagens de máquina virtual do Azure com o Windows PowerShell e a CLI do Azure.
Se você quiser usar um disco existente em vez de uma imagem do marketplace, use este código:
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();
Executar tarefas de gerenciamento
Durante o ciclo de vida de uma máquina virtual, poderá querer executar tarefas de gestão, como iniciar, parar ou eliminar uma máquina virtual. Além disso, você pode querer criar código para automatizar tarefas repetitivas ou complexas.
Quando você precisa fazer qualquer coisa com a VM, você precisa obter uma instância dela. Adicione este código ao bloco try do método principal:
VirtualMachine vm = azure.virtualMachines().getByResourceGroup("myResourceGroup", "myVM");
Obter informações sobre a VM
Para obter informações sobre a máquina virtual, adicione este código ao bloco try no método principal:
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();
Parar a VM
Você pode parar uma máquina virtual e manter todas as suas configurações, mas continuar a ser cobrado por ela, ou você pode parar uma máquina virtual e desalocá-la. Quando uma máquina virtual é deslocalizada, todos os recursos associados a ela também são desalocados e o faturamento termina.
Para parar a máquina virtual sem deslocalizá-la, adicione este código ao bloco try no método principal:
System.out.println("Stopping vm...");
vm.powerOff();
System.out.println("Press enter to continue...");
input.nextLine();
Se você quiser desalocar a máquina virtual, altere a chamada de desligamento para este código:
vm.deallocate();
Iniciar a VM
Para iniciar a máquina virtual, adicione este código ao bloco try no método principal:
System.out.println("Starting vm...");
vm.start();
System.out.println("Press enter to continue...");
input.nextLine();
Redimensionar a VM
Muitos aspetos da implantação devem ser considerados ao decidir um tamanho para sua máquina virtual. Para obter mais informações, consulte Tamanhos de VM.
Para alterar o tamanho da máquina virtual, adicione este código ao bloco try no método principal:
System.out.println("Resizing vm...");
vm.update()
.withSize(VirtualMachineSizeTypes.STANDARD_DS2)
.apply();
System.out.println("Press enter to continue...");
input.nextLine();
Adicionar um disco de dados à VM
Para adicionar um disco de dados à máquina virtual que tem 2 GB de tamanho, tem um LUN de 0 e um tipo de cache de ReadWrite, adicione este código ao bloco try no método principal:
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();
Eliminar recursos
Como você é cobrado pelos recursos usados no Azure, é sempre uma boa prática excluir recursos que não são mais necessários. Se você quiser excluir as máquinas virtuais e todos os recursos de suporte, tudo o que você precisa fazer é excluir o grupo de recursos.
Para excluir o grupo de recursos, adicione este código ao bloco try no método principal:
System.out.println("Deleting resources..."); azure.resourceGroups().deleteByName("myResourceGroup");Salve o arquivo App.java.
Executar a aplicação
Deve levar cerca de cinco minutos para que este aplicativo de console seja executado completamente do início ao fim.
Para executar o aplicativo, use este comando Maven:
mvn compile exec:javaAntes de pressionar Enter para começar a excluir recursos, você pode levar alguns minutos para verificar a criação dos recursos no portal do Azure. Clique no status da implantação para ver informações sobre a implantação.
Próximos passos
- Saiba mais sobre como usar as bibliotecas do Azure para Java.