如何正確修改Ubuntu的50-cloud-init.yaml組態值

如何正確修改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/

2 則留言:

  1. 請問這個問題是出現在ubuntu那一個版本上?
    24.1?

    回覆刪除
    回覆
    1. Ubuntu 22.04.5 LTS。
      再補充一下:
      之前 VM 我自己安裝,沒啟用 Cloud Init 功能,因此得到 00-installer-config.yaml 的組態。
      文章裡的 VM 是同事安裝,啟用 Cloud Init 功能,因此得到 50-cloud-init.yaml 的組態。

      刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。