![您部署 unixoid 桌面的最佳实践和未来计划是什么?](https://linux22.com/image/17090/%E6%82%A8%E9%83%A8%E7%BD%B2%20unixoid%20%E6%A1%8C%E9%9D%A2%E7%9A%84%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5%E5%92%8C%E6%9C%AA%E6%9D%A5%E8%AE%A1%E5%88%92%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F%20.png)
我一直在为一个非营利性无线电天文台设置 Linux 桌面。对我来说,这是我第一次不得不考虑“部署”几台相同的机器,集中登录、主目录等。我很快就意识到,也许与直觉相反,“一切都是文本”的哲学并不一定会使这成为一项容易的任务,我想知道经验丰富的管理员对此做了什么。
就我而言,我在每台计算机上安装 Ubuntu 10.04 LTS。安装后,我运行了一个自定义脚本,该脚本可以更改配置文件、删除和安装软件并从服务器复制一些文件,例如背景图像或浏览器书签。然而,我认为我的问题是独立于发行版的。
问题
我主要遇到两个问题:首先,跨发行版和跨版本的工具和配置文件不一致,其次一些关键软件没有以简单直观的方式将设置公开给配置文件。
让我举两个简短的例子来说明我的意思:
该ifconfig
工具正在被替换ip
。例如,如果在当前的 ArchLinux 机器上运行,则依赖于前者存在的所有脚本都将中断。因此,我需要检查我运行脚本的机器上存在哪些工具的哪些版本......这在某种程度上感觉像是小规模地重新发明 autoconf。
对于第二个问题,考虑一下我想为桌面提供某种“通用身份”。在我的安装后配置脚本中,我使用以下几行来实现此目的:
scp user@server:/export/admin/*.jpg /usr/share/backgrounds/
scp user@server:/export/admin/ubuntu-wallpapers.xml /usr/share/gnome-background-properties/
sed 's/warty-final-ubuntu\.png/MyBackground\.jpg/' -i /usr/share/gconf/defaults/10_libgnome2-common
sed 's/warty\-final\-ubuntu\.png/MyBackground\.jpg/' -i /usr/share/gconf/defaults/16_ubuntu-wallpapers
sed 's/ubuntu-mono-dark/ubuntu-mono-light/' -i /usr/share/gconf/defaults/16_ubuntu-artwork
sed 's/Ambiance/Clearlooks/' -i /usr/share/gconf/defaults/16_ubuntu-artwork
我认为创建 CI 是组织管理员的一项常见任务。那么,为什么没有中央配置工具,甚至可能是跨桌面的呢?必须在两个不同的配置文件中设置两个(相同的!)未记录的值让我觉得很奇怪。
问题
在组织环境中,如何处理跨多个客户端的集中、统一配置?
与我的“先安装,后运行脚本”的方法相比,像 Debian 的 FAI 这样的系统是否具有显着的优势(除了不必更换 CD 之外)?
在发行版的主要版本之间进行转换的良好做法有哪些?而且,除了技术问题之外:是否有一个桌面环境能够在用户体验方面保证长期稳定性?我不认为我可以将我的用户迁移到 KDE 4 或 GNOME 3,但 XFCE 仍然有一些功能缺陷......
是否有一个 *nix 系统可以解决此类配置问题?例如,我假设有些系统会要求您提供组织的一些图像(徽标、背景图像、颜色和字体集等)并将它们应用到登录管理器、用户桌面、网络应用程序(!)等在。注意:在我们的例子中,我必须与胖客户端一起工作,因此纯粹的瘦客户端解决方案不会有帮助。
答案1
使用木偶或 CFEngine 或 Chef 是解决您问题的正确解决方案。当然,编写能够正常工作的 Puppet 脚本需要花费一些时间和反复试验的方法。这些工具广泛用于在云上自动执行复杂的安装,并简化了像我们这样的管理员的生活。 :)
答案2
首先,不要指望使用多个发行版会很容易。
我还没有进行过大型桌面部署。对我来说,最好的权衡是使用 LAN boot/tftp 来引导系统,然后通过 NFS 运行安装。大多数 Linux 发行版都会要求您预先进行所有初始配置 - 然后您可以让安装程序在无人值守的情况下运行,例如 40 分钟(不会出现“您真的要运行此程序吗?”的提示)。那时我正在照顾 Redhat 和 Suse 机器 - 并准备了一个 RPM,其中包含我在标准安装完成后安装的所有自定义配置。然而很有可能自动化所有这一切在各种发行版上。
由于各种原因,我不是 Ubuntu 发行版的忠实粉丝,但 Canonical 的发行版景观是一个非常令人印象深刻的工具。如果您要进行大量的大规模 Ubuntu 安装/管理多个 Ubuntu 桌面,那么它绝对值得仔细研究。
答案3
我一直在使用名为的软件进行了很多工作CF引擎。它是一个开源配置管理器,它读取您设置的“规则”并确保它所绑定的每台计算机都遵守这些规则。完全是开源如此有用,我们公司决定使用名为 Nova 的软件的受支持版本。
这是对其工作原理的广泛看法。假设您的托管网络上有 4 台计算机。他们都需要有一个/etc/syslog.conf
由 root 拥有的文件,同样(根据大师的说法)和chmod 777
.您可以在 CFEngine 的配置文件中创建此规则。您可以从中央计算机获得“主”/etc/syslog.conf
文件。每隔 X 时间,您的计算机版本的 CFEngine 将通过网络并向每个盒子询问其/etc/syslog.conf
文件。每个客户端上运行的 CFEngine 本地副本将查询相关文件并报告其内容、权限等。如果它们与您的施法者副本不完全匹配,CFEngine 会将您的副本推送到客户端并再次检查文件。它们将匹配,他将继续执行您的下一条规则。
至于简单性,CFEngine 的“规则”(他们称之为 Promise)中使用的语法可能需要一些时间来适应,但它们非常值得学习(为您的技能组添加另一项出色的技能)。
答案4
那么,为什么没有中央配置工具,
Gnome 有 GConf 可以执行所有这些小任务:
http://wiki.novell.com/index.php/Locking_Down_the_GNOME_Desktop
http://library.gnome.org/admin/system-admin-guide/stable/gconf-9.html.en
Ubuntu LTS 几乎是桌面上长期支持的唯一选择。
只需一个简单的部署就几乎可以部署多台机器dd
,桌面发行版正在慢慢地使这种方式变得不那么有吸引力。
现在还考虑一个选择就是所谓的胖客户。