openstack 镜像制作

在使用openstack的时候,我们通常会自己制作符合自己需求的镜像。这里简单描述一下制作镜像的步骤,主要以centos为主.

Iso文件下载

Centos:


http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
选择一个镜像下载

Ubuntu:

https://www.ubuntu.com/download/server

镜像创建

在一个普通的linux主机(宿主机)上,安装libvirt、tigervnc、virt-install、qemu-kvm、libguestfs-tools

1
2
# yum install libvirt tigervnc virt-install qemu-kvm libguestfs-tools
# systemctl start libvirtd.service

把下载的iso文件拷贝到该linux主机上

系统安装

1
2
3
# qemu-img create -f raw ./centos.img 10G
# virt-install --virt-type qemu --name centos7.2 --ram 1024 --disk ./centos.img,format=raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --location=./CentOS-7-x86_64-DVD-1611.iso

在本机或者有图形界面的机器,通过vnc-client(tigervnc)连接到该机器(宿主机IP:端口号, 在宿主机执行ps -ef|grep cenos7.2 查看其-vnc 后的端口号),进行Minimal Install系统安装,调整时区为Asia/shanghai, 注意:分区选择手动分区,分区格式为标准格式,千万别选择lvm,只需要一个根(/)挂载点,把所有空间分配到该点即可(也可以选择多个挂载点),否则后面无法执行自动分区操作。 启用网络(记录该主机的dhcp的ip),安装完成reboot执行后,
NOTE:
如果忘记创建的虚拟机IP 可在宿主机使用命令查看创建虚机的IP地址(virsh net-dhcp-leases default),在宿主机(因为别的机器无法识别该虚机的ip)上通过ssh root@IP 登陆创建的服务器

后面操作就是在创建的虚机上执行

配置EPEL源

1
# yum install epel-release

ACPI服务安装

1
2
# yum install acpid
# systemctl enable acpid

Cloud-init安装

需要epel源

1
# yum install cloud-init

分区工具安装

1
# yum install cloud-utils-growpart

配置zeroconf

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

确保ssh服务启动

如果没有,安装:

1
2
3
4
5
6
# yum install openssh-server
# vim /etc/ssh/sshd_config:
PubkeyAuthentication yes
PermitRootLogin yes
PasswordAuthentication yes
PermitEmptyPasswords no

关闭防火墙

1
2
3
4
5
# systemctl stop firewalld.service
# systemctl disable firewalld.service
# vim /etc/selinux/config:
SELINUX=disabled

关闭NetworkManager

1
2
# systemctl stop NetworkManger
# systemctl disable NetworkManger

设置密码

前面安装系统的时候设置的密码过于简单,这里重新设置root密码

1
# passwd

额外软件包

1
# yum install vim wget glances iftop lsof telnet net-tools ntpdate git

配置 cloud-init

1
2
3
4
5
6
vim /etc/cloud/cloud.cfg
disable_root: 0
ssh_pwauth: 1
name: hadoop
lock_passwd: false

配置console

1
vim /etc/default/grub

修改 GRUB_CMDLINE_LINUX 选项:
删除 rhgb quiet ,然后添加:console=tty0 console=ttyS0,115200n8

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

然后保存配置:

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

关机:

1
# shutdown –h now

清理网卡信息

在linux主机(宿主机)上执行:

1
virt-sysprep -d centos7.2

删除定义

1
# virsh undefine centos7.2

至此,该镜像可以上传到openstack使用了(glance image-create –disk-format raw –visibility public –container-format bare –name CentOS7.2-1511-base-v1.0 –file CentOS7.2-1511-20180912.img –progress)。