-
Notifications
You must be signed in to change notification settings - Fork 64
Description
On Fedora CoreOS, Ignition performs the first-boot configuration starting from a running vanilla image and fetching the configuration to apply.
In some cases such configuration is coming from a network resource (e.g. a link-local metadata service, or a cloud bucket, or a cluster service like OpenShift MachineConfigServer).
This works fine in most cases, specifically on all platforms where there is a working DHCP and NetworkManager is able to configure the initramfs before Ignition runs.
There are however a few platforms where a machine is expected to auto-configure its own network using some other hints (i.e. not via DHCP):
- DigitalOcean does not provide DHCP for official images (no cloud agents: digitalocean #71 (comment)), network configuration is provided by an HTTP service on a link-local address.
- IBM Cloud Classic does not provide DHCP, network configuration is provided via a config-drive (see [WIP] providers: add experimental initrd network bootstrap afterburn#362).
- OpenNebula may not provide DHCP, in which case network configuration is provided via a config-drive (see Add OpenNebula provider afterburn#478).
- OpenStack may not provide DHCP, in which case network configuration is provided via a config-drive (see CoreOS does NOT configure network form configdrive network_data.json bugs#2645).
- Packet provides DHCP for the machine's public IPv4 address only, and exposes other details (e.g. bonding) via the metadata service.
- VMware may not provide DHCP, in which case we are currently using an Afterburn-specific guestinfo property (see https://github.com/coreos/afterburn/blob/master/docs/usage/initrd-network-cmdline.md#vmware).
- (Possibly some more platforms, likely derived from OpenStack config-drive)
In Container Linux, Afterburn runs in the initramfs, queries the metadata service, and writes networkd units for use by the real root filesystem. (On Packet they're written into /etc on first boot, and on DO they're written into /run on every boot.). This however introduces a lot of other troubles for the normal Ignition flow, like coreos/bugs#2205, and in general cannot work for cluster services like MachineConfigServer.
We'll need better functionality in Fedora CoreOS, so that NetworkManager in initramfs can properly configure the network in those cases, before Ignition runs. We should also account for transitioning such configuration to the real root (with a teardown in-between at the time of root-pivoting).
EDIT(lucab): reworded for clarity and expanded to reference all platforms where we have the same kind of troubles.