=== FreeBSD as a Tier 1 cloud-init Platform

Links: +
link:https://cloud-init.io/[cloud-init Website] URL: link:https://cloud-init.io/[] +
link:https://cloudinit.readthedocs.io/en/latest/[cloud-init Documentation] URL: link:https://cloudinit.readthedocs.io/en/latest/[] +
link:https://github.com/canonical/cloud-init/blob/main/WIP-ONGOING-REFACTORIZATION.rst[cloud-init ongoing refactorization] URL: link:https://github.com/canonical/cloud-init/blob/main/WIP-ONGOING-REFACTORIZATION.rst[]

Contact: Mina Galić <freebsd@igalic.co>

cloud-init is the standard way of provisioning servers in the cloud.
Unfortunately, cloud-init support for operating systems other than Linux has been rather poor, and the lack of cloud-init support on FreeBSD is a hindrance to cloud providers who want to offer FreeBSD as a Tier 1 platform.
To remedy the situation, this project aims to bring FreeBSD cloud-init support on par with Linux support.
The broader plan is to lift support across all BSDs.

This quarter has been going quite slowly, but I have managed to deliver a new milestone:

- Ephemeral Networking classes have been rewritten and made platform independent.
These are used by several cloud providers to initialize a temporary network before retrieving the actual configuration.

- cloud-init has been successfully tested on Vultr.
I hope that with the next release I can convince Vultr to switch their FreeBSD images to cloud-init.

In addition to that, I have expanded rsyslog support for BSD.
I've also added an rc script for cloud-init's ds-identify, which should make zero-configuration setups orders of magnitude faster:
ds-identify runs first and very quickly guesses the cloud provider the machine is running on.
cloud-init then uses only that guess, instead of iterating and failing through a full list of all possible cloud providers.
People building custom images can easily disable this (by removing ``/usr/local/etc/rc.d/dsidentify``), and providing a specific listing themselves, shave off a few more milliseconds from their boot.

The next steps will be to keep hacking away at the network refactoring tasks, and to add LXD support for FreeBSD, so it can be included in CI tests.
The latter will include work on link:https://github.com/canonical/lxd/pull/11761[LXD], as well as work on the link:https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271793[FreeBSD virtio subsystem].

As always, I highly welcome early testers to checkout package:net/cloud-init-devel[], and report bugs.
Since the last report, cloud-init's bug tracker has moved from Launchpad to GitHub, so this might reduce some friction.

Sponsor: The FreeBSD Foundation
