试图弄清楚如何使用 cmdline 执行以下操作:
- 在 centos 系统上创建 VM/Image - 在 VM 中安装 centos/rhel os - 在 VM 中安装其他应用程序 - 在 VM 中将其他文件添加到特定目录中
然后,我想通过 vmplayer 应用程序使用 VM 在单独的服务器上播放/运行它。
我可能已经阅读了 20-30 篇不同的文章来尝试进行此项设置,但都没有成功。
所以,如果你对此有想法,请告诉我!啤酒我请客!
欢迎大家提出评论/想法/指点。
完整的文档/脚本也非常感谢!!
谢谢
答案1
好吧,鉴于 CentOS 安装程序既是图形化的又是交互式的,如果不先创建无人值守安装的 Kickstart 脚本,您肯定无法做到这一点。坦率地说,如果您要走这条路,您真的不妨创建一个 VM 并克隆它。创建 VM 后,您可以使用 vmware-mount 命令挂载 VMDK 并将所需的任何文件复制到其中,假设您是从 Linux 主机系统执行此操作。
答案2
这是可以做到的。以下是我的做法:
在类似网站上创建空的 VMWare VM易虚拟机此时,您可以模板化 VMX 文件以更改名称/添加版本等。据我所知,您无法在命令行上创建 vmx 文件/结构,因此您必须使用这样的站点或克隆空的 vm。(这可能在付费产品的 VMWare 基础架构上或使用 VMWare 的 VIX api 上实现。)
创建自定义 kickstart 文件。尽量简单,只需在帖子部分安装 1 个应用程序、创建 1 个用户、mkdir 其目录结构等。
创建自定义 Centos DVD这个对我有用. 将其指向你的 kickstart 文件或者在 DVD 上安装你的 kickstart 文件。
现在您已经万事俱备。只需将首先创建的空 VMX 指向您制作的自定义 ISO/kickstart 进行启动(在尝试硬盘之后)。它将从 DVD 启动,执行安装,然后您就会获得 ISO。
请注意。要让任何大型项目都运行起来都需要做大量工作(我的项目有 5 种产品需要安装,设置数据库等,我已经经历了数千次构建/启动周期)一些程序的脚本非常老旧,只能以交互方式运行,我大量使用了出色的 expect 程序来驱动它们,就好像它们在终端上运行,有人在输入答案一样)。我建议的另一件事是使用某种模板语言(我使用了 python 的 cheetah)。这让您可以在 kickstart 文件中执行 if/else for/while 之类的操作,并轻松处理更改数据库大小等问题。我们的一些开发人员想要一个占用空间非常小的 VM,我们为此削减了组件并使用模板值调整数据库大小。
我们使用它来为开发人员部署消息应用程序的新版本,当我们在大约 4 小时内获得新版本时,我们可以为他们部署经过测试的 VM。这是我们产品的正常发布。如果其他软件包之一发生变化,那么我们必须重新调整脚本。
如果您搜索 kickstart-maker,可以在 code.google.com 上找到我所构建的一个非常基本的版本。