坑记录
去官网下载了22.04.05系统进行安装并配置网络,
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:
dhcp4: true
version: 2
发现默认是存在/etc/netplan/50-cloud-init.yaml这个文件,于是就在这个上面进行了配置,netplan apply之后能正常生效,后面经过重启服务器后发现无法连接,再次查看网卡配置文件变回了最初的样子,配好的ip也消失了,询问了豆包,百度了一圈也没找到问题所在,最后翻译了下这个文件到注释部分才找到关键原因:
1. # This file is generated from information provided by the datasource. Changes
此注释表明 /etc/netplan/50-cloud-init.yaml
文件是由 cloud-init
根据数据源提供的信息自动生成的。数据源可以是云平台的元数据服务、本地配置文件等,cloud-init
会从这些数据源获取网络配置信息并生成对应的 netplan
配置文件。
2. # to it will not persist across an instance reboot. To disable cloud-init's
这意味着对该文件所做的修改在实例重启后不会保留。因为每次系统重启时,cloud-init
会重新从数据源获取信息并重新生成该文件,从而覆盖你手动做出的修改。
3. # network configuration capabilities, write a file
要禁用 cloud-init
的网络配置功能,需要创建一个特定的配置文件。
4. # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
具体做法是在 /etc/cloud/cloud.cfg.d
目录下创建一个名为 99-disable-network-config.cfg
的文件。
5. # network: {config: disabled}
在 99-disable-network-config.cfg
文件中,需要写入 network: {config: disabled}
这一内容。这行配置会告知 cloud-init
不要再对网络配置进行管理,这样你就可以自由地手动修改 /etc/netplan
目录下的其他配置文件,并且这些修改在系统重启后会得以保留。
解决办法就是在99-disable-network-config.cfg文件中加disable字段:
vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
network: {config: disabled}
对比了下22.04.4系统,netplan目录下默认还是只有00-installer-config.yaml,这个改完还是正常的重启能生效