# 安裝OpenStack並建置虛擬機 :::success **參考資料** https://hackmd.io/@whitefir473/B1lUqeszC https://hackmd.io/@109213067/BkECVRMbn#%E5%AF%A6%E4%BD%9C https://hackmd.io/@FrCgWmOfTYe5ewU0YFGFmQ/rJy9bDyr2 https://hackmd.io/@Ox4EUOoZSiO_gWIfo6pEAg/Hy93VDP4n#OpenStack ::: ## 1. 緣由 在實驗伺服器(IP為規定的第一組IP)安裝OpenStack並建置一個CirrOS虛擬機(綁對外IP為伺服器第二組IP),並將報告寫至hackmd網站,且公開文章權限並將連結設定到作業截圖內。 ## 2. 系統簡介 * **伺服器OS:** Ubuntu 22.04 LTS Server Vision * **Cloud Image:** CirrOS (cirros-0.6.2-x86_64-disk.img) * **伺服器IP:** 10.2.200.142 * **對外IP:** 10.2.200.144 ## 3. 安裝過程(虛擬機建立hostname改為學號,IP設定正確並確認網路可通) ### 安裝Devstack #### 1. 檢查更新 ```cmd= sudo apt-get update sudo apt-get upgrade -y ``` #### 2. 建立特權使用者:stack ```cmd= sudo useradd -s /bin/bash -d /opt/stack -m stack sudo chmod +x /opt/stack echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack ``` #### 3. 登入 stack 使用者 `sudo -u stack -i`  #### 4. 安裝 git 套件 && 下載 github 上的 devstack ```cmd= sudo apt-get install -y git git clone https://opendev.org/openstack/devstack ``` #### 5. 切換到 devstack 文件夾中 && 建立 local.conf 文件 ```cmd= cd devstack sudo nano local.conf ```  :::success local.conf 內容如下: ```cmd= [[local|localrc]] ADMIN_PASSWORD=secret DATABASE_PASSWORD=$ADMIN_PASSWORD RABBIT_PASSWORD=$ADMIN_PASSWORD SERVICE_PASSWORD=$ADMIN_PASSWORD HOST_IP=10.2.200.142 ``` :::  #### 6. 開始安裝 openstack (因網路問題啟動會花較久的時間) `./stack.sh`  ### OpenStack :::success 瀏覽器進入 http://10.2.200.142/dashboard 到登錄介面 * **用戶名稱:** admin or demo (老師建議用demo 但設定子網域要使用到admin) * **密碼:** secret (上方local.conf設定的密碼) :::   ### 建立虛擬機 #### 1. 建立虛擬外網(須與實體內網網段一樣) :::info **在現有public上,直接新增一子網路** Admin(管理員) -> Network(網路) -> Networks(網路) -> public -> 子網域 -> 新增子網域 :::    #### 2. 橋接虛擬網卡到實體網卡 :::info //把虛擬網卡橋接到實體網卡 `sudo microstack.ovs-vsctl add-port br-ex "實體網卡名稱"` //清掉實體網卡的 IP,避免跟虛擬網卡 IP 重複 `sudo ip addr flush dev "實體網卡名稱"` //把原本實體網卡的 IP 位址加到虛擬網卡上 `sudo ip addr add "實體網卡IP/網段數字" dev br-ex` //啟用虛擬網卡 `sudo ip link set br-ex up ` ::: ```cmd= sudo ovs-vsctl add-port br-ex eno1 #可能需安裝ovs-vsctl sudo ip addr flush dev eno1 #會斷網 ```  **到server修改00-installer-config.yaml**  ``` network: version: 2 renderer: networked ethernets: br-ex: dhcp4: no addresses:[10.2.200.142/25] gateway4: 10.2.200.239 nameservers: search: [] addresses: [8.8.8.8, 8.8.4.4] eno1: dhcp4: no eno2: dhcp4: true ```  **更新網路配置:** `sudo netplan try` 接著繼續 ```cmd= sudo ip addr add 10.2.200.142/25 dev br-ex sudo ip link set br-ex up ip route ```  #### 3. 另外新建網路(虛擬內網) :::info Admin(管理員) -> Network(網路) -> Networks(網路) -> Create Network(新增網路) :::  > 虛擬內網網段可以自訂,不要跟實體網路一樣就好   #### 4.建立虛擬 router 連接虛擬內網和外網 :::info Admin(管理員) -> Network(網路) -> Routers(路由器) -> Create Router(新增路由器) :::  **建立對外閘道** :::info Admin(管理員) -> Network(網路) -> Routers(路由器) -> router -> 網路卡 :::  #### 5.調整安全性群組 :::info Project(專案) -> Network(網路) -> 安全性群組 -> 管理規則 -> 加入規則 :::   #### 6.新增可用的floating IP :::info Admin(管理員) -> Network(網路) -> Floating IPs(浮動 IP) -> Allocate IP To Project(分配IP到專案) ::: > 選擇從虛擬外網產生一個 floating IP  #### 7.在虛擬內網建立虛擬機 :::info Project(專案) -> Compute(運算) -> Instances(雲實例) -> Launch Instance(發動雲實例) :::     #### 8. 檢查網路拓樸並配對 floating IP 到虛擬機的虛擬內網 IP :::info Project(專案) -> Network(網路) -> Network Topology(網路拓撲) :::  :::info Project(專案) -> Network(網路) -> Floating IPs(浮動 IP) -> 找到剛才產生的 floating IP -> Associate(連結) :::   #### 9.測試連線虛擬機 ##### 1.從cirrOS連外網 :::info Project(專案) -> Compute(運算) -> Instances(雲實例) -> s1094845(雲實例名稱) -> 主控台 :::  :::success **預設使用者** : cirros **密碼** : gocubsgo :::  ##### 2.使用教室電腦cmd連線cirrOS  ##### 3.使用ubuntu server h01連線cirrOS  ## 4. 檢查 1. 在實驗伺服器(IP為規定的第一組IP)安裝OpenStack並建置一個CirrOS虛擬機(綁對外IP為伺服器第二組IP) *  3. 虛擬機建立hostname改為學號,IP設定正確並確認網路可通 *  ## 5. 結論 在安裝過程中遇到很多問題,如建立外網時,我們一開始直接新增網路,最後才發現要在現有public上直接新增子網路,而後面還發現Demo沒有在public建立子網路的權限,所以後面都是使用admin來做修改。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up