在 Windows Azure 上部署并定制化 FreeBSD 虚拟机镜像



FreeBSD 基础镜像现已登录中国的 VM Depot! 对于青睐 BSD 而非 Linux 的开源爱好者来讲,这无疑是个好消息。同时,随着该基础镜像的可用,咱们期待很快看到更多来自社区的基于 FreeBSD 的开源镜像,从而更加充实现有的可用 Linux 镜像html

本教程将帮助您使用 VM Depot 镜像快速上手 Azure 平台上的 FreeBSD,具体操做包括:java

  1. 使用基础镜像建立 FreeBSD 虚拟机
  2. 经过添加软件包来自定义虚拟机
  3. 将自定义镜像从新发布到 VM Depot

设置要求node

  • Node.js
  • Microsoft Azure 订阅

更多详细信息,请阅读如下说明。若您已知足以上要求,请直接跳转至“在 Windows Azure 上建立 FreeBSD 虚拟机”部分。npm

Node.js 跨平台命令行工具windows

尽管大部分工做能够在 Azure 管理门户上进行,本例中咱们仍是使用跨平台的 node.js 命令行工具。本教程只涉及不多一部分命令行工具。更多信息,请查看跨平台 Azure 命令行工具使用文档浏览器

若是您使用的是 Mac 或 Windows 系统,您可使用下面提到的 Node 包管理器(NPM),或者选择您使用平台(WindowsMac)自身的安装程序,而后直接跳转至下一节内容。若您倾向于使用 NPM,请继续阅读本节内容。服务器

登陆站点 node.js,点击“安装”按钮,依照安装向导的指示进行安装。网络

当 node.js 安装完成后,您须要打开命令提示符(Windows 系统下,须要以管理员身份打开),输入“npm install azure-cli –global”命令来安装命令行工具。app

Azure 订阅eclipse

您须要具有有效的 Azure 订阅。若没有,请点击此处获取试用帐号

获取 Azure 订阅以后,您须要使用命令行工具(“azure login”)来登陆此订阅。本教程直接导入了订阅证书,因此您在操做中无需登陆。

在命令提示符下运行“azure account download –e AzureChinaCloud”命令。这时您的浏览器中会弹出一个网页,验证您的帐号以后,就开始下载您的帐号证书。保存这个证书文件,而后运行“azure account import [path]”命令,将帐号详细信息导入命令行工具。

若是您的 ID 关联两个或两个以上的订阅,请确保正在使用正确的订阅。若想查看哪一个订阅是当前有效的,请运行“azure account show”命令。

若想变动已选订阅,使用“azure account list”命令列出全部有效订阅,而后使用“azure account set [ACCOUNT]”命令设置一个有效订阅。

在 Windows Azure 上建立 FreeBSD 虚拟机

完成初始设置以后,您就能够在 Azure 上建立 FreeBSD 虚拟机。本教程中,咱们使用的是 FreeBSD 镜像。实际上,VM Depot 上的任何镜像均可以使用一样的流程。

若想找到 VM Depot 上的 FreeBSD 镜像,在 VM Depot 网站搜索“FreeBSD”便可。

点击镜像说明右方的“部署脚本”连接,赞成相关条款并选择部署区域以后,文本框中就会出现部署该镜像所需使用的命令。

复制这个命令到您的外壳程序,并将“DNS-PREFIX”替换为能您机器的 ID 前缀,如“mydnsprefix.cloudapp.net”。记得要使用您本身的用户名和密码。您也能够在命令中包含“--ssh”选项,以确保启动了 SSH 且端口 22 已打开。

有很多配置项可经过命令行进行设置。本教程中,咱们将使用它们的默认设置。更多信息,请参考命令行工具文档

示例中使用的命令是“azure vm create rgfreebsd3 -o vmdepot-36254-2-1 -l "West US" rgardler Pa$$Word123 –ssh”。您能够运行您本身的命令版本。

命令完成以后,虚拟机镜像就建立完成了。可是还须要稍等几分钟,它才能完成启动。您可使用“azure vm list”命令来监控状态。当您的虚拟机状态变为“ReadyRole”时,就能够进行下一步操做了。

自定义您的 FreeBSD 虚拟机

如今,您有一台空白的纯 FreeBSD 虚拟机运行在 Microsoft Azure 上。您能够经过 SSH 链接到这台机器,执行您想作的操做。本教程中,咱们将添加Jetty做为 Web 服务器和 javax.servlet 容器。

首先,您须要使用 SSH 登陆到服务器,这时会使用到您在建立虚拟机时定义的用户名和密码。本例中,咱们使用“ssh rgfreebsd3.cloudapp.net -l rgardler”命令登陆。

若想使用 FreeBSD 包管理器安装 Jetty,只需运行“sudo pkg install jetty”命令。为了确保 Jetty 伴随虚拟机的开机而启动,要在 /etc/rc.conf 文件中添加‘jetty_enable="YES"’,并使用“sudo cp /usr/local/jetty/etc/jetty.xml /usr/local/etc/jetty.xml”命令复制默认的配置文件。

理想状况下,您应该重启虚拟机,测试是否设置成功。若是想节约时间,您也可使用“sudo /usr/local/etc/rc.d/jetty start”命令手动启动 Jetty,而后使用“exit”命令退出虚拟机。

您须要确保外部设备能够接入您的新服务器。HTTP 流量通常经过端口 80 进行传输。默认状况下,它在您的虚拟机上处于关闭状态,您须要将它打开。打开端口的命令为“azure vm endpoint create rgfreebsd3 80 8080”(请确保您的机器名称正确)。这样就把公用端口 80 映射到了专用(虚拟机)端口 8080,后者是 Jetty 的默认端口。

如今,您能够访问建立虚拟机时定义的 URL(如 http://DNS_PREFIX.chinacloudapp.cn),以验证浏览器工做正常。若是一切正常,将会弹出 Jetty 的标准主页,以下图所示:

与 VM Depot 社区分享 FreeBSD 镜像

自定义 FreeBSD 镜像以后,让咱们经过 VM Depot 与社区从新分享这个镜像。您但愿每一个人都能从您的工做中受益,不是吗?这时要注意,您在 VM Depot 上经过 Web 表单发布镜像以前,还须要完成一些准备步骤。

首先您须要取消虚拟机配置。这样作会中止 Azure Agent,清除 SSH 密钥和启动密码,并删除网络配置。为此,请再次经过 SSH 链接到虚拟机,运行“sudo waagent –deprovision”命令,而后使用“exit”命令退出虚拟机。

如今,使用命令行关闭虚拟机,并捕捉其镜像。关闭虚拟机的命令为“azure vm shutdown rgfreebsd3”。

捕捉已关闭虚拟机的镜像,咱们可使用“azure vm capture rgfreebsd3 freebsd_jetty --delete”命令。要注意,“freebsd_jetty”是您分配给镜像的名称,您能够随意命名。这里的“--delete”是必选项,它会删除当前已中止的虚拟机。这是由于,目前尚不支持从新配置已捕捉镜像的虚拟机。不过请放心,您能够根据捕捉的镜像从新建立并配置虚拟机。

如今,您已得到了一个能够建立新虚拟机的镜像。我建议您在此阶段不妨测试一下,以保证一切工做正常。固然,您也能够直接跳转到下面的发布阶段。

下面咱们根据捕捉的镜像来建立一个新的虚拟机,使用的命令与咱们以前根据社区镜像建立虚拟机的命令相似。惟一的区别是,咱们不须要使用“-o”开关来识别社区镜像,而是使用附着在订阅上的镜像。这里使用的命令是“azure vm create rgfreebsd4 freebsd_jetty -l "West US" rgardler Pa$$Word345 --ssh”。必定要使用前面运行“capture”命令时定义的镜像名称,选择您本身的 DNS 前缀来替换“rgfreebsd4”,提供您本身的用户名和密码。

和以前同样,您须要打开一个合适的端点,以便在您的虚拟机上接入 Jetty。命令与以前在虚拟机上使用的命令一致(但要使用新的 DNS 前缀),如“azure vm endpoint create rgfreebsd4 80 8080”。完成这一步以后,您能够在浏览器中访问新的虚拟机(http://dns_prefix.chinacloudapp.cn)。一样,这时会弹出 Jetty 的默认主页,以下图所示:

发布到 VM Depot

要将镜像发布到 VM Depot,首先您要确保 VM Depot 应用程序能够读取该镜像。为此,必须将存储虚拟机镜像的 blob 设置为可公开访问。与求以前操做一致, 咱们将使用命令行来完成。固然,您也能够经过 Azure 管理门户来实现这一要求。

操做以前,您必须知悉它存储在哪里。使用“azure vm image show freebsd_jetty”命令来查看该镜像的元数据。

 

为了实现 blob 的公开访问,您须要 blob 这个存储容器的密钥,可使用“azure storage account keys list <storage-account-name>”命令获取。存储帐号的名称能够从刚刚查看的元数据中得到,它是“MediaLink”URL 的第一部分。在上面的示例中,存储帐号为“ajamepiblobs”。这里会显示主次两个密钥,使用其中任何一个均可以。

获取密钥以后,您能够运行“azure storage container set <container-name> -p Blob -a <storage-account-name> -k <key>”命令,设置对“公共 blob”的接入控制。Blob 这个容器的名称也包含在“MediaLink”的 URL 中,它是路径的第一部分。本例中,容器名称为“vm-images”。存储帐号的名称与上一步中使用的相同,密钥也是您刚刚获取的那个。

如今 VM Depot 就能读取虚拟机镜像了,您能够轻松地将镜像发布到 VM Depot。

登陆到 VM Depot,点击“发布”按钮。这时会弹出一个表单,以下图所示:

这个表单应当简单明了。有一项稍微复杂的是要求填写 VHD 的 URL。它应该是运行“azure vm image show freebsd_jetty”命令获取的“MediaLink”URL。

镜像在您选择的全部区域内进行复制,会花费几分钟的时间。相关的状态更新,您可在提交以上表单后弹出的网页上查看。有关提交流程的更多详细信息,请查看 VM Depot 帮助文档。复制完成以后,镜像就会出如今 VM Depot 上。这时,您就能够向你们宣布新的虚拟机镜像已正式发布了。

陈阳

技术推广师

微软开放技术(中国)

本文转载自: http://blog.csdn.net/leonchenzhy/article/details/41892245 

相关文章
相关标签/搜索