OpenStack雲計算快速入門之三:OpenStack鏡像管理

原文:http://blog.chinaunix.net/uid-22414998-id-3272059.html

第三部分 OpenStack鏡像管理


一、簡介


很多源都有爲OpenStack已經編譯好的各種鏡像了,您可以直接下載並通過使用這些鏡像來熟悉OpenStack

不過如果是爲生產環境進行部署的話,您一定需要構建含有定製軟件或配置的鏡像文件。不要着急,本章將引領您完成幾種較爲流行的Linux發行版鏡像,最後也將製作一份Windows的鏡像。


由不同的Linux發行版製作鏡像時,過程幾乎一樣,僅有微小的差別而已。由於含有cloud-ini軟件包,人們用Ubuntu系統製作鏡像文件變得非常容易。Cloud-init軟件在實例運行時能夠自動維護實例配置,也將爲無密碼登陸完成密匙導入以及完成設置主機名等任務。每個實例都將通過169.254.169.254的元數據接口,從nova運算中讀取特定的配置。

如果您製作發行版不含有諸如cloud-init此類的軟件包,您就需要自行完成密匙導入等操作了。說來也簡單,只需向rc.local文件中添加相關命令即可。


如前所述,創建Linux不同發行版的過程除了幾細微之處外,其餘完全一致。不同點將在後文闡述。

本文所有的例子,都是在KVM基礎上完成的。正像前兩章說道的那樣,現在我正在使用client1

接下來的操作將製作很多鏡像,這些鏡像代表一個沒有分區的硬盤。


二、創建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,並完成安裝。

舉例如下,client1IP地址是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


(六)CentOS6RHEL6


安裝時選擇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



三、創建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防火牆應該相應地設置爲對ICMPRDP開放。


(二)上傳Windows鏡像


關閉虛擬機並將該鏡像使用如下命令上傳至OpenStack中:

glance add name="windows" is_public=true container_format=ovf disk_format=qcow2 < windowsserver.img

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章