我编写了一个学术软件,它有许多第三方软件依赖项(并且需要 RDBMS)。我想创建一个 Linux 虚拟机映像,预装所有必要的依赖项并设置用户帐户,以便我的用户可以下载和试用我的软件,而无需安装所有依赖项。
最好的方法是什么,我应该使用什么虚拟机文件格式?
答案1
我个人会提供 Virtualbox 和 VMWare 格式,因为 Virtualbox 是免费的,而 VMWare 的播放器也是免费的并且得到很好的支持和流行。
您所说的最佳做法是什么?如果您指的是将其提供给用户,您可以随时创建 CD/DVD 并通过邮件免费提供和/或通过 CDN 或个人网站提供;您没有提到您有哪些可用资源。您有网站吗?这是业务的一部分吗?这是业余爱好吗?
生成的图像会有多大?它们会压缩吗?
这是否可能成为一种流行的下载内容,从而给您的网站带来压力或者增加您与提供商之间的传输限制?
根据目标受众的精明程度,您还可以通过 bittorrent 提供它,以帮助减轻网络压力(或者,如果您可以与其他网站达成协议,您可以将其分配给他们作为种子网站)。您甚至可以将图像托管给专门托管大型文件的公司,这样您就不必担心大型文件的内容交付。
这在某种程度上取决于您拥有哪些资源,以及您的最终用户有多精明,以及您会对最终用户施加多复杂的要求以试用您的产品。有些人可能不喜欢必须下载单独的产品来试用您的 VM。其他系统管理员可能已经安装了 VMWare 或 VMWare player 或 Virtualbox。
答案2
你可能想调查一下光学成像,它最有可能成为虚拟设备的行业标准。它主要由 VMware 和 VirtualBox 支持,这两个平台可能是您想要瞄准的目标;Xen 在 XenServer 中受支持,而 KVM 在 RHEV 中受支持,并且即将提供对这两个底层虚拟机管理程序产品的本机支持。
答案3
您是否知道您的用户可以访问某个特定的虚拟机管理程序?这将会很有帮助。
一种方法,远非免费,就是使用 VMWare 的ThinApp系统打包虚拟机并将其与轻量级虚拟机管理程序捆绑在单个 .exe 文件中 - 这对用户的影响很小,但确实需要花费成本。
答案4
我宁愿避免为此目的使用任何虚拟图像。考虑使用木偶无需使用主/代理角色。(或厨师或任何其他替代方案)然后,您只需在一个文件中发送所需的规格即可。
你唯一需要提供的是你的 Puppet 类和示例节点定义。然后告诉用户在其中一个受支持的操作系统上安装 Puppet 代理并运行
puppet apply myapplication.pp
优点:
- 您只需发送一个包含正在安装内容的规范的文本文件。(理想情况下,如果所有依赖关系都可以从一般公共位置满足)
- 它可以被其他操作系统和版本重复使用。
- VM 中的软件始终是最新的(安全方面,或者至少这不再是你的工作)。
- 可以在现有的机器设置中运行。
- 最终用户可以检查对其系统所做的更改,而不是从其受信任网络中的外部不受信任的来源启动虚拟机。
- 通过发送 Puppet 文件的更新,用户也可以轻松更新,而无需安装新的虚拟机。
缺点:
- 创建一个良好且无错误的 Puppet 文件需要花费相当多的精力。
- 并非所有事物都能轻易被傀儡化。