Szybki Start: Tworzenie maszyny wirtualnej serwera z systemem Linux przy użyciu programu PowerShell w centrum Azure StackQuickstart: Create a Linux server VM by using PowerShell in Azure Stack Hub

Można utworzyć maszynę wirtualną Ubuntu Server 16,04 LTS przy użyciu narzędzia PowerShell centrum Azure Stack.You can create an Ubuntu Server 16.04 LTS virtual machine (VM) by using Azure Stack Hub PowerShell. W tym artykule opisano tworzenie i używanie maszyny wirtualnej.In this article, you create and use a virtual machine. W tym artykule pokazano również, jak:This article also shows you how to:

  • Nawiązywanie połączenia z maszyną wirtualną za pomocą klienta zdalnego.Connect to the VM with a remote client.
  • Zainstaluj serwer sieci Web NGINX i Wyświetl domyślną stronę główną.Install an NGINX web server and view the default home page.
  • Oczyść nieużywane zasoby.Clean up unused resources.

Wymagania wstępnePrerequisites

Tworzenie grupy zasobówCreate a resource group

Grupa zasobów to logiczny kontener służący do wdrażania zasobów centrum Azure Stack i zarządzania nimi.A resource group is a logical container where you can deploy and manage Azure Stack Hub resources. Aby utworzyć grupę zasobów, uruchom następujący blok kodu:To create a resource group, run the following code block:

Uwaga

Przypisano wartości dla wszystkich zmiennych w poniższym przykładzie kodu.We've assigned values for all variables in the following code examples. Można jednak przypisać własne wartości.However, you can assign your own values.

# Create variables to store the location and resource group names.
$location = "local"
$ResourceGroupName = "myResourceGroup"

New-AzResourceGroup `
  -Name $ResourceGroupName `
  -Location $location

Tworzenie zasobów magazynuCreate storage resources

Utwórz konto magazynu, które będzie używane do przechowywania danych wyjściowych diagnostyki rozruchu.Create a storage account that will be used for storing the boot diagnostics output.

# Create variables to store the storage account name and the storage account SKU information
$StorageAccountName = "mystorageaccount"
$SkuName = "Standard_LRS"

# Create a new storage account
$StorageAccount = New-AzStorageAccount `
  -Location $location `
  -ResourceGroupName $ResourceGroupName `
  -Type $SkuName `
  -Name $StorageAccountName

Set-AzCurrentStorageAccount `
  -StorageAccountName $storageAccountName `
  -ResourceGroupName $resourceGroupName

Tworzenie zasobów sieciowychCreate networking resources

Utwórz sieć wirtualną, podsieć i publiczny adres IP.Create a virtual network, a subnet, and a public IP address. Te zasoby są używane do zapewniania łączności sieciowej z maszyną wirtualną.These resources are used to provide network connectivity to the VM.

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

# Create a virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName $ResourceGroupName `
  -Location $location `
  -Name MyVnet `
  -AddressPrefix 192.168.0.0/16 `
  -Subnet $subnetConfig

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

Tworzenie sieciowej grupy zabezpieczeń i reguły sieciowej grupy zabezpieczeńCreate a network security group and a network security group rule

Grupa zabezpieczeń sieci zabezpiecza maszynę wirtualną za pomocą reguł ruchu przychodzącego i wychodzącego.The network security group secures the VM by using inbound and outbound rules. Utwórz regułę ruchu przychodzącego dla portu 3389, aby zezwolić na przychodzące połączenia Pulpit zdalny i regułę ruchu przychodzącego dla portu 80 w celu zezwalania na ruch przychodzący sieci Web.Create an inbound rule for port 3389 to allow incoming Remote Desktop connections and an inbound rule for port 80 to allow incoming web traffic.

# Create variables to store the network security group and rules names.
$nsgName = "myNetworkSecurityGroup"
$nsgRuleSSHName = "myNetworkSecurityGroupRuleSSH"
$nsgRuleWebName = "myNetworkSecurityGroupRuleWeb"


# Create an inbound network security group rule for port 22
$nsgRuleSSH = New-AzNetworkSecurityRuleConfig -Name $nsgRuleSSHName -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-AzNetworkSecurityRuleConfig -Name $nsgRuleWebName -Protocol Tcp `
-Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 80 -Access Allow

# Create a network security group
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Location $location `
-Name $nsgName -SecurityRules $nsgRuleSSH,$nsgRuleWeb

Tworzenie karty sieciowej dla maszyny wirtualnejCreate a network card for the VM

Karta sieciowa łączy maszynę wirtualną z podsiecią, sieciową grupą zabezpieczeń i publicznym adresem IP.The network card connects the VM to a subnet, network security group, and public IP address.

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

Tworzenie maszyny wirtualnejCreate a VM

Utwórz konfigurację maszyny wirtualnej.Create a VM configuration. Ta konfiguracja obejmuje ustawienia do użycia podczas wdrażania maszyny wirtualnej (na przykład poświadczenia użytkownika, rozmiar i obraz maszyny wirtualnej).This configuration includes the settings to use when you deploy the VM (for example, user credentials, size, and the VM image).

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

# Create the VM configuration object
$VmName = "VirtualMachinelatest"
$VmSize = "Standard_D1"
$VirtualMachine = New-AzVMConfig `
  -VMName $VmName `
  -VMSize $VmSize

$VirtualMachine = Set-AzVMOperatingSystem `
  -VM $VirtualMachine `
  -Linux `
  -ComputerName "MainComputer" `
  -Credential $cred

$VirtualMachine = Set-AzVMSourceImage `
  -VM $VirtualMachine `
  -PublisherName "Canonical" `
  -Offer "UbuntuServer" `
  -Skus "16.04-LTS" `
  -Version "latest"

# Set the operating system disk properties on a VM
$VirtualMachine = Set-AzVMOSDisk `
  -VM $VirtualMachine `
  -CreateOption FromImage | `
  Set-AzVMBootDiagnostics -ResourceGroupName $ResourceGroupName `
  -StorageAccountName $StorageAccountName -Enable |`
  Add-AzVMNetworkInterface -Id $nic.Id

# Configure SSH keys
$sshPublicKey = Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"

# Add the SSH key to the VM
Add-AzVMSshPublicKey -VM $VirtualMachine `
 -KeyData $sshPublicKey `
 -Path "/home/azureuser/.ssh/authorized_keys"

# Create the VM
New-AzVM `
  -ResourceGroupName $ResourceGroupName `
 -Location $location `
  -VM $VirtualMachine

Szybkie tworzenie maszyny wirtualnej: pełny skryptVM Quick Create: Full script

Uwaga

Ten krok jest zasadniczo poprzedzający kod scalony ze sobą, ale z hasłem, a nie kluczem SSH do uwierzytelnienia.This step is essentially the preceding code merged together, but with a password rather than an SSH key for authentication.

## Create a resource group

<#
A resource group is a logical container where you can deploy and manage Azure Stack Hub resources. From your development kit or the Azure Stack Hub integrated system, run the following code block to create a resource group. Though we've assigned values for all the variables in this article, you can use these values or assign new ones.
#>

# Edit your variables, if required

# Create variables to store the location and resource group names
$location = "local"
$ResourceGroupName = "myResourceGroup"

# Create variables to store the storage account name and the storage account SKU information
$StorageAccountName = "mystorageaccount"
$SkuName = "Standard_LRS"

# Create variables to store the network security group and rules names
$nsgName = "myNetworkSecurityGroup"
$nsgRuleSSHName = "myNetworkSecurityGroupRuleSSH"
$nsgRuleWebName = "myNetworkSecurityGroupRuleWeb"

# Create variable for VM password
$VMPassword = 'Password123!'

# End of variables - no need to edit anything past that point to deploy a single VM

# Create a resource group
New-AzResourceGroup `
  -Name $ResourceGroupName `
  -Location $location

## Create storage resources

# Create a storage account, and then create a storage container for the Ubuntu Server 16.04 LTS image

# Create a new storage account
$StorageAccount = New-AzStorageAccount `
  -Location $location `
  -ResourceGroupName $ResourceGroupName `
  -Type $SkuName `
  -Name $StorageAccountName

Set-AzCurrentStorageAccount `
  -StorageAccountName $storageAccountName `
  -ResourceGroupName $resourceGroupName

# Create a storage container to store the VM image
$containerName = 'osdisks'
$container = New-AzureStorageContainer `
  -Name $containerName `
  -Permission Blob


## Create networking resources

# Create a virtual network, a subnet, and a public IP address, resources that are used provide network connectivity to the VM

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

# Create a virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName $ResourceGroupName `
  -Location $location `
  -Name MyVnet `
  -AddressPrefix 192.168.0.0/16 `
  -Subnet $subnetConfig

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


### Create a network security group and a network security group rule

<#
The network security group secures the VM by using inbound and outbound rules. Create an inbound rule for port 3389 to allow incoming Remote Desktop connections and an inbound rule for port 80 to allow incoming web traffic.
#>

# Create an inbound network security group rule for port 22
$nsgRuleSSH = New-AzNetworkSecurityRuleConfig -Name $nsgRuleSSHName -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-AzNetworkSecurityRuleConfig -Name $nsgRuleWebName -Protocol Tcp `
-Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 80 -Access Allow

# Create a network security group
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Location $location `
-Name $nsgName -SecurityRules $nsgRuleSSH,$nsgRuleWeb

### Create a network card for the VM

# The network card connects the VM to a subnet, network security group, and public IP address.

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

## Create a VM
<#
Create a VM configuration. This configuration includes the settings used when deploying the VM. For example: user credentials, size, and the VM image.
#>

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

# Create the VM configuration object
$VmName = "VirtualMachinelatest"
$VmSize = "Standard_D1"
$VirtualMachine = New-AzVMConfig `
  -VMName $VmName `
  -VMSize $VmSize

$VirtualMachine = Set-AzVMOperatingSystem `
  -VM $VirtualMachine `
  -Linux `
  -ComputerName "MainComputer" `
  -Credential $cred

$VirtualMachine = Set-AzVMSourceImage `
  -VM $VirtualMachine `
  -PublisherName "Canonical" `
  -Offer "UbuntuServer" `
  -Skus "16.04-LTS" `
  -Version "latest"

$osDiskName = "OsDisk"
$osDiskUri = '{0}vhds/{1}-{2}.vhd' -f `
  $StorageAccount.PrimaryEndpoints.Blob.ToString(),`
  $vmName.ToLower(), `
  $osDiskName

# Set the operating system disk properties on a VM
$VirtualMachine = Set-AzVMOSDisk `
  -VM $VirtualMachine `
  -Name $osDiskName `
  -VhdUri $OsDiskUri `
  -CreateOption FromImage | `
  Add-AzVMNetworkInterface -Id $nic.Id

# Create the VM
New-AzVM `
  -ResourceGroupName $ResourceGroupName `
 -Location $location `
  -VM $VirtualMachine

Łączenie z maszyną wirtualnąConnect to the VM

Po wdrożeniu maszyny wirtualnej skonfiguruj dla niej połączenie SSH.After you've deployed the VM, configure an SSH connection for it. Aby uzyskać publiczny adres IP maszyny wirtualnej, użyj polecenia Get-AzPublicIpAddress :To get the public IP address of the VM, use the Get-AzPublicIpAddress command:

Get-AzPublicIpAddress -ResourceGroupName myResourceGroup | Select IpAddress

Z poziomu systemu klienckiego z zainstalowanym protokołem SSH Użyj następującego polecenia, aby nawiązać połączenie z maszyną wirtualną.From a client system with SSH installed, use the following command to connect to the VM. Jeśli pracujesz w systemie Windows, możesz użyć polecenie wytwórz, aby utworzyć połączenie.If you're working on Windows, you can use PuTTY to create the connection.

ssh <Public IP Address>

Po wyświetleniu monitu zaloguj się jako azureuser.When you're prompted, sign in as azureuser. Jeśli podczas tworzenia kluczy SSH użyto hasła, należy podać hasło.If you used a passphrase when you created the SSH keys, you'll have to provide the passphrase.

Instalowanie serwera sieci Web NGINXInstall the NGINX web server

Aby zaktualizować zasoby pakietu i zainstalować najnowszy pakiet NGINX, uruchom następujący skrypt:To update package resources and install the latest NGINX package, run the following script:

#!/bin/bash

# update package source
apt-get -y update

# install NGINX
apt-get -y install nginx

Wyświetlanie strony powitalnej serwera NGINXView the NGINX welcome page

Po zainstalowaniu serwera sieci Web NGINX i otwarciu portu 80 na maszynie wirtualnej można uzyskać dostęp do serwera sieci Web przy użyciu publicznego adresu IP maszyny wirtualnej.With the NGINX web server installed, and port 80 open on your VM, you can access the web server by using the VM's public IP address. Otwórz przeglądarkę internetową i przejdź do http://<public IP address> .Open a web browser, and go to http://<public IP address>.

Strona powitalna serwera sieci Web NGINX

Czyszczenie zasobówClean up resources

Zasoby, które nie są już potrzebne, można wyczyścić za pomocą polecenia Remove-AzResourceGroup .You can clean up the resources that you don't need any longer by using the Remove-AzResourceGroup command. Aby usunąć grupę zasobów i wszystkie jej zasoby, uruchom następujące polecenie:To delete the resource group and all its resources, run the following command:

Remove-AzResourceGroup -Name myResourceGroup

Następne krokiNext steps

W tym przewodniku szybki start wdrożono podstawową maszynę wirtualną z systemem Linux.In this quickstart, you deployed a basic Linux server VM. Aby dowiedzieć się więcej o maszynach wirtualnych Azure Stack Hub, przejdź do zagadnień dotyczących maszyn wirtualnych w centrum Azure Stack.To learn more about Azure Stack Hub VMs, go to Considerations for VMs in Azure Stack Hub.