什么是自动configuration和设置Ubuntu实例的首选方法?

我厌倦了手动configurationUbuntu的实例来testingWeb应用程序和设置工作站。 由于不一致的configuration导致的问题,我更加沮丧。

有没有一种方法(希望不要太花时间学习和设置),从而允许从ISO自动设置和configurationUbuntu服务器或工作站。 这主要是针对虚拟机实例的,但是也可以在硬件上创build实例。

我正在寻找一种方法来自动化安装库(apt-get),configuration服务(如Apache和MySQL),添加第三方软件(下载,提取和构build)以及将库添加到脚本语言(例如,用于Perl的Ruby Gems或CPAN软件包)。

我认为最常见的Debian / Ubuntu的方法是做预先安装的基础安装。 然后使用木偶进行安装后configuration/安装。

如果你不想或者不能运行一个完整的木偶安装,另一个select是编写脚本来定制系统后安装,然后使用这些。 我存储了一些在我的SVN仓库中可以通过https访问的系统设置所需的脚本。

当我想要在其中一台机器上使用SVN中的一个脚本时,我使用curl直接从SVN服务器运行它。

curl --silent https://svn.example.org/linuxdev/config_samples/lenny_setup/setup-aptsources | bash 

那个特定的脚本设置适当。 这基本上是脚本的内容。

 #!/bin/sh export PATH=/usr/sbin:/usr/bin:/sbin:/bin etckeeper commit 'pre-commit setup-aptsources' curl --silent "https://svn.example.org/linuxdev/config_samples/lenny/apt/sources.list" > /etc/apt/sources.list etckeeper commit 'post-commit setup-aptsources' apt-get update 

我的脚本的真实版本有更多的错误检查,以便在出现问题时作出适当的响应。 我做事使用像etckeeper这样的事情是重要的,如果有什么事情打破你可以很容易地识别出什么改变和恢复。

如果您想快速轻松地部署Linux,请查看Ultimate Deployment Appliance 。 它的任何特性都不是非常独特的(任何人都可以设置PXE服务器和kickstart文件),但是它提供和打包的方式非常出色。

我推荐v2.0 Beta 。 它比1.4更加友好。

看看debian预先使用debconf的文件。 不排除编写自己的脚本来定制您的安装。

看起来Ubuntu与Kickstart文件有一定的兼容性。

为什么不写一些bash脚本? 您可以从shell提示符执行的任何操作都可以从shell脚本执行。 它便于携带,易于学习(本身就是一项有价值的技能),易于维护。

另外,您提到了虚拟机:如果您使用的是VMWare,则可以轻松地为您需要的每种口味创build模板。

我们使用ubuntu-vm-builder和一些预定义的configuration文件和几个海关脚本。 (这是libvirt / kvm。)

这是一个例子的一部分:

 sudo vmbuilder kvm ubuntu --hostname somename --arch i386 --ip 192.168.222.21 \ --gw 192.168.222.1 --dns 192.168.222.7 \ --part vmbuilder.partition \ --user peterh --name 'Peter Hansen' --pass default --tmpfs - \ --firstboot vmbuilder.boot.sh --mirror http://192.168.222.1/ubuntu \ --suite intrepid --flavour virtual --addpkg acpid --libvirt qemu:///system 

这为虚拟机准备了networking,磁盘分区,初始用户,apt-get源URL以及第一次启动时执行的脚本。 该脚本包括这个:

 # Install openssh-server apt-get update apt-get install -qqy --force-yes openssh-server 

这使SSH启动并运行。 从这一点上,我们可以使用ssh来安装额外的软件包,并远程执行其他设置。

我们也开始尝试使用libguestfs (来自Python),作为一些后期创build设置的一个有趣的替代方法。

编辑:我应该注意到,上面的例子实际上使用了“vmbuilder”,这是ubuntu-vm-builder的旧版本。 现在的细节可能会有所不同,但原则是一样的。