实现Pxe自动化机房安装
当客户端向服务器发送请求,为了避免交互式,我们做了的ks.cfg文件会告诉它怎么装,就可以了,这时服务器端tftp服务器向客户端返回一个ip地址,并且会告诉客户机tftp服务器的ip地址,客户端现在已经有ip了,可以访问tftp服务器了,就会得到引导文件、内核、驱动通过ks.cfg 文件得到这些东西,就可以实现网络的安装了。
总结:要实现这个功能得需要哪些东西类?
第一:server服务器、安装文件、NFS、FTP、HTTP服务;还要有tftp-server (具备引导文件、内核、驱动)
下面开始做这个实验:
先挂载光驱,安装vfstpd-
查看一下tftp服务的安装是否?安装的目录:
对该文件做一个编辑。
[root@localhost ~]# vim /etc/xinetd.d/tftp
改过之后我们需要重启一下超级守护进程。
[root@localhost ~]# service xinetd restart
查看一下日志是不是有错误.
[root@localhost ~]# tail -f /var/log/messages
然后到/tftpboot/目录下,拷贝这个文件到该文件命令如下:
[root@localhost tftpboot]# cp /mnt/cdrom/p_w_picpaths/pxeboot/initrd.img ./
[root@localhost tftpboot]# cp /mnt/cdrom/p_w_picpaths/pxeboot/vmlinuz ./
光有这两个,一个内核。一个驱动文件是不足够的,还要有引导文件。
[root@localhost tftpboot]# cp /usr/lib/syslinux/pxelinux.0 ./
引导文件需要一些配置:
创建一个新文件,放配置文件:
[root@localhost tftpboot]# mkdir pxelinux.cfg
拷贝配置文件:
[root@localhost tftpboot]# vim /mnt/cdrom/isolinux/isolinux.cfg
[root@localhost tftpboot]# cp /mnt/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default
现在所需要的文件都具备了:
[root@localhost tftpboot]# ll
total 8572
-r--r--r-- 1 root root 6855881 Aug 9 20:21 initrd.img
drwxr-xr-x 4 root root 4096 Aug 7 05:12 linux-install
-rw-r--r-- 1 root root 13148 Aug 9 20:26 pxelinux.0
drwxr-xr-x 2 root root 4096 Aug 9 20:32 pxelinux.cfg
-r--r--r-- 1 root root 1855956 Aug 9 20:23 vmlinuz
修改那个拷贝过来的default文件
首先我们得清楚ks.cfg没有光驱了放在哪?很明显我们知道应该放在ftp服务器上。
服务器怎样告诉客户机自己ip,dhcp向客户机发送dhcp广播的方法
我们再来修改dhcpd.conf文件。
还有一个小问题,可能我们都没想到,如果安装100台机器或更多是,那么主机ip会自动获取,但是主机名怎么获得类。要想获得各台主机的主机名我们该怎么做类,有人该说编写脚本执行,这是对的,但是该怎么来执行这个脚本哪?
首先我们分析一下:这台机器启动时会获取ip,
我们在这来模拟一下启动,
[root@localhost ~]# ifconfig eth0 |grep -i inet
1:inet addr:192.168.226.129 Bcast:192.168.226.255 Mask:255.255.255.0
2:inet6 addr: fe80::20c:29ff:fead:6205/64 Scope:Link
这时我只想看第一行内容,忽略第二行。应该做一下词尾锚定。
[root@localhost ~]# ifconfig eth0 |grep -i "inet\>"
inet addr:192.168.226.129 Bcast:192.168.226.255 Mask:255.255.255.0
机器一定是其与ip地址来获取主机名,现在只读取address:192.168.226.129 。我们改怎么做哪?
[root@localhost ~]# ifconfig eth0 |grep -i "inet\>" |awk '{print $2}'
addr:192.168.226.129
注释:awk 命令是筛选以空格数来确定选取的内容,
现在我们用脚本来实现:
先创建一个实现该想法的脚本
[root@localhost ~]# vim f1.sh (脚本内容如下:)
#!/bin/bash
ADDRESS=`/sbin/ifconfig eth0 |grep -i "inet\>" |awk '{print $2}'`
NUM=${ADDRESS##*.}
接下来怎么改变主机的名称哪?要针对哪个文件来实现类
我们来看一下这个文件:
[root@localhost ~]# vim /etc/sysconfig/network
我们不能用vi编辑器来改,这就会交互,所以我们用sed编辑器来改。
[root@localhost ~]# sed -e "/HOSTNAME/c HOSTNAME=station$NUM.a.com" /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=station129.a.com
这里的引用必须用双一号强引用,否则不会执行
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 我们看一下这个文件。
由于机器会自动获取ip地址,修改配置文件使用静态ip。
用sed 无交互编辑修改该配置文件,我们做一下演示:
[root@localhost ~]# sed -e "/BOOTPROTO/c BOOTPROTO=static\nIPADDRESS=192.168.226.$NUM\nNETMASK=255.255.255.0" /etc/sysconfig/network-scripts/ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=static
IPADDRESS=192.168.226.129
NETMASK=255.255.255.0
HWADDR=00:0C:29:AD:62:05
ONBOOT=yes
注释:这只是演示怎么改,要是想彻底改动,sed后加参数-i
这时我们写到脚本中vim f1.sh:
我们现在运行一下该脚本:
[root@localhost ~]# bash f1.sh
[root@localhost ~]# vim /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=station 129 .a.com
这时我们的脚本做完了:安装文件也拷贝完了,ftp、dhcp、tftp服务器都安装配置完了,就是还缺少一个ks.cfg文件。我们得修改yum的配置。
接下来我们得运行这个工具:system-config-kickstart 必须在图形界面下完成。
如果x-manager注册了也可以在x-shell 里打开,我在虚拟机里打开。
[root@localhost var]# system-config-kickstart 会出现这样的图形界面。
包括依次是基本配置、安装方法、boot loader 选项、磁盘配值信息、网络配置、防火墙设置、显示配置、安装包选择(如果yum没安装配置是不显示存储、集群等安装包的)、域安装脚本等。
先是基本配置:如下:
下面3个第一个打钩,第二个打钩,(默认在图形界面下安装,一般我们都用字符界面就行了)第三个交互操作,不需要勾。
安装方法选择如下:
Boot Loader 选项设置如下:
磁盘配置:
网络配置:
然后是一些服务,要装哪个我们就选哪个!
这里我们所写的脚本也填写到里面了。
这时配置完毕,产生ks.cfg文件,保存文件配置到默认/root目录下。
那么这个ks.cfg文件我们放在那里呐?
我们查看一个文件的内容:
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# ll
total 8
-r-xr-xr-x 1 root root 396 Aug 9 20:40 default
[root@localhost pxelinux.cfg]# vim default
我们得把这个ks.cfg 拷贝到ftp文件夹下。
[root@localhost ~]# cp ks.cfg /var/ftp/
现在ftp目录下都有了现在,我们重启一下ftp、dhcp服务:
[root@localhost ftp]# service vsftpd restart
[root@localhost ftp]# service dhcpd restart
现在是已经做完了,开始测试:
测试过程就不多介绍了:新建虚拟机网卡设置成host-only:然后开启次虚拟机:
出现dhcp自动获取ip的界面:
然后会出现安装界面:
接下来等待可能会时间有点长。
然后看到这个安装过程:应该安装不会出现多大的问题了。
然后正式进入安装界面:
接下来是我们所选的那些软件包安装:
这时我们就可以去忙别的事情去了,全部自动化安装。
我们的pxe安装完成了。
以后会继续更新光盘自动化安装。