Creare una macchina virtuale Linux con PowerShellCreate a Linux virtual machine with PowerShell

Il modulo Azure PowerShell viene usato per creare e gestire le risorse di Azure dalla riga di comando di PowerShell o negli script.The Azure PowerShell module is used to create and manage Azure resources from the PowerShell command line or in scripts. Questa guida illustra in dettaglio l'uso del modulo Azure PowerShell per distribuire una macchina virtuale che esegue Server Ubuntu.This quickstart details using the Azure PowerShell module to deploy a virtual machine running Ubuntu server. Dopo aver distribuito il server viene creata una connessione SSH e viene installato un server Web NGINX.Once the server is deployed, an SSH connection is created, and an NGINX webserver is installed.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

Questa guida introduttiva richiede il modulo Azure PowerShell 3.6 o versioni successive.This quick start requires the Azure PowerShell module version 3.6 or later. Eseguire Get-Module -ListAvailable AzureRM per trovare la versione.Run Get-Module -ListAvailable AzureRM to find the version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere come installare il modulo Azure PowerShell.If you need to install or upgrade, see Install Azure PowerShell module.

È infine necessario archiviare una chiave pubblica SSH denominata id_rsa.pub nella directory .ssh del profilo utente di Windows.Finally, a public SSH key with the name id_rsa.pub needs to be stored in the .ssh directory of your Windows user profile. Per informazioni dettagliate sulla creazione delle chiavi SSH per Azure, vedere Create SSH keys for Azure (Creare chiavi SSH per Azure).For detailed information on creating SSH keys for Azure, see Create SSH keys for Azure.

Accedere ad AzureLog in to Azure

Accedere alla sottoscrizione di Azure con il comando Login-AzureRmAccount e seguire le istruzioni visualizzate.Log in to your Azure subscription with the Login-AzureRmAccount command and follow the on-screen directions.

Login-AzureRmAccount

Creare un gruppo di risorseCreate resource group

Creare un gruppo di risorse di Azure con New-AzureRmResourceGroup.Create an Azure resource group with New-AzureRmResourceGroup. Un gruppo di risorse è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.A resource group is a logical container into which Azure resources are deployed and managed.

New-AzureRmResourceGroup -Name myResourceGroup -Location eastus

Creare risorse di reteCreate networking resources

Creare una rete virtuale, una subnet e un indirizzo IP pubblico.Create a virtual network, subnet, and a public IP address. Queste risorse vengono usate per fornire la connettività di rete alla macchina virtuale e connetterla a Internet.These resources are used to provide network connectivity to the virtual machine and connect it to the internet.

# Create a subnet configuration
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name mySubnet -AddressPrefix 192.168.1.0/24

# Create a virtual network
$vnet = New-AzureRmVirtualNetwork -ResourceGroupName myResourceGroup -Location eastus `
-Name MYvNET -AddressPrefix 192.168.0.0/16 -Subnet $subnetConfig

# Create a public IP address and specify a DNS name
$pip = New-AzureRmPublicIpAddress -ResourceGroupName myResourceGroup -Location eastus `
-AllocationMethod Static -IdleTimeoutInMinutes 4 -Name "mypublicdns$(Get-Random)"

Creare un gruppo di sicurezza di rete e una regola del gruppo di sicurezza di rete.Create a network security group and a network security group rule. Il gruppo di sicurezza di rete protegge la macchina virtuale usando le regole in entrata e in uscita.The network security group secures the virtual machine using inbound and outbound rules. In questo caso viene creata una regola in entrata per la porta 22 che consente le connessioni SSH in ingresso.In this case, an inbound rule is created for port 22, which allows incoming SSH connections. È necessario anche creare una regola in ingresso per la porta 80, che consente il traffico Web in ingresso.We also want to create an inbound rule for port 80, which allows incoming web traffic.

# Create an inbound network security group rule for port 22
$nsgRuleSSH = New-AzureRmNetworkSecurityRuleConfig -Name myNetworkSecurityGroupRuleSSH  -Protocol Tcp `
-Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 22 -Access Allow

# Create an inbound network security group rule for port 80
$nsgRuleWeb = New-AzureRmNetworkSecurityRuleConfig -Name myNetworkSecurityGroupRuleWWW  -Protocol Tcp `
-Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 80 -Access Allow

# Create a network security group
$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName myResourceGroup -Location eastus `
-Name myNetworkSecurityGroup -SecurityRules $nsgRuleSSH,$nsgRuleWeb

Creare una scheda di rete con New-AzureRmNetworkInterface per la macchina virtuale.Create a network card with New-AzureRmNetworkInterface for the virtual machine. La scheda di rete connette la macchina virtuale a una subnet, a un gruppo di sicurezza di rete e a un indirizzo IP pubblico.The network card connects the virtual machine to a subnet, network security group, and public IP address.

# Create a virtual network card and associate with public IP address and NSG
$nic = New-AzureRmNetworkInterface -Name myNic -ResourceGroupName myResourceGroup -Location eastus `
-SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id

Crea macchina virtualeCreate virtual machine

Creare una configurazione di macchina virtuale.Create a virtual machine configuration. Questa configurazione include le impostazioni utilizzate quando si distribuisce la macchina virtuale, ad esempio l'immagine della macchina virtuale, la dimensione e la configurazione di autenticazione.This configuration includes the settings that are used when deploying the virtual machine such as a virtual machine image, size, and authentication configuration.

# Define a credential object
$securePassword = ConvertTo-SecureString ' ' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("azureuser", $securePassword)

# Create a virtual machine configuration
$vmConfig = New-AzureRmVMConfig -VMName myVM -VMSize Standard_D1 | `
Set-AzureRmVMOperatingSystem -Linux -ComputerName myVM -Credential $cred -DisablePasswordAuthentication | `
Set-AzureRmVMSourceImage -PublisherName Canonical -Offer UbuntuServer -Skus 16.04-LTS -Version latest | `
Add-AzureRmVMNetworkInterface -Id $nic.Id

# Configure SSH Keys
$sshPublicKey = Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"
Add-AzureRmVMSshPublicKey -VM $vmconfig -KeyData $sshPublicKey -Path "/home/azureuser/.ssh/authorized_keys"

Creare la macchina virtuale con New-AzureRmVM.Create the virtual machine with New-AzureRmVM.

New-AzureRmVM -ResourceGroupName myResourceGroup -Location eastus -VM $vmConfig

Connettersi alla macchina virtualeConnect to virtual machine

Dopo aver completato la distribuzione, creare una connessione SSH con la macchina virtuale.After the deployment has completed, create an SSH connection with the virtual machine.

Usare il comando Get-AzureRmPublicIpAddress per ottenere l'indirizzo IP pubblico della macchina virtuale.Use the Get-AzureRmPublicIpAddress command to return the public IP address of the virtual machine.

Get-AzureRmPublicIpAddress -ResourceGroupName myResourceGroup | Select IpAddress

Da un sistema con SSH installato, usare il comando seguente per connettersi alla macchina virtuale.From a system with SSH installed, used the following command to connect to the virtual machine. Se si lavora in Windows, è possibile usare Putty per creare la connessione.If working on Windows, Putty can be used to create the connection.

ssh <Public IP Address>

Quando viene richiesto, il nome utente di accesso è azureuser.When prompted, the login user name is azureuser. Se è stata immessa una passphrase durante la creazione delle chiavi SSH, è necessario immettere anche questa.If a passphrase was entered when creating SSH keys, you need to enter this as well.

Installare NGINXInstall NGINX

Usare i comandi seguenti per aggiornare le origini dei pacchetti e installare il pacchetto NGINX più recente.Use the following commands to update package sources and install the latest NGINX package.

# update package source
sudo apt-get -y update

# install NGINX
sudo apt-get -y install nginx

Visualizzare la pagina iniziale di NGINXView the NGINX welcome page

Dopo l'installazione di NGINX e l'apertura della porta 80 nella macchina virtuale da Internet, è possibile usare il Web browser preferito per visualizzare la pagina iniziale predefinita di NGINX.With NGINX installed and port 80 now open on your VM from the Internet - you can use a web browser of your choice to view the default NGINX welcome page. Assicurarsi di usare l'indirizzo IP pubblico descritto in precedenza per passare alla pagina predefinita.Be sure to use the public IP address you documented above to visit the default page.

Sito NGINX predefinito

Pulire le risorseClean up resources

Quando non servono più, è possibile usare il comando Remove-AzureRmResourceGroup per rimuovere il gruppo di risorse, la macchina virtuale e tutte le risorse correlate.When no longer needed, you can use the Remove-AzureRmResourceGroup command to remove the resource group, VM, and all related resources.

Remove-AzureRmResourceGroup -Name myResourceGroup

Passaggi successiviNext steps

In questa guida introduttiva è stata distribuita una macchina virtuale semplice, è stata creata una regola del gruppo di sicurezza di rete ed è stato installato un server Web.In this quick start, you’ve deployed a simple virtual machine, a network security group rule, and installed a web server. Per altre informazioni sulle macchine virtuali di Azure, passare all'esercitazione per le VM di Linux.To learn more about Azure virtual machines, continue to the tutorial for Linux VMs.