先安装好一个kvm虚拟机机器名CentOS7.4_v2磁盘类型.qcow2启动进入虚拟机里
由于安装了saltstack,先关闭salt-minion的开机启动,同时关闭NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl stop salt-minion.service
systemctl disable salt-minion.service
清空minion_id
> /etc/salt/minion_id
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
安装工具
yum install -y acpid
systemctl enable acpid
yum install -y qemu-guest-agent
yum install -y cloud-init
yum install -y cloud-utils-growpart
rpm -qa kernel | sed 's/^kernel-//' | xargs -I {} dracut -f /boot/initramfs-{}.img {}
配置cloud.cfg
vim /etc/cloud/cloud.cfg
system_info:
default_user:
name: centos
lock_passwd: true
gecos: Cloud User
groups: [wheel, adm, systemd-journal]
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
shell: /bin/bash
distro: rhel
paths:
cloud_dir: /var/lib/cloud
templates_dir: /etc/cloud/templates
ssh_svcname: sshd
#设置自动对磁盘调整
bootcmd:
- [ cloud-init-per, once, grow-partition, growpart, /dev/vda, 2 ]
- [ cloud-init-per, once, resize-filesystem, xfs_growfs, /dev/vda2 ]
设置DHCP
vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
NM_CONTROLLED=no
设置一个虚拟机开机自启动脚本执行初始化设置
[root@kvm010.eq-sg-2.apus.com tmp]# virt-cat -a v00-openstacktest01.qcow2 /root/vm_init.sh
#!/bin/bash
vname=`curl http://169.254.169.254/2009-04-04/meta-data/hostname/`
echo $vname > /etc/salt/minion_id
systemctl enable salt-minion
systemctl start salt-minion
sed -i '/vm_init/d' /etc/rc.local
rm -f $0
设置脚本权限
chmod 755 /root/vm_init.sh
chmod 755 /etc/rc.local
添加脚本开机执行
vim /etc/rc.local
#!/bin/bash
touch /var/lock/subsys/local
/bin/bash /root/vm_init.sh
/etc/fstab 文件中到 UUID 手工修改成系统设备 (将UUID改为设备路径)
[root@localhost ~]# blkid
/dev/vda1: UUID="cb6377c4-3d3d-44e0-a02f-24e561e32df5" TYPE="xfs"
[root@localhost ~]#cat /etc/fstab
/dev/vda1 / xfs defaults 0 0 #替换uuid
清除记录
echo > /var/log/wtmp
echo > /var/log/btmp
history -c
/sbin/shutdown -h now
宿主机执行
virt-sysprep -d v0-test8
virsh undefine v0-test8
上传镜像
. /home/mushengjun/admin-openrc
glance image-create --file CentOS7.4_v2.qcow2 --disk-format qcow2 --container-format bare --name CentOS7.4_v2 --progress
或
openstack image create "CentOS7.4_v2" --file CentOS7.4_v2.qcow2 --disk-format qcow2 --container-format bare --public