OpenStack镜像制作
本文介绍如何将一个iso镜像制作为openstack启动镜像。iso镜像以 CentOS-6.9-i386-minimal.iso 为例,其他centos镜像可去官网下载。
环境准备
制作环境为物理机或虚拟机,但需要需要cpu支持intel VT等硬件虚拟化功能。最好与制作镜像系统的系统,版本可不一样,这个非硬性要求,凭个人习惯。
判断是否支持虚拟化功能命令为:
1 | cat /proc/cpuinfo | egrep 'vmx|svm' |
安装必要软件
1 | yum install -y libvirt qemu-kvm virt-install bridge-utils qemu-img virt-manager libguestfs |
启动虚拟环境
1 | systemctl start libvirtd |
制作镜像
创建虚拟机
分配虚拟空间
1 | qemu-img create -f raw centOS-6.9.raw 10G |
启动虚拟机
1 | virt-install --virt-type kvm --name centos-6.9 --memory 2048 --vcpus=2 --disk centOS-6.9.raw,format=raw --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel6 --network network=default --extra-args='console=tty0 console=ttyS0,115200n8 serial' --location=/var/lib/libvirt/images/centOS-6.9.iso |
参数可能因命令版本不同而不一致。
如果需要联网,那么需要配置网络,例如:
1 | --network network=default |
libvirtd启动时,会默认创建接口 ‘virbr0’,此接口就是 虚拟默认网络’default’的默认网关,其地址为’192.168.122.1’,在其上创建了许多NAT规则,以确保虚拟机可以连同外网。如下图
其他网络类型及设置请参考命令帮助。
配置了 ‘console’可 console 登录,比较方便的一种方式。
安装系统
使用vnc登入机器,按照正常的步骤安装系统。vnc的ip为宿主机的ip,端口可以ps找到,默认是5900,可以利用
1 | virsh vncdisplay centos-6.9 |
查询vnc id,然后利用vnc图形化软件(vncviewer)登录。镜像会自动进行初始化操作,之后会reboot,这时候需start才能再次链接到vnc图形化软件。
1 | virsh start centos-6.9 |
也可以使用virsh从命令行进行安装,部分操作如下:
1 | 查看当前虚机 |
最好使用图形化软件,命令行进入会有些问题。
注意:再次启动报错 “ERROR Guest name ‘centos-6.9’ is already in use.” 时执行
1 | virsh undefine centos-6.9 |
1 | 也可以利用 qemu-system-x86_64 或 qemu-kvm 启动 |
虚拟机初始化
如果虚拟机可以联网,则直接使用默认软件源。
安装基础包
1 | 安装NetworkManager,用于网卡的自动发现及管理 |
cloudinit安装
1 | 安装cloud-init,用于注入密码/密钥和主机名 |
/etc/cloud/cloud-init.conf可能需要进行适当修改。
其他设置
ssh开启启动并修改配置,使其可以密码登录(PermitEmptyPasswords 为 yes)及使用root登录(PermitRootLogin 为yes)。
1
chkconfig sshd on
为保证实例能够访问neutron metadata服务,需要禁用zero conf
1
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
关闭开启启动服务
1
2
3chkconfig iptables off
chkconfig iptables6 off
chkconfig postfix off关闭selinux
1
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
之后关机
1 | proeroff |
最后处理
清理虚拟机登陆及日志信息等
1
virt-sysprep -d centos-6.9
undefine虚拟机
1
virsh undefine centos-6.9
转换和压缩镜像
1
virt-sparsify --convert qcow2 --compress centos-6.9.raw centos-6.9.qcow2
之后即可上传使用。