可使用 Azure CLI 创建 Ubuntu Server 20.04 LTS 虚拟机 (VM)。 在本文中,我们将创建和使用虚拟机。 本文还介绍以下操作:
- 通过远程客户端连接到虚拟机。
- 安装 NGINX Web 服务器并查看默认主页。
- 清理未使用的资源。
先决条件
在开始之前,请确保满足以下先决条件:
Azure Stack Hub 市场中的 Linux 映像
默认情况下,Azure Stack Hub 市场不包含 Linux 映像。 请让 Azure Stack Hub 操作员提供所需的 Ubuntu Server 20.04 LTS 映像。 操作员可以使用将市场项从 Azure 下载到 Azure Stack Hub 中的说明。
Azure Stack Hub 需要使用特定版本的 Azure CLI 来创建和管理其资源。 如果没有为 Azure Stack Hub 配置 Azure CLI,请通过 VPN 连接到基于 Windows 的外部客户端,并按照 安装和配置 Azure CLI 的说明进行作。
Windows 用户配置文件的 .ssh 目录中保存的名为 id_rsa.pub 的安全外壳 (SSH) 公钥。 有关创建 SSH 密钥的详细信息,请参阅 将 SSH 密钥对与 Azure Stack Hub 配合使用。
创建资源组
资源组是一个逻辑容器,可以在其中部署和管理 Azure Stack Hub 资源。 在 Azure Stack Hub 集成系统中,运行 az group create 命令以创建资源组。
注释
我们在以下代码示例中为所有变量分配了值。 但是,你可以分配自己的值。
以下示例在本地位置创建名为 myResourceGroup 的资源组,其中包含随机后缀:
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroup$RANDOM_SUFFIX"
export LOCATION="chinaeast2"
az group create --name $RESOURCE_GROUP --location $LOCATION
结果:
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx",
"location": "local",
"managedBy": null,
"name": "myResourceGroupxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
创建虚拟机
可以使用 az vm create 命令创建虚拟机。 以下示例创建名为 myVM 的 VM。 该示例用作 Demouser
管理员用户名。 将这些值更改为适合你的环境的值。
export VM_NAME="myVM$RANDOM_SUFFIX"
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image "Ubuntu2204" \
--admin-username "azureuser" \
--assign-identity \
--generate-ssh-keys \
--public-ip-sku Standard \
--location $LOCATION
结果:
{
"fqdns": "",
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/virtualMachines/myVMxxx",
"location": "local",
"name": "myVMxxx",
"osProfile": {
"computerName": "myVMxxx",
"adminUsername": "Demouser"
},
"publicIpAddress": "x.x.x.x",
"powerState": "VM running",
"provisioningState": "Succeeded"
}
公共 IP 地址在参数中 PublicIpAddress
返回。 请记下该地址,供以后与虚拟机配合使用。
为网络流量打开端口 80
由于此虚拟机运行 IIS Web 服务器,因此必须打开端口 80 来处理互联网流量。 若要打开该端口,请使用 az vm open-port 命令:
az vm open-port --port 80 --resource-group $RESOURCE_GROUP --name $VM_NAME
结果:
{
"endPort": 80,
"name": "openPort80",
"port": 80,
"protocol": "Tcp",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroupxxx",
"startPort": 80
}
使用 SSH 连接到虚拟机
从安装了 SSH 的客户端计算机连接到虚拟机。 如果在 Windows 客户端上工作,请使用 PuTTY 创建连接。 若要连接到虚拟机,可以使用 ssh
该命令。
安装 NGINX Web 服务器
若要更新包源并安装最新的 NGINX 包,请运行以下脚本:
output=$(az vm run-command invoke --resource-group $RESOURCE_GROUP --name $VM_NAME --command-id RunShellScript --scripts 'apt-get -y install nginx')
value=$(echo "$output" | jq -r '.value[0].message')
extracted=$(echo "$value" | awk '/[stdout]/,/[stderr]/' | sed '/[stdout]/d' | sed '/[stderr]/d')
echo "$extracted"
查看 NGINX 欢迎页
在虚拟机上安装 NGINX Web 服务器并打开端口 80 后,可通过虚拟机的公共 IP 地址访问 Web 服务器。 为此,请打开浏览器并转到 http://<public IP address>
。 或者,可以使用 curl 命令查看 NGINX 欢迎页:
export PUBLIC_IP=$(az vm show -d -g $RESOURCE_GROUP -n $VM_NAME --query publicIps -o tsv)
output=$(az vm run-command invoke --resource-group $RESOURCE_GROUP --name $VM_NAME --command-id RunShellScript --scripts 'curl -v http://localhost')
value=$(echo "$output" | jq -r '.value[0].message')
extracted=$(echo "$value" | awk '/[stdout]/,/[stderr]/' | sed '/[stdout]/d' | sed '/[stderr]/d')
echo "$extracted"
结果:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
后续步骤
在本快速入门中,你已部署了一个带有 Web 服务器的基本 Linux 服务器虚拟机。 若要详细了解 Azure Stack Hub 虚拟机,请参阅 Azure Stack Hub 中虚拟机的注意事项。