OpenStack的centos镜像制作

server端

安装qemu, kvm

yum install qemu,qemu-kvm

安装libvirt

yum install libvirt 
systemctl enable libvirtd.service
systemctl start libvirtd.service

安装virt-install

yum install virt-install

下载centos的mirror镜像
wget http://mirror.pregi.net/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso
创建qcow2镜像

qemu-img create -f qcow2 /home/images/centos.qcow2 10G

启动虚拟机

virt-install --virt-type kvm --name centos --ram 1024
--disk /home/images/centos.qcow2,format=qcow2
--network network=default
--graphics vnc,listen=0.0.0.0 --noautoconsole
--os-type=linux --os-variant=rhel7
--location=/home/images/CentOS-7-x86_64-Minimal-1611.iso

查看vnc端口
[root@controller01 images]# virsh list
Id Name State


1 centos running

[root@controller01 images]# virsh vncdisplay centos
:0
0代表是5900,大于0的从5900之后递增。例如,显示:1,则代表5901

Client 端

windows安装vnc-veriewer
连接到创建的虚拟机

OpenStack的centos镜像制作_第1张图片
image.png

如出现连上后闪退问题,解决方案如下图
http://blog.licess.com/vnc-viewer-shantui/

OpenStack的centos镜像制作_第2张图片
image.png

连接成功后,选择语言,选择Continue

OpenStack的centos镜像制作_第3张图片
image.png

选择网络和主机名配置,打开自动获取id地址,配置完成后选择Done

OpenStack的centos镜像制作_第4张图片
image.png

选择installation source,设置镜像源,done

OpenStack的centos镜像制作_第5张图片
image.png

磁盘分区,按实际需求分区,这里我选择默认。

点击安装。

设置密码,设置完后选择Done。

OpenStack的centos镜像制作_第6张图片
image.png

安装完之后重启。

OpenStack的centos镜像制作_第7张图片
image.png

如果没有启动成功,可以在server端 执行virsh reboot centos 命令。
再连接,安装acpi。acpid服务是用于可以让hypervisior可以重启或关闭虚拟机

yum install acpid
systemctl enable acpid

安装cloud-init。用于启动虚拟机时候nova-meatdata服务进行密钥注入到虚拟机。

yum install epel-release.noarch
yum install cloud-init

修改cloud-init启动模块加载resolv-conf。
/etc/cloud/cloud.cfg
cloud_init_modules属性下添加
- resolv-conf
安装 cloud-utils-growpart。该然间是支持虚拟机磁盘扩容。

yum install cloud-utils-growpart

如果上面步骤不能安装cloud-init,则可以在/etc/rc.d/rc.local文件中,在touch /var/lock/subsys/local这行前加入以下脚本

if [ ! -d /root/.ssh ]; then
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
ATTEMPTS=30
FAILED=0
while [ ! -f /root/.ssh/authorized_keys ]; do
curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key \
> /tmp/metadata-key 2>/dev/null
if [ \$? -eq 0 ]; then
cat /tmp/metadata-key >> /root/.ssh/authorized_keys
chmod 0600 /root/.ssh/authorized_keys
restorecon /root/.ssh/authorized_keys
rm -f /tmp/metadata-key
echo "Successfully retrieved public key from instance metadata"
echo "*****************"
echo "AUTHORIZED KEYS"
echo "*****************"
cat /root/.ssh/authorized_keys
echo "*****************"
fi
done 

关闭zeroconf route

echo "NOZEROCONF=yes" >> /etc/sysconfig/network

配置console,为了确保控制台的信息出现在 dashboard 的日志标签页中,以及 nova console-log 输出中。
修改/etc/default/grub的配置GRUB_CMDLINE_LINUX选项. 删除 rhgb quiet 添加 console=tty0 console=ttyS0,115200n8。
例子:

GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8 

更新grub配置

grub2-mkconfig -o /boot/grub2/grub.cfg 

关闭虚拟机

shutdown -h now

Server端

安装 libguestfs-tools

yum install libguestfs-tools

清理镜像MAC地址

virt-sysprep -d centos 

清除虚拟机

virsh undefine centos 

镜像制作完成,可以上传到openstack,镜像为 /home/images/centos.qcow2文件。

你可能感兴趣的:(OpenStack的centos镜像制作)