# openstack安裝與設定(Hw04) **本次作業有以下重點:** * 在ubuntu主機中安裝openstack * 使用openstack創建並管理虛擬機 * 完成網路相關設定,使外網、區網皆能與虛擬機連線 --- * 緣由 為了之後能在之後的課程中架設並管理自己的雲端運算服務,所以需要安裝openstack。 系統簡介 * OpenStack 是一個開放原始碼的雲端平台,可以用來建立和管理私有或公有雲端環境。OpenStack 的核心組件包括 Nova、Neutron、Cinder、Swift、Keystone、Horizon 等,透過這些組件的協同運作,使用者可以快速建立並管理自己的雲端環境。 * 安裝過程(虛擬機建立hostname改為學號,IP設定正確並確認網路可通) **第一步: 安裝openstack** i. 依序在ubuntu主機中執行以下指令: ``` $ sudo useradd -s /bin/bash -d /opt/stack -m stack #創建一個名為stack的使用者 $ sudo chmod +x /opt/stack #讓所有user都具有執行/opt/stack裡所有檔案的權限 $ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack #設定stack使用sudo指令時不用輸入密碼 $ sudo -u stack -i #切換user為stack $ git clone https://opendev.org/openstack/devstack #從github上把devstack抓回來 $ cd devstack $ vi local.conf #創建local.conf,將以下設定檔寫進去 ``` ``` [[local|localrc]] ADMIN_PASSWORD=secret DATABASE_PASSWORD=$ADMIN_PASSWORD RABBIT_PASSWORD=$ADMIN_PASSWORD SERVICE_PASSWORD=$ADMIN_PASSWORD ``` ``` #最後,開始執行安裝腳本 $ ./stack.sh #執行安裝腳本 ``` **看見下面畫面就表示開始下載了** ![](https://hackmd.io/_uploads/BkKJ93kB3.jpg) **第二步: 創建虛擬機並設定網路** 1. 首先用嘉大網域中的電腦開瀏覽器輸入主機ip+/dashboard(eg: 10.2.200.176/dashboard) 輸入帳號:admin,密碼:secret ![](https://hackmd.io/_uploads/SJdt5nJBn.jpg) 2. 點選左方下拉式選單進入網路頁面,可以看到有預設的虛擬區網(shared)和虛擬外網(public),我們先設定虛擬外網。 ![](https://hackmd.io/_uploads/Hke7s31r2.jpg) 3. 進到public的設定頁面後,點選新增子網路。 ![](https://hackmd.io/_uploads/HkpYi2kBh.jpg) 4. 名稱可隨意設定,網路位址是指"主機"所在的"網段",所以這邊打10.2.200.0/25,閘道則是10.2.200.239。(以上都是依照220電腦教室去做) ![](https://hackmd.io/_uploads/H1236hJH3.jpg) 5. 啟用DHCP不能打勾,分配倉庫則是填你的主機所獲得的網址剩下的那幾個(eg:我的主機拿到10.2.200.176到10.2.200.180,因為176已經分給主機了,所以目前只剩177~180)。DNS則用google的就好。 ![](https://hackmd.io/_uploads/SyvMR21S3.jpg) 6. 完成後長這樣。 ![](https://hackmd.io/_uploads/HyzYC31Bn.jpg) 7. 虛擬區網(shared)可以不用動,用預設就好。 ![](https://hackmd.io/_uploads/Sy5oA2kr2.jpg) 8. 接著設定路由器 ![](https://hackmd.io/_uploads/SJdn02JB3.jpg) 9. 對外網路選public ![](https://hackmd.io/_uploads/SJxyJakH2.jpg) 10. 創好後長這樣,可以看到虛擬外網已經連接上來了。我們接著要把虛擬區網也連上路由器,這樣兩個網域才能溝通。首先按下新建網路卡。 ![](https://hackmd.io/_uploads/r1OCkp1Bh.jpg) 11. 子網域選shared(虛擬區網) ![](https://hackmd.io/_uploads/SJLylTJH3.jpg) 12. 好了後長這樣 ![](https://hackmd.io/_uploads/S1kxlayH2.jpg) 13. 接著要創建虛擬機(image先用openstack內建的cirros那個,磁區大小跟硬體配置都不用選太大) ![](https://hackmd.io/_uploads/HkjZl6yB2.jpg) ![](https://hackmd.io/_uploads/SJaMep1Hh.jpg) ![](https://hackmd.io/_uploads/B1CXgpkHh.jpg) ![](https://hackmd.io/_uploads/SyBAb61B3.jpg) 14. 建立好後長這樣,接著按開始雲實例 ![](https://hackmd.io/_uploads/By2gfaJSh.jpg) 15. 照系統顯示的帳密登入 ![](https://hackmd.io/_uploads/r1MJSakr2.jpg) 16. 接著我們需要將虛擬機綁定一組對外ip,綁定後這組ip就會"對外""代表"這台虛擬機,router會幫忙做ip映射。 ![](https://hackmd.io/_uploads/BJ6krpkH2.jpg) 17. 倉庫選public,這表示系統會從一開始設定的對外子網路中挑選還沒被分配的ip來用。 ![](https://hackmd.io/_uploads/rkOlS6yH3.jpg) 18. 分配浮動ip後接著要綁定 ![](https://hackmd.io/_uploads/H17WH6kS3.jpg) 19. 欲聯結的接口就選虛擬機的虛擬ip ![](https://hackmd.io/_uploads/HknZraJBn.jpg) 20. 最後,虛擬外網要能夠連通實體網域的話,需要在實體主機建立bridge,openstack已經提供一個bridge了(br-ex),我們只需要把主機的網卡(目前在用的那個)加進去這個bridge即可,指令如下: ``` $sudo ovs-vsctl add-port br-ex eno1 $sudo ip addr flush dev eno1 $sudo ip addr add 10.2.200.176/25 dev br-ex $sudo ip link set br-ex up ``` 21. 之後進/etc/netplan更改網路設定檔(照下圖),改好後執行 ``` $sudo netplan try ``` ![](https://hackmd.io/_uploads/rJCMB6kH2.jpg) 22. 測試虛擬機是否能通外網 ``` ping 8.8.8.8 ``` ``` ping 10.2.200.176 ``` ![](https://hackmd.io/_uploads/H1I7rpySn.jpg) 23. 測試嘉大網域內的所有電腦是否能連上虛擬機,要注意的是此時虛擬機的對外ip是剛剛連結上的浮動ip,也就是10.2.200.178,其他電腦要連虛擬機一律是找這組ip。 ``` ping 10.2.200.178 ``` ![](https://hackmd.io/_uploads/Syx4Bp1Sh.jpg) 24. 網路拓樸,最後會長這樣 ![](https://hackmd.io/_uploads/r1oEra1Sn.jpg) * **結論** 這次的安裝和設定過程非常有價值,它使我更深入地了解了網路設定的重要性。在一個雲端環境中,網路是關鍵的基礎設施之一。我學到了如何設置網路組件,例如虛擬路由器、區網、外網和子網路、浮動ip、橋接。 * **參考資料** 1. https://hackmd.io/@Chiao-Juan/SJtliJNUu#OpenStack網路配置 2. https://blog.csdn.net/yasyal515/article/details/73196181 3. https://docs.openstack.org/devstack/latest/