上一篇刚刚完成了nagios的自动安装,这篇继续吧,想到前些天手动配置kickstart服务器过程比较繁琐,思路也不够清晰,还是把安装配置过程写进脚本非常方便,感觉是一劳永逸,降低后续工作的劳动量,而且整个思路过程比较清晰。

   实验环境:centos6.3 x86_64

   关闭了防火墙, SELinux设为Disabled

   注意:虚拟机需要先载入centos6.3 x86_64的安装镜像iso

         脚本里的MAC地址需要修改为你当前机器的MAC地址

         ks.cfg配置文件中关于设定客户机密码需要改为自己设定

   直接执行该脚本即可开始安装配置kickstart。

  1. #!/bin/bash 
  2. #auto install kickstart server 
  3.  
  4. LANG=C 
  5. mkdir /tftpboot 
  6. mkdir /tftpboot/pxelinux.cfg 
  7. mkdir /mnt/iso  
  8. mount -o loop /dev/dvd /mnt/iso 
  9.  
  10. function init_pack() 
  11.      yum -y install dhcp httpd xinetd tftp tftp-server syslinux 
  12.      chkconfig httpd on 
  13.      chkconfig dhcpd on 
  14.      chkconfig xinetd on 
  15.      service httpd start 
  16.      service dhcpd start 
  17.      service xinetd start 
  18.  
  19.  
  20.  
  21. function set_tftp() 
  22.      cp /etc/xinetd.d/tftp /etc/xinetd.d/tftp.bak 
  23.      echo 'service tftp 
  24.           disable                 = no 
  25.           socket_type             = dgram 
  26.           protocol                = udp 
  27.           wait                    = yes 
  28.           user                    = root 
  29.           server                  = /usr/sbin/in.tftpd 
  30.           server_args             = -u nobody -s /tftpboot 
  31.           per_source              = 11 
  32.           cps                     = 100 2 
  33.           flags                   = IPv4 
  34.  }' > /etc/xinetd.d/tftp                    #need to format the text 
  35.  
  36. function set_eth() 
  37.      echo 'DEVICE="eth0" 
  38.      BOOTPROTO="static" 
  39.      IPADDR="192.168.10.1" 
  40.      NETMASK="255.255.255.0" 
  41.      GATEWAY="192.168.10.1" 
  42.      HWADDR="08:00:27:6B:2F:46" 
  43.      NM_CONTROLLED="yes" 
  44.      ONBOOT="yes"' > /etc/sysconfig/network-scripts/ifcfg-eth0          #need to format the text 
  45.      sed -i 's/^ *//g' /etc/sysconfig/network-scripts/ifcfg-eth0             
  46.      ifdown eth0;ifup eth0 
  47.  
  48. function set_dhcp() 
  49.      sed -i '1,$s/^/#/g' /etc/dhcp/dhcpd.conf 
  50.      echo 'subnet 192.168.10.0 netmask 255.255.255.0 { 
  51.      option routers 192.168.10.1; 
  52.      option subnet-mask 255.255.255.0; 
  53.      range 192.168.10.10 192.168.10.50; 
  54.      next-server 192.168.10.1; 
  55.      default-lease-time 600; 
  56.      max-lease-time 7200; 
  57.      filename "pxelinux.0"
  58.      allow booting; 
  59.      allow bootp; 
  60.      }' >> /etc/dhcp/dhcpd.conf             #need to format the text 
  61.      sed -i 's/^ *//g' /etc/dhcp/dhcpd.conf  #remove the blanks at beginning
  62.      service dhcpd restart 
  63.  
  64. function cp_files() 
  65.      cp -rv /mnt/iso/* /var/www/html 
  66.      cp -v /mnt/iso/isolinux/initrd.img /tftpboot 
  67.      cp -v /mnt/iso/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default 
  68.      cp -v /mnt/iso/isolinux/vmlinuz /tftpboot 
  69.      cp -v /mnt/iso/isolinux/vesamenu.c32 /tftpboot/vesamenu.c32 
  70.      cp -v /usr/share/syslinux/pxelinux.0 /tftpboot 
  71.      chmod +x /tftpboot/pxelinux.cfg/default 
  72.      chcon -u system_u -t tftpdir_t /tftpboot -R        #modify the selinux context type 
  73.      chcon --reference=/var/www/html /var/www/html -R 
  74.  
  75.  
  76. function set_kscfg() 
  77.      echo '#platform=x86, AMD64, or Intel EM64T 
  78.      #version=DEVEL 
  79.      # Firewall configuration 
  80.      firewall --disabled 
  81.      # Install OS instead of upgrade 
  82.      install 
  83.      # Use network installation 
  84.      url --url="http://192.168.10.1/" 
  85.      # Root password 
  86.      rootpw --iscrypted $1$xhuJUwps$czE5aVuNeRhrbQYZ8YAmy1  #密码自己设定,可用明文也可加密
  87.      # System authorization information 
  88.      auth  --useshadow  --passalgo=sha512 
  89.      # Use graphical install 
  90.      graphical 
  91.      firstboot --disable 
  92.      # System keyboard 
  93.      keyboard us 
  94.      # System language 
  95.      lang en_US 
  96.      # SELinux configuration 
  97.      selinux --permissive 
  98.      # Do not configure the X Window System 
  99.      skipx 
  100.      # Installation logging level 
  101.      logging --level=info 
  102.      # Reboot after installation 
  103.      reboot 
  104.      # System timezone 
  105.      timezone --isUtc Asia/Chongqing 
  106.      # Network information 
  107.      network  --bootproto=dhcp --device=eth0 --onboot=on 
  108.      # System bootloader configuration 
  109.      bootloader --location=mbr 
  110.      # Partition clearing information 
  111.      clearpart --all --initlabel 
  112.      # Disk partitioning information 
  113.      part /boot --fstype="ext4" --size=200 
  114.      part / --fstype="ext4" --size=6000 
  115.      part swap --fstype="swap" --size=512 
  116.      part /home --fstype="ext4" --size=1024 
  117.  
  118.      %packages 
  119.      @additional-devel 
  120.      @development 
  121.  
  122.      %end' > /var/www/html/ks.cfg 
  123.      sed -i 's/^ *//g' /var/www/html/ks.cfg 
  124.      chmod 755 /var/www/html/ks.cfg 
  125.      chcon --reference=/var/www/html /var/www/html/ks.cfg 
  126. function set_default() 
  127.      echo 'default vesamenu.c32 
  128.      #prompt 1 
  129.      timeout 30 
  130.  
  131.      display boot.msg 
  132.  
  133.      menu background splash.jpg 
  134.      menu title Welcome to CentOS 6.3! 
  135.      menu color border 0 #ffffffff #00000000 
  136.      menu color sel 7 #ffffffff #ff000000 
  137.      menu color title 0 #ffffffff #00000000 
  138.      menu color tabmsg 0 #ffffffff #00000000 
  139.      menu color unsel 0 #ffffffff #00000000 
  140.      menu color hotsel 0 #ff000000 #ffffffff 
  141.      menu color hotkey 7 #ffffffff #ff000000 
  142.      menu color scrollbar 0 #ffffffff #00000000 
  143.  
  144.      label linux 
  145.        menu label ^Install or upgrade an existing system 
  146.        menu default 
  147.        kernel vmlinuz 
  148.        append initrd=initrd.img ks=http://192.168.10.1/ks.cfg 
  149.      label vesa 
  150.        menu label Install system with ^basic video driver 
  151.        kernel vmlinuz 
  152.        append initrd=initrd.img xdriver=vesa nomodeset 
  153.      label rescue 
  154.        menu label ^Rescue installed system 
  155.        kernel vmlinuz 
  156.        append initrd=initrd.img rescue 
  157.      label local 
  158.        menu label Boot from ^local drive 
  159.        localboot 0xffff 
  160.      label memtest86 
  161.        menu label ^Memory test 
  162.        kernel memtest 
  163.        append -' > /tftpboot/pxelinux.cfg/default 
  164.      sed -i 's/^ *//g' /tftpboot/pxelinux.cfg/default 
  165.      chcon -u system_u -t tftpdir_t /tftpboot/pxelinux.cfg/default 
  166.  
  167. init_pack
  168. if [ $(rpm -q tftp) -a $(rpm -q dhcp) -a $(rpm -q httpd) -a $(rpm -q syslinux) ]; then      #check if these services have been installed 
  169.     set_tftp 
  170.     set_eth 
  171.     set_dhcp 
  172.     cp_files 
  173.     set_kscfg 
  174.     set_default 
  175. else 
  176.     echo "installed incompleted." 
  177. fi 
  178.