← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 2011298] Re: network config can't override kernel command line arguments

 

As you say, it's kind of a fringe case for us. Cloud-init expects there
to be an authoritative source for network configuration. Most clouds
have an link-local metadata service that cloud-init can connect to
before networking has come up to get the networking config. In the
absence of this or a config on disk, it'll default to DHCP on eth0 (or
similar) interface. Beyond this, it is expected that users can configure
things themselves.

Note that after first boot, if you don't want cloud-init involved at all with the network, you may want to also set network configuration disabled like so:
https://cloudinit.readthedocs.io/en/latest/reference/network-config.html#disabling-network-configuration

I'm going to close this as Invalid since it works as intended, but if we
find a stronger use case, we can always re-open it.

** Changed in: cloud-init
       Status: Incomplete => Invalid

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to cloud-init.
https://bugs.launchpad.net/bugs/2011298

Title:
  network config can't override kernel command line arguments

Status in cloud-init:
  Invalid

Bug description:
  This isn't really a bug, it's more of a missing functionality.

  The quick description is that if you specify the network configuration
  by a kernel command line parameter (`ip=blahblahblah`), there doesn't
  appear to be a way to override it by defining a different network
  setup in cloud-init. The kernel command line will always take
  precedence no matter what you define in `meta-data` or `user-data`.

  This is the conclusion I drew both from the documentation, as well as
  by looking at the source on GitHub. The kernel command line has
  absolute priority and can't be overriden. I found a workaround, by
  writing the config file (`/etc/netplan/50-cloud-init.yml` in my case)
  directly through "write_files" and then executing "netplan apply" in
  "runcmd". This does what I want, but it doesn't look nice.

  Perhaps you're wondering why I need this. I boot ubuntu MAAS images
  over network. In some data centers DHCP isn't available and at the
  same time I need to assign more than one IP address to the system,
  and/or configure bonding. So the bootloader constructs the kernel
  command line, the machine boots, but only has one ethernet interface
  configured, with one IP address. I can't remove the kernel command
  line argument, as then cloud-init doesn't know how to configure the
  network in order to download the `user-data` / `meta-data`.

  Please consider providing an alternative approach to the workaround I
  explained above.

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-init/+bug/2011298/+subscriptions



References