← Back to team overview

debcrafters-packages team mailing list archive

[Bug 2093164] Re: initramfs-tools generates deprecated netplan config gateway4 and gateway6

 

Hi Nick,

Thanks for the feedback and keep sponsoring this.

Yes, the actual routes created are the same, this PR for cloud-init fixes the netplan change:
https://github.com/canonical/cloud-init/pull/1794

In the unittest: 
https://github.com/canonical/cloud-init/pull/1794/files#diff-5f2dee2a7c430ef84faae149c70e4269685133db03a62c3bca9f3f295cb44ac6

"gateway{4,6}" is replaced directly by "routes", and used to config the
network route.


Regarding the test case:
initramfs-tools only generates netplan config. After booting up the system, cloud-init will be executed by systemd and then cloud-init will read the netplan config.

If we need to check the return value from cloud-init in the test case,
we might need to include cloud-init package, but I think it might not be
proper to do this in initramfs-tools.

-- 
You received this bug notification because you are a member of
Debcrafters packages, which is subscribed to initramfs-tools in Ubuntu.
https://bugs.launchpad.net/bugs/2093164

Title:
  initramfs-tools generates deprecated netplan config gateway4 and
  gateway6

Status in initramfs-tools package in Ubuntu:
  Fix Released
Status in initramfs-tools source package in Focal:
  Triaged
Status in initramfs-tools source package in Jammy:
  Triaged
Status in initramfs-tools source package in Noble:
  In Progress
Status in initramfs-tools source package in Oracular:
  In Progress
Status in initramfs-tools source package in Plucky:
  Fix Released

Bug description:
  [Impact]

  According to netplan doc
  https://netplan.readthedocs.io/en/latest/netplan-yaml

  gateway4/gateway6 are deprecated and the first version deprecates these fields is 0.103,
  it should use "routes:" instead.

  In scripts/functions:_render_netplan, it still generates the
  deprecated fields in /run/netplan/xxx.yaml:

   if [ -n "$gateway4" ]; then
    echo "      gateway4: \"$gateway4\""
   fi
   if [ -n "$gateway6" ]; then
    echo "      gateway6: \"$gateway6\""
   fi

  Then casper copies this config to root filesystem and later on used by cloud-init:
  https://git.launchpad.net/ubuntu/+source/casper/tree/scripts/casper-bottom/58server_network?h=applied/ubuntu/noble-updates#n47

  In this case, cloud-init returns 2 (success with recoverable errors)
  rather than '0' (success)

  We should modify these fields to use "routes:" based on netplan doc:
  https://netplan.readthedocs.io/en/latest/netplan-yaml/#default-routes

  [Test Case]

  To verify if it generates the correct netplan config, we can specify
  ip related config in kernel cmdline in grub menu and check the yaml
  file in /run/netplan/

  Steps to reproduce the netplan config:

  1. launch a test VM in lxd
  2. go into grub menu
  3. pass ip related info to kernel cmdline, e.g.
  ip=10.194.146.91::10.194.146.1:255.255.255.0::::10.194.146.1
  4. boot into system and check /run/netplan/xxx.yaml

  Originally, it generates something like:
  cat /run/netplan/enp5s0.yaml
  network:
    version: 2
    ethernets:
      enp5s0:
        addresses:
          - "10.194.146.91/24"
        gateway4: "10.194.146.1"
        nameservers:
          addresses: ["10.194.146.1"]

  After the patch, it generates something like:
  cat /run/netplan/enp5s0.yaml
  network:
    version: 2
    ethernets:
      enp5s0:
        addresses:
          - "10.194.146.91/24"
        routes:
          - to: default
            via: "10.194.146.1"
        nameservers:
          addresses: ["10.194.146.1"]

  [Where problems could occur]

  This patch follows the netplan doc to use "routes:" for default gateway,
  so network connectivity will be impacted on regressions. We should ensure that networking and routing works correctly, e.g. with a basic networking smoke test.

  [Other Info]
  https://bugs.launchpad.net/cloud-init/+bug/1992512

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/2093164/+subscriptions