使用Kickstart设置本地Linux安装和更新服务器

在多台计算机上设置Linux可能会花费很多时间和精力,但这不是必须的。用 启动,您可以自定义任何基于Fedora的发行版的自动安装,包括 CentOS的 的 ,在新服务器上。 启动不仅可以安装操作系统,还可以安装您希望运行的所有应用程序。为了使所有内容尽快运行,您可以将Kickstart文件和Linux软件包存储在本地 阿帕奇 Web服务器,该服务器随后作为网络安装和更新服务器,每次推出新计算机时都可以节省带宽。

用作安装服务器的服务器不需要具有很大的处理能力,但是它应该有足够的可用空间(至少20GB)来容纳CentOS安装DVD和软件包更新。

To build your installation server, start by installing a barebones CentOS的 system. Once the hardware 和 operating system are set up, make sure the server has a fixed IP address, say 192.168.2.110. Then install the 阿帕奇 web server with the command yum install httpd.i686, or yum install httpd.x86_64 on a 64-bit installation.

接下来,将安装文件从CentOS DVD复制到此服务器:

# mkdir /install
# rsync -arv /media/CentOS_6.3_Final  /install

理想情况下,您应该将/ install分区设置在单独的磁盘或逻辑卷上,以提高灵活性。如果可以这样做,请确保还编辑/ etc / fstab文件的内容,以在服务器启动时挂载分区或卷。

如果在Apache文档根目录(/ var / www / html /)之外创建安装目录,则必须创建配置文件以将Web服务器指向正确的目录。所有Apache定制配置文件都位于/etc/httpd/conf.d/目录下。切换到该目录并创建一个名为install.conf的文件,其中包含以下内容:

Alias /install/ /install/
<directory /install>
	Options Indexes 
	AllowOverride None
	Order allow,deny
	Allow from all
</directory>

This tells 阿帕奇 where to redirect any traffic that requests the /install directory. Any time you make changes to 阿帕奇 's configuration you should check them for errors with the command apachectl configtest.

You can start the web server by running service httpd start. To ensure it starts when you reboot the server, add it to runlevels 3 和 5 with the command chkconfig --level 35 httpd on.

配置安全性

尽管Web服务器已启动并正在运行,但您仍不能从网络上的任何其他计算机访问它,因为默认情况下CentOS使用SELinux Enforcing模式,并且仅允许传入的SSH通信通过防火墙。

One easy way around the problem is to tune down SELinux to use 'Permissive' mode (with the command setenforce permissive), or turn SELinux off altogether along with the firewall. Don't take the easy way out; even though you may be serving only trusted machines within the protected local network, you still shouldn't turn off important security mechanisms.

相反,请重新配置防火墙以允许通过Apache端口80的HTTP通信:

# iptables -I INPUT -m state --state  新  -m tcp -p tcp --dport 80 -j ACCEPT
# service iptables save
# service iptables restart

为避免SELinux出现问题,请将自定义安装目录中的SELinux上下文更改为Web服务器文档根目录中的SELinux上下文:

# ls -Zd /var/www/html/
drwxr-xr-x.  root   root  system_u:object_r:httpd_sys_content_t:s0   /var/www/html/ 

输出中的httpd_sys_content_t部分是目录的SELinux上下文。现在将其应用于安装目录:

# chcon -R –type=httpd_sys_content_t /install

然后,您应该能够从本地网络上的任何计算机访问Web服务器和安装目录。要进行测试,请使用CentOS最小启动CD引导计算机。出现提示时,选择“ URL”选项以从本地网络服务器进行安装,然后输入安装服务器的URL。

无人值守安装

现在已经安装了安装服务器,但是您仍然需要物理存在于客户端计算机上才能完成安装。要自动化安装过程,您需要使用Fedora的Kickstart安装方法。该实用程序依赖于所谓的kickstart文件,该文件包含安装过程中所有问题的所有答案,例如分区方案,要安装的软件包等。

您可以使用不同的kickstart文件来安装不同类型的系统,例如Web服务器,邮件服务器或客户端桌面。当您使用正常的手动过程安装CentOS机器时,Fedora的Anaconda安装程序会在/root/anaconda-ks.cfg下保存该特定安装的kickstart文件。您可以使用此文件安装具有相同硬件和软件配置的另一个系统。

您还可以使用kickstart文件来 自定义和创建自己的kickstart文件. The most convenient way to do that is to use the graphical 启动 Configurator tool that you can download 和 install with the command yum install system-config-kickstart.

除了软件包选择之外,您还需要注意kickstart文件中与安装服务器一起使用的两个重要事项:安装方法和网络设置。

我们创建的服务器(我们正在从中修改此kickstart文件的服务器)使用静态IP地址。如果我们未经编辑使用它,则网络上将有多台计算机具有相同的IP地址,这是让您头疼的好方法。相反,我们将使用网络上的DHCP服务器为新计算机分配IP地址。找到以关键字“ network”开头的行,并将其更改为:

network --device eth0 --bootproto dhcp

另外,与初始设置不同,我们将要设置的客户端应该从网络服务器而不是CentOS安装DVD中获取软件包。要更改安装介质,请查找读取“ cdrom”的行,并将其替换为安装服务器的位置:

url --url http://192.168.2.110/install/ 

将kickstart文件放在Web服务器文档根目录下的目录中,例如/ var / www / html / kickstarts。例如,您可能有一个名为gnomedesktop.cfg的kickstart文件,该文件安装了基于GNOME的桌面,另一个名为kdedesktop.cfg的文件安装了基于KDE的桌面。

要使用kickstart文件安装客户端,请从最小引导CD进行引导,并在启动屏幕上指向要使用的kickstart文件。例如,要安装GNOME桌面,请键入:

linux ks=http://192.168.2.110/kickstarts/gnomedesktop.cfg

快点!现在,系统将自动运行所有安装步骤。

设置更新服务器

将安装服务器更进一步,并将其用作本地更新存储库很容易。这样可以节省带宽,因为可以将所有客户端设置为从本地存储库而不是从Internet获取更新。

在安装服务器上,为更新存储库创建目录结构。为简单起见,请使用与CentOS镜像上相同的目录结构:

# mkdir -p /localrepo/centos/6.3

CentOS的 的 仓库的设置使其仅查看主要发行版号。为了使该工作顺利进行,请创建指向当前6.3存储库的符号链接:

# ln -s /localrepo/centos/6.3/ /localrepo/centos/6

然后,一旦有了新的点发行版(例如CentOS 6.4),您需要做的就是创建一个新链接,以指向新发行版的本地存储库。

现在前往 镜子清单 在CentOS网站上查找附近的一个。在这里,我使用佐治亚理工学院提供的软件,并使用rsync对其进行镜像:

# rsync --progress -avH --delete --exclude 'isos' rsync://rsync.gtlib.gatech.edu/centos/6.3/ /localrepo/centos/6.3/

This creates an exact copy of the mirror on the local disk, but skips over the directories specified with the --exclude parameter – in this case the isos directory – since we don't really need them. If all your machines are of a particular architecture – say 64-bit – you can exclude mirroring packages for the 32-bit architecture by appending --exclude 'i386'.

您希望本地存储库保持最新的安全补丁程序和更新,因此您应该通过cron作业设置自动更新。 CentOS的 将cron作业保留在/ var / spool / cron下;在那里,您可以为root用户创建一个工作,该工作在每个星期日的凌晨5:30检查更新:

# vi /var/spool/cron/root 30 5 * * 7 /usr/bin/rsync rsync --progress -avH --delete --exclude 'isos' rsync://rsync.gtlib.gatech.edu/centos/6.3/ /localrepo/centos/6.3/

更改更新存储库

创建本地存储库后,您需要使Apache Web服务器意识到这一点,就像使用/ install目录一样。编辑仓库配置文件:

# vi /etc/httpd/conf.d/repo.conf

Alias /repo/ /localrepo/
<directory /localrepo>
	Options Indexes FollowSymLinks
	AllowOverride None
	Order allow,deny
	Allow from all
</directory>

这使Apache能够将查找/ repo目录的请求重定向到Web服务器上的/ localrepo目录。 FollowSymLinks指令告诉Apache按照文件系统的指示遍历目录。保存文件并重新启动Web服务器。

Now you must configure the clients so that they fetch packages from the local update server. CentOS的 keeps all the repositories under the yum.repos.d folder. Head to the folder 和 open a repository such as CentOS的 -Base.repo in a text editor. In this file, comment out all the entries that begin with mirrorlist=, then enable the lines that begin with baseurl=, 和 make sure the URL points to the local update repository:

baseurl=http://192.168.2.110/repo/centos/$releasever/os/$basearch

完成所有更改后,保存文件并清除现有的Yum缓存:

# yum clean all

自动化安装后更新

如果只有几台计算机,则可以转到每台计算机并手动更改每台计算机的存储库以从本地镜像进行更新。但是更有效的方法是创建一个自定义脚本,用您的自定义存储库替换现有存储库。您也可以在kickstart文件本身中使用这样的脚本,以便在安装后立即自动替换存储库。

首先,创建一个基本的自定义回购文件:

# vi local.repo

[LOCAL Repo] 
name=LOCAL Repo
baseurl=http://192.168.2.110/repo/centos/$releasever/os/$basearch
gpgcheck=1 
enabled=1 
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 

将其放在Web服务器文档根目录下的目录中,例如/ var / www / html / post-install /。还创建一个脚本,用此新库替换现有存储库,并将其放置在同一目录下。

# vi local-repo.sh:

cd /etc/yum.repos.d
rm *.repo  
wget http://192.168.2.110/post-install/local.repo
yum clean all
yum -y update

Now open a kickstarter file 和 scroll down to the %post section, which defines actions that will be performed after a system has been installed, 和 add the following:

%post 
cd /tmp 
wget http://192.168.2.110/post-install/local-repo.sh 
chmod +x local-repo.sh 
./repo.sh

如果您有多个kickstart文件,请确保将它们全部更改为运行自定义脚本,该脚本用自定义文件替换默认存储库。

在本教程中,我们已经涵盖了很多基础知识。设置所有功能似乎有点不堪重负-但您不必一次全部完成。如果您的网络较小,则可以设置安装服务器。在运行大量关键服务器和应用程序且需要最新安全更新的大型网络上,管理员也可以设置更新服务器。

一切设置完成后,推出新机器就成了指向正确的kickstart文件的问题。您可以使用单个命令设置新计算机,为新员工重置旧计算机,或将Web服务器更改为邮件服务器。而且,将kickstarter与安装和更新服务器一起使用不仅可以节省您的时间和精力,还可以减少公司的Internet带宽成本。

加入以下网络世界社区 脸书领英 对最重要的话题发表评论。

版权© 2013 IDG通讯,Inc.