openstack镜像制作
introduction
直接修改官方镜像
常用 linux 官方提供 cloud 镜像,可以直接基于其镜像修改,以 ubuntu16.04 为例
下载 ubuntu16.04 cloud image
使用 guestfish,安装环境
1
sudo apt install libguestfs-tools -y
启动镜像
1
export LIBGUESTFS_BACKEND=direct
guestfish –rw -a ./xenial-server-cloudimg-amd64-disk1.img #实际上启动了一 qemu 虚拟机
进入了 guestfish
1
><fs> run
><fs> list-filesystems
><fs> mount /dev/sda1 /
><fs> vi /etc/cloud/cloud.cfg
接下来修改 cloudinit 来达到新建用户的目的,/etc/cloud/cloud.cfg
1
users:
- default
..
ssh_pwauth: true
manage_etc_hosts: true
..
cloud_init_modules:
..
- ssh
- bootcmd
bootcmd:
- addgroup test
- usermod -d /home/test -m -g test -l test ubuntu
- echo "test\ntest" | passwd test
最后退出,转换格式为 raw 并上传
1
><fs> exit
qemu-img convert -O raw xenial-server-cloudimg-amd64-disk1.img xenial-server-cloudimg-amd64-disk1.raw
openstack image create –disk-format raw –container-format bare –public –file ./xenial-server-cloudimg-amd64-disk1.raw xenial-server-cloudimg-amd64-disk1.raw
手动创建 image
TODO
使用工具制作 image
TODO
使用 snapshot 制作 image
创建一个云主机
1 | # nova list +————————————–|—————-|———|————|————-|—————————————–+ | ID | Name | Status | Task State | Power State | Networks | +————————————–|—————-|———|————|————-|—————————————–+ | 550db3bb-bd47-4b5b-8a1d-ed465d147618 | centos-tempate | ACTIVE | - | Running | demo-net=10.0.0.24 | +————————————–|—————-|———|————|————-|—————————————–+ |
安装需要的软件
到云主机安装需要的软件配置等
清理系统
清理系统不需要文件和空洞
1
# rm -f ~/.ssh/id_rsa
# rm -f /home/centos/.ssh/id_rsa
# sudo rm -rf /var/lib/cloud/*
# dd if=/dev/zero of=zerofile # 花费的时间较长,建议创建虚拟机的时候磁盘不要太大
dd: writing to ‘zerofile’: No space left on device
30952873+0 records in
30952872+0 records out
15847870464 bytes (16 GB) copied, 548.355 s, 28.9 MB/s
# rm zerofile
关机
关机后保证云主机状态是 shutdown
创建 share image
从云主机的卷创建 image
1
# openstack volume set –state available e0d90bde-6f16-4ef5-ad96-40163c1deabe
# openstack image create new-centos-image –volume e0d90bde-6f16-4ef5-ad96-40163c1deabe
# openstack volume set –state in-use e0d90bde-6f16-4ef5-ad96-40163c1deabe
下载 share image 并转换
1 | # openstack image save –file new-centos-image.raw a029c88b-3c4b-4ccf-a927-4b6da7c389a6 # openstack image delete a029c88b-3c4b-4ccf-a927-4b6da7c389a6 |
删除 tmp 资源
删除云主机、tmp volume、tmp image
1
# openstack volume server centos-tempate
# openstack image delete a029c88b-3c4b-4ccf-a927-4b6da7c389a6
上传 images
1 | # openstack image create \ –disk-format raw \ –container-format bare \ –property skip_atmosphere=yes \ –file new-centos-image.raw \ –public new-centos-image |
制作 windows image
创建磁盘
1 | qemu-img create -f qcow2 win7.qcow2 20G |
启动并安装系统
1 | /usr/libexec/qemu-kvm -m 1024 -cdrom win7.iso -drive file=win7.qcow2,if=virtio,boot=on -fda virtio-win_amd64.vfd -boot d -nographic -vnc :3 |
使用 vnc 连接进入安装系统界面,安装 virtio 磁盘驱动并安装系统
1
vncviewer 127.0.01:5903
安装完成后关机
配置系统
1 | /usr/libexec/qemu-kvm -m 1024 -cdrom virtio-win.iso -drive file=win7.qcow2,if=virtio,boot=on -fda virtio-win_amd64.vfd -net nic,model=virtio -net user -boot c -nographic -vnc :3 |
使用 vnc 连接进入安装系统
- 设备管理器安装 virtio 网络驱动
- 系统高级设置打开远程连接
- 下载 cloudbase-init 并安装(密码设置插件、磁盘自动分区等功能)
配置完成后关机
转换格式
1 | qemu-img convert -f qcow2 -O raw win7.qcow2 win7.raw |
image tools
直接操作 image,例如本地挂载
TODO
convert format
1 | # qemu-img convert -f raw -O qcow2 image.img image.qcow2 |
FAQ
TODO