Azure PowerShell 模块用于从 PowerShell 命令行或脚本创建和管理 Azure 资源。 本快速入门展示了如何使用 Azure PowerShell 模块在 Azure 中部署 Linux 虚拟机 (VM)。 本快速入门使用 Canonical 提供的 Ubuntu 18.04 LTS 市场映像。 若要查看运行中的 VM,也可以通过 SSH 登录到该 VM 并安装 NGINX Web 服务器。

如果没有 Azure 订阅,可在开始前创建一个试用帐户

启动 Azure 本地 Shell

若要在本地安装和使用 PowerShell,请运行 Get-Module -ListAvailable Az.* 以查找版本。 如果在本地运行 PowerShell,则还需运行 Connect-AzAccount -Environment AzureChinaCloud 来创建与 Azure 的连接。

创建 SSH 密钥对

使用 ssh-keygen 创建 SSH 密钥对。 如果已有一个 SSH 密钥对,则可以跳过此步骤。

Azure PowerShell

ssh-keygen -m PEM -t rsa -b 4096

系统会提示为密钥对提供文件名,也可以点击 Enter 以使用 /home/<username>/.ssh/id_rsa 默认位置。 如果需要,还能够为密钥创建密码。

有关如何创建 SSH 密钥对的更多详细信息,请参阅如何将 SSH 密钥与 Windows 配合使用

创建资源组

使用 New-AzResourceGroup 创建 Azure 资源组。 资源组是在其中部署和管理 Azure 资源的逻辑容器:

Azure PowerShell

New-AzResourceGroup -Name "myResourceGroup" -Location "ChinaEast2"

创建虚拟网络资源

创建虚拟网络、子网和公共 IP 地址。 这些资源用来与 VM 建立网络连接,以及将其连接到 Internet:

Azure PowerShell

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

# Create a virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName "myResourceGroup" `
  -Location "ChinaEast2" `
  -Name "myVNET" `
  -AddressPrefix 192.168.0.0/16 `
  -Subnet $subnetConfig

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

创建 Azure 网络安全组和流量规则。 网络安全组使用入站和出站规则来保护 VM。 在下面的示例中,将为 TCP 端口 22 创建允许 SSH 连接的入站规则。 为允许传入的 Web 流量,还将为 TCP 端口 80 创建一个入站规则。

Azure PowerShell

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

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

使用 New-AzNetworkInterface 创建虚拟网络接口卡 (NIC)。 虚拟 NIC 将 VM 连接到子网、网络安全组和公共 IP 地址。

Azure PowerShell

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

创建虚拟机

若要在 PowerShell 中创建 VM,请创建一个配置,其中包含要使用的映像、大小和身份验证选项等设置。 然后,系统会使用此配置来生成 VM。

定义 SSH 凭据、OS 信息和 VM 大小。 在此示例中,SSH 密钥存储在 ~/.ssh/id_rsa.pub 中。

Azure PowerShell

# 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-AzVMConfig `
  -VMName "myVM" `
  -VMSize "Standard_D1_v2" | `
Set-AzVMOperatingSystem `
  -Linux `
  -ComputerName "myVM" `
  -Credential $cred `
  -DisablePasswordAuthentication | `
Set-AzVMSourceImage `
  -PublisherName "Canonical" `
  -Offer "UbuntuServer" `
  -Skus "18.04-LTS" `
  -Version "latest" | `
Add-AzVMNetworkInterface `
  -Id $nic.Id

# Configure the SSH key
$sshPublicKey = cat ~/.ssh/id_rsa.pub
Add-AzVMSshPublicKey `
  -VM $vmconfig `
  -KeyData $sshPublicKey `
  -Path "/home/azureuser/.ssh/authorized_keys"

现在,组合前面的配置定义来使用 New-AzVM 创建虚拟机:

Azure PowerShell

New-AzVM `
  -ResourceGroupName "myResourceGroup" `
  -Location chinaeast2 -VM $vmConfig

部署 VM 需要数分钟。 部署完成后,请转到下一部分。

连接到 VM

使用公共 IP 地址创建与 VM 的 SSH 连接。 若要查看 VM 的公共 IP 地址,请使用 Get-AzPublicIpAddress cmdlet:

Azure PowerShell

Get-AzPublicIpAddress -ResourceGroupName "myResourceGroup" | Select "IpAddress"

使用用于创建 SSH 密钥对的相同 shell,将以下命令粘贴到 shell 中以创建 SSH 会话。 将 10.111.12.123 替换为 VM 的 IP 地址。

Bash

ssh azureuser@10.111.12.123

出现提示时,请输入登录用户名 azureuser 如果将通行短语与 SSH 密钥配合使用,则需要在出现提示时将其输入。

安装 NGINX

若要查看运行中的 VM,请安装 NGINX Web 服务器。 在 SSH 会话中更新包源,然后安装最新的 NGINX 包。

Bash

sudo apt-get -y update
sudo apt-get -y install nginx

完成后,键入 exit 以离开 SSH 会话。

查看运行中的 Web 服务器

使用所选的 Web 浏览器查看默认的 NGINX 欢迎页。 输入 VM 的公共 IP 地址作为 Web 地址。 可以在 VM 概览页上或此前使用过的 SSH 连接字符串中找到公共 IP 地址。

NGINX 默认欢迎页

清理资源

不再需要时,可以使用 Remove-AzResourceGroup cmdlet 删除资源组、VM 和所有相关资源:

Azure PowerShell

Remove-AzResourceGroup -Name "myResourceGroup"

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注