使用Kickstart实现CentOS自动化安装

在配置好DHCP和PXE后,本文将在前文的基础上完成自动安装和配置的工作。自动安装的过程主要使用了两个工具:Anaconda和kickstart。前者(Linux安装程序Anaconda分析)是Red Hat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序是把位于光盘或其他源上的数据包,根据设置安装到主机上的一个程序;为实现该定制安装,其提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息)Anaconda支持的管理模式: a). Kickstart提供的自动化安装 b). 对一个RedHat实施upgrade c). Rescuse模式对不能启动的系统进行故障排除 而kickstart是Redhat公司创建的项目。通过使用kickstart,系统管理员能够创建一个单独的、包含安装过程中遇到的所有问题答案的文件。kickstart文件能被存储在服务器系统之上,机器在安装系统的时候可以读取该文件。这种安装方式支持只用一个kickstart文件就可以在多台机器上安装Fedora和红帽企业版Linux的特性,这对于网络和系统管理员来说非常理想。可以参考文档:fedora docs – Anaconda/Kickstart/zh-cn ,以及Kickstart/Anaconda实现自动化安装原理探究。使用kickstart优势: (1). 流线化自动化的安装; (2). 快速大量的裸机部署; (3). 强制建立的一致性(软件包,分区,配置,监控,安全性) (4). 减少人为的部署失误使用Kickstart方法安装的过程: (1). 创建一个kickstart文件 (2). 创建有kickstart文件的引导介质或者使这个文件在网络上可用; (3). 筹备一个安装树 (4). 开始ks安装:anconda自身启动 –>选取ks安装模式–> 从ks文件读取配置 –> 最后安装创建kickstart配置文件的方式: (1). 文本编辑器(vim)等 (2). 用图形化界面配置:system-config-kickstat(需要安装system-config-kickstart.noarch包) 下面是一个kickstart环境的完整流程。1. 挂载ISO镜像这里使用autofs的方式自动挂载ISO镜像,并通过ftp输出目录。第一步先安装这两个包:

[root@server] yum install vsftpd autofs......  Installing : vsftpd-2.2.2-11.el6_4.1.x86_64  Installing : hesiod-3.1.0-19.el6.x86_64                                                                                                                                                        1/2   Installing : 1:autofs-5.0.5-89.el6_5.1.x86_64    # ISO镜像所在路径[root@server] ll /home/debugo/CentOS-6.5-x86_64-bin-DVD1.iso -rwxrw-rw-. 1 debugo debugo 4467982336 Jan 16 15:45 /home/debugo/CentOS-6.5-x86_64-bin-DVD1.iso# 修改vsftpd配置文件,开启匿名登录。[root@server] vim /etc/vsftpd/vsftpd.confanonymous_enable=YES# 开启vsftpd服务[root@server] service vsftpd start && chkconfig --level 35 vsftpd on# 修改auto.master,挂载点/var/ftp/pub使用/etc/auto.vsftpd这个子配置文件[root@server] vim /etc/auto.master/var/ftp/pub/etc/auto.vsftpd# 挂载镜像到centos65这个目录下[root@server] vim /etc/auto.vsftpdiso6-fstype=iso9660,ro,loop:/home/debugo/CentOS-6.5-x86_64-bin-DVD1.iso # 开启autofs服务,并登录ftp测试。autofs会在访问到这个目录时挂载iso镜像[root@server] service autofs stop && service autofs start[root@server] ftp localhostTrying 127.0.0.1...Connected to localhost (127.0.0.1).......Remote system type is UNIX.Using binary mode to transfer files.ftp> cd iso6250 Directory successfully changed.ftp> ls227 Entering Passive Mode (127,0,0,1,208,130).150 Here comes the directory listing.-r--r--r--    2 0        0              14 Nov 29 11:52 CentOS_BuildTagdr-xr-xr-x    3 0        0            2048 Nov 29 12:05 EFI-r--r--r--    2 0        0             212 Nov 27 19:12 EULA-r--r--r--    2 0        0           18009 Nov 27 19:12 GPLdr-xr-xr-x    2 0        0          655360 Nov 29 12:08 Packages-r--r--r--    2 0        0            1354 Nov 27 19:13 RELEASE-NOTES-en-US.html-r--r--r--    2 0        0            1706 Nov 27 19:12 RPM-GPG-KEY-CentOS-6-r--r--r--    2 0        0            1730 Nov 27 19:12 RPM-GPG-KEY-CentOS-Debug-6-r--r--r--    2 0        0            1730 Nov 27 19:12 RPM-GPG-KEY-CentOS-Security-6-r--r--r--    2 0        0            1734 Nov 27 19:12 RPM-GPG-KEY-CentOS-Testing-6-r--r--r--    1 0        0            3380 Nov 29 12:09 TRANS.TBLdr-xr-xr-x    3 0        0            2048 Nov 29 12:09 imagesdr-xr-xr-x    2 0        0            2048 Nov 29 12:04 isolinuxdr-xr-xr-x    2 0        0            4096 Nov 29 12:09 repodata226 Directory send OK.[root@server]  df/home/debugo/CentOS-6.5-x86_64-bin-DVD1.iso   4363088  4363088         0 100% /var/ftp/iso6

2. 安装kickstart直接使用yum来安装即可。

[root@server] yum install system-config-kickstart......Installed:  system-config-kickstart.noarch 0:2.8.6.5-1.el6......

3. 配置kickstart[root@server] system-config-kickstartBasic Configuration – 选择时区、root密码、目标系统架构(x86_64), 安装完成后重启系统,使用文本方式安装,不要启用交互模式。Installation Method – 安装介质的路径为 ftp://192.168.0.132/pub/iso6Partition Information – 由于kickstart图形界面不能配置LVM,所以需要在脚本中直接修改。Network Configuration – 添加一个DHCP网卡”eth0″Display Configuration – 安装图形环境,不使用Setup Agent(初次运行的配置界面)Package Selection – 选择必要的组件,比如Base System – Base,Development – Development Tools等。Post Installation – 安装后执行的脚本文件完成后File – Save保存生成的kickstart脚本ks.cfg。鸟哥的网站对这些脚本中的配置项有详细的说明。打开这个ks文件:

platform=x86, AMD64, or Intel EM64T#version=DEVEL# Firewall configurationfirewall --disabled# Install OS instead of upgradeinstall# Use network installationurl --url="ftp://192.168.0.132/iso6"# Root passwordrootpw --iscrypted $1$L3i.IYPm$w5z95vimgjLX9Rq90oYdv0# System authorization informationauth  --useshadow  --passalgo=sha512# Use text mode installtextfirstboot --disable# System keyboardkeyboard us# System languagelang en_US# SELinux configurationselinux --disabled# Installation logging levellogging --level=info# Reboot after installationreboot# System timezonetimezone  Asia/Shanghai# Network informationnetwork  --bootproto=dhcp --device=eth0 --onboot=on# System bootloader configurationbootloader --location=mbr# Clear the Master Boot Recordzerombr# 关于分区信息的修改# Partition clearing informationclearpart --all --initlabel # Disk partitioning information, /boot为一个100M的分区。sda其他的空间作为一个pv加入卷组vol0中'# 并建立根/的LV和/tmp的LVpart /boot  --fstype="ext4"  --size=100 --ondisk=sda --asprimary# sda剩余的空间设置为pvpart pv.01 --size=1 --ondisk=sda --asprimary --grow# 创建vg和lvvolgroup vol0 pv.01logvol / --fstype ext4 --name=lv_root --vgname=vol0 --size=10000logvol /tmp --fstype ext4 --name=lv_tmp --vgname=VolGroup00 --size=2000# packages/groups%packages@base@basic-desktop@chinese-support@compat-libraries@desktop-platform@development@fonts@general-desktop@graphical-admin-tools@input-methods@network-tools@performance@server-platform@x11ftpnmapsystem-config-lvm# 安装完成后的执行脚本,比如安装包、修改配置文件等。%post --interpreter=/bin/bash # Let's log post-install ( # Install Extra Packages /bin/rpm -ivh ftp://192.168.0.132/rpms/scala-2.11.1.rpm/bin/rpm -ivh ftp://192.168.0.132/rpms/jdk-7u55-linux-x64.rpm/sbin/chkconfig NetworkMananger off/sbin/chkconfig cups off/sbin/chkconfig sendmail off/sbin/chkconfig postfix off/bin/rm -rf /etc/yum.repos.d/*/bin/cat &1 >> /root/post-install.log%end

%post脚本是安装后系统执行的脚本,这里只是简单的定义了一下,很多工作(配置hostname、环境变量、服务等)都没有完成,后续待完善。保存后将ks.cfg文件拷贝到ftp目录下。PXE的配置文件在initrd=initrd.img后加上ks=ftp://192.168.0.132/ks.cfg。

cp /root/ks.cfg /var/ftp/ks.cfgvim label linux  menu label ^Install or upgrade an existing system  menu default  kernel vmlinuz  append initrd=initrd.img ks=ftp://192.168.0.132/ks.cfg

下面新建一个虚拟机,在DHCP找到IP后弹出PXE菜单,选择Install or upgrade an existing system,就开始进入了Kickstart的安装界面,安装过程大概5-10分钟。 检查一下post脚本的执行情况:

[root@localhost ~] yum updateLoaded plugins: fastestmirror, refresh-packagekit, securityISO                                                      | 4.0 kB     00:00     ISO/primary_db                                           | 4.4 MB     00:00     Setting up Update ProcessNo Packages marked for Update[root@localhost ~] ip addr show eth02: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000    link/ether 00:0c:29:88:70:0f brd ff:ff:ff:ff:ff:ff    inet 192.168.0.91/24 brd 192.168.0.255 scope global eth0    inet6 fe80::20c:29ff:fe88:700f/64 scope link        valid_lft forever preferred_lft forever[root@localhost ~] cat /root/post-install.log Retrieving ftp://192.168.0.132/rpms/scala-2.11.1.rpmPreparing...                ##################################################scala                       ##################################################Retrieving ftp://192.168.0.132/rpms/jdk-7u55-linux-x64.rpmPreparing...                ##################################################jdk                         ##################################################

到此为止,一个自动部署环境就配置成功,这种安装方式在部署大规模hadoop平台节点时非常有效,下一步将完善ks脚本。本人水平有限,错误或不足之处请多多指教。 ^^

使用Kickstart实现CentOS自动化安装

相关文章:

你感兴趣的文章:

标签云: