在前面講解KVM的時候,我們已經學習了如何制作KVM鏡像,那么制作OpenStack使用的鏡像和KVM是有一些區別的。
1. 下載CentOS 7官方ISO安裝鏡像
這里使用國內阿里雲的鏡像源進行下載:http://mirrors.aliyun.com/centos
http://mirrors.aliyun.com/cent ... 1.iso
2. 創建虛擬機磁盤鏡像
[root@linux-node1 src]# qemu-img create -f qcow2 /tmp/CentOS-7-x86_64.qcow2 10G Formatting '/tmp/CentOS-7-x86_64.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
3. 開始手動安裝虛擬機
[root@linux-node1 ~]# virt-install --virt-type kvm --name CentOS-7-x86_64 \ --ram 2048 --disk /tmp/CentOS-7-x86_64.qcow2,format=qcow2 \ --network network=default \ --graphics vnc,listen=0.0.0.0 --noautoconsole \ --os-type=linux --os-variant=rhel7 \ --cdrom=/usr/local/src/CentOS-7-x86_64-DVD-1511.iso
如果需要使用已經存在的橋接網卡,可以使用--network bridge=brq-name來使用。
4. 安裝過程省略,注意在進行磁盤分區的時候可以使用默認的LVM,也可以自定義分區結構。針對虛擬機的建議是只分配一個根分區/,不創建其它分配和swap分區。安裝成功后,點擊reboot,注意並不會重啟,需要我們手動啟動:
[root@backup ~]# yum list | grep virt [root@backup ~]# virsh list --all Id Name State ---------------------------------------------------- - CentOS-7-x86_64 shut off [root@backup ~]# virsh start CentOS-7-x86_64 Domain CentOS-7-x86_64 started virsh start CentOS-7-x86_64
啟動完畢后,我們再連接到虛擬機上。
5. 安裝 ACPI 服務
啟動后,你可能需要手動配置你的虛擬機的網絡。為了讓虛擬化層能重啟和關閉虛擬機,必須在虛擬機內安裝並運行 acpid 服務。
在 CentOS虛擬機內運行以下命令安裝 ACPI 服務並配置為系統啟動時自動啟動。
# yum install acpid # systemctl enable acpid
6. 配置獲取metadata
虛擬機在啟動的時候需要和元數據服務交互以便完成幾個任務,例如,虛擬機必須獲取ssh公鑰以及運行用戶數據腳本。確保虛擬機能完成這些任務,使用以下幾個方法之一:
? 安裝從 Ubuntu cloud-init 移植過來的cloud-init RPM包,這也是推薦的方法。
? 修改 /etc/rc.local 文件從元數據服務獲取信息。
使用 cloud-init 獲取公鑰
cloud-init 包自動從元數據服務獲取公鑰並保存到賬戶,你可以在 CentOS虛擬機添加 EPEL 安裝源來安裝 cloud-init 包。
# rpm -ivh http://mirrors.aliyun.com/epel ... h.rpm
# yum install cloud-init
7. 清除MAC地址相關信息:
操作系統會在/etc/sysconfig/network-scripts/ifcfg-eth0 和
/etc/udev/rules.d/70-persistent-net.rules 這類文件記錄下網卡MAC地址,但是,虛擬機的網卡MAC地址在每次虛擬機創建的時候都會不同,因此這些信息必須從配置文件刪除掉。
8. 其它標准化操作:
可以把所有虛擬機都需要進行的設置在鏡像這一級全部設置完畢。例如:比如關閉SElinux、firewalld、postfix。以及設置內網DNS,安裝相關的Agent等。
9. 收尾工作
最后,你可以關閉虛擬機了,如果以后不在需要該虛擬機也可以直接刪除。建議是保留,方便后期進行虛擬機鏡像的定制。
10. 上傳鏡像到Glance
# glance image-create --name "CentOS-7-x86_64" --disk-format qcow2 --container-format bare --file /tmp/CentOS-7-x86_64.qcow2 --visibility public --progress