# Openstack 安裝流程與報告
## 緣由
進行 Openstack 的安裝流程實作。
## 系統簡介
- 伺服器 OS:Ubuntu 22.04 LTS Server version
- Cloud Image:CirrOS
- 伺服器的 IP: 10.2.200.157
OpenStack 是一個自由、開源的雲端運算平台。它主要作為基礎設施即服務部署在公用雲和私有雲中,提供虛擬伺服器和其他資源給使用者使用。該軟體平台由相互關聯的組件組成,控制著整個資料中心內不同的廠商的處理器、儲存和網路資源的硬體池。使用者可以通過基於網路的儀器盤、命令列工具或RESTful網路服務來管理。
## 安裝過程
### 安裝 DevStack
1. (**X**)檢查更新 ubuntu
```javascript=
sudo apt-get update
sudo apt-get upgrade -y
```
2. 建立特權使用者:stack
```javascript=
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 使用者
```javascript=
sudo -u stack -i
```

4. 安裝 git 套件 && 下載 github 上的 devstack
```javascript=
sudo apt-get install -y git
```
```javascript=
git clone https://opendev.org/openstack/devstack
```

5. 查看 IP 地址
```javascript=
ip addr
```

6. 切換到 devstack 文件夾中 && 建立 local.conf 文件
```javascript=
cd devstack
```
```javascript=
sudo nano local.conf
```
文件內容如下:
```javascript=
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
```
7. 開始安裝 openstack
```javascript=
./stack.sh
```
### OpenStack
1. 瀏覽器進入 http://10.2.200.157/dashboard 到登入介面
- username -> admin
- password -> secret
### 建立虛擬機
1. 建立虛擬外網(需跟實體內網網段一樣)
> Admin -> Network -> Networks -> Create Network


2. 橋接虛擬網卡到實體網卡
```javascript=
sudo ovs-vsctl add-port br-ex eno1 //把虛擬網卡橋接到實體網卡
sudo ip addr flush dev eno1 //清掉實體網卡的 IP,避免跟虛擬網卡 IP 重複
```
到 server 修改 00-installer-config.yaml
修改如下:
```javascript=
network:
renderer: networkd
ethernets:
br-ex:
dhcp4: no
addresses: [ 10.2.200.157/25 ]
gateway4: 10.2.200.239
nameservers:
search: [ ]
addresses: [8.8.8.8,8.8.4.4]
eno1:
dhcp4: no
eno2:
dhcp4: true
version: 2
```
套用網路介面設定檔
```javascript=
sudo netplan try
```
接著繼續
```javascript=
sudo ip addr add 10.2.200.157/25 dev br-ex //把原本實體網卡的 IP 位址加到虛擬網卡上
sudo ip link set br-ex up //啟用虛擬網卡
```
3. 虛擬內網(預設)
> Admin -> Network -> Networks

4. 建立虛擬 router 連接虛擬內網和外網
> Admin -> Network -> Routers -> Create Router

建立對外閘道

5. 產生一個 floating IP
> Admin -> Network -> Floating IPs -> Allocate IP To Project

6. 在虛擬內網建立虛擬機
> Project -> Compute -> Instances -> Launch Instance

7. 配對 floating IP 到虛擬機的虛擬內網 IP
> Project -> Network -> Floating IPs -> 找到剛才產生的 floating IP -> Associate

8. 測試連線虛擬機
> 預設使用者 -> cirros
> 密碼 -> gocubsgo

9. ping

10. 虛擬機建立hostname改為學號




11. ping google

:::spoiler **出現問題** -> ping: bad address 'www.google.com.tw'
```javascript=
sudo vi /etc/resolv.conf
```

reference :
https://askubuntu.com/questions/886359/ping-8-8-8-8-works-but-ping-www-google-com-doesnt
:::
## 結論
安裝openstack的過程是具有挑戰性的任務,從一開始對於Linux的熟悉度就足以阻擋我們,在不斷嘗試的過程中,我們學到了如何配置和管理openstack的服務,對於linux系統和openstack有了更深入的了解。
## 參考
- https://docs.openstack.org/devstack/latest/
- https://hackmd.io/@109213067/BkECVRMbn#%E5%AF%A6%E4%BD%9C