建虛擬機(jī)完整指南:避坑與實操)
1. 從ISO鏡像到可用實例整體設(shè)計思路拆解在私有云運維的日常里用ISO鏡像裝虛擬機(jī)這件事說簡單也簡單說坑多也是真多。很多剛接觸OpenStack的朋友習(xí)慣了在虛擬化平臺里點幾下就裝完系統(tǒng)結(jié)果到了OpenStack這邊上傳ISO、配卷、掛載、引導(dǎo)、裝系統(tǒng)、再卸載ISO一套流程走下來中間任何一步?jīng)]配對虛擬機(jī)就卡在BIOS界面或者直接進(jìn)不了安裝程序。我前后在幾個不同規(guī)模的環(huán)境里做過這件事踩過的坑足夠?qū)懸黄芾字改纤赃@篇就把從ISO創(chuàng)建虛擬機(jī)的完整鏈路拆開講清楚。先明確一下這個操作到底在做什么。OpenStack本身是一個云操作系統(tǒng)它管理的是計算、存儲、網(wǎng)絡(luò)這些資源池。默認(rèn)情況下它最擅長的是用現(xiàn)成的鏡像qcow2、raw這類快速批量創(chuàng)建虛擬機(jī)因為這種鏡像里已經(jīng)裝好了系統(tǒng)開機(jī)即用。但現(xiàn)實場景里你經(jīng)常需要從ISO開始裝系統(tǒng)比如要裝一個特定版本的操作系統(tǒng)、要做自定義分區(qū)、要裝一些鏡像里沒有的驅(qū)動或者干脆就是想模擬一臺物理機(jī)的完整安裝過程。這時候就需要走ISO引導(dǎo)安裝這條路。這個內(nèi)容適合誰看如果你已經(jīng)能登錄OpenStack的Dashboard或者會用命令行知道什么是flavor、什么是volume、什么是network那這篇就是給你準(zhǔn)備的實操手冊。如果你連項目、用戶、配額這些概念都還沒搞明白建議先把基礎(chǔ)操作過一遍再回來不然中間很多步驟你會不知道為什么這么做。核心思路其實一句話就能概括把ISO當(dāng)成一張光盤把虛擬機(jī)的系統(tǒng)盤當(dāng)成一塊空白硬盤讓虛擬機(jī)先從光盤啟動裝系統(tǒng)裝完之后再把光盤拔掉從硬盤啟動。聽起來跟給物理機(jī)裝系統(tǒng)一模一樣對吧OpenStack里也是這個邏輯只不過“光盤”和“硬盤”都是虛擬的需要通過卷Volume和鏡像Image來模擬。這里有個關(guān)鍵的設(shè)計選擇需要提前想清楚系統(tǒng)盤到底用本地盤還是云硬盤Cinder卷這個選擇會直接影響你后續(xù)的操作路徑。用本地盤的話虛擬機(jī)實例的根盤是臨時的實例刪了系統(tǒng)就沒了而且沒法做快照和遷移用Cinder卷的話系統(tǒng)盤是持久化的可以快照、可以遷移、可以隨時掛載到別的實例上排查問題。從ISO安裝這個場景我強烈建議用Cinder卷原因后面會詳細(xì)說因為ISO安裝過程中需要多次掛載和卸載用卷操作起來靈活得多。還有一個前置條件容易被忽略你的OpenStack環(huán)境得支持從卷引導(dǎo)。有些老版本或者配置不完整的環(huán)境Cinder卷只能作為數(shù)據(jù)盤掛載不能作為啟動盤。這個在創(chuàng)建實例的時候就能看出來如果“從卷啟動”那個選項是灰的或者創(chuàng)建完直接報錯那就是后端存儲或者Glance跟Cinder的集成沒配好。遇到這種情況要么找管理員確認(rèn)配置要么就只能退而求其次用本地盤方案。2. 核心細(xì)節(jié)解析與實操要點2.1 ISO鏡像的上傳與格式要求第一步是把ISO文件弄進(jìn)OpenStack。這里有個常見的誤解很多人以為ISO要像qcow2鏡像那樣上傳到Glance然后直接拿它創(chuàng)建實例。實際上ISO在Glance里就是一個普通鏡像但它的用途是作為“光盤”掛載而不是作為啟動盤直接引導(dǎo)。上傳的時候有幾個參數(shù)必須配對否則后面掛載會失敗。上傳ISO到Glance命令行大概是這樣openstack image create ubuntu-22.04-iso \ --file ./ubuntu-22.04.3-live-server-amd64.iso \ --disk-format iso \ --container-format bare \ --public注意--disk-format iso這個參數(shù)一定要寫對。如果你手滑寫成qcow2或者rawGlance雖然能存進(jìn)去但后面掛載給虛擬機(jī)的時候底層驅(qū)動會按qcow2去解析這個文件結(jié)果就是虛擬機(jī)根本認(rèn)不出這是一張光盤引導(dǎo)直接失敗。我見過有人圖省事直接寫--disk-format raw結(jié)果排查了半天才發(fā)現(xiàn)是格式標(biāo)錯了。--container-format bare也是必須的ISO文件本身就是裸的不需要額外的容器封裝。至于--public還是--private看你的使用范圍如果只是自己項目里用private就夠了省得污染公共鏡像列表。上傳完之后用openstack image list確認(rèn)一下狀態(tài)是active大小跟你本地文件一致。如果狀態(tài)一直是queued或者saving那可能是Glance后端存儲出問題了得找存儲管理員看看。提示ISO文件通常比較大幾個GB是常態(tài)。上傳之前先確認(rèn)Glance后端的存儲空間夠不夠別傳一半空間滿了鏡像卡在saving狀態(tài)清理起來很麻煩。2.2 系統(tǒng)盤的創(chuàng)建與參數(shù)計算接下來要創(chuàng)建一塊空白卷作為虛擬機(jī)的系統(tǒng)盤。這塊盤的大小怎么定我的經(jīng)驗是ISO里官方推薦的最小磁盤空間再往上加20%到30%的余量。比如Ubuntu Server 22.04官方建議最小25GB那你至少給30GB最好給40GB。因為安裝過程中會解壓大量文件還要留出swap分區(qū)和后續(xù)更新的空間給得太緊巴巴的裝到一半提示空間不足前功盡棄。創(chuàng)建卷的命令openstack volume create --size 40 --image ubuntu-22.04-iso \ --bootable system-disk-for-vm01這里有個細(xì)節(jié)--image參數(shù)指定ISO鏡像--bootable標(biāo)記這塊卷是可引導(dǎo)的。有些版本的OpenStack里--image和--bootable要配合使用意思是“這塊卷從指定的鏡像引導(dǎo)”。但注意這里指定的鏡像其實是ISO所以這塊卷在創(chuàng)建的時候會被寫入ISO的內(nèi)容嗎不是的它只是把卷標(biāo)記為“可以從這個鏡像引導(dǎo)”實際引導(dǎo)的時候ISO是作為光盤掛載的卷本身還是空的。這個邏輯有點繞但理解這一點很重要因為它決定了你后面掛載和卸載ISO的操作方式。如果你用的是Dashboard操作路徑是卷 - 創(chuàng)建卷 - 在“卷來源”里選擇“鏡像”然后選中你上傳的ISO勾選“可引導(dǎo)”。大小填40GB。創(chuàng)建完之后等狀態(tài)變成available。2.3 實例的創(chuàng)建與引導(dǎo)順序設(shè)置卷創(chuàng)建好之后就可以創(chuàng)建實例了。這里的關(guān)鍵是引導(dǎo)順序。在OpenStack里創(chuàng)建實例的時候可以指定從哪個設(shè)備引導(dǎo)。如果你用命令行大概是這樣openstack server create --flavor m1.medium \ --volume system-disk-for-vm01 \ --network private-net \ --key-name mykey \ vm01注意--volume參數(shù)它把剛才創(chuàng)建的卷作為啟動盤掛給實例。但這時候有個問題卷里是空的ISO雖然標(biāo)記在卷上但實際引導(dǎo)的時候虛擬機(jī)需要先從ISO啟動。OpenStack的默認(rèn)行為是如果卷是從ISO創(chuàng)建的它會自動把ISO作為光盤掛載并且引導(dǎo)順序會優(yōu)先從光盤啟動。但這個行為在不同版本里表現(xiàn)不一樣有的版本需要你手動指定。更穩(wěn)妥的做法是創(chuàng)建實例的時候先不掛ISO而是創(chuàng)建一個帶空卷的實例然后手動把ISO掛載上去再重啟實例在啟動過程中進(jìn)入BIOS或者引導(dǎo)菜單選擇從光盤啟動。但這樣操作太繁瑣而且很多OpenStack環(huán)境不允許你直接訪問虛擬機(jī)的BIOS界面。所以實際生產(chǎn)里我推薦的做法是創(chuàng)建卷的時候就把ISO關(guān)聯(lián)上創(chuàng)建實例的時候直接用這塊卷OpenStack會自動處理引導(dǎo)順序。如果創(chuàng)建完實例發(fā)現(xiàn)直接進(jìn)了BIOS或者提示“no bootable device”那說明引導(dǎo)順序不對需要檢查一下卷的bootable標(biāo)記和鏡像關(guān)聯(lián)是否正確。2.4 網(wǎng)絡(luò)與安全組的配置要點網(wǎng)絡(luò)這塊ISO安裝過程中通常需要聯(lián)網(wǎng)下載一些額外的包所以實例得能訪問外網(wǎng)。如果你用的是私有網(wǎng)絡(luò)記得把路由和NAT配好讓實例能通過路由器訪問外部網(wǎng)絡(luò)。安全組方面安裝過程中可能需要SSH或者HTTP訪問但默認(rèn)的安全組通常只開了SSH。如果你在安裝過程中需要從外部訪問虛擬機(jī)的Web控制臺那還得開對應(yīng)的端口。不過說實話ISO安裝階段最方便的還是通過VNC或者SPICE直接看虛擬機(jī)的控制臺這樣不需要額外開端口直接在Dashboard里就能操作。OpenStack的Dashboard里實例詳情頁有個“控制臺”標(biāo)簽點進(jìn)去就能看到虛擬機(jī)的屏幕跟坐在物理機(jī)前面一樣。安裝系統(tǒng)的時候用這個最省事。注意VNC控制臺在安裝過程中可能會因為網(wǎng)絡(luò)延遲或者瀏覽器兼容性問題卡頓建議用Chrome或者Firefox別用那些小眾瀏覽器。如果控制臺一直黑屏先檢查實例狀態(tài)是不是ACTIVE再看VNC代理服務(wù)是不是正常。3. 實操過程與核心環(huán)節(jié)實現(xiàn)3.1 完整操作流程拆解下面我把整個流程按順序走一遍你可以直接照著做。假設(shè)你已經(jīng)有了OpenStack的訪問權(quán)限命令行工具也配好了。第一步上傳ISO到Glance。openstack image create centos-7-iso \ --file ./CentOS-7-x86_64-Minimal-2009.iso \ --disk-format iso \ --container-format bare \ --private上傳完成后確認(rèn)狀態(tài)openstack image show centos-7-iso -c status -c size狀態(tài)應(yīng)該是activesize跟你本地文件大小一致。第二步創(chuàng)建可引導(dǎo)的空白卷。openstack volume create --size 50 --image centos-7-iso \ --bootable centos7-system-disk等卷狀態(tài)變成availableopenstack volume show centos7-system-disk -c status第三步創(chuàng)建實例并掛載卷。openstack server create --flavor m1.large \ --volume centos7-system-disk \ --network private-net \ --security-group default \ --key-name mykey \ centos7-vm創(chuàng)建完之后用openstack server list看實例狀態(tài)應(yīng)該是ACTIVE。如果狀態(tài)是ERROR用openstack server show centos7-vm看fault信息通常是卷掛載失敗或者flavor資源不足。第四步通過控制臺安裝系統(tǒng)。在Dashboard里找到這個實例點“控制臺”應(yīng)該能看到CentOS的安裝界面。如果看到的是“no bootable device”或者直接進(jìn)了BIOS說明引導(dǎo)順序不對。這時候需要檢查卷的bootable標(biāo)記或者手動把ISO掛載為光盤。手動掛載ISO的命令openstack server add volume centos7-vm centos-7-iso --device /dev/sr0然后重啟實例openstack server reboot --hard centos7-vm重啟的時候盯著控制臺應(yīng)該能看到從光盤引導(dǎo)的提示。如果還是不行可能需要在創(chuàng)建實例的時候指定引導(dǎo)順序但這個操作在不同OpenStack版本里差異很大有的版本支持--boot-from-volume參數(shù)有的版本需要在Nova的配置里改。第五步安裝完成后卸載ISO。系統(tǒng)裝完之后虛擬機(jī)會自動從硬盤重啟。這時候ISO還掛載著雖然不影響使用但最好卸載掉免得下次重啟又從光盤引導(dǎo)。openstack server remove volume centos7-vm centos-7-iso卸載完之后再重啟一次實例確認(rèn)能從硬盤正常引導(dǎo)。3.2 參數(shù)計算與選擇依據(jù)整個流程里有幾個參數(shù)需要你根據(jù)實際情況算一下。卷的大小前面說了官方最小要求加20%到30%。但如果你要裝圖形界面或者大量開發(fā)工具那得再加。比如CentOS 7 Minimal官方建議最小10GB但你如果要裝GNOME桌面至少得20GB起步。我的經(jīng)驗是開發(fā)測試環(huán)境給40GB生產(chǎn)環(huán)境給60GB到100GB具體看你的應(yīng)用需求。flavor的選擇ISO安裝過程中對CPU和內(nèi)存的要求比正常運行時要高因為安裝程序本身要解壓大量文件。建議至少2核4GB起步如果ISO比較大或者要裝圖形界面4核8GB更穩(wěn)妥。安裝完之后你可以再調(diào)整flavor但注意OpenStack默認(rèn)不支持在線調(diào)整flavor需要關(guān)機(jī)再改。網(wǎng)絡(luò)帶寬如果你是從外部上傳ISO到Glance那上傳速度取決于你的網(wǎng)絡(luò)帶寬。一個4GB的ISO在100Mbps的網(wǎng)絡(luò)上大概要傳5到6分鐘。如果Glance后端是分布式存儲上傳過程中可能會有額外的網(wǎng)絡(luò)開銷時間會更長。3.3 實操現(xiàn)場記錄與關(guān)鍵截圖說明由于這里沒法貼圖我用文字描述一下關(guān)鍵界面的樣子你操作的時候可以對照。Glance鏡像列表上傳成功后鏡像名稱旁邊會顯示“active”大小顯示為ISO的實際大小比如“4.2 GB”。如果顯示“queued”說明還在上傳中如果顯示“error”點進(jìn)去看錯誤信息通常是存儲后端的問題。卷列表創(chuàng)建完卷之后卷的狀態(tài)是“available”大小顯示為你指定的大小比如“50 GB”。如果狀態(tài)是“creating”等一會兒刷新如果狀態(tài)是“error”看錯誤信息可能是Cinder后端存儲空間不足。實例控制臺安裝界面出現(xiàn)后你會看到ISO的引導(dǎo)菜單比如CentOS的“Install CentOS 7”或者Ubuntu的“Try or Install Ubuntu Server”。用鍵盤方向鍵選擇回車進(jìn)入安裝程序。安裝過程中分區(qū)那一步建議選“自動分區(qū)”除非你有特殊需求。如果選手動分區(qū)記得給/boot至少1GB/至少20GBswap根據(jù)內(nèi)存大小定一般內(nèi)存的1到2倍。安裝完成后的重啟安裝程序會提示你重啟重啟的時候注意看屏幕如果又出現(xiàn)了“Press any key to boot from CD”千萬別按鍵等它自己跳過從硬盤引導(dǎo)。如果按了鍵又會進(jìn)安裝程序那就白裝了。4. 常見問題與排查技巧實錄4.1 引導(dǎo)失敗類問題排查問題一創(chuàng)建完實例控制臺顯示“no bootable device”。這是最常見的問題。原因通常是卷沒有正確標(biāo)記為可引導(dǎo)或者ISO沒有正確掛載為光盤。排查步驟檢查卷的bootable屬性openstack volume show volume-id -c bootable應(yīng)該是True。檢查卷關(guān)聯(lián)的鏡像openstack volume show volume-id -c image_id應(yīng)該是ISO的鏡像ID。檢查實例掛載的卷openstack server show server-id -c volumes確認(rèn)系統(tǒng)盤掛載在/dev/vda或者/dev/sda。如果以上都正常嘗試手動掛載ISO為光盤openstack server add volume server-id iso-image-id --device /dev/sr0然后硬重啟。問題二控制臺顯示“Booting from Hard Disk”但硬盤是空的。這說明引導(dǎo)順序錯了虛擬機(jī)直接從硬盤引導(dǎo)但硬盤里沒系統(tǒng)。解決辦法是進(jìn)入BIOS調(diào)整引導(dǎo)順序但OpenStack里通常沒法直接進(jìn)BIOS。替代方案是在創(chuàng)建實例的時候指定引導(dǎo)順序或者用--boot-from-volume參數(shù)強制從卷引導(dǎo)。如果這些都不行那就只能刪掉實例重新創(chuàng)建創(chuàng)建的時候確保ISO已經(jīng)正確關(guān)聯(lián)到卷上。問題三安裝過程中提示“Unable to find a medium containing a live file system”。這是Ubuntu ISO常見的問題通常是因為ISO掛載的設(shè)備不對。Ubuntu的安裝程序會去找包含casper目錄的設(shè)備如果ISO掛載在/dev/sr0但安裝程序沒認(rèn)出來就會報這個錯。解決辦法是在引導(dǎo)菜單里按e編輯引導(dǎo)參數(shù)把cdrom相關(guān)的路徑改對或者干脆換一個ISO版本試試。我遇到過幾次換成Server版而不是Live版就好了。4.2 性能與資源類問題問題四安裝過程特別慢進(jìn)度條半天不動??赡艿脑蛴袔讉€一是Cinder后端存儲性能差讀寫速度跟不上二是網(wǎng)絡(luò)帶寬不夠安裝程序在下載額外的包三是flavor給的資源太少CPU跑滿了解壓速度慢。排查的時候先在Dashboard里看實例的CPU和內(nèi)存使用率如果CPU一直100%那就是資源不夠關(guān)機(jī)改flavor。如果CPU不高但磁盤IO很高那就是存儲性能問題找存儲管理員確認(rèn)后端是不是機(jī)械盤或者網(wǎng)絡(luò)存儲延遲大。問題五安裝完成后實例啟動特別慢或者卡在某個服務(wù)上。這通常是系統(tǒng)盤的問題。用Cinder卷做系統(tǒng)盤IO性能取決于后端存儲。如果后端是機(jī)械盤或者低端網(wǎng)絡(luò)存儲系統(tǒng)啟動會比本地盤慢很多。我的經(jīng)驗是生產(chǎn)環(huán)境盡量用SSD或者高性能分布式存儲做Cinder后端不然裝完系統(tǒng)用起來也難受。如果實在沒法改存儲那就只能忍或者在創(chuàng)建實例的時候用本地盤做系統(tǒng)盤但那樣就失去了持久化和遷移的能力。4.3 常見問題速查表問題現(xiàn)象可能原因排查命令解決辦法控制臺顯示“no bootable device”卷未標(biāo)記可引導(dǎo)或ISO未掛載openstack volume show id -c bootable重新創(chuàng)建卷并確保--bootable和--image參數(shù)正確直接從硬盤引導(dǎo)但硬盤為空引導(dǎo)順序錯誤openstack server show id -c volumes手動掛載ISO為光盤并硬重啟安裝程序找不到ISO介質(zhì)ISO掛載設(shè)備不對在控制臺查看掛載點編輯引導(dǎo)參數(shù)或更換ISO版本安裝過程極慢存儲性能差或資源不足查看實例CPU和磁盤IO改flavor或更換存儲后端安裝完成后無法從硬盤引導(dǎo)ISO未卸載或引導(dǎo)順序未恢復(fù)openstack server show id -c volumes卸載ISO并重啟實例卷創(chuàng)建失敗Cinder后端空間不足openstack volume show id -c status清理無用卷或擴(kuò)容后端存儲4.4 獨家避坑技巧技巧一先用小ISO測試流程。如果你第一次做這個操作別上來就拿幾十GB的ISO試。找一個幾百MB的輕量級Linux發(fā)行版比如Alpine或者Tiny Core先把整個流程跑通確認(rèn)引導(dǎo)、掛載、安裝、卸載都沒問題再換正式ISO。這樣能省很多時間因為大ISO上傳和安裝都慢出錯了排查也費勁。技巧二安裝過程中別關(guān)控制臺。有些人習(xí)慣開著控制臺然后去干別的結(jié)果回來發(fā)現(xiàn)控制臺斷開了安裝卡在某個交互界面等輸入。OpenStack的VNC控制臺在長時間無操作后可能會斷開雖然虛擬機(jī)本身還在跑但你沒法看到界面也沒法輸入。所以安裝過程中最好保持控制臺窗口活躍或者用openstack console log show看日志確認(rèn)進(jìn)度。技巧三裝完系統(tǒng)先別急著卸載ISO。系統(tǒng)裝完第一次重啟后確認(rèn)能正常登錄了再卸載ISO。因為有時候系統(tǒng)裝完但引導(dǎo)記錄沒寫對卸載ISO后直接起不來還得重新掛載ISO進(jìn)救援模式修復(fù)。多掛一會兒不礙事確認(rèn)沒問題了再卸。技巧四用卷快照做備份。系統(tǒng)裝好之后第一時間給卷做個快照。這樣以后裝壞了或者要批量部署直接從這個快照創(chuàng)建新卷就行不用每次都從頭裝??煺彰頾penstack volume snapshot create --volume volume-id snapshot-name?;謴?fù)的時候用openstack volume create --snapshot snapshot-id new-volume-name。技巧五注意時區(qū)和鍵盤布局。安裝過程中時區(qū)和鍵盤布局這兩個選項很容易被忽略但裝完之后再改就麻煩了。特別是鍵盤布局如果你選錯了后面輸密碼的時候會發(fā)現(xiàn)打出來的字符跟預(yù)期不一樣登錄都登不進(jìn)去。安裝的時候花幾秒鐘確認(rèn)一下省得后面折騰。5. 批量部署與自動化擴(kuò)展思路單臺從ISO裝系統(tǒng)搞定了接下來自然會想能不能批量做。答案是能但需要一些額外的工具和腳本。OpenStack本身提供了Heat編排服務(wù)你可以寫一個Heat模板把上傳ISO、創(chuàng)建卷、創(chuàng)建實例、掛載ISO這一系列操作串起來一鍵部署多臺。但Heat模板寫起來比較繁瑣而且調(diào)試麻煩對于偶爾用一次的場景有點殺雞用牛刀。更輕量的做法是用命令行腳本。把前面那些命令寫成一個bash腳本用循環(huán)創(chuàng)建多臺實例。但注意ISO安裝過程中需要人工交互腳本沒法自動完成分區(qū)、設(shè)置密碼這些步驟。所以批量部署的場景通常不是從ISO裝而是先手工裝好一臺做成鏡像然后用這個鏡像批量創(chuàng)建實例。這才是OpenStack的正確用法。如果你確實需要批量從ISO裝那可以考慮用Kickstart或者Preseed做自動化安裝。CentOS系用KickstartUbuntu系用Preseed把安裝配置寫成一個文件放在HTTP服務(wù)器上ISO引導(dǎo)的時候指定這個文件的URL安裝程序就會自動完成所有步驟不需要人工干預(yù)。這樣配合腳本就能實現(xiàn)批量部署。但配置Kickstart文件本身也需要不少時間適合有長期批量需求的場景。提示Kickstart和Preseed的配置文件里可以指定分區(qū)方案、軟件包列表、網(wǎng)絡(luò)配置、用戶密碼等。寫的時候注意密碼要用加密后的哈希值別直接寫明文。生成哈??梢杂胦penssl passwd -6命令。6. 個人實操體會與后續(xù)擴(kuò)展這套流程我在不同環(huán)境里跑過很多次最大的體會是OpenStack從ISO裝虛擬機(jī)的難點不在命令本身而在環(huán)境配置和引導(dǎo)順序。命令就那么幾條背都背下來了但環(huán)境里任何一個環(huán)節(jié)沒配好比如Cinder后端不支持可引導(dǎo)卷、Glance鏡像格式不對、Nova引導(dǎo)順序配置有問題都會讓你卡住。所以遇到問題的時候別急著懷疑自己的操作先確認(rèn)環(huán)境是不是支持這個用法。另一個體會是能不用ISO就不用ISO。如果你的需求只是裝一個標(biāo)準(zhǔn)系統(tǒng)那直接找一個現(xiàn)成的qcow2鏡像上傳到Glance創(chuàng)建實例的時候選這個鏡像幾十秒就能起來比ISO安裝快得多也穩(wěn)得多。ISO安裝適合那些確實需要自定義分區(qū)、需要特定驅(qū)動、或者需要模擬完整安裝過程的場景。日常運維里大部分情況用現(xiàn)成鏡像就夠了。后續(xù)如果要把這個流程產(chǎn)品化可以考慮做成一個自服務(wù)門戶讓用戶填幾個參數(shù)ISO選擇、卷大小、flavor、網(wǎng)絡(luò)后臺自動完成剩下的步驟。這樣不懂OpenStack命令的人也能用。但要注意ISO安裝過程中還是需要人工交互所以門戶里得集成VNC控制臺讓用戶能直接操作安裝界面。這個集成工作量不小但做一次能省很多重復(fù)勞動。最后分享一個小技巧如果你經(jīng)常需要從ISO裝系統(tǒng)可以準(zhǔn)備一個“萬能”ISO里面集成常用的驅(qū)動和工具然后把這個ISO做成Glance里的公共鏡像所有人共享。這樣不用每個人都上傳一遍ISO省存儲空間也省時間。ISO的定制可以用mkisofs或者genisoimage工具把額外的文件追加進(jìn)去具體方法這里就不展開了有需要的可以自己查一下。