Creare una macchina virtuale Linux completa con l'interfaccia della riga di comando di AzureCreate a complete Linux virtual machine with the Azure CLI

Per creare rapidamente una macchina virtuale in Azure, è possibile usare un singolo comando dell'interfaccia della riga di comando di Azure che si serve dei valori predefiniti per creare tutte le risorse di supporto richieste.To quickly create a virtual machine (VM) in Azure, you can use a single Azure CLI command that uses default values to create any required supporting resources. Le risorse, ad esempio una rete virtuale, l'indirizzo IP pubblico e regole del gruppo di sicurezza di rete, vengono create automaticamente.Resources such as a virtual network, public IP address, and network security group rules are automatically created. Per un maggiore controllo dell'ambiente di produzione è possibile creare queste risorse in anticipo e quindi aggiungervi le macchine virtuali.For more control of your environment in production use, you may create these resources ahead of time and then add your VMs to them. In questo articolo descrive come creare una macchina virtuale e tutte le risorse di supporto, una alla volta.This article guides you through how to create a VM and each of the supporting resources one by one.

Verificare di avere installato la versione più recente dell'interfaccia della riga di comando di Azure 2.0 e di avere eseguito la registrazione a un account di Azure con az login.Make sure that you have installed the latest Azure CLI 2.0 and logged to an Azure account in with az login.

Nell'esempio seguente sostituire i nomi dei parametri di esempio con i valori desiderati.In the following examples, replace example parameter names with your own values. I nomi dei parametri di esempio includono myResourceGroup, myVnet e myVM.Example parameter names include myResourceGroup, myVnet, and myVM.

Creare un gruppo di risorseCreate resource group

Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.An Azure resource group is a logical container into which Azure resources are deployed and managed. Il gruppo di risorse deve essere creato prima della macchina virtuale e delle risorse della rete virtuale di supporto.A resource group must be created before a virtual machine and supporting virtual network resources. Creare il gruppo di risorse con az group create.Create the resource group with az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:The following example creates a resource group named myResourceGroup in the eastus location:

az group create --name myResourceGroup --location eastus

Per impostazione predefinita, l'output del comando dell'interfaccia della riga di comando di Azure è in formato JSON, ovvero JavaScript Object Notation.By default, the output of Azure CLI commands is in JSON (JavaScript Object Notation). Per trasformare l'output predefinito in un elenco o in una tabella, ad esempio, usare az configure --output.To change the default output to a list or table, for example, use az configure --output. È possibile anche aggiungere --output a qualsiasi comando per apportare una modifica una sola volta nel formato di output.You can also add --output to any command for a one time change in output format. L'esempio seguente illustra l'output JSON ottenuto dal comando az group create:The following example shows the JSON output from the az group create command:

{
  "id": "/subscriptions/guid/resourceGroups/myResourceGroup",
  "location": "eastus",
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Creare una rete virtuale e una subnetCreate a virtual network and subnet

Dopodiché è necessario creare una rete virtuale in Azure e una subnet in cui poter creare le macchine virtuali.Next you create a virtual network in Azure and a subnet in to which you can create your VMs. Usare az network vnet create per creare una rete virtuale denominata myVnet con il prefisso dell'indirizzo 192.168.0.0/16.Use az network vnet create to create a virtual network named myVnet with the 192.168.0.0/16 address prefix. Aggiungere anche una subnet denominata mySubnet con un prefisso di indirizzo di 192.168.1.0/24:You also add a subnet named mySubnet with the address prefix of 192.168.1.0/24:

az network vnet create \
    --resource-group myResourceGroup \
    --name myVnet \
    --address-prefix 192.168.0.0/16 \
    --subnet-name mySubnet \
    --subnet-prefix 192.168.1.0/24

L'output mostra che la subnet viene creata in modo logico all'interno della rete virtuale:The output shows the subnet is logically created inside the virtual network:

{
  "addressSpace": {
    "addressPrefixes": [
      "192.168.0.0/16"
    ]
  },
  "dhcpOptions": {
    "dnsServers": []
  },
  "etag": "W/\"e95496fc-f417-426e-a4d8-c9e4d27fc2ee\"",
  "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet",
  "location": "eastus",
  "name": "myVnet",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "resourceGuid": "ed62fd03-e9de-430b-84df-8a3b87cacdbb",
  "subnets": [
    {
      "addressPrefix": "192.168.1.0/24",
      "etag": "W/\"e95496fc-f417-426e-a4d8-c9e4d27fc2ee\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet",
      "ipConfigurations": null,
      "name": "mySubnet",
      "networkSecurityGroup": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "resourceNavigationLinks": null,
      "routeTable": null
    }
  ],
  "tags": {},
  "type": "Microsoft.Network/virtualNetworks",
  "virtualNetworkPeerings": null
}

Creare un indirizzo IP pubblicoCreate a public IP address

Creare ora un indirizzo IP pubblico con az network public-ip create.Now let's create a public IP address with az network public-ip create. L'indirizzo IP pubblico consente di connettersi alle macchine virtuali da Internet.This public IP address enables you to connect to your VMs from the Internet. Poiché l'indirizzo predefinito è dinamico, creare una voce DNS denominata con il --domain-name-label parametro.Because the default address is dynamic, create a named DNS entry with the --domain-name-label parameter. L'esempio seguente crea un indirizzo IP pubblico chiamato myPublicIP con il nome DNS mypublicdns.The following example creates a public IP named myPublicIP with the DNS name of mypublicdns. Dal momento che il nome DNS deve essere univoco, è necessario inserire il proprio nome DNS univoco:Because the DNS name must be unique, provide your own unique DNS name:

az network public-ip create \
    --resource-group myResourceGroup \
    --name myPublicIP \
    --dns-name mypublicdns

Output:Output:

{
  "publicIp": {
    "dnsSettings": {
      "domainNameLabel": "mypublicdns",
      "fqdn": "mypublicdns.eastus.cloudapp.azure.com",
      "reverseFqdn": null
    },
    "etag": "W/\"2632aa72-3d2d-4529-b38e-b622b4202925\"",
    "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP",
    "idleTimeoutInMinutes": 4,
    "ipAddress": null,
    "ipConfiguration": null,
    "location": "eastus",
    "name": "myPublicIP",
    "provisioningState": "Succeeded",
    "publicIpAddressVersion": "IPv4",
    "publicIpAllocationMethod": "Dynamic",
    "resourceGroup": "myResourceGroup",
    "resourceGuid": "4c65de38-71f5-4684-be10-75e605b3e41f",
    "tags": null,
    "type": "Microsoft.Network/publicIPAddresses"
  }
}

Creare un gruppo di sicurezza di reteCreate a network security group

Per controllare il flusso del traffico da e verso le macchine virtuali, si applica un gruppo di sicurezza di rete per una scheda di rete virtuale o una subnet.To control the flow of traffic in and out of your VMs, you apply a network security group to a virtual NIC or subnet. L'esempio seguente usa az network nsg create per creare un gruppo di sicurezza di rete denominato myNetworkSecurityGroup:The following example uses az network nsg create to create a network security group named myNetworkSecurityGroup:

az network nsg create \
    --resource-group myResourceGroup \
    --name myNetworkSecurityGroup

Si definiscono regole che consentono o negano il traffico specifico.You define rules that allow or deny specific traffic. Per consentire le connessioni in ingresso sulla porta 22 (per consentire l'accesso SSH), creare una regola in ingresso con creare una regola gruppo rete az.To allow inbound connections on port 22 (to enable SSH access), create an inbound rule with az network nsg rule create. L'esempio seguente crea una regola denominata myNetworkSecurityGroupRuleSSH:The following example creates a rule named myNetworkSecurityGroupRuleSSH:

az network nsg rule create \
    --resource-group myResourceGroup \
    --nsg-name myNetworkSecurityGroup \
    --name myNetworkSecurityGroupRuleSSH \
    --protocol tcp \
    --priority 1000 \
    --destination-port-range 22 \
    --access allow

Per consentire le connessioni in ingresso sulla porta 80 (per il traffico web), aggiungere un'altra regola di gruppo di sicurezza di rete.To allow inbound connections on port 80 (for web traffic), add another network security group rule. L'esempio seguente crea una regola denominata myNetworkSecurityGroupRuleHTTP:The following example creates a rule named myNetworkSecurityGroupRuleHTTP:

az network nsg rule create \
    --resource-group myResourceGroup \
    --nsg-name myNetworkSecurityGroup \
    --name myNetworkSecurityGroupRuleWeb \
    --protocol tcp \
    --priority 1001 \
    --destination-port-range 80 \
    --access allow

Esaminare il gruppo di sicurezza di rete e le regole con az network nsg show:Examine the network security group and rules with az network nsg show:

az network nsg show --resource-group myResourceGroup --name myNetworkSecurityGroup

Output:Output:

{
  "defaultSecurityRules": [
    {
      "access": "Allow",
      "description": "Allow inbound traffic from all VMs in VNET",
      "destinationAddressPrefix": "VirtualNetwork",
      "destinationPortRange": "*",
      "direction": "Inbound",
      "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/defaultSecurityRules/AllowVnetInBound",
      "name": "AllowVnetInBound",
      "priority": 65000,
      "protocol": "*",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "VirtualNetwork",
      "sourcePortRange": "*"
    },
    {
      "access": "Allow",
      "description": "Allow inbound traffic from azure load balancer",
      "destinationAddressPrefix": "*",
      "destinationPortRange": "*",
      "direction": "Inbound",
      "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/defaultSecurityRules/AllowAzureLoadBalancerInBou
      "name": "AllowAzureLoadBalancerInBound",
      "priority": 65001,
      "protocol": "*",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "AzureLoadBalancer",
      "sourcePortRange": "*"
    },
    {
      "access": "Deny",
      "description": "Deny all inbound traffic",
      "destinationAddressPrefix": "*",
      "destinationPortRange": "*",
      "direction": "Inbound",
      "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/defaultSecurityRules/DenyAllInBound",
      "name": "DenyAllInBound",
      "priority": 65500,
      "protocol": "*",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "*",
      "sourcePortRange": "*"
    },
    {
      "access": "Allow",
      "description": "Allow outbound traffic from all VMs to all VMs in VNET",
      "destinationAddressPrefix": "VirtualNetwork",
      "destinationPortRange": "*",
      "direction": "Outbound",
      "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/defaultSecurityRules/AllowVnetOutBound",
      "name": "AllowVnetOutBound",
      "priority": 65000,
      "protocol": "*",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "VirtualNetwork",
      "sourcePortRange": "*"
    },
    {
      "access": "Allow",
      "description": "Allow outbound traffic from all VMs to Internet",
      "destinationAddressPrefix": "Internet",
      "destinationPortRange": "*",
      "direction": "Outbound",
      "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/defaultSecurityRules/AllowInternetOutBound",
      "name": "AllowInternetOutBound",
      "priority": 65001,
      "protocol": "*",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "*",
      "sourcePortRange": "*"
    },
    {
      "access": "Deny",
      "description": "Deny all outbound traffic",
      "destinationAddressPrefix": "*",
      "destinationPortRange": "*",
      "direction": "Outbound",
      "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/defaultSecurityRules/DenyAllOutBound",
      "name": "DenyAllOutBound",
      "priority": 65500,
      "protocol": "*",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "*",
      "sourcePortRange": "*"
    }
  ],
  "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
  "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup",
  "location": "eastus",
  "name": "myNetworkSecurityGroup",
  "networkInterfaces": null,
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "resourceGuid": "47a9964e-23a3-438a-a726-8d60ebbb1c3c",
  "securityRules": [
    {
      "access": "Allow",
      "description": null,
      "destinationAddressPrefix": "*",
      "destinationPortRange": "22",
      "direction": "Inbound",
      "etag": "W/\"9e344b60-0daa-40a6-84f9-0ebbe4a4b640\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/securityRules/myNetworkSecurityGroupRuleSSH",
      "name": "myNetworkSecurityGroupRuleSSH",
      "priority": 1000,
      "protocol": "Tcp",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "*",
      "sourcePortRange": "*"
    },
    {
      "access": "Allow",
      "description": null,
      "destinationAddressPrefix": "*",
      "destinationPortRange": "80",
      "direction": "Inbound",
      "etag": "W/\"9e344b60-0daa-40a6-84f9-0ebbe4a4b640\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/securityRules/myNetworkSecurityGroupRuleWeb",
      "name": "myNetworkSecurityGroupRuleWeb",
      "priority": 1001,
      "protocol": "Tcp",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "*",
      "sourcePortRange": "*"
    }
  ],
  "subnets": null,
  "tags": null,
  "type": "Microsoft.Network/networkSecurityGroups"
}

Creare una scheda di rete virtualeCreate a virtual NIC

Le schede di interfaccia di rete virtuale sono disponibili a livello di programmazione in quanto è possibile applicare delle regole di uso.Virtual network interface cards (NICs) are programmatically available because you can apply rules to their use. A seconda di dimensioni della macchina virtuale, è possibile collegare più schede di rete virtuale a una macchina virtuale.Depending on the VM size, you can attach multiple virtual NICs to a VM. Nell'esempio seguente az rete nic creare comando, si crea una scheda di rete denominata myNic e associarlo a gruppo di sicurezza di rete.In the following az network nic create command, you create a NIC named myNic and associate it with your network security group. L'indirizzo IP pubblico myPublicIP è associato anche a una scheda di interfaccia di rete virtuale.The public IP address myPublicIP is also associated with the virtual NIC.

az network nic create \
    --resource-group myResourceGroup \
    --name myNic \
    --vnet-name myVnet \
    --subnet mySubnet \
    --public-ip-address myPublicIP \
    --network-security-group myNetworkSecurityGroup

Output:Output:

{
  "NewNIC": {
    "dnsSettings": {
      "appliedDnsServers": [],
      "dnsServers": [],
      "internalDnsNameLabel": null,
      "internalDomainNameSuffix": "brqlt10lvoxedgkeuomc4pm5tb.bx.internal.cloudapp.net",
      "internalFqdn": null
    },
    "enableAcceleratedNetworking": false,
    "enableIpForwarding": false,
    "etag": "W/\"04b5ab44-d8f4-422a-9541-e5ae7de8466d\"",
    "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myNic",
    "ipConfigurations": [
      {
        "applicationGatewayBackendAddressPools": null,
        "etag": "W/\"04b5ab44-d8f4-422a-9541-e5ae7de8466d\"",
        "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myNic/ipConfigurations/ipconfig1",
        "loadBalancerBackendAddressPools": null,
        "loadBalancerInboundNatRules": null,
        "name": "ipconfig1",
        "primary": true,
        "privateIpAddress": "192.168.1.4",
        "privateIpAddressVersion": "IPv4",
        "privateIpAllocationMethod": "Dynamic",
        "provisioningState": "Succeeded",
        "publicIpAddress": {
          "dnsSettings": null,
          "etag": null,
          "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP",
          "idleTimeoutInMinutes": null,
          "ipAddress": null,
          "ipConfiguration": null,
          "location": null,
          "name": null,
          "provisioningState": null,
          "publicIpAddressVersion": null,
          "publicIpAllocationMethod": null,
          "resourceGroup": "myResourceGroup",
          "resourceGuid": null,
          "tags": null,
          "type": null
        },
        "resourceGroup": "myResourceGroup",
        "subnet": {
          "addressPrefix": null,
          "etag": null,
          "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet",
          "ipConfigurations": null,
          "name": null,
          "networkSecurityGroup": null,
          "provisioningState": null,
          "resourceGroup": "myResourceGroup",
          "resourceNavigationLinks": null,
          "routeTable": null
        }
      }
    ],
    "location": "eastus",
    "macAddress": null,
    "name": "myNic",
    "networkSecurityGroup": {
      "defaultSecurityRules": null,
      "etag": null,
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup",
      "location": null,
      "name": null,
      "networkInterfaces": null,
      "provisioningState": null,
      "resourceGroup": "myResourceGroup",
      "resourceGuid": null,
      "securityRules": null,
      "subnets": null,
      "tags": null,
      "type": null
    },
    "primary": null,
    "provisioningState": "Succeeded",
    "resourceGroup": "myResourceGroup",
    "resourceGuid": "b3dbaa0e-2cf2-43be-a814-5cc49fea3304",
    "tags": null,
    "type": "Microsoft.Network/networkInterfaces",
    "virtualMachine": null
  }
}

Creare un set di disponibilitàCreate an availability set

I set di disponibilità agevolano la distribuzione delle macchine virtuali nei domini di errore e nei domini di aggiornamento.Availability sets help spread your VMs across fault domains and update domains. Anche se si crea una sola macchina virtuale al momento, è consigliabile usare i set di disponibilità in modo da semplificarne l'espansione in futuro.Even though you only create one VM right now, it's best practice to use availability sets to make it easier to expand in the future.

I domini di errore definiscono un gruppo di macchine virtuali che condividono una fonte di alimentazione e uno switch di rete comuni.Fault domains define a grouping of virtual machines that share a common power source and network switch. Per impostazione predefinita, le macchine virtuali configurate nell'ambito di un set di disponibilità vengono suddivise tra un massimo di tre domini di errore.By default, the virtual machines that are configured within your availability set are separated across up to three fault domains. Un problema hardware in uno di questi domini di errore non influenza tutte le macchine virtuali che eseguono l'app.A hardware issue in one of these fault domains does not affect every VM that is running your app.

I domini di aggiornamento indicano gruppi di macchine virtuali e l'hardware fisico sottostante che possono essere riavviati nello stesso momento.Update domains indicate groups of virtual machines and underlying physical hardware that can be rebooted at the same time. Durante la manutenzione pianificata, i domini di aggiornamento non vengono necessariamente riavviati in ordine sequenziale, ma ne viene riavviato uno solo alla volta.During planned maintenance, the order in which update domains are rebooted might not be sequential, but only one update domain is rebooted at a time.

Azure distribuisce automaticamente le macchine virtuali tra i domini di errore e di aggiornamento durante il posizionamento in un set di disponibilità.Azure automatically distributes VMs across the fault and update domains when placing them in an availability set. Per altre informazioni, vedere Gestione della disponibilità delle macchine virtuali.For more information, see managing the availability of VMs.

Creare un set di disponibilità per la macchina virtuale con az vm availability-set create.Create an availability set for your VM with az vm availability-set create. L'esempio seguente crea un set di disponibilità denominato myAvailabilitySet:The following example creates an availability set named myAvailabilitySet:

az vm availability-set create \
    --resource-group myResourceGroup \
    --name myAvailabilitySet

L'output elenca i domini di errore e i domini di aggiornamento:The output notes fault domains and update domains:

{
  "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Compute/availabilitySets/myAvailabilitySet",
  "location": "eastus",
  "managed": null,
  "name": "myAvailabilitySet",
  "platformFaultDomainCount": 2,
  "platformUpdateDomainCount": 5,
  "resourceGroup": "myResourceGroup",
  "sku": {
    "capacity": null,
    "managed": true,
    "tier": null
  },
  "statuses": null,
  "tags": {},
  "type": "Microsoft.Compute/availabilitySets",
  "virtualMachines": []
}

Creare una macchina virtualeCreate a VM

Sono state create le risorse di rete per supportare le VM accessibili tramite Internet.You've created the network resources to support Internet-accessible VMs. A questo punto, creare una macchina virtuale e proteggerla con la chiave SSH.Now create a VM and secure it with an SSH key. In questo esempio, creare una macchina virtuale in base il più recente LTS Ubuntu.In this example, let's create an Ubuntu VM based on the most recent LTS. È possibile trovare immagini aggiuntive con az vm image list, come descritto nell'articolo sulla ricerca di immagini della macchina virtuale di Azure.You can find additional images with az vm image list, as described in finding Azure VM images.

Specificare una chiave SSH per l'autenticazione.Specify an SSH key to use for authentication. Se non si dispone di una coppia di chiavi pubblica SSH, è possibile crearla o utilizzare il parametro --generate-ssh-keys per crearla automaticamente.If you do not have an SSH public key pair, you can create them or use the --generate-ssh-keys parameter to create them for you. Se si dispone già di una coppia di chiavi, questo parametro utilizza le chiavi esistenti nello ~/.ssh.If you already have a key pair, this parameter uses existing keys in ~/.ssh.

Creare la macchina virtuale da riportare tutte le risorse e informazioni con il creare vm az comando.Create the VM by bringing all the resources and information together with the az vm create command. L'esempio seguente crea una macchina virtuale denominata myVM:The following example creates a VM named myVM:

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --location eastus \
    --availability-set myAvailabilitySet \
    --nics myNic \
    --image UbuntuLTS \
    --admin-username azureuser \
    --generate-ssh-keys

Eseguire l'autenticazione SSH alla macchina virtuale con la voce DNS indicata al momento della creazione dell'indirizzo IP pubblico.SSH to your VM with the DNS entry you provided when you created the public IP address. Questo fqdn viene mostrato nell'output durante la creazione della macchina virtuale:This fqdn is shown in the output as you create your VM:

{
  "fqdns": "mypublicdns.eastus.cloudapp.azure.com",
  "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "eastus",
  "macAddress": "00-0D-3A-13-71-C8",
  "powerState": "VM running",
  "privateIpAddress": "192.168.1.5",
  "publicIpAddress": "13.90.94.252",
  "resourceGroup": "myResourceGroup"
}
ssh azureuser@mypublicdns.eastus.cloudapp.azure.com

Output:Output:

The authenticity of host 'mypublicdns.eastus.cloudapp.azure.com (13.90.94.252)' can't be established.
ECDSA key fingerprint is SHA256:SylINP80Um6XRTvWiFaNz+H+1jcrKB1IiNgCDDJRj6A.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'mypublicdns.eastus.cloudapp.azure.com,13.90.94.252' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.11.0-1016-azure x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

azureuser@myVM:~$

È possibile installare NGINX e vedere il flusso del traffico alla macchina virtuale.You can install NGINX and see the traffic flow to the VM. Installare NGINX come indicato di seguito:Install NGINX as follows:

sudo apt-get install -y nginx

Per visualizzare il sito NGINX predefinito in azione, aprire il Web browser e immettere il nome FQDN:To see the default NGINX site in action, open your web browser and enter your FQDN:

Sito NGINX predefinito nella macchina virtuale

Esportare come modelloExport as a template

È possibile creare ora un ambiente di sviluppo aggiuntivo usando gli stessi parametri oppure creare un ambiente di produzione compatibile?What if you now want to create an additional development environment with the same parameters, or a production environment that matches it? Azure Resource Manager utilizza i modelli JSON che definiscono tutti i parametri per l'ambiente.Resource Manager uses JSON templates that define all the parameters for your environment. È possibile creare interi ambienti facendo riferimento a questo modello JSON.You build out entire environments by referencing this JSON template. È possibile creare modelli JSON manualmente o esportare un ambiente esistente per creare il modello JSON desiderato.You can build JSON templates manually or export an existing environment to create the JSON template for you. Usare az group export per esportare il gruppo di risorse come segue:Use az group export to export your resource group as follows:

az group export --name myResourceGroup > myResourceGroup.json

Questo comando crea il file myResourceGroup.json nella directory di lavoro corrente.This command creates the myResourceGroup.json file in your current working directory. Quando si crea un ambiente da questo modello, vengono richiesti tutti i nomi delle risorse.When you create an environment from this template, you are prompted for all the resource names. È possibile inserire questi nomi nel file del modello aggiungendo il parametro --include-parameter-default-value al comando az group export.You can populate these names in your template file by adding the --include-parameter-default-value parameter to the az group export command. Modificare il modello JSON per specificare i nomi delle risorse, o creare un file parameters.json nel quale vengono specificati i nomi delle risorse.Edit your JSON template to specify the resource names, or create a parameters.json file that specifies the resource names.

Per creare un ambiente in base al modello, usare az group deployment create come indicato di seguito:To create an environment from your template, use az group deployment create as follows:

az group deployment create \
    --resource-group myNewResourceGroup \
    --template-file myResourceGroup.json

Se lo si desidera, è possibile consultare ulteriori informazioni su come eseguire la distribuzione partendo dai modelli.You might want to read more about how to deploy from templates. Ulteriori informazioni su come aggiornare gli ambienti in modo incrementale, utilizzare il file di parametri e accedere ai modelli da un unico percorso di archiviazione.Learn about how to incrementally update environments, use the parameters file, and access templates from a single storage location.

Passaggi successiviNext steps

Ora è possibile iniziare a utilizzare più componenti di rete e VM.Now you're ready to begin working with multiple networking components and VMs. È possibile utilizzare questo ambiente di esempio per compilare l'applicazione utilizzando i componenti principali presentati qui.You can use this sample environment to build out your application by using the core components introduced here.