---
# System prepended metadata

title: 安裝OpenStack並建置虛擬機
tags: [雲端技術實務]

---

###### tags: `雲端技術實務`
# 安裝OpenStack並建置虛擬機

## 緣由

   此為李龍盛老師的雲端技術實務課程的HW04。
## 系統簡介

   在實驗伺服器(IP為規定的第一組IP)安裝OpenStack並建置一個CirrOS虛擬機(綁對外IP為伺服器第二組IP)。
## 安裝過程

### 一、建立stack並下載OpenStack相關套件
```yaml=
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
sudo -u stack -i
git clone https://opendev.org/openstack/devstack
cd devstack
```
### 二、創建local.conf
```yaml=
sudo nano local.conf
```
#### 打以下文字
```
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
```

### 三、執行 stack .sh
```yaml=
./stack.sh
```
#### 須等約莫50分鐘
![](https://hackmd.io/_uploads/rJGgpTdN3.png)

![](https://hackmd.io/_uploads/Sy9Z66ONh.png)

### 四、進入OpenStack

![](https://hackmd.io/_uploads/Bk1v3gq42.png)


### 五、網路設定
1.刪除現有private、shared網路

2.在現有public上，直接新增一子網路

![](https://hackmd.io/_uploads/ByJJrb94h.png)

![](https://hackmd.io/_uploads/Sy6VrW5V2.png)




3.輸入以下指令(橋接虛擬網卡到實體網卡)
```
sudo microstack.ovs-vsctl add-port br-ex 實體網卡名稱 //把虛擬網卡橋接到實體網卡
sudo ip addr flush dev 實體網卡名稱 //清掉實體網卡的 IP，避免跟虛擬網卡 IP 重複
sudo ip addr add 實體網卡IP/網段數字 dev br-ex //把原本實體網卡的 IP 位址加到虛擬網卡上
sudo ip link set br-ex up //啟用虛擬網卡
```
```yaml=
sudo ovs-vsctl add-port br-ex eno1 #可能需安裝ovs-vsctl
sudo ip addr flush dev eno1  #會斷網
sudo ip addr add 10.2.200.196/25 dev br-ex
sudo ip link set br-ex up
sudo route add default gw 10.2.200.239 #route command可能不存在
```
4.修改00-installer-config.yaml
```yaml=
sudo nano /etc/netplan/00-installer-config.yaml   
```
```
network:
  ethernets:
    br-ex:
      dhcp4: false
      addresses:
        - 10.2.200.196/25
      gateway4: 10.2.200.239
      nameservers:
        addresses: [140.130.81.11, 8.8.8.8]
    eno1:
      dhcp4: false
    eno2:
      dhcp4: false
  version: 2
```
更新網路配置： sudo netplan try

此時網路會通

![](https://hackmd.io/_uploads/B1UBTRFE2.png)

5.再到openstack另外新建一網路(內)

![](https://hackmd.io/_uploads/SyeV4bqN3.png)
![](https://hackmd.io/_uploads/ryVuNZ5N2.png)
![](https://hackmd.io/_uploads/Hk6dV-cV2.png)


6.調整安全性群組

![](https://hackmd.io/_uploads/BkPC1Z5Vh.png)
![](https://hackmd.io/_uploads/rkHylZ9En.png)



### 六、新增可用的浮動 IP

分配IP到專案->分配IP

![](https://hackmd.io/_uploads/Hy60ie5E2.png)

### 七、新增 SSH key pairs
![](https://hackmd.io/_uploads/rkmE-xcVn.png)

### 八、建立instance

![](https://hackmd.io/_uploads/H1akrRKVh.png)

![](https://hackmd.io/_uploads/r1olSRFV3.png)

![](https://hackmd.io/_uploads/HyHZH0F4n.png)

![](https://hackmd.io/_uploads/SkGGHRKNn.png)

![](https://hackmd.io/_uploads/Bybueb9Vn.png)

### 九、檢查網路拓樸並鏈結floating IP及cirrOS
public與shared需使用router串接，而instance需與shared串接（不可與public串接）
![](https://hackmd.io/_uploads/B1LHzeq4h.png)


![](https://hackmd.io/_uploads/rkSb30t42.png)


### 十、連線
#### 1.從cirrOS連外網

##### 1082925
![](https://hackmd.io/_uploads/ryV8BvkB3.png)


#### 2.使用教室電腦cmd連線cirrOS

##### 1082925
![](https://hackmd.io/_uploads/By6DQDkBh.png)

#### 3.使用ubuntu server h06連線cirrOS

##### 1082925
![](https://hackmd.io/_uploads/Byt-4vySh.png)



## 結論

這次作業的比較難，需要了解的概念比較多，在安裝openstack的部分遇到了難關，不過重灌之後重載就沒事了，幸好我的組員很罩，感謝他們的幫忙。

## Reference

https://hackmd.io/@zlQHp-D8R3uG9eJTFh2iVA/Sk5EFQfD9

https://docs.openstack.org/devstack/latest/

https://hackmd.io/@109213067/BkECVRMbn#%E6%93%8D%E4%BD%9C-Openstack

https://hackmd.io/@Chiao-Juan/SJtliJNUu