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

前端之家收集整理的这篇文章主要介绍了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手动创建自动应答文件,然后按回车键创建一台新虚拟机...'
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,port=5951,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,sparse \
--vcpus 1,maxcpus=10 \
--os-type linux \
--os-variant rhel6 \
--graphics vnc,port=5952,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,port=5953,password=123,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,port=5958,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.dmkdir bakmv *.repo bak/cat > /etc/yum.repos.d/ftp.repo <<EOF[centos73]name=centos linux 7.3 ftprepobaseurl=ftp://192.168.122.1/dvdenabled=1gpgcheck=0EOF#设置开机欢迎信息echo "Welcome to Red Hat Linux learning classroom!" >> /etc/issueecho -e "Please login as 'root' with password 'redhat'.\n" >> /etc/issue#useradd redhat &> /root/postinstall.logsystemctl 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@x11chronykexec-toolsacpid%end%addon com_redhat_kdump --enable --reserve-mb='auto'%end%anacondapwpolicy root --minlen=6 --minquality=50 --notstrict --nochanges --notemptypwpolicy user --minlen=6 --minquality=50 --notstrict --nochanges --notemptypwpolicy luks --minlen=6 --minquality=50 --notstrict --nochanges --notempty%end##应答文件内容完毕##

猜你在找的CentOS相关文章