如何正確修改Ubuntu的50-cloud-init.yaml組態值
事情是這樣的,新申請的 Ubuntu VM 需要修改些 IP 相關組態,例如,DNS Server 或 Search Domain,結果發現,在 /etc/netplan
下的 00-installer-config.yaml
不見了,取而代之是一個 50-cloud-init.yaml
的組態檔。
cat /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
ens33:
addresses:
- 192.168.0.25/24
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
search: []
routes:
- to: default
via: 192.168.0.1
version: 2
用 cat
會看到幾行重要的註解內容。直接對 50-cloud-init.yaml
的進行修改,在重開機後會覆寫回來。試了註解裡的 99-disable-network-config.cfg
沒什麼效果,對 50-cloud-init.yaml
的修改在重開機後還是會被覆寫回來。
網路上找了試了一圈,除了一個刪除 Cloud Init 還沒有嘗試外,在重開機後都沒有真的成功(含註解裡寫的 99-disable-network-config.cfg
)。本想做最後一個的刪除嘗試,但突然靈光一閃,它應該有個 Default 值的檔案拿來對照,並且在重開機時去覆寫 50-cloud-init.yaml
。
也是託前面註解的福,很快在 /etc/cloud/cloud.cfg.d/
看到一個 90-installer-network.cfg
內容和 50-cloud-init.yaml
一模一樣。
$ ll /etc/cloud/cloud.cfg.d/
total 36
drwxr-xr-x 2 root root 4096 Jul 21 02:10 ./
drwxr-xr-x 5 root root 4096 Jul 21 02:10 ../
-rw-r--r-- 1 root root 2071 Jul 3 2024 05_logging.cfg
-rw-r--r-- 1 root root 28 May 29 03:00 20-disable-cc-dpkg-grub.cfg
-rw-r--r-- 1 root root 333 Jul 21 02:10 90_dpkg.cfg
-rw------- 1 root root 348 Jul 18 03:44 90-installer-network.cfg
-rw------- 1 root root 538 May 29 03:00 99-installer.cfg
-rw-r--r-- 1 root root 35 May 29 02:56 curtin-preserve-sources.cfg
-rw-r--r-- 1 root root 167 Jul 3 2024 README
$ sudo cat /etc/cloud/cloud.cfg.d/90-installer-network.cfg
network:
ethernets:
ens33:
addresses:
- 192.168.0.25/24
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
search: []
routes:
- to: default
via: 192.168.0.1
version: 2
以下動作,是 VM 有先做快照之後才進行的。因此不怕網路壞掉,連SSH都無連線。
感覺 90-installer-network.cfg
是可以下手試試的地方,修改 DNS Server 及 Search Domain 試試:
$ sudo vim /etc/cloud/cloud.cfg.d/90-installer-network.cfg
network:
ethernets:
ens33:
addresses:
- 192.168.0.25/24
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
- 208.67.222.222
- 94.140.14.14
search: [kkbruce.net]
routes:
- to: default
via: 192.168.0.1
version: 2
重開機之後 90-installer-network.cfg
的值被覆寫到 50-cloud-init.yaml
,而且開機後也確實是我想要的 IP 組態內容,能一次就試對,開心!
ovsdb-server.service 錯誤
題外話,如果你在下 sudo netplan apply
有錯誤的話,那是 Ubuntu Server 最近版本有 Bug,例如:
$ sudo netplan apply
WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running.
解決辦法也不難,補裝安裝 openvswitch-switch
套件就行了:
sudo apt update && sudo apt upgrade
sudo apt install -y openvswitch-switch
參考:https://documentation.ubuntu.com/server/explanation/networking/configuring-networks/
請問這個問題是出現在ubuntu那一個版本上?
回覆刪除24.1?
Ubuntu 22.04.5 LTS。
刪除再補充一下:
之前 VM 我自己安裝,沒啟用 Cloud Init 功能,因此得到 00-installer-config.yaml 的組態。
文章裡的 VM 是同事安裝,啟用 Cloud Init 功能,因此得到 50-cloud-init.yaml 的組態。