什么是一次升级许多Linux桌面工作站的最佳方式?

在工作中,我们有几个Ubuntu Linux工作站。 我正在寻找一个好的/可靠的/快速的方法来在所有的盒子上安装一套软件包。 我现在想要做的是:

  1. 在一个全新的盒子上安装Ubuntu,并将其用作主盘映像
  2. 将分区内容克隆或复制到所有框。
  3. 当一个软件包/一组软件包需要更新时,在主磁盘映像上应用这些更改。
  4. 将主磁盘映像转储到中央NFS服务器。
  5. 使用PXE /无盘启动将所有工作站置于恢复模式。
  6. 将主磁盘映像克隆到所有工作站,每周一次。
  7. 使用configurationpipe理工具(我应该使用什么?)来设置/ etc和好友。

有没有其他人做过类似的事情? 你是怎么看待的?

我已经在使用NFS / NIS,所以我不会丢失任何用户数据。

我觉得木偶可以帮助你。 你本质上是pipe理一组工作站而不是服务器 ,但它应该以同样的方式工作。 这样,你可以根据任何硬件差异等创build不同的组。

你可以把它们全部转移给它们,但是大部分的linux发行版本都包含一个脚本安装过程的方法。 它的优点是会问你是否出现问题,而只是重影了。

使用Fedora(其中包括),您可以编写脚本,使所有工作站都可以login到一个中央控制/警报源,以便他们可以自动进行软件包安装,但询问何时出现差异和问题。

或者,如果您有多种机器types,请将其MAC地址分组为硬件设置组,然后使用Live CD进行rsync并安装grub,具体取决于MAC /硬件设置。

吨的方法真的。 无头安装教程将提供一些有或没有屏幕的漂亮的想法。

编写Fedora / Anaconda安装过程脚本

你可以考虑的另一个select是使用现有的进程,比如“yum update”来从你运行的仓库中提取软件包,并强制这些工作站在特定的时间进行更新。 您只需更新主工作站,记下需要分发的软件包,并将其放入内部存储库。

我会build议创build一个APT存储库 。 您可以将自己的软件包添加到存储库中,并使用cronjob每周一次使用apt-get更新软件包。 apt-get工作可以自动完成,由于版本库是你自己的,你可以根据你的需要更新它。

您只需设置存储库,并在所有机器上configurationAPT即可使用它。 我会build议cfengineconfiguration所有的系统; 因此你不必访问每一个更新每个APT。

您甚至可以创build一个包含内置存储库configuration的包; 我会推荐它。 然后,当你build立一个新的环境时,你的本地APTconfiguration只是一个妥协而已。

我很难相信没有人提到Redhat Spacewalk 。

它是免费的开放源代码,相当于Redhat Network的卫星系统。 它允许您pipe理CentOS,Fedora或Scientific Linux安装的整个基础架构。 它基本上是为了你想要做的。

当然,你使用的是Ubuntu,而不是Redhat派生的发行版。 幸运的是,Ubuntu世界有你在寻找景观 。 它免费提供支持合同,或$ 150 /节点。 昂贵,但这是一个权衡。

如果你不和Landscape一起(或者迁移到RH太空行走),那么Puppet / CFengine可能是你最好的select。

SSH进入每个框,并运行“apt-get安装任何”。

考虑让所有的客户端信任你的pipe理主机的公共ssh密钥,所以你不需要提供密码来这样做。

如果您使用的是像Ubuntu这样的基于debian的发行版,请查看预播:

DebianInstaller预种子

这允许你指定在安装过程中安装的所有东西,比如networking,apt,包等。当你启动安装光盘时,附加:

preseed/url=http://blah/preseed.cfg 

到内核​​启动菜单,它会使用你的预先configuration来进行安装。

我曾经是我电气工程计算机实验室的pipe理员,计算大约20台电脑,全部是Ubuntu。 我喜欢在发布后立即使用最新版本的Ubuntu,所以我升级了很多。

计算机实验室的设置是这样的,我有一个Debian主机箱(很less更新/升级),我用于托pipe学生分支的网页,pipe理用户帐户(使用LDAP,允许每个用户坐在任何电脑并用他/她的home文件夹login),运行维护脚本等。

我用来更新的方法(在我看来tbh有些粗糙),包括在发行时使用最新版本的CD,并手动将其放入驱动器,重新启动并执行常规安装过程。 安装完成后,我将生成(一次)的公共RSA密钥复制到主机(到/root/.ssh/文件夹中),因此将Debian框控制在主机框上。 所以在主箱上,我有一个Python脚本(当然可以是任何脚本语言),它使主机与我想要的configuration保持一致,将configuration文件复制到主机箱(如LDAPconfiguration文件,预先构build的gnomeconfiguration文件等),apt-get所需的软件包(一个冗长的过程),configuration它们(通过复制它们的configuration文件和菜单项文件到正确的位置),否则设置主机箱。

这个过程虽然简单而不简单,但是只需要我的存在就可以从ubuntu安装光盘启动“待更新”框,并通过ubuntu的几个设置屏幕,configuration/ etc / network / interfaces文件访问networking,然后在主箱上运行脚本,然后我可以做其他事情。

如果你想要更多的信息,请更具体地发布你想要自动化的东西,无论是设置当前正在运行的Linux发行版的新发行版的实际过程,还是设置需要构build源文件的程序等(因为我也用于构build我自己的程序包,比如Eclipse(它不能直接从包pipe理器和Ubuntu一起运行),XCircuit(最好是从程序包repo中得到的“buggy”,Matlab(需要在CD中打孔)键和更多)…

希望有所帮助! =)