天天看點

用 config drive 配置網絡 - 每天5分鐘玩轉 OpenStack(173)

上一節最後問了大家一個問題:如果 subnet 沒有開 DHCP,會是怎樣一個情況?

在其他條件不變的情況下,cloud-init 依然會完成那 3 個步驟,也就是說網卡還是會被配置成 dhcp 模式,隻是最後網卡沒辦法獲得 IP 而已。

不開 DHCP 也是一個常見的場景,為了讓 instance 的網卡在這種情況下也能夠被正确配置,我們需要借助 config drive,下面開始實踐。

在計算節點 /etc/nova/nova.conf 中需要添加一個配置,然後重新開機 nova-compute 服務。

[DEFAULT]

flat_injected = True

flat_injected 的作用是讓 config drive 能夠在 instance 啟動時将網絡配置資訊動态注入到作業系統中。

目前網絡的 DHCP 已經關閉。

用 config drive 配置網絡 - 每天5分鐘玩轉 OpenStack(173)

instance 部署時指定使用 config drive。

用 config drive 配置網絡 - 每天5分鐘玩轉 OpenStack(173)

Neutron 為 instance 配置設定的 IP 為 <code>18.18.18.5</code>。

用 config drive 配置網絡 - 每天5分鐘玩轉 OpenStack(173)

instance 啟動後登入系統,<code>ip a</code> 驗證 IP 已經成功配置,說明 config drive 起作用了。

用 config drive 配置網絡 - 每天5分鐘玩轉 OpenStack(173)

重要的是弄懂 <code>18.18.18.5</code> 這個 IP 是如何配置上去的。打開 /var/log/cloud-init.log,分析如下:

用 config drive 配置網絡 - 每天5分鐘玩轉 OpenStack(173)

① 掃描出 instance 中的所有網卡,這一步與不使用 config drive 的情況完全一樣。

② 擷取該網卡的配置資訊。 日志顯示配置資訊是從 <code>ds</code> 擷取。ds 是 datasource 的縮寫,在這裡指的就是 config drive。在不使用 config drive 的情況下采用的是 <code>fallback</code> 配置。網卡配置資訊記錄在 config drive openstack/latest/network_data.json 檔案裡,内容如下:

用 config drive 配置網絡 - 每天5分鐘玩轉 OpenStack(173)

③ 将配置資訊寫入 /etc/network/interfaces.d/50-cloud-init.cfg,内容為:

用 config drive 配置網絡 - 每天5分鐘玩轉 OpenStack(173)

可以看到 IP 以 <code>static</code> 方式配置。

總結一下:

1. 在沒有使用 config drive 的情況下,cloud-init 隻會配置第一塊網卡,且設定為 dhcp 模式,是以:

① 如果 instance 隻有一塊網卡,且啟用了 DHCP,網卡能夠被正常拉起。

② 如果 instance 有多塊網卡,第一塊會嘗試以 dhcp 方式拉起,其他網卡不作處理。

2. 使用 config drive 的情況下,無論是否啟用 DHCP,所有網卡都能被正确配置且成功拉起(如果 dhcp 網卡 &gt;= 2,CentOS 還是有問題,可能跟目前所用的 cloud-init 版本較低有關)。

3. 如果可能,盡量使用 config drive。

讨論完網絡配置這個最重要的主題,下一節我們來看看 cloud-init 的其他典型應用:設定 hostanme,設定使用者初始密碼,安裝軟體等。

用 config drive 配置網絡 - 每天5分鐘玩轉 OpenStack(173)

繼續閱讀