KVM 下 kick start 安装

vm有简易的自动安装,我们如何给这些kvm也自动化安装呢

我们起一个虚拟机,选择pxe 默认下去,我们会看到开机以后,这台虚拟机自动获得了一个122网段的IP地址,WTF...可我明明没有配置过DHCP

rpm -q dhcp
package dhcp is not installed

嗷,我甚至没有安装过dhcp.看一下端口。

netstat -luntp |grep 67
tcp        0      0 :::46367                    :::*                        LISTEN      1893/rpc.statd      
udp        0      0 0.0.0.0:67                  0.0.0.0:*                               2378/dnsmasq

噢 ? 是 dnsmasq ,也就是他扮演了我的虚拟机下dhcp的角色。百度是永远查不出好东西,关于这个服务的内容特别乱。

dnsmasq 的主配置文件在etc下,打开。查看一下。全部都是注释行?。。。好吧。。

不断查找,最终我们在 /var/lib/libvirt/network/  下找到了这个元凶。。备份一下,然后就对这个default 做修改吧!

ls /var/lib/libvirt/network/
default.xml  default.xml.bk

文件内容

WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh net-edit default
or other application using the libvirt API.
-->

<network>
  <name>default</name>
  <uuid>fe111cda-e2f6-4891-a8b3-0c90e0663ef0</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0' />
  <mac address='52:54:00:37:8A:9C'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254' />
    </dhcp>
  </ip>
</network>

我们注释掉dhcp的3行内容。。

重启服务: failed to create listening socket: Address already in use

我。。。。。。

netstat -lnutp |grep dns
tcp        0      0 192.168.122.1:53            0.0.0.0:*                   LISTEN      2378/dnsmasq        
udp        0      0 192.168.122.1:53            0.0.0.0:*                               2378/dnsmasq        
udp        0      0 0.0.0.0:67                  0.0.0.0:*                               2378/dnsmasq

我们kill 2378 ,再重启一下。OK了这次。 

kill 2378
service dnsmasq restart

Starting dnsmasq:                                          [  OK  ]
netstat -lnutp |grep dns
tcp        0      0 0.0.0.0:53                  0.0.0.0:*                   LISTEN      3052/dnsmasq        
tcp        0      0 :::53                       :::*                        LISTEN      3052/dnsmasq        
udp        0      0 0.0.0.0:53                  0.0.0.0:*                               3052/dnsmasq        
udp        0      0 :::53                       :::*                                    3052/dnsmasq

恩。67 不监听了。再起一个虚拟机,果然没给分配地址。OKOK。

这里不直接把这个服务chkconfig off  也是因为他监听53有一个 dns 作用。我们还有用。。


=============================以上都只是准备工作啊==========================================


现在才是和kick start 真有关。。


1 肯定是安装相应的包咯

yum install dhcp syslinux tftp-server -y

2 /etc/dhcp 下有个conf 文件,我们cat 一下

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

噢 。好吧。是耍我的。根本没有配置需要的话到上述目录去拷贝。


3 拷贝过来,我们vim 编辑一下。

cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  /etc/dhcp/dhcpd.conf 
cp: overwrite `/etc/dhcp/dhcpd.conf'? y
vim /etc/dhcp/dhcpd.conf

在去除了乱七八糟不必要的高级的功能和注释行后,配置大约如下

ddns-update-style interim;
ignore client-updates;
allow bootp;
allow booting;

option domain-name "haha.com";
option domain-name-servers 192.168.122.1;

default-lease-time 600;
max-lease-time 7200;

log-facility local7;


subnet 192.168.122.0 netmask 255.255.255.0 {
  range 192.168.122.200 192.168.122.250;
  option domain-name-servers 192.168.122.1;
  option domain-name "haha.com";
  option routers 192.168.122.1;
  option broadcast-address 192.168.122.255;
  default-lease-time 600;
  max-lease-time 7200;
  next-server 192.168.122.1
  filename="pxelinux.0";

最后的next-server 意思就是你的下一个服务器,也就是tftp服务器,我用的就是自己,指向自己。

filename 就是去tftp自动寻找的文件名。默认pxelinux.0



4 我们分别启动dhcp 和 tftp ,注意的是tftp 是xinetd 控制的,chkconfig on 重启xinetd即可。

service dhcpd start
Starting dhcpd:                                            [FAILED]

我。。。。

看日志咯。。 

Aug  2 05:13:55 localhost dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1

Aug  2 05:13:55 localhost dhcpd: Copyright 2004-2010 Internet Systems Consortium.

Aug  2 05:13:55 localhost dhcpd: All rights reserved.

Aug  2 05:13:55 localhost dhcpd: For info, please visit https://www.isc.org/software/dhcp/

Aug  2 05:13:55 localhost dhcpd: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file

Aug  2 05:13:55 localhost dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1

Aug  2 05:13:55 localhost dhcpd: Copyright 2004-2010 Internet Systems Consortium.

Aug  2 05:13:55 localhost dhcpd: All rights reserved.

Aug  2 05:13:55 localhost dhcpd: For info, please visit https://www.isc.org/software/dhcp/

Aug  2 05:13:55 localhost dhcpd: Can't chown new lease file: Operation not permitted

Aug  2 05:13:55 localhost dhcpd: 

Aug  2 05:13:55 localhost dhcpd: This version of ISC DHCP is based on the release available

Aug  2 05:13:55 localhost dhcpd: on ftp.isc.org.  Features have been added and other changes

Aug  2 05:13:55 localhost dhcpd: have been made to the base software release in order to make

Aug  2 05:13:55 localhost dhcpd: it work better with this distribution.

Aug  2 05:13:55 localhost dhcpd: 

Aug  2 05:13:55 localhost dhcpd: Please report for this software via the CentOS Bugs Database:

Aug  2 05:13:55 localhost dhcpd:     http://bugs.centos.org/

Aug  2 05:13:55 localhost dhcpd: 

Aug  2 05:13:55 localhost dhcpd: exiting.


恩一大串里面我们很容易看出   Can't chown new lease file: Operation not permitted 就是问题所在,百度一下吧。。。方法就是更改 /etc/init.d/下 的执行脚本,将 user 和 group 改成root...

操作一下。。。果然OK ...

service dhcpd start
Starting dhcpd:                                            [  OK  ]
chkconfig tftp on
[root@localhost dhcp]# service xinetd restart
Stopping xinetd:                                           [FAILED]
Starting xinetd:                                           [  OK  ]

5. tftp的关键目录在版本不同位置不同。现在的在

pwd
/var/lib/tftpboot

暂时他还是空的,我们要拷贝一些东西,第一步装包我们装了一个 syslinux, rpm -ql syslinux 一下。我们找到 我们之前在 dhcp 指定 file pxelinux.0

rpm -ql  syslinux
/usr/bin/gethostip
#。。。。。。。省略一万字
/usr/share/syslinux/pexlinux.0

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

我们还需要拷贝两个关键文件到该目录,他们都在安装光盘中可以找到。

initrd.img vmlinuz
mount CentOS-6.5-x86_64-bin-DVD1.iso /mnt -o loop
cd /mnt/
ls
CentOS_BuildTag  EULA  images    Packages                  repodata              RPM-GPG-KEY-CentOS-Debug-6     RPM-GPG-KEY-CentOS-Testing-6
EFI              GPL   isolinux  RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-6  RPM-GPG-KEY-CentOS-Security-6  TRANS.TBL
cd isolinux/
ls
boot.cat  boot.msg  grub.conf  initrd.img  isolinux.bin  isolinux.cfg  memtest  splash.jpg  TRANS.TBL  vesamenu.c32  vmlinuz

cp initrd.img /var/lib/tftpboot/
cp vmlinuz /var/lib/tftpboot/

6 这样tftpoot下就有3个文件,我们还需要创建一个文件夹并创建一个最简单的default配置

ls
initrd.img  pxelinux.0  vmlinuz
mkdir pxelinux.cfg
vim default

default local
prompt 1
timeout 60

label local
localboot 1

label install
kernel vmlinuz
append initrd=initrd.img ramdisk_size=8192 ks=http://192.168.122.1/ks/ks.cfg

7 安装 httpd 以及 system-config-kickstart

在/var/www/html 下新建目录 CentOS.ISO 将光盘挂载到这里,长期使用也要写fstab呀。

mount /var/ftp/pub/CentOS-6.5-x86_64-bin-DVD1.iso /var/www/html/CentOS.ISO/ -o loop

在/var/www/html 下创建目录ks

命令打开 system-config-kickstart 是个图形化界面,修改一些选项。

wKioL1W-GdDSdj7rAALQGE0tgvo882.jpg

wKiom1W-F9zQFOo8AAGv_YKwDgs998.jpg

wKioL1W-GdCBgNjOAAJjc4Q3Cok356.jpg

wKiom1W-F9zgm472AAHAvRenx48131.jpg

wKioL1W-GdGgB8KQAAK6Wuzea3U512.jpg

wKiom1W-F9yA5uJ2AAGpaK90XyI207.jpg


稍微看一下,应该蛮傻的,比较关键的是添加http服务器和目录名,要打对,最后脚本添加一个用户验证一下,之中我分了几个目录,也就是说这个磁盘最小我得给6个G。


完成之后,就导出一个ks.cfg 拷贝到 /var/www/html/ks 下


8 把dhcpd xinetd httpd 全部重启一下。

开一台虚拟机给6G 以上空间,pxe 

可以看到拿到地址啦。是从我们dhcp里写的从200开始拿

在boot: 后面我们输入刚才在default里写的label 也就是 install 回车

如果一切正常,接下来就如下下图,开始自动安装啦!(任何还需要人工干预都是有问题~~)

wKiom1W-Gp_gCNqtAAIEOS4xgGc844.jpg

wKioL1W-HJSAiomcAAFFaRubPvg946.jpg


9. 最后 进入系统。。可以看到bob 用户已存在。

wKioL1W-HiPDlb9nAADY3eDp32M229.jpg

你可能感兴趣的:(虚拟机,kvm,start,IP地址,kick)