日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
手動制作Openstack鏡像

手動制作OpenStack鏡像

作者:付廣平 2017-04-05 09:29:16

開發(fā)

開發(fā)工具

OpenStack 本文以制作Centos7.2鏡像為例,詳細介紹制作鏡像的步驟。

本文以制作Centos7.2鏡像為例,詳細介紹制作鏡像的步驟,該鏡像上傳到Openstack Glance中,相對于官方鏡像,增加如下幾個功能:

  • 支持密碼注入功能(nova boot時通過--admin-pass參數(shù)指定設置初始密碼)
  • 支持根分區(qū)自動調整(根分區(qū)自動調整為flavor disk大小,而不是原始鏡像分區(qū)大小)
  • 支持動態(tài)修改密碼(使用nova set-password命令可以修改管理員密碼)

本文制作鏡像的宿主機操作系統(tǒng)為Ubuntu14.04,開啟了VT功能(使用kvm-ok命令驗證)并安裝了libvirt系列工具,包括virsh、virt-manager、libguestfs-tools等。

1.下載鏡像

直接訪問官方鏡像地址下載,注意選擇中國的鏡像源,相對國外鏡像下載速率比較快,進入后選擇版本為7.2.1511,在isos目錄下下載x86_64的Minimal鏡像,如果網(wǎng)速不給力,最好不要選擇下載Netinstall鏡像,因為這會在安裝時聯(lián)網(wǎng)下載大量的軟件包,重新安裝時需要重新下載這些軟件包,浪費大量的時間。

2.創(chuàng)建虛擬機

首先需要創(chuàng)建一個qcow2格式鏡像文件,用于作為虛擬機的磁盤,大小10G足矣。

  
 
 
 
  1. qemu-img create -f qcow2 centos.qcow2 10G # create disk image 

使用以下腳本快速創(chuàng)建并啟動虛擬機:

  
 
 
 
  1. NAME=centos 
  2. ROOT_DISK=centos.qcow2 
  3. CDROM=`pwd`/CentOS-7-x86_64-Minimal-1511.iso 
  4. sudo virt-install --virt-type kvm --name $NAME --ram 1024 \ 
  5.   --disk $ROOT_DISK,format=qcow2 \ 
  6.   --network network=default \ 
  7.   --graphics vnc,listen=0.0.0.0 --noautoconsole \ 
  8.   --os-type=linux --os-variant=rhel7 \ 
  9.   --cdrom=$CDROM 

啟動完成后,使用vnc client連接,個人認為直接使用virt-manager或者virt-viewer更直接方便。

3. 安裝OS

進入虛擬機控制臺可以看到Centos的啟動菜單,選擇Install Centos 7,繼續(xù)選擇語言后將進入INSTALLION SUMMARY,其中大多數(shù)配置默認即可,SOFTWARE SELECTION選擇Minimal Install,INSTALLATION DESTINATION需要選擇手動配置分區(qū),我們只需要一個根分區(qū)即可,不需要swap分區(qū),文件系統(tǒng)選擇ext4,存儲驅動選擇Virtio Block Device,如圖:

配置完成后就可以開始安裝了,在CONFIGURATION中設置root臨時密碼,自己記住即可,制作完后cloud-init將會重新設置root初始密碼。

大約幾分鐘后,即可自動完成安裝配置工作,最后點擊右下角的reboot重啟退出虛擬機。

4. 配置OS

安裝好系統(tǒng)后,還需要進行配置才能作為glance鏡像使用。首先需要啟動虛擬機(雖然上一步執(zhí)行的是reboot,但貌似并不會自動啟動):

  
 
 
 
  1. sudo virsh start centos 

客戶的云主機需要支持root ssh遠程登錄,因此需要開啟root遠程ssh登錄功能,修改配置文件/etc/ssh/sshd_config并修改PermitRootLogin值為yes,重啟ssh服務生效:

  
 
 
 
  1. sudo systemctl restart sshd 

接下來的所有操作均通過宿主機ssh登錄到虛擬機執(zhí)行,這樣方便復制(默認終端不和宿主機共享粘貼緩沖區(qū))。

為了加快安裝速度,建議配置本地軟件源倉庫,若沒有本地鏡像倉庫,則選擇國內的軟件源,會相對官網(wǎng)的速度下載要快,提高執(zhí)行效率。

  
 
 
 
  1. mv my_repo.repo /etc/yum.repos.d/ 

hypervisor通過發(fā)送對應的信號、事件等到虛擬機中,虛擬機根據(jù)接收的信號或者事件執(zhí)行相應的操作,比如關機、重啟等。虛擬機需要開啟acpid(Advanced Configuration and Power Interface event daemon)服務,關于acpid的更多資料,參考Arch文檔中關于acpid的介紹以及使用。為了開啟該服務,首先需要安裝acpid服務,并設置開機自啟動:

  
 
 
 
  1. yum install -y acpid 
  2. systemctl enable acpid 

為了方便調試排錯,虛擬機需要打開boot日志功能,并指定console,這樣nova console-log才能獲取虛擬機啟動時的日志。修改配置文件/etc/default/grub,設置GRUB_CMDLINE_LINUX為:

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

Openstack動態(tài)修改root密碼以及密鑰,需要虛擬機內部安裝agent程序,agent會創(chuàng)建一個虛擬串行字符設備,用于和外部qemu通信,qemu通過這個虛擬字符設備向agent發(fā)送事件指令,agent接收事件并執(zhí)行相應的指令完成用戶功能,更多關于qemu-guest-agent請參考官方文檔。ISO鏡像中默認沒有預安裝agent,我們需要手動安裝qemu-guest-agent:

  
 
 
 
  1. yum install -y qemu-guest-agent 

配置qemu-ga,修改/etc/sysconfig/qemu-ga,配置內容為:

  
 
 
 
  1. TRANSPORT_METHOD="virtio-serial" 
  2. DEVPATH="/dev/virtio-ports/org.qemu.guest_agent.0" 
  3. LOGFILE="/var/log/qemu-ga/qemu-ga.log" 
  4. PIDFILE="/var/run/qemu-ga.pid" 
  5. BLACKLIST_RPC="" 
  6. FSFREEZE_HOOK_ENABLE=0 

虛擬機需要從metadata服務中獲取元數(shù)據(jù),比如啟動時的主機名、初始化密碼等,為了使虛擬機能夠和外部的metadata service通信,需要禁用默認的zeroconf route:

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

最后安裝cloud-init,cloud-init是虛擬機第一次啟動時執(zhí)行的腳本,主要負責從metadata服務中拉取配置信息,完成虛擬機的初始化工作,比如設置主機名、初始化密碼以及注入密鑰等。我們通常會實現(xiàn)自己的cloud-init,用來完成虛擬機的一些定制化初始化工作,如果沒有自己的cloud-init,直接從官方源下載即可。

  
 
 
 
  1. # yum install -y cloud-init-0.7.6-bzr1.el7.centos.noarch.rpm 
  2. yum install -y cloud-init 

虛擬機制作鏡像時指定了根分區(qū)大小(比如我們設置為10GB),為了使虛擬機能夠自動調整為flavor disk指定的根磁盤大小,即自動擴容, 我們需要安裝glowpart(老版本叫growroot)并完成以下配置:

  
 
 
 
  1. yum update -y 
  2. yum install -y epel-release 
  3. yum install -y cloud-utils-growpart.x86.64 
  4. rpm -qa kernel | sed 's/^kernel-//'  | xargs -I {} dracut -f /boot/initramfs-{}.img {} 

自此,鏡像基本制作完成了,最后執(zhí)行關機操作。

  
 
 
 
  1. /sbin/shutdown -h now 

5.清理工作

在宿主機上運行以下命名,移除宿主機信息,比如mac地址等。

  
 
 
 
  1. virt-sysprep -d centos # cleanup tasks such as removing the MAC address references 

最后,刪除虛擬機,因為鏡像已經(jīng)制作完成,可以上傳到glance了。

  
 
 
 
  1. virsh undefine centos # 刪除虛擬機 

6.上傳鏡像

鏡像制作完成,上傳centos.qcow2到glance服務中,如果使用ceph作為存儲后端,為了提高上傳速度(使用glance上傳走的http方式,必然很慢),我們需要另辟蹊徑,我們只使用glance創(chuàng)建實例記錄,并不使用glance上傳鏡像,而是借用ceph rbd的import操作實現(xiàn)鏡像上傳,包括以下幾個步驟:

  • 使用qemu-img轉換qcow2格式為raw格式。
  
 
 
 
  1. qemu-img convert -f qcow2 -O raw centos.qcow2 centos.raw 
  • 使用glance create創(chuàng)建一條鏡像記錄并記錄ID(不需要指定文件路徑以及其他屬性,只是占個坑)
  
 
 
 
  1. glance image-create 
  • 使用ceph import鏡像并設置快照(glance實現(xiàn))
  
 
 
 
  1. rbd --pool=glance_images import  centos.raw  --image=$IMAGE_ID --new-format --order 24 
  2. rbd --pool=glance_images --image=$IMAGE_ID --snap=snap snap create 
  3. rbd --pool=glance_images --image=$IMAGE_ID --snap=snap snap protect 
  • 使用glance命令設置鏡像的location url:
  
 
 
 
  1. FS_ROOT=`ceph -s | grep cluster | awk '{print $2}'` 
  2. glance location-add --url rbd://$FS_ROOT/glance_images/$IMAGE_ID/snap $IMAGE_ID 
  • 完善鏡像信息,比如name等其他屬性:
  
 
 
 
  1. glance image-update --name="centos-7.2-64bit" --disk-format=raw --container-format=bare 
  2.  
  3. # 配置qemu-ga 
  4. glance image-update --property hw_qemu_guest_agent=yes $IMAGE_ID 
  5.  
  6. # ... 其他屬性配置 

務必設置property的hw_qemu_guest_agent=yes,否則libvert啟動虛擬機時不會生成qemu-ga配置項,導致虛擬機內部的qemu-ga由于找不到對應的虛擬串行字符設備而啟動失敗,提示找不到channel。

7.驗證

首先使用創(chuàng)建的鏡像啟動一臺新云主機(終于叫云主機,不叫虛擬機了==),如果使用nova CLI工具,需要傳遞--admin-pass參數(shù)并指定密碼,并指定flavor,要求disk大小為20GB。如果使用Openstack dashborad創(chuàng)建,需要簡單配置下dashborad使其支持配置云主機密碼面板,如圖:

創(chuàng)建成功后進入控制臺,使用root賬號以及設置的新密碼,如果使用創(chuàng)建時設置的密碼登錄成功,說明注入密碼成功。

接下來運行以下命令檢查磁盤是否自動調整大?。?/p>

  
 
 
 
  1. lsblk 
  2. df -h 

如圖:

鏡像原始根分區(qū)大小為10GB,如果lsblk顯示vda大小為20GB,說明文件系統(tǒng)自動識別了磁盤大小。如果df顯示/dev/sda1size為20GB,說明根分區(qū)自動完成了擴容操作。

接下來測試動態(tài)修改密碼,由于默認dashboard頁面沒有實現(xiàn)修改密碼面板功能,我們需要在后臺操作。

首先使用nova list獲取云主機ID,然后調用nova set-password命令修改密碼:

  
 
 
 
  1. nova set-password $ID 

重復輸入兩次新的密碼,如果執(zhí)行成功,不會有任何輸出。

回到終端,退出之前的登錄,然后使用新的密碼重新登錄,如果登錄成功,則說明動態(tài)修改密碼成功!

若以上其中一個步驟失敗,則說明鏡像制作失敗,請檢查以上步驟是否疏漏。

【本文是51CTO專欄作者“付廣平”的原創(chuàng)文章,如需轉載請通過51CTO獲得聯(lián)系】


網(wǎng)站題目:手動制作Openstack鏡像
文章源于:http://www.5511xx.com/article/dpjcojp.html