練習 - 建立虛擬機器

已完成

讓我從最明顯的工作開始著手:建立「Azure 虛擬機器」。

登入、訂閱及資源群組

您將在右邊的 Azure Cloud Shell 中工作。 在您啟用沙箱之後,將會使用 Microsoft Learn 管理的免費訂用帳戶來登入 Azure。 您無須自行登入 Azure 或選取訂用帳戶,因為系統會為您執行這些動作。 通常,您還會建立資源群組來保存新資源。 在此課程模組中,Azure 沙箱會為您建立一個將用來執行所有命令的資源群組。

使用 Azure CLI 來建立 Linux VM

Azure CLI 包含能與 Azure 中虛擬機器搭配運作的 vm 命令。 我們可以提供數個子命令來執行特定的工作。 最常見的包括:

子命令 描述
create 建立新的虛擬機器
deallocate 解除配置虛擬機器
delete 刪除虛擬機器
list 列出您訂閱中已建立的虛擬機器
open-port 開啟供輸入流量使用的特定網路連接埠
restart 重新啟動虛擬機器
show 取得虛擬機器的詳細資料
start 啟動停止的虛擬機器
stop 停止正在執行的虛擬機器
update 更新虛擬機器的屬性

注意

如需完整的命令清單,您可以查看 Azure CLI 參考文件

讓我們從第一個開始:az vm create。 您可以使用此命令在資源群組中建立虛擬機器。 您可以略過數個參數,以設定新 VM 的所有層面。 必須提供的四個參數如下:

參數 描述
--resource-group 將擁有虛擬機器的資源群組;使用 [沙箱資源群組]
--name 虛擬機器的名稱;在資源群組內必須是唯一的。
--image 要用來建立 VM 的作業系統映像。
--location 要用來放置 VM 的區域。 通常,這會是接近 VM 取用者的位置。

此外,新增 --verbose 旗標有助於在建立 VM 時查看進度。

建立 Linux 虛擬機器

讓我們建立新的 Linux 虛擬機器。 在 Azure Cloud Shell 中執行下列命令,以在「美國西部」位置建立Ubuntu VM。

az vm create \
  --resource-group "<rgn>[sandbox resource group name]</rgn>" \
  --location westus \
  --name SampleVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys \
  --verbose 

提示

您可以使用 [複製] 按鈕將命令複製到剪貼簿。 要貼上命令,請在 Cloud Shell 終端中,以滑鼠右鍵按一下新行,然後選取 [貼上],或使用 Shift+Insert 鍵盤快速鍵 (在 macOS 上為 ⌘+V)。

此命令會以名稱 SampleVM 建立一部新的 Ubuntu Linux 虛擬機器。 請注意,建立 VM 時,Azure CLI 工具會等待。 您可以新增 --no-wait 選項來告知 Azure CLI 工具立即返回,而讓 Azure 在背景中繼續建立 VM。 如果您在指令碼中執行命令,這會相當有用。

我們會透過 --admin-username 旗標,將系統管理員帳戶名稱指定為 azureuser。 如果您省略這個步驟,az vm create 命令將會使用您「目前的使用者名稱」。 由於每個作業系統的帳戶名稱規則都不相同,所以指定特定名稱會是比較安全的作法。

注意

大部分的映像不允許 "root" 和 "admin" 等常見的名稱。

我們也會使用 generate-ssh-keys 旗標。 Linux 散發套件會使用此參數,並且會建立一對安全性金鑰,以便我們可以使用 ssh 工具從遠端存取虛擬機器。 這兩個檔案均會放入您電腦和 VM 的 .ssh 資料夾。 如果目標資料夾中已有名為 id_rsa 的 SSH 金鑰,則會使用該 SSH 金鑰,而不是產生新的金鑰。

Azure CLI 建立 VM 之後,您就會收到 JSON 回應,其中包含目前的虛擬機器狀態,及其由 Azure 指派的公用和私人 IP 位址:

{
  "fqdns": "",
  "id": "/subscriptions/20f4b944-fc7a-4d38-b02c-900c8223c3a0/resourceGroups/Learn-2568d0d0-efe3-4d04-a08f-df7f009f822a/providers/Microsoft.Compute/virtualMachines/SampleVM",
  "location": "westus",
  "macAddress": "00-0D-3A-58-F8-45",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "40.83.165.85",
  "resourceGroup": "2568d0d0-efe3-4d04-a08f-df7f009f822a",
  "zones": ""
}