安装KVM环境
#KVM环境
yum install -y kvm virt-* libvirt bridge-utils qemu-img qemu-kvm-tools
创建KVM虚拟机
定义变量:
kvname=centos7.4
ksname=c7op.ks
ISO=CentOS-7-x86_64-DVD-1708.iso
c7op.ks文件的内容:
# centos 7 自动安装脚本
# centos7 CD install ,Auto Mini ,Mady my Elven
# openstack镜像制作,centos7自动安装ks脚本
# 使用实例
install
cdrom
text
keyboard us
lang en_US.UTF-8
authconfig --enableshadow --passalgo=sha512
rootpw LNxinmeiti
skipx
timezone Asia/Shanghai --isUtc
firewall --enabled --port=22:tcp
selinux --disabled
firewall --disabled
#设置网络
bootloader --location=mbr --driveorder=sda,sdb #--append="net.ifnames=0 biosdevname=0"
network --bootproto=dhcp --onboot=yes --nameserver=119.29.29.29
network --hostname=CentOS7
#分区
zerombr
clearpart --all --initlabel
#part /boot --asprimary --fstype="ext4" --size=300 --ondrive=sda
#part swap --fstype="swap" --size=2048
part / --asprimary --fstype=xfs --grow --size=1
reboot
#安装的软件包
%packages
@base
@core
@fonts
net-tools
ntp
tree
wget
vim
openssh
%end
%post
# add user
#useradd -g wheel elven -d/home/elven -m
#echo LNxinmeiti|passwd elven --stdin
%end
创建虚拟机文件
qemu-img create -f qcow2 /data4/kvm/img/$kvname.qcow2 15G
创建虚拟机
virt-install \
--name $kvname \
--ram 1024 --vcpus 1 \
--os-type linux --os-variant rhel7 --arch=x86_64 \
--network network=default,model=virtio \
--disk path=/data4/kvm/img/$kvname.qcow2,format=qcow2 \
--location /data4/kvm/iso/$ISO \
--console pty,target_type=serial \
--initrd-inject=/data4/kvm/iso/$ksname \
--extra-args="console=ttyS0,115200n8 serial ks=file:/$ksname" \
--graphics none
安装完成后,按键 Ctrl + ] 退出kvm虚拟机
virsh destroy $kvname #强制关闭电源
cp /data4/kvm/img/$kvname.qcow2{,.bak} #备份
ls -hl /data4/kvm/img/$kvname*
virsh start $kvname #开启
virsh console $kvname #登录
KVM 虚拟机配置
配置密码
echo LNxinmeiti|passwd root --stdin
时区配置
#centos7
rm -f /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ll /etc/localtime
配置阿里 yum 源
[[ `uname -r` == *el6* ]] && { Ve=6; } || { Ve=7; }
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup // 重命名原来的源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
// 清理并生成缓存
yum clean all
yum makecache
安装 cloud-int
yum install -y acpid cloud-init cloud-utils jq parted qemu-guest-agent
[[ `uname -r` == *el6* ]] && { yum install -y dracut-modules-growroot; }
cloud-int,开启root密码登录
sed -i 's/disable_root: 1/disable_root: 0/g' /etc/cloud/cloud.cfg
sed -i 's/ssh_pwauth: 0/ssh_pwauth: 1/g' /etc/cloud/cloud.cfg
grub启动项添加console=ttyS0,115200n8,安装kvm时已配置#
echo 'NETWORKING=yes
NOZEROCONF=yes'>/etc/sysconfig/network
ssh配置
sed -i 's/^PasswordAu.*$/PasswordAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/^GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config
sed -i 's/^#UseDNS.*$/UseDNS no/' /etc/ssh/sshd_config
[[ $Ve = 6 ]] && { service sshd restart; } || { systemctl restart sshd; }
开机自启
[[ $Ve = 6 ]] && {
chkconfig acpid on
chkconfig cloud-init on
chkconfig qemu-ga on
sed -i 's/timeout=5/timeout=2/g' /boot/grub/grub.conf
} || {
systemctl enable acpid cloud-init qemu-guest-agent
sed -i 's/timeout=5/timeout=2/g' /boot/grub2/grub.cfg
}
根据需求,安装配置其它服务
# =================================
# ===========安装nginx=============
# =================================
yum install -y nginx
systemctl enable nginx.service
systemctl start nginx.service
systemctl stop nginx.service
# =================================
# ===========安装mariaDB===========
# =================================
yum install mariadb mariadb-server
systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation
#配置 mariaDB root 账户远程登录
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'xinmeiti13579' WITH GRANT OPTION;
flush privileges;
systemctl stop mariadb.service
# =================================
# ===========安装PHP7==============
# =================================
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 安装php7
yum install php70w php70w-opcache
# 安装php扩展
yum install php70w-bcmath php70w-cli php70w-common php70w-dba php70w-devel php70w-embedded php70w-enchant php70w-fpm php70w-gd php70w-imap php70w-interbase php70w-intl php70w-ldap php70w-mbstring php70w-mcrypt php70w-mysql php70w-odbc php70w-opcache php70w-pdo php70w-pdo_dblib php70w-pear php70w-pecl-apcu php70w-pecl-imagick php70w-pecl-memcached php70w-pecl-redis php70w-pecl-xdebug php70w-pgsql php70w-phpdbg php70w-process php70w-pspell php70w-recode php70w-snmp php70w-soap php70w-tidy php70w-xml php70w-xmlrpc libjpeg* php70w-mhash
# 启动php-fpm
systemctl enable php-fpm
systemctl start php-fpm
php -v
systemctl status php-fpm
systemctl stop php-fpm
# =================================
# ===========安装zabbix============
# =================================
rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
yum install zabbix-agent -y
systemctl enable zabbix-agent.service
systemctl start zabbix-agent.service
# =================================
# ======安装Linux开发常用软件======
# =================================
yum -y install gcc gcc-c++ cmake autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel ncurses ncurses-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel gzip gzip-devel curl curl-devel libjpeg libjpeg-devel e2fsprogs e2fsprogs-devel libidn libidn-devel libmcrypt-devel libmcrypt wget
清理
yum clean all
rm -rf /tmp/*
rm -rf /root/*
rm -f /var/log/wtmp /var/log/btmp
>/var/log/cloud-init.log
删除网卡信息
sed -i '/HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth*
sed -i '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-eth*
>/etc/udev/rules.d/7*.rules
清空历史记录
history -c
关机
poweroff
镜像操作
# 显示所有虚拟机
virsh list --all
# 执行清理任务
virt-sysprep -d $kvname
#压缩
cd /data4/kvm/img/
virt-sparsify --compress $kvname.qcow2 $kvname-.qcow2
ls -hl $kvname*
# 把镜像转换成RAW格式
qemu-img convert -f qcow2 -O raw centos7.4-.qcow2 centos7.4-LNMP.raw
拷贝镜像到控制节点
上传glance镜像
openstack image create "centos7.4-LNMP" \
--file centos7.4-LNMP.raw \
--disk-format raw --container-format bare \
--property hw_qemu_guest_agent=yes \
--public