openstack鏡像製做思路、指導及問題總結

1、思路就4步:
一、建立鏡像文件
二、用nova-compute自帶的kvm,啓動.iso文件,用vncviewer完成OS的安裝過程
三、OS安裝完畢,中止虛擬機,kvm重啓鏡像,安裝必要的軟件
四、後續:上傳鏡像到雲中




2、鏡像製做指導php

不少源都有爲OpenStack已經編譯好的各類鏡像了,您能夠直接下載並經過使用這些鏡像來熟悉OpenStack。
不過若是是爲生產環境進行部署的話,您必定須要構建含有定製軟件或配置的鏡像文件。本章將引領您完成幾種較爲流行的Linux發行版鏡像,最後也將製做一份Windows的鏡像。


由不一樣的Linux發行版製做鏡像時,過程幾乎同樣,僅有微小的差異而已。因爲含有cloud-ini軟件包,人們用Ubuntu系統製做鏡像文件變得很是容易。Cloud-init軟件在實例運行時可以自動維護實例配置,也將爲無密碼登錄完成密匙導入以及完成設置主機名等任務。每一個實例都將經過169.254.169.254的元數據接口,從nova運算中讀取特定的配置。
若是您製做發行版不含有諸如cloud-init此類的軟件包,您就須要自行完成密匙導入等操做了。說來也簡單,只需向rc.local文件中添加相關命令便可。


本文全部的例子,都是在KVM基礎上完成的。接下來的操做將製做不少鏡像,這些鏡像表明一個沒有分區的硬盤。


2、建立Linux鏡像


第一部,首先是在Client1上建立一塊空鏡像,這塊鏡像用做虛擬機的硬盤,因此請保證留出你所需的空間的大小:
kvm-img create -f qcow2 server.img 5G


(一)安裝準備
下載你所需的Linux發行版iso原鏡像文件,好比您想安裝Ubuntu,您可使用wget或瀏覽器從網站「http://releases.ubuntu.com」得到iso文件。


將下載的iso文件置入虛擬機的CD-ROM後,啓動KVM一個虛擬機實例。您將看到安裝過程的開始。鍵入以下命令,它將在端口0開放VNC服務:
sudo kvm -m 256 -cdrom ubuntu-12.04-server-amd64.iso -drive file=server.img,if=virtio,index=0 -boot d -net nic -net user -nographic  -vnc :0


使用0這個展現端口連入虛擬機的VNC,並完成安裝。
舉例以下,client1的IP地址是10.10.10.4,則經過下列命令訪問vnc:
vncviewer 10.10.10.4 :0


注意,在製做Linux鏡像過程當中,請建立一個單獨的ext4格式分區並將其掛在swap分區下。
安裝結束後,經過執行下列命令從新載入虛擬機:
sudo kvm -m 256 -drive file=server.img,if=virtio,index=0 -boot c -net nic -net user -nographic -vnc :0


此時,您能夠在這個系統上安裝定製的軟件包,進行系統更新,添加用戶或更改配置了。


(二)Ubuntu


執行如下命令:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openssh-server cloud-init


清除 /etc/udev/rules.d文件的網絡設備命名規則,由於這些規則將從實例的網卡得到。
sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules
(三)Fefora


運行以下命令:
yum update
yum install openssh-server
chkconfig sshd on


而後編輯 /etc/sysconfig/network-scripts/ifcfg-eth0文件以下所示:
DEVICE="eth0"
BOOTPROTO=dhcp
NM_CONTROLLED="yes"
ONBOOT="yes"


清除 /etc/udev/rules.d文件的網絡設備命名規則,由於這些規則將從實例的網卡得到。
sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules


關閉虛擬機。
因爲Fedora沒有cloud-init或相似軟件,您須要親自進行幾步配置使實例能夠獲得諸如ssh key這樣的元數據。
編輯 /etc/rc.local文件而且把如下內容粘貼到「touch /var/lock/subsys/local」行前:
depmod -a
modprobe acpiphp
# simple attempt to get the user ssh key using the meta-data service
mkdir -p /root/.ssh
echo >> /root/.ssh/authorized_keys
curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key| grep 'ssh-rsa' >> /root/.ssh/authorized_keys
echo "AUTHORIZED_KEYS:"
echo "************************"
cat /root/.ssh/authorized_keys
echo "************************"


(四)OpenSUSE


選擇ssh服務,curl以及其餘須要的包。
安裝ssh服務器:
zypper install openssh


安裝crul:
zypper install curl


使用以下步驟將Ssh Key注入實例中:
首先,建立文件 /etc/init.d/sshkey而且寫入下列內容:
echo >> /root/.ssh/authorized_keys
curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys
echo "AUTHORIZED_KEYS:"
echo "************************"
cat /root/.ssh/authorized_keys
echo "************************"


而後,爲該文件設置權限:
chmod 755 /etc/init.d/sshkey


將sshkey服務設置爲開機自動啓動:
chkconfig sshkey on


使用下列命令設置防火牆(而非iptables),令其容許ssh服務:
yast2


最後一樣地,清除 /etc/udev/rules.d文件的網絡設備命名規則,由於這些規則將從實例的網卡得到。
sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules


(五)Debian


安裝時選擇SSH服務器,Curl及相關軟件。
而後進行必要的設置,爲key注入而編輯 /etc/rc.local文件並增長以下內容:
echo >> /root/.ssh/authorized_keys
curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys
echo "AUTHORIZED_KEYS:"
echo "************************"
cat /root/.ssh/authorized_keys
echo "************************"


一樣地,清除 /etc/udev/rules.d文件的網絡設備命名規則,由於這些規則將從實例的網卡得到。
sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules
(六)CentOS6及RHEL6


安裝時選擇SSH服務器,Curl及相關軟件。
而後進行必要的設置,爲key注入而編輯 /etc/rc.local文件並增長以下內容:
echo >> /root/.ssh/authorized_keys
curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys
echo "AUTHORIZED_KEYS:"
echo "************************"
cat /root/.ssh/authorized_keys
echo "************************"


編輯 /etc/sysconfig/network-scripts/ifcfg-eth0文件以下所示:
DEVICE="eth0"
BOOTPROTO=dhcp
NM_CONTROLLED="yes"
ONBOOT="yes"


一樣地,清除 /etc/udev/rules.d文件的網絡設備命名規則,由於這些規則將從實例的網卡得到。
sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules


(七)上傳Linux鏡像


使用以下命令上傳鏡像:
glance add name="<Image name>" is_public=true container_format=ovf disk_format=qcow2 < <filename>.img
3、建立Windows鏡像


第一步,仍然是在Client1上建立一塊空鏡像,這塊鏡像用做虛擬機的硬盤,因此請保證留出你所需的空間的大小:
kvm-img create -f qcow2 windowsserver.img 20G


(一)安裝操做系統


當實例運行時,OpenStack利用virtio接口來使用鏡像,因而鏡像中的操做系統須要裝有virtio驅動。不巧的是,默認Windows Server 2008是沒有virtio驅動的。您能夠在以下網址:http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin 下載裝有該驅動的iso鏡像並使用該鏡像進行安裝。
譯者注1:Virtio 是半虛擬化 hypervisor 中位於設備之上的抽象層。virtio 由 Rusty Russell 開發,virtio 是對半虛擬化 hypervisor 中的一組通用模擬設備的抽象。該設置還容許 hypervisor 導出一組通用的模擬設備,並經過一個通用的應用編程接口(API)讓它們變得可用。[來源:開源中國http://www.oschina.net/p/virtio ]
譯者注2:該連接的virtio-win是0.1-22版,不能用。下載用1.1.16新版便可。


執行此命令開始安裝:
sudo kvm -m 1024 -cdrom windows2008.iso -drive file=windowsserver1.img,if=virtio -boot d -drive file=virtio-win-0.1-22.iso,index=3,media=cdrom  -device virtio-net-pci -net nic -net user -nographic -vnc :5


當安裝提示您選擇一塊硬盤設備步驟時,您並不能看到當前有可用設備。點擊左下方的「載入設備(Load drivers)」按鈕,選擇第二CDROM後,含有virtio驅動的硬盤便被加載了。
在安裝結束以前,您須要重啓系統一次,此時您能夠安裝其它您所需的軟件或執行任何須要的配置更改。除此以外,請務必開放實例中的遠程桌面,由於遠程桌面將是您鏈接並使用該實例的惟一途徑。同時,Windows防火牆應該相應地設置爲對ICMP和RDP開放。


(二)上傳Windows鏡像


關閉虛擬機並將該鏡像使用以下命令上傳至OpenStack中:
glance add name="windows" is_public=true container_format=ovf disk_format=qcow2 < windowsserver.img



三總結:
一、在鏡像製做的(2),須加上-net nic -net tap才能創建鏡像到kvm網橋virbr0的映射,網絡才通。以前製做鏡像的時候只有centos.img加了,故能聯網,而其餘幾個鏡像的網絡不管是dhcp,仍是手動設置到kvm網段,都不通。


二、在單節點的openstack中,由ifconfig能夠看到網絡的分佈狀況——兩個網橋br100,virbr0:其中br100是實例的網橋,每建立一個實例都會有一個虛擬網卡vnet*生成,實例的內網Ip即floating ip,和vnet*對應,與br100在同一網段;而virbr0是kvm的網橋,用kvm啓動的虛擬機(鏡像)會自動生成tap*虛擬網卡,與鏡像中的eth*對應,沒有創建對應關係則網絡不通,鏡像自動獲取的ip與vribr0在同一網段。另外,br100,virbro不在同一網段,最終都與eth0物理網卡相連

3.在製做windows 鏡像的時候遇到不能識別硬盤。能夠查看下面內容
編程

在OpenStack管理界面經過iso鏡像安裝Windows7,出現不能識別硬盤,有的同窗常常碰到這個問題,這裏給總結一下:

母系統環境:ubuntu12.04 server + kvm
下載virtio驅動,由於win默認不支持virtio驅動,而經過openstack管理虛擬機是須要virtio驅動的。須要兩個virtio驅動,一個是硬盤的,一個是網卡的,即:virtio-win-1.1.16.vfd和virtio-win-0.1-30.iso
建立一個win7的鏡像,raw格式,大小10G
kvm-img create -f raw win7.img 10G
啓動基於win7的kvm虛擬機,映射驅動vfd到軟盤A
kvm -m 1024 -cdrom win7.iso -drive file=win7.img,if=virtio,boot=on -fda virtio-win-1.1.16.vfd -boot d -nographic -vnc :0
用vnc安裝win7,由於默認沒有virtio驅動,因此識別不了硬盤,須要手動安裝。
ubuntu

相關文章
相關標籤/搜索