Ubuntu--netplan下网络配置yaml文件优先级

/etc/netplan/yaml文件优先级问题

  1. 字典顺序规则

    • Netplan 会按照文件名的字母顺序加载配置文件。
    • 例如,01-netcfg.yaml 的文件名在字典顺序上排在 50-cloud-init.yaml 之前,因此 01-netcfg.yaml 会先被加载,50-cloud-init.yaml 会后被加载。
  2. 覆盖机制

    • 如果两个文件中存在相同的配置项,后加载的文件会覆盖先加载的文件。
    • 例如:
      • 如果 01-netcfg.yaml 中定义了 eth0 的 IP 地址,而 50-cloud-init.yaml 中也定义了 eth0 的 IP 地址,那么 50-cloud-init.yaml 中的配置会覆盖 01-netcfg.yaml 中的配置。
  3. 新建文件的命名

    • 为了让新建的文件优先级更高,你可以将文件名命名为字典顺序上排在 50-cloud-init.yaml 之前的名称,例如 01-netcfg.yaml10-static-config.yaml
    • 这样,Netplan 会先加载你的自定义配置文件,然后再加载 50-cloud-init.yaml,确保你的配置不会被覆盖。

示例

假设有以下两个文件:

01-netcfg.yaml
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
50-cloud-init.yaml
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: yes
最终生效的配置

Netplan 会合并这两个文件,最终的配置为:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: yes
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
  • 50-cloud-init.yaml 中的 dhcp4: yes 会覆盖 01-netcfg.yaml 中的 dhcp4: no
  • 01-netcfg.yaml 中的 addressesgateway4 配置会被保留,因为 50-cloud-init.yaml 中没有定义这些字段。

如何确保新建文件的优先级更高?

  1. 文件名命名规则

    • 将新建的文件命名为字典顺序上排在 50-cloud-init.yaml 之前的名称,例如:
      • 01-netcfg.yaml
      • 10-static-config.yaml
      • 00-custom-config.yaml
  2. 避免冲突

    • 如果你希望完全避免 50-cloud-init.yaml 的影响,可以禁用 cloud-init 的网络配置功能(见下文)。

禁用 cloud-init 的网络配置(可选)

如果你不希望 cloud-init 干扰你的网络配置,可以禁用它:

  1. 创建一个新的配置文件:

    sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
    
  2. 添加以下内容:

    network: {config: disabled}
    
  3. 删除 50-cloud-init.yaml 文件:

    sudo rm /etc/netplan/50-cloud-init.yaml
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值