OpenStack CentOS7镜像制作

2017-08-31  本文已影响0人  追阳_41

下载CentOS ISO镜像文件

CentOS mirrors 找到合适的站点下载 CentOS-7-x86_64-DVD-1611.iso ,这里我选择网易镜像进行下载:

# wget http://mirrors.163.com/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso

开始安装过程

安装过程可以使用 virt-manager 或者 virt-install 命令,如果用 virt-install

# qemu-img create -f qcow2 /tmp/CentOS-7-x86_64-v1.qcow2 10G
# virt-install --virt-type kvm --name centos7 --ram 1024 \
  --disk /tmp/CentOS-7-x86_64-v1.qcow2,format=qcow2 \
  --network=bridge:br0 \
  --graphics vnc,listen=0.0.0.0 --noautoconsole \
  --os-type=linux --os-variant=centos7.0 \
  --location=/storage/isos/CentOS-7-x86_64-DVD-1611.iso

通过 --network=bridge:br0 指定网络类型和接口。

逐步安装

根据提示,逐步安装。

安装界面

配置网络信息,确保能正确访问互联网,软件选择最小化安装。

配置界面

接着设置root 管理员密码,普通用户这里不用创建,最后等待安装完成并重启系统。

执行virsh dumpxml matching-name 可查看对应信息:

# virsh dumpxml centos7
<domain type='kvm'>
  <name>centos7</name>
...
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
...
</domain>

在主机运行virsh命令弹出磁盘,再重启host。

# virsh attach-disk --type cdrom --mode readonly centos7 "" hda
Disk attached successfully
# virsh reboot centos7
Domain centos7 is being rebooted

安装ACPI服务

以root身份登录guest主机,安装并设置开机启用acpid服务:

# yum install acpid
# systemctl enable acpid

配置元数据

一般在实例创建最后一步时,必须要获取到用户的公钥信息,还有用户的数据和脚本,如何获取到? 此时就需要guest host 安装cloud-init程序包来获取这些信息:

# yum install cloud-init

在基于CentOS的虚拟机上,公钥信息会被存放在centos帐号下,也就是可以使用centos作为用户名,通过密钥远程登录。通过编辑/etc/cloud/cloud.cfg文件可以使用其他的用户帐号名称。

安装cloud-utils-growpart 以允许调整分区大小

# yum install cloud-utils-growpart

禁用zeroconf 路由

对于访问元数据服务的实例,必须禁用默认的zeroconf路由:

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

另外,还需要手动修改下网卡的配置文件:

# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE="eth0"
BOOTPROTO="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
NM_CONTROLLED="no"

再自定义设置一些初始化的运行环境。

配置控制台

为了让 nova console-log 命令在CentOS 7能正常执行,还需修改一下配置:

  1. 编辑/etc/default/grub ,在GRUB_CMDLINE_LINUX 选项,删除rhgb quiet ,再添加console=tty0 console=ttyS0,115200n8
    例如:

     # cat /etc/default/grub 
     GRUB_TIMEOUT=5
     GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
     GRUB_DEFAULT=saved
     GRUB_DISABLE_SUBMENU=true
     GRUB_TERMINAL_OUTPUT="console"
     GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8"
     GRUB_DISABLE_RECOVERY="true"
    
  2. 运行下面命令进行修改保存:

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

关闭实例

在实例内部,以root身份关闭实例:

# poweroff
保存修改并关机

清除MAC地址

在实例运行中,操作系统会将虚拟以太网卡的MAC地址记录在/etc/sysconfig/network-scripts/ifcfg-eth0等位置。但是,每次使用镜像启动新实例时,虚拟以太网卡将会有不同的MAC地址,因此必须从配置文件中删除该信息。
可以用virt-sysprep 程序,完成各种清理任务,如删除MAC地址引用:

# virt-sysprep -d centos7

如果没有virt-sysprep 这个命令,需要手动安装:

# yum install libguestfs-tools

取消定义libvirt域

# virsh undefine centos7
Domain centos7 has been undefined

压缩镜像

# virt-sparsify --compress /tmp/CentOS-7.3-x86_64-Cloud.qcow2 CentOS-7.3-x86_64-Cloud.qcow2

至此,可以将镜像上传至 Image service 使用。

【参考】:
https://docs.openstack.org/image-guide/centos-image.html

上一篇下一篇

猜你喜欢

热点阅读