Azure 上的 FreeBSD 简介

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

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

概述

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

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

进行首次使用时的 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 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 中支持的 VM 扩展。

VMAccess

VMAccess 扩展可以:

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

CustomScript

CustomScript 扩展可以:

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

注意

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

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

使用 Azure 门户创建 FreeBSD 虚拟机时,必须提供用户名、密码或 SSH 公钥。 在 Azure 上部署 FreeBSD 虚拟机时,用户名必须与已经存在于虚拟机中的系统帐户 (UID <100) 的名称(例如“root”)相符。 目前仅支持 RSA SSH 密钥。 多行 SSH 密钥必须以 ---- BEGIN SSH2 PUBLIC KEY ---- 开头,以 ---- END SSH2 PUBLIC KEY ---- 结尾。

获取超级用户权限

在 Azure 上部署虚拟机实例的过程中指定的用户帐户是特权帐户。 sudo 的包已安装在所发布的 FreeBSD 映像中。 通过此用户帐户登录后,即可使用命令语法以 root 身份运行命令。

$ sudo <COMMAND>

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

已知问题

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

后续步骤