建立 OpenBSD 磁碟映像並上傳至 Azure

適用於:✔️ Linux VM ✔️ 彈性擴展集

本文說明如何建立及上傳包含 OpenBSD 作業系統的虛擬硬碟 (VHD)。 上傳之後,您可以使用它作為您自己的映像,在 Azure 中透過 Azure CLI 建立虛擬機器 (VM)。

必要條件

本文假設您具有下列項目:

  • Azure 訂用帳戶 - 如果您沒有,只需要幾分鐘的時間就可以建立帳戶。 如果您有 MSDN 訂用帳戶,請參閱 Visual Studio 訂閱者的每月 Azure 點數。 否則,請參閱 建立免費試用帳戶
  • Azure CLI - 請確定您已安裝最新的 Azure CLI,並使用 az login 登入 Azure 帳戶。
  • 安裝在 .vhd 檔案中的 OpenBSD 作業系統 - 支援的 OpenBSD 作業系統 (6.6 版 AMD64) 必須已安裝到虛擬硬碟中。 有多項工具可用來建立 .vhd 檔案。 例如,您可以使用虛擬化解決方案 (例如 Hyper-V) 建立 .vhd 檔案,並安裝作業系統。 如需相關指示,請參閱 安裝 Hyper-V 和建立虛擬機器

為 Azure 準備 OpenBSD 映像

在您安裝 OpenBSD 作業系統 6.1 的 VM 上 (新增 Hyper-V 支援),完成下列程序:

  1. 如果在安裝期間未啟用 DHCP,請啟用服務,如下所示:

    doas echo dhcp > /etc/hostname.hvn0
    
  2. 設定序列主控台,如下所示:

    doas echo "stty com0 115200" >> /etc/boot.conf
    doas echo "set tty com0" >> /etc/boot.conf
    
  3. 設定套件安裝,如下所示:

    doas echo "https://ftp.openbsd.org/pub/OpenBSD" > /etc/installurl
    
  4. 在 Azure 中的虛擬機器上,依預設會停用 root 使用者。 使用者可以在 OpenBSD VM 上使用 doas 命令,以提高的權限來執行命令。 Doas 預設為啟用狀態。

  5. 安裝和設定 Azure 代理程式的必要條件,如下所示:

    doas pkg_add py-setuptools openssl git
    doas ln -sf /usr/local/bin/python2.7 /usr/local/bin/python
    doas ln -sf /usr/local/bin/python2.7-2to3 /usr/local/bin/2to3
    doas ln -sf /usr/local/bin/python2.7-config /usr/local/bin/python-config
    doas ln -sf /usr/local/bin/pydoc2.7  /usr/local/bin/pydoc
    
  6. 最新版的 Azure 代理程式一律可以在 GitHub 上找到。 安裝代理程式,如下所示:

    doas git clone https://github.com/Azure/WALinuxAgent
    doas cd WALinuxAgent
    doas python setup.py install
    doas waagent -register-service
    

    重要

    安裝 Azure 代理程式之後,最好先確認它正在執行,如下所示︰

    doas ps auxw | grep waagent
    root     79309  0.0  1.5  9184 15356 p1  S      4:11PM    0:00.46 python /usr/local/sbin/waagent -daemon (python2.7)
    doas cat /var/log/waagent.log
    
  7. 取消佈建系統以清理系統,使之適合取消佈建。 下列命令也會刪除最後佈建的使用者帳戶和相關聯的資料:

    doas waagent -deprovision+user -force
    

注意

如果您要遷移特定的虛擬機器,但不想建立一般化映像,請略過取消佈建步驟。

現在您可以關閉您的 VM。

準備 VHD

Azure 不支援 VHDX 格式,只支援 固定 VHD。 您可以使用 Hyper-V 管理員或 PowerShell convert-vhd Cmdlet,將磁碟轉換為固定 VHD 格式。 範例如下。

Convert-VHD OpenBSD61.vhdx OpenBSD61.vhd -VHDType Fixed

建立儲存體資源並上傳

首先,使用 az group create 建立資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組:

az group create --name myResourceGroup --location eastus

若要上傳 VHD,請使用 az storage account create 建立儲存體帳戶。 儲存體帳戶名稱必須是唯一的,因此請提供您自己的名稱。 下列範例會建立名為 mystorageaccount 的儲存體帳戶:

az storage account create --resource-group myResourceGroup \
    --name mystorageaccount \
    --location eastus \
    --sku Premium_LRS

若要控制儲存體帳戶的存取權,請使用 az storage account keys list 取得儲存體金鑰,如下所示:

STORAGE_KEY=$(az storage account keys list \
    --resource-group myResourceGroup \
    --account-name mystorageaccount \
    --query "[?keyName=='key1']  | [0].value" -o tsv)

若要以邏輯方式分隔您上傳的 VHD,請使用 az storage container create 在儲存體帳戶內建立容器:

az storage container create \
    --name vhds \
    --account-name mystorageaccount \
    --account-key ${STORAGE_KEY}

最後,使用 az storage blob upload 上傳 VHD,如下所示:

az storage blob upload \
    --container-name vhds \
    --file ./OpenBSD61.vhd \
    --name OpenBSD61.vhd \
    --account-name mystorageaccount \
    --account-key ${STORAGE_KEY}

從 VHD 建立 VM

您可以使用範例指令碼 或直接使用 az vm create 建立 VM。 若要指定您上傳的 OpenBSD VHD,請使用 --image 參數,如下所示:

az vm create \
    --resource-group myResourceGroup \
    --name myOpenBSD61 \
    --image "https://mystorageaccount.blob.core.windows.net/vhds/OpenBSD61.vhd" \
    --os-type linux \
    --admin-username azureuser \
    --ssh-key-value ~/.ssh/id_rsa.pub

使用 az vm list-ip-addresses 取得 OpenBSD VM 的 IP 位址,如下所示:

az vm list-ip-addresses --resource-group myResourceGroup --name myOpenBSD61

現在您可以像平常一樣 SSH 到您的 OpenBSD VM:

ssh azureuser@<ip address>

下一步

如果您想要深入瞭解 OpenBSD6.1 上的 Hyper-V 支援,請參閱 OpenBSD 6.1

如果您想要從受控磁碟建立 VM,請參閱 az 磁碟