创建 OpenBSD 磁盘映像并上传到 Azure

适用于:✔️ Linux VM ✔️ 灵活规模集

本文介绍如何创建和上传包含 OpenBSD 操作系统的虚拟硬盘 (VHD)。 将其上传后,可以通过 Azure CLI 使用它作为你自己的映像,以在 Azure 中创建虚拟机 (VM)。

先决条件

本文假定你拥有以下项目:

  • Azure 订阅:如果没有帐户,只需几分钟即可创建一个。 如果有 MSDN 订阅,请参阅 Visual Studio 订户的每月 Azure 信用额度。 否则,请了解如何创建试用帐户
  • Azure CLI:确保已安装了最新的 Azure CLI 并已使用 az login 登录到 Azure 帐户
  • 安装在 .vhd 文件中的 OpenBSD 操作系统: 必须将受支持的 OpenBSD 操作系统(6.6 版本 AMD64)安装到 VHD 中。 可使用多种工具创建 .vhd 文件。 例如,可使用 Hyper-V 等虚拟化解决方案创建 .vhd 文件并安装操作系统。 有关如何安装和使用 Hyper-V 的说明,请参阅安装 Hyper-V 和创建 VM

为 Azure 准备 OpenBSD 映像

在安装了 OpenBSD 操作系统 6.1(已添加 Hyper-V 支持)的 VM上,完成以下步骤:

  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 中的 VM 上会禁用 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. 可以在 GitHub 上找到 Azure 代理的最新版本。 安装代理:

    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,但不希望创建通用化映像,请跳过取消预配步骤。

现在可以关闭 VM。

准备 VHD

Azure 不支持 VHDX 格式,仅支持固定大小的 VHD。 可通过使用 Hyper-V 管理器或 PowerShell convert-vhd cmdlet 将磁盘转换为固定 VHD 格式。 下面是一个示例:

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

创建存储资源并上传

首先,使用 az group create 创建资源组。 以下示例在 chinaeast 位置创建一个名为 myResourceGroup 的资源组:

注意

在可以在由世纪互联运营的 Microsoft Azure 中使用 Azure CLI 之前,请先运行 az cloud set -n AzureChinaCloud 来更改云环境。 若要切换回 Azure 公有云,请再次运行 az cloud set -n AzureCloud

az group create --name myResourceGroup --location chinaeast

若要上传 VHD,请使用 az storage account create 创建存储帐户。 存储帐户名称必须唯一,因此,请提供自己的名称。 以下示例创建名为 mystorageaccount 的存储帐户:

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

若要控制对存储帐户的访问,请使用 az storage account key 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.chinacloudapi.cn/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>
  • 若要了解有关 OpenBSD 6.1 上的 Hyper-V 支持的详细信息,请参阅 OpenBSD 6.1
  • 若要从托管磁盘创建 VM,请参阅 az disk