centos7.3 kvm虚拟化全自动化部署(0915金测OK)

简介:

环境说明:

VMware中的centos7做kvm虚拟化实验必须的设置,否则无法正常使用kvm虚拟化功能:

wKioL1m6JZPz4pbfAAFIBOIdCoI506.png

#kvm虚拟化一键安装和启动的脚本(已测OK)

 #说明:此脚本实现kvm虚拟化平台的一键安装,并且创建一台新的虚拟机vmx0,给vmx0全自动安装系统。

    本文是通过脚本在centos7系统中全自动化安装和配置kvm虚拟化平台,并通过脚本创建一台新虚拟机vmx0,并且自动安装centos7系统.本案脚本创建的虚拟机vmx0配置了vnc和console控制功能.本文附带了mininal和gnome桌面安装的ks自动安装应答文件.测试都能正常运行.欢迎大家来试用.


网络环境:
kvm+vsftpd服务器:192.168.10.7

vi   kvmx.sh   脚本代码如下
#!/bin/bash
setenforce   0
getenforce
sed  -i    '/^SELINUX=/c\SELINUX=disable'   /etc/selinux/config
grep   ^SELINUX    /etc/selinux/config


systemctl   stop   firewalld
systemctl   disable   firewalld


read  -p    'selinux和firewalld已关闭,按回车键继续配置本地yum源...'

#准备本地yum源
mkdir  -pv  /dvd
mount   /dev/cdrom   /dvd
chmod  +x  /etc/rc.d/rc.local
grep  dvd   /etc/rc.d/rc.local || echo   'mount   /dev/cdrom   /dvd'  > /etc/rc.d/rc.local
source   /etc/rc.d/rc.local
cd  /etc/yum.repos.d
mkdir  -pv  bak/
mv  -v  *.repo  bak/
cat  > dvd.repo <<EOF
[centos73]
name=centos linux 7.3 local
baseurl=file:///dvd
enabled=1
gpgcheck=0

EOF
yum  clean  all
yum  repolist

mkdir   -pv   /var/ftp/ks/

read  -p    '请务必先用vi   /var/ftp/ks/7text.ks手动创建自动应答文件,7text.ks文件内容见下文,然后按回车键安装并配置vsftpd文件共享服务...'

#vsftpd文件共享环境准备
yum  install  -y  vsftpd  lftp  ftp  elinks  curl
systemctl  restart  vsftpd 
systemctl  enable  vsftpd 
mkdir  -pv  /var/ftp/dvd/
mount   /dev/cdrom   /var/ftp/dvd
curl   
ftp://127.0.0.1/
grep  ftp   /etc/rc.d/rc.local || echo   'mount   /dev/cdrom   /var/ftp/dvd'  > /etc/rc.d/rc.local
source   /etc/rc.d/rc.local


read  -p    '按回车键安装并配置kvm虚拟化平台...'

#安装kvm虚拟化平台软件
egrep '(vmx|svm)' --color=always /proc/cpuinfo

yum  install    -y  qemu-kvm  qemu-img  libvirt
yum  install    -y  virt-install  libvirt-python  virt-manager  python-virtinst  python-virtualenv   libvirt-client  virt-viewer    virt-top   bridge-utils
yum  install    -y  libguestfs-tools  bash-completion
systemctl   restart   libvirtd
systemctl   enable   libvirtd
systemctl   status    libvirtd

#说明:libguestfs-tools是对kvm虚拟机镜像中的文件进行管理的程序(如virt-ls、virt-copy-in、virt-copy-out等命令)
#说明:bash-completion是tab键实现命令补全的软件

virsh  list  --all

#创建用console安装系统的kvm虚拟机。
mkdir  -pv  /vmdisk

read  -p    '注意:二选一操作.按ctrl+c退出脚本,创建新虚拟机按回车键继续...'
read  -p    '请务必先用vi   /var/ftp/ks/7text.ks手动创建自动应答文件,7text.ks文件内容见下文,然后按回车键创建一台新虚拟机...'
ens33_ip=$(ifconfig ens33|awk 'NR==2{print $2}')
vm_name=vmx0
vm_port=5910
ftp_ips=ftp://${ens33_ip}/dvd
#http_ip=http://${ens33_ip}/dvd
ftp_ks=ftp://${ens33_ip}/ks

read  -p   '请输入kvm虚拟机名称,如vmx0:'  vm_name
read  -p   '请输入kvm虚拟机vnc端口号,如5910:'  vm_port
#read  -p   '请输入centos7系统安装包ftp服务器地址,如ftp://192.168.10.7/dvd/:'  vftp

#创建vmx0虚拟机(mininal最小版,已测OK)
virt-install \
   --name  ${vm_name} \
   --ram 1200 \
   --disk path=/vmdisk/${vm_name}.img,size=3,format=qcow2,sparse  \
   --vcpus 1 \
   --os-type linux \
   --os-variant rhel6 \
   --graphics vnc,listen=0.0.0.0,port=${vm_port},keymap='en-us'  \
   --console pty,target_type=serial \
   --location=${ftp_ips} \
   --extra-args "console=ttyS0,115200n8 serial  ks=${ftp_ks}/7text.ks" \
   --noautoconsole  --autostart

virsh  list  --all

#在创建虚拟机时指定ks自动安装的应答文件(本例未用ks功能)
#ks应答文件参考7text.ks这一节的内容。
#virt-install    --extra-args="ks=ftp://192.168.10.7/ks/7text.ks"

echo  <<EOF
然后依次选择创建分区、软件环境、设置root用户密码、时区这3个主要的系统安装参数,最后按b开始安装系统。
技巧:virsh   console   vmx0进入到console控制台后,如何退出console控制台?
方法:用 
ctrl+]  快捷键即可.
EOF

virsh  list  --all

read  -p  '按回车键继续管理${vm_name}虚拟机...'

virsh  console  ${vm_name}


#virt  start  vm01  --console    #启动虚拟机并进入console控制台
#virt-console   vm01     #进入vm01虚拟机控制台,按ctrl+]退出
#virt-viewer   vm01  &
#virt-manager  &

#脚本完毕###

#测试脚本的运行:
chmod   kvmx.sh
sh  kvmx.sh

-------------------------------------------------------------------------

#创建vm01虚拟机(mininal最小版,已测OK)sparse
virt-install \
   --name  vm01 \
   --ram 1200 \
   --disk path=/vmdisk/vmx01.img,size=3,format=qcow2,sparse  \
   --vcpus 1 \
   --os-type linux \
   --os-variant rhel6 \
   --graphics vnc,listen=0.0.0.0,port=5951,keymap='en-us'  \
   --console pty,target_type=serial \
   --location=ftp://192.168.10.7/dvd/ \
   --extra-args 'console=ttyS0,115200n8 serial  ks=ftp://192.168.10.7/ks/7text.ks' \
   --noautoconsole  --autostart

创建vm02虚拟机(gnome桌面版)
virt-install \
   --name  vm02 \
   --ram 1200 \
   --disk path=/vmdisk/vm02.img,size=8,format=qcow2,sparse  \
   --vcpus 1,maxcpus=10 \
   --os-type linux \
   --os-variant rhel6 \
   --graphics vnc,listen=0.0.0.0,port=5952,keymap='en-us' \
   --console pty,target_type=serial \
   --location=ftp://192.168.10.7/dvd/ \
   --extra-args 'console=ttyS0,115200n8 serial  ks=ftp://192.168.10.7/ks/7gnome.ks' \
   --noautoconsole  --autostart

创建vm03虚拟机(gnome桌面版)
virt-install \
   --name  vm03 \
   --ram 1200 \
   --disk path=/vmdisk/vm03.img,size=8,format=qcow2,sparse  \
   --vcpus 1,maxcpus=10 \
   --os-type linux \
   --os-variant rhel6 \
   --graphics vnc,listen=0.0.0.0,port=5953,password=123,keymap='en-us' \
   --console pty,target_type=serial \
   --location=http://mirrors.163.com/centos/7.3.1611/os/x86_64/ \
   --extra-args 'console=ttyS0,115200n8 serial  ks=ftp://192.168.10.7/ks/7gnome.ks' \
   --noautoconsole  --autostart

----------------------------------------
临时测试
virt-install \
   --name  vm08 \
   --ram 1200 \
   --disk path=/vmdisk/vm08.img,size=3,format=qcow2,sparse  \
   --vcpus 1 \
   --os-type linux \
   --os-variant rhel6 \
   --graphics vnc,listen=0.0.0.0,port=5958,keymap='en-us'  \
   --console pty,target_type=serial \
   --location=ftp://192.168.10.7/dvd/ \
   --extra-args 'console=ttyS0,115200n8 serial  ks=ftp://192.168.10.7/ks/7text.ks' \
   --noautoconsole  --autostart


----------------------------------------

###修改7text.ks脚本中的IP地址命令如下###
ks_file=/var/ftp/ks/7text.ks
ens33_ip=$(ifconfig ens33|awk 'NR==2{print $2}')
echo  ${ens33_ip}
sed   -i  "s/192.168.10.7/${ens33_ip}/"   ${ks_file}
grep  ${ens33_ip}   ${ks_file}

##7text.ks自动安装的应答文件创建方法##
#cat   /root/anaconda-ks.cfg
#mkdir   -pv  /var/ftp/ks/
#vi   /var/ftp/ks/7gnome.ks

#7text.sk是安装mininal最小版的自动安装应答文件(已测OK,直接复制内容即可)
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use network installation
#nfs --server=192.168.10.7 --dir=/var/ftp/dvd
url --url="
ftp://192.168.10.7/dvd/"
#url --url="http://192.168.10.7/dvd/"
# Use text mode install
text
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=vda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts=''
# System language
lang en_US.UTF-8
reboot

# Network information
network  --bootproto=dhcp --device=eth0 --ipv6=auto --activate
network  --hostname=localhost.localdomain

# Root password
rootpw --iscrypted $6$S7A0lg2zIUxWkI36$j9tYy5n3NDc/j.DTyJU0lE7VHcBxyRkFLDDME85f5.xvWtEMFRwrkacBctHLcw8e7.bVbLbzZ2CCUR6NVbRGt.
# System services
services --enabled="chronyd"
# Do not configure the X Window System
skipx
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
#bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=vda
bootloader --append=" crashkernel=auto" --location=mbr
autopart --type=lvm
# Partition clearing information
#clearpart --all --initlabel --drives=vda
clearpart --all --initlabel

#安装后会执行的脚本
%post
useradd   tom
echo  redhat | passwd  --stdin  tom
echo  redhat | passwd  --stdin  root
systemctl  start   acpid
systemctl  enable   acpid
#wget  
ftp://${sip}/ftp.repo  /mnt/sysimage/etc/yum.repos.d/
cd   /etc/yum.repos.d
mkdir   bak
mv  *.repo   bak/
cat  > /etc/yum.repos.d/ftp.repo <<EOF
[centos73]
name=centos linux 7.3 ftprepo
baseurl=ftp://192.168.122.1/dvd
enabled=1
gpgcheck=0

EOF
#设置开机欢迎信息
echo "Welcome to Red Hat Linux learning classroom!" >>  /etc/issue
echo -e "Please login as 'root' with password 'redhat'.\n" >>  /etc/issue
#useradd redhat &> /root/postinstall.log
#systemctl set-default  graphical.target
#systemctl set-default  multi-user.target
%end

%packages
@core
chrony
kexec-tools
acpid
net-tools
bridge-utils
openssh-server
openssh-clients
%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=50 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=50 --notstrict --nochanges --notempty
pwpolicy luks --minlen=6 --minquality=50 --notstrict --nochanges --notempty
%end


##应答文件内容完毕##

----------------------------------------

###修改7gnome.ks脚本中的IP地址命令如下###
ks_file=/var/ftp/ks/7gnome.ks
ens33_ip=$(ifconfig ens33|awk 'NR==2{print $2}')
echo  ${ens33_ip}
sed   -i  "s/192.168.10.7/${ens33_ip}/"   ${ks_file}
grep  ${ens33_ip}   ${ks_file}

------------------------------------------------------------------------------
##7gnome.ks自动安装的应答文件创建方法##
#cat   /root/anaconda-ks.cfg
#mkdir   -pv  /var/ftp/ks/
#vi   /var/ftp/ks/7gnome.ks

#7gnome.sk是安装gnome桌面版的自动安装应答文件(已测OK,直接复制内容即可)
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use network installation
#nfs --server=192.168.10.7 --dir=/var/ftp/dvd
url --url="
ftp://192.168.10.7/dvd/"
#url --url="http://192.168.10.7/dvd/"
# Use text mode install
text
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=vda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts=''
# System language
lang en_US.UTF-8
reboot

# Network information
network  --bootproto=dhcp --device=eth0 --ipv6=auto --activate
network  --hostname=localhost.localdomain

# Root password
rootpw --iscrypted $6$Nn/OvD1hEX3eHqfZ$/LnT7TAvDh3fg3/ZUsPJjLfzVcr4pBI6XU2rt1Qw5pN8HqB9axtCyilzPRPaPJm3.yvqpjw4.zBh2GIOOAz.O/
# System services
services --enabled="chronyd"
# Do not configure the X Window System
skipx
# System timezone
timezone Asia/Shanghai --isUtc
user --groups=wheel --name=flyer --password=$6$0Ue3/KLR7YuxMK6H$tKc7CdKreRtXc0BKTeecVGJ3/lh7ETgi3Wu0FN.vByDAiVU7x7YrYua2CrVK.A4jg9zUnf3dN4a                                                                                                                                           6DZEhxOLnv. --iscrypted --gecos="flyer"
# X Window System configuration information
xconfig  --startxonboot
# System bootloader configuration
#bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=vda
bootloader --append=" crashkernel=auto" --location=mbr
autopart --type=lvm
# Partition clearing information
#clearpart --all --initlabel --drives=vda
clearpart --all --initlabel

#安装后会执行的脚本
%post
useradd   tom
echo  redhat | passwd  --stdin  tom
echo  redhat | passwd  --stdin  root
systemctl  start   acpid
systemctl  enable   acpid
#wget  
ftp://${sip}/ftp.repo  /mnt/sysimage/etc/yum.repos.d/
cd   /etc/yum.repos.d
mkdir   bak
mv  *.repo   bak/
cat  > /etc/yum.repos.d/ftp.repo <<EOF
[centos73]
name=centos linux 7.3 ftprepo
baseurl=ftp://192.168.122.1/dvd
enabled=1
gpgcheck=0

EOF
#设置开机欢迎信息
echo "Welcome to Red Hat Linux learning classroom!" >>  /etc/issue
echo -e "Please login as 'root' with password 'redhat'.\n" >>  /etc/issue
#useradd redhat &> /root/postinstall.log
systemctl set-default  graphical.target
#systemctl set-default  multi-user.target
%end

%packages
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools
acpid

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=50 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=50 --notstrict --nochanges --notempty
pwpolicy luks --minlen=6 --minquality=50 --notstrict --nochanges --notempty
%end
##应答文件内容完毕##





      本文转自rshare 51CTO博客,原文链接:http://blog.51cto.com/1364952/1965213,如需转载请自行联系原作者








相关文章
|
7天前
|
Linux 网络安全 KVM
Linux(Centos6.5)下kvm环境搭建
Linux(Centos6.5)下kvm环境搭建
19 2
|
2月前
|
Linux 开发工具 数据安全/隐私保护
Centos7:自动化配置vim | suoders信任列表添加普通用户
Centos7:自动化配置vim | suoders信任列表添加普通用户
22 0
|
4月前
|
数据可视化 Linux 网络安全
CentOS7.9下离线安装OctoMation编排自动化SOAR开源社区免费版
CentOS7.9下离线安装OctoMation编排自动化SOAR开源社区免费版
68 0
|
机器学习/深度学习 Linux KVM
Debian11安装KVM虚拟化并安装Centos
grep --color --perl-regexp 'vmx | svm' /proc/cpuinfo 首先检查其是否支持虚拟化. 分别用以下条命令查看
1119 0
Debian11安装KVM虚拟化并安装Centos
|
10天前
|
Shell
CentOS6.5自动化安装LAMP脚本
CentOS6.5自动化安装LAMP脚本
|
11月前
|
存储 监控 网络安全
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
855 0
|
11月前
|
KVM 虚拟化 Windows
【KVM虚拟化】· KVM中的网络
【KVM虚拟化】· KVM中的网络
196 0
|
11月前
|
存储 KVM 文件存储
【KVM虚拟化】· 存储池、存储卷
【KVM虚拟化】· 存储池、存储卷
383 0
|
11月前
|
存储 监控 安全
【KVM虚拟化】· virsh文件管理
【KVM虚拟化】· virsh文件管理
322 0
|
11月前
|
XML Shell API
【KVM虚拟化】· virsh管理命令
【KVM虚拟化】· virsh管理命令
249 0