Azure 上的 FreeBSD 简介

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

本文提供有关在 Azure 中运行 FreeBSD 虚拟机 (VM) 的概述。

概述

Azure FreeBSD 是一种高级的计算机操作系统,用于增强新式服务器、台式机和嵌入式平台的功能。

Azure 在 Azure 上提供预先配置了 Azure VM 来宾代理 的 FreeBSD 映像。 目前,以下 FreeBSD 版本由 Azure 以映像形式提供:

  • Azure 市场中的 FreeBSD 10.4
  • Azure 市场中的 FreeBSD 11.2
  • Azure 市场中的 FreeBSD 11.3
  • Azure 市场中的 FreeBSD 12.0

以下 FreeBSD 版本还包括 Azure VM 来宾代理。 它们由 FreeBSD Foundation 作为映像提供:

  • Azure 市场中的 FreeBSD 11.4
  • Azure 市场中的 FreeBSD 12.2
  • Azure 市场中的 FreeBSD 13.0

为首次使用预配 VM(用户名、密码或 SSH 密钥、主机名)、为选择性 VM 扩展启用相关功能,以及执行类似操作时,该代理负责在 FreeBSD VM 和 Azure 结构之间进行通信。

至于未来版本的 FreeBSD,所采用的策略是始终进行更新,确保在 FreeBSD 版本工程团队发布最新版本后,用户很快就可以使用这些版本。

在 FreeBSD 上通过 Azure CLI 创建 FreeBSD VM

首先,需要通过以下命令在 FreeBSD 计算机上安装 Azure CLI

curl -L https://aka.ms/InstallAzureCli | bash

如果 FreeBSD 计算机上未安装 bash,请在安装前运行以下命令:

sudo pkg install bash

如果 FreeBSD 计算机上未安装 Python,请在安装前运行以下命令:

sudo pkg install python38
cd /usr/local/bin 
sudo rm /usr/local/bin/python 
sudo ln -s /usr/local/bin/python3.8 /usr/local/bin/python

安装期间,系统将询问 Modify profile to update your $PATH and enable shell/tab completion now? (Y/n)。 如果你回答 y 并将 /etc/rc.conf 输入为 a path to an rc file to update,你可能会看到 ERROR: [Errno 13] Permission denied。 为了解决该问题,应针对文件 etc/rc.conf 向当前用户授予写入权限。

现在可登录 Azure 并创建 FreeBSD VM。 下面的示例演示如何创建 FreeBSD 11.0 VM。 也可以为新创建的公共 IP 添加具有全局唯一 DNS 名称的 --public-ip-address-dns-name 参数。

注意

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

az cloud set -n AzureChinaCloud
az login 
az group create --name myResourceGroup --location chinaeast
az vm create --name myFreeBSD11 \
    --resource-group myResourceGroup \
    --image MicrosoftOSTC:FreeBSD:11.0:latest \
    --admin-username azureuser \
    --generate-ssh-keys

然后可通过上述部署输出中打印的 IP 地址登录到 FreeBSD VM。

ssh azureuser@xx.xx.xx.xx -i /etc/ssh/ssh_host_rsa_key

FreeBSD 的 VM 扩展

FreeBSD 支持以下 VM 扩展。

VMAccess

VMAccess 扩展可以:

  • 重置原始 sudo 用户的密码。
  • 创建新的 sudo 用户并指定密码。
  • 使用给定的密钥设置公共主机密钥。
  • 重置 VM 预配期间提供的公共主机密钥(如果未提供主机密钥)。
  • 打开 SSH 端口 (22),如果 reset_ssh 设置为 true,则恢复 sshd_config
  • 删除现有用户。
  • 检查磁盘。
  • 修复添加的磁盘。

CustomScript

CustomScript 扩展可以:

  • 从 Azure 存储或外部公共存储(例如 GitHub)下载自定义的脚本(如果已提供)。
  • 运行入口点脚本。
  • 支持内联命令。
  • 自动转换 shell 和 Python 脚本中的 Windows 样式换行符。
  • 自动删除 shell 和 Python 脚本中的 BOM。
  • 保护 CommandToExecute 中的敏感数据。

注意

目前 FreeBSD VM 仅支持 CustomScript 1.x。

身份验证:用户名、密码和 SSH 密钥

使用 Azure 门户创建 FreeBSD VM 时,必须提供用户名、密码或 SSH 公钥。

用于在 Azure 上部署 FreeBSD VM 的用户名不得与 VM 中已存在的系统帐户(UID <100)的名称(例如“root”)匹配。

目前仅支持 RSA SSH 密钥。 多行 SSH 密钥必须以 ---- BEGIN SSH2 PUBLIC KEY ---- 开头,以 ---- END SSH2 PUBLIC KEY ---- 结尾。

获取超级用户特权

在 Azure 上部署 VM 实例的过程中指定的用户帐户是特权帐户。 sudo 的包已安装在所发布的 FreeBSD 映像中。

通过此用户帐户登录后,即可使用命令语法以 root 身份运行命令。

$ sudo <COMMAND>

可以选择使用 sudo -s 获取 root shell。

已知问题

Azure VM 来宾代理 2.2.2 存在已知问题,此问题会导致 Azure 上的 FreeBSD VM 预配失败。 Azure VM 来宾代理 2.2.3 及更高版本已修复此问题。