利用pex实现centos的自动安装

1、实现环境:Centos 64位

2、网络拓扑图:

使用亿图工具绘制出拓扑图如图1所示:

centos进行iOS自动化 centos自动安装_CentOS

图1:网络拓扑图

3、实施:

(1)配置FTP服务器

第一步:为了便于后面操作先对yum进行操作,具体操作如下:

[root@server1 Packages]# cd /etc/yum.repos.d/
[root@server1 yum.repos.d]# ll
total 8
-rw-r--r--. 1 root root 1926 Apr 17 02:48 CentOS-Base.repo
-rw-r--r--. 1 root root  638 Apr 17 02:48 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  630 Apr 17 02:48 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 Apr 17 02:48 CentOS-Vault.repo
//删除其余三个只留CentOS-Media.repo
[root@server1 yum.repos.d]# rm *
rm: remove regular file `CentOS-Base.repo'? y
rm: remove regular file `CentOS-Debuginfo.repo'? y
rm: remove regular file `CentOS-Media.repo'? n
rm: remove regular file `CentOS-Vault.repo'? Y
//然后编辑CentOS-Media.repo,操作如下:
[root@server1 yum.repos.d]# vim CentOS-Media.repo 
//打开文件后编辑以下操作:
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=1

第二步:先安装开发工具,在安装FTP服,以及FTP客户端,具体操作如下:

//安装开发工具
[root@server1 Packages]# yum groupinstall 'Development tools' 
//安装FTP
[root@server1 ~]# yum install vsftpd
//安装FTP客户端
[root@server1 ~]# yum install ftp lftp

第三步:开启vsftpd服务,并查看端口

//开启vsftpd服务
[root@server1 ~]# service vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[root@server1 ~]# chkconfig vsftpd on   //永久开启
//查看FTP端口
[root@server1 ~]# netstat -tupln |grep 21
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      2567/vsftpd

第四步:验证登录ftp,并把/media/cdrom目录下的所有文件拷贝到/var/ftp目录下

//验证登录ftp
[root@server1 ~]# ftp 192.168.2.100
Connected to 192.168.2.100 (192.168.2.100).
220 (vsFTPd 2.2.2)
Name (192.168.2.100:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (192,168,2,100,100,159).
150 Here comes the directory listing.
drwxr-xr-x    2 0        0            4096 Mar 01  2013 pub
//把/media/cdrom目录下的所有文件拷贝到/var/ftp目录下,在后台执行
[root@server1 ~]# cp -r /media/cdrom /var/ftp &
[1] 2578                //后台执行的进程号

(2)配置DHCP服务器

第一步:安装dhcp服务,具体操作如下:

//安装dhcp
root@server1 ~]# yum install dhcp
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
 * c6-media: 
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package dhcp.x86_64 12:4.1.1-34.P1.el6.centos will be installed
--> Finished Dependency Resolution


第二步:安装完成后进行编辑dhcp配置文件,操作如下:

# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
#

进入后看到以上信息,上面说明让我们参考文件

/usr/share/doc/dhcp*/dhcpd.conf.sample,因此在底行模式下执行以下命令:

:r /usr/share/doc/dhcp*/dhcpd.conf.sample

//接下来进行编辑,编辑内容如下:

第8行不要

//DNS服务器

9 option domain-name-servers 202.102.224.68, 202.102.227.68;  

第27 、28不要

第34到最后都不要  命令:在底行模式下输入:34,$d

接下来配置Ip地址范围:

30 subnet 192.168.2.0 netmask 255.255.255.0 {
 31   range 192.168.2.10 192.168.2.50;
 32   option routers 192.168.2.254;
 33   next-server 192.168.2.100;
 34   filename  “pxelinux.0”;
}

编辑完后保存退出,然后启动dhcp服务器:

[root@server1 ~]# service dhcpd start
Starting dhcpd:                                          [  OK  ]
[root@server1 ~]# chkconfig dhcpd on
[root@server1 ~]# chkconfig dhcpd on    //永久关闭

然后关闭防火墙和SELinux

[root@server1 ~]# service iptables stop
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                             [  OK  ]
[root@server1 ~]# setenforce 0

(3)配置TFTP服务器

//安装tftp、tftp-server
[root@server1 ~]# yum install tftp tftp-server
//查看安装后的tftp-server
[root@server1 ~]# rpm -ql tftp-server    //查看安装过的tftp-serverr
/etc/xinetd.d/tftp       //这是一个依赖于超级守护进程的tftp
/usr/sbin/in.tftpd

/var/lib/tftpboot
//切换到超级守护进程下查看tftp并修改
[root@server1 ~]# cd /etc/xinetd.d/     
[root@server1 xinetd.d]# ll       //查看tftp
[root@server1 xinetd.d]# vim tftp     //打开tftp编辑
 server_args             = -s /var/lib/tftpboot
  disable           = no (一定注意空格)    //找到这一行并修改
        per_source              = 11
//修改后退出保存,然后启动超级守护进程xinetd,并查看端口
[root@server1 xinetd.d]# service xinetd   start
Starting xinetd:                     [  OK  ]
[root@server1 xinetd.d]# netstat -tupln |grep 69
udp     0     0  0.0.0.0:69   0.0.0.0:*       2872/xinetd //依赖于超级守护进程的
[root@server1 xinetd.d]# chkconfig xinetd on   //永久启动
//进入目录/var/lib/tftpboot/查看
[root@server1 xinetd.d]# cd /var/lib/tftpboot/
[root@server1 tftpboot]# ll
total 0
//然后把内核和驱动都要拷贝到该目录下,而内核和驱动都在/media/cdrom/isolinux/目录下
[root@server1 tftpboot]# cp /media/cdrom/isolinux/
TRANS.TBL     grub.conf     isolinux.cfg  vesamenu.c32
boot.cat      initrd.img    memtest       vmlinuz
boot.msg      isolinux.bin  splash.jpg    
[root@server1 tftpboot]# cp /media/cdrom/isolinux/vmlinuz ./  
[root@server1 tftpboot]# cp /media/cdrom/isolinux/initrd.img .

在配置DHCP服务器是用到了一个网络安装的驱动文件pxelinux.0,因此这个文件也要拷贝到当前目录下,这个文件占时还没有需要安装一个syslinux的软件包

[root@server1 tftpboot]# yum install syslinux         //安装
[root@server1 tftpboot]# cp /usr/share/syslinux/pxelinux.0 ./     
//查看该目录文件是否都有了
[root@server1 tftpboot]# ll
total 34940
-r--r--r--. 1 root root 31742048 Apr 17 04:36 initrd.img
-rw-r--r--. 1 root root    26828 Apr 17 04:45 pxelinux.0
-r-xr-xr-x. 1 root root  4002656 Apr 17 04:35 vmlinuz
//网络安装驱动有但是没有配置文件,因此先要创建一个配置目录
[root@server1 tftpboot]# mkdir pxelinux.cfg
[root@server1 tftpboot]# cd pxelinux.cfg/
[root@server1 pxelinux.cfg]# cp /media/cdrom/isolinux/isolinux.cfg default            //拷贝isolinux.cfg改名为default(在后面会提到)
[root@server1 pxelinux.cfg]# ll        //查看拷贝的文件
total 4
-r--r--r--. 1 root root 936 Apr 17 04:55 default

到此tftp所需的都已做完了。

(4)编辑脚本

//打开一个脚本1.sh进行编辑如下:
[root@server1 ~]# vim 1.sh
#!/bin/bash
STRING=`ifconfig eth0 |grep "inet\>" |awk '{print $2}'`
NUM=${STRING##*.}
sed -i -e "s@HOSTNAME.*@HOSTNAME=station$NUM.a.com@" /etc/sysconfig/network
sed -i  -e "s@BOOTPROTO.*@BOOTPROTO=static\nIPADDR=192.168.2.$NUM\nNETMASK=255.255.255.0@" /etc/sysconfig/network-scripts/ifcfg-eth0

(5)Kickstart的安装和配置

kickstart的具体安装和实现请参考上一篇《kickstart实现的系统自动安装》一文,然后只需要在最后一步添加如下图所示的操作步骤:

centos进行iOS自动化 centos自动安装_服务器_02

图上显示了填写的脚本也就是上一步编辑的脚本,填写完后点击保存弹出如下对话框:

centos进行iOS自动化 centos自动安装_centos进行iOS自动化_03

这里把它保存到了管理员家目录下,然后点击save

(6)进行后续操作

//首先把刚生成的ks.cfg文件拷贝到/var/ftp目录下
[root@server1 ~]# cp ks.cfg /var/ftp
客户端获取到IP地址后会去找tftp-server,因此还要编辑/var/lib/tftpboot/pxelinux.cfg/目录下的default文件:
[root@server1 ~]# cd /var/lib/tftpboot/
[root@server1 tftpboot]# cd pxelinux.cfg/
[root@server1 pxelinux.cfg]# ll
total 4
-r--r--r--. 1 root root 936 Apr 17 04:55 default
[root@server1 pxelinux.cfg]# vim default
//编辑的内容如下:
1 default linux
  2 prompt 1
  3 timeout 5
18 label linux
 19   menu label ^Install or upgrade an existing system
 20   menu default
 21   kernel vmlinuz
 22   append initrd=initrd.img ks=ftp://192.168.2.100/ks.cfg    //一定要写到一行上

然后保存退出。

5、测试验证

(1)安装虚拟机,具体操作如下:

//上面都已配置完成后,所以只需修改一下新创建虚拟机的网络连接方式不需要再加载光盘直接启动电源就可以了,网络连接方式如下图所示:


修改网络连接后启动电源,具体结果如下图所示

centos进行iOS自动化 centos自动安装_linux_04


上图表明已经找到启动程序起来了。

centos进行iOS自动化 centos自动安装_CentOS_05

上图显示正在安装程序,说明已经正在安装,表明已经成功。

(2)查看客户机获取IP地址的日志文件信息,结果如下:

[root@server1 ~]# tail -f /var/log/messages 
Apr 17 11:37:45 server1 kernel: eth0: link up
Apr 17 11:40:57 server1 dhcpd: DHCPDISCOVER from 00:0c:29:bf:ca:98 via eth0
Apr 17 11:40:58 server1 dhcpd: DHCPOFFER on 192.168.2.11 to 00:0c:29:bf:ca:98 via eth0
Apr 17 11:40:59 server1 dhcpd: DHCPREQUEST for 192.168.2.11 (192.168.2.100) from 00:0c:29:bf:ca:98 via eth0
Apr 17 11:40:59 server1 dhcpd: DHCPACK on 192.168.2.11 to 00:0c:29:bf:ca:98 via eth0
Apr 17 11:40:59 server1 in.tftpd[3709]: tftp: client does not accept options
Apr 17 11:41:24 server1 dhcpd: DHCPDISCOVER from 00:0c:29:bf:ca:98 via eth0
Apr 17 11:41:24 server1 dhcpd: DHCPOFFER on 192.168.2.11 to 00:0c:29:bf:ca:98 via eth0
Apr 17 11:41:24 server1 dhcpd: DHCPREQUEST for 192.168.2.11 (192.168.2.100) from 00:0c:29:bf:ca:98 via eth0
Apr 17 11:41:24 server1 dhcpd: DHCPACK on 192.168.2.11 to 00:0c:29:bf:ca:98 via eth0
Apr 17 11:41:29 server1 dhcpd: DHCPDISCOVER from 00:0c:29:bf:ca:98 via eth0
Apr 17 11:41:29 server1 dhcpd: DHCPOFFER on 192.168.2.11 to 00:0c:29:bf:ca:98 via eth0
Apr 17 11:41:29 server1 dhcpd: DHCPREQUEST for 192.168.2.11 (192.168.2.100) from 00:0c:29:bf:ca:98 via eth0
Apr 17 11:41:29 server1 dhcpd: DHCPACK on 192.168.2.11 to 00:0c:29:bf:ca:98 via eth0

(3)系统安装完后进行查看主机的IP地址、主机名等信息是否正确,其结果如下。

//查看客户机安装好后的IP地址,如下图所示:

centos进行iOS自动化 centos自动安装_linux_06

//查看主机名,如下图所示:

centos进行iOS自动化 centos自动安装_linux_07

//查看地址,如下图所示:

centos进行iOS自动化 centos自动安装_服务器_08

centos进行iOS自动化 centos自动安装_centos进行iOS自动化_09

从上面的验证信息可以看出全部正确,因此PEX实现的系统自动安装也就到此结束了。



转载于:https://blog.51cto.com/tyjhz/1398012