=== OpenStack on FreeBSD

Links: +
link:https://www.openstack.org/[OpenStack] URL: link:https://www.openstack.org/[https://www.openstack.org] +
link:https://github.com/openstack-on-freebsd[OpenStack on FreeBSD] URL: link:https://github.com/openstack-on-freebsd[https://github.com/openstack-on-freebsd] +

Contact: Chih-Hsin Chang <starbops@hey.com> +
Contact: Li-Wen Hsu <lwhsu@FreeBSD.org>

OpenStack is an open-source cloud operating system for different resource types like virtual and bare-metal machines.
Users can spawn FreeBSD instances on the open cloud platform, but it is not currently possible to run the OpenStack control plane on FreeBSD hosts.
This project aims to port key OpenStack components so that FreeBSD can function as an OpenStack host.

In 2022 Q4, we have almost completed the porting work regarding the crucial OpenStack components.
Most of the components/services composing an essential OpenStack cluster are now able to run on FreeBSD hosts, including:

* Keystone (identity service)
** keystone server
* Glance (image service)
** glance-api
* Placement (resource tracking and inventory service)
** placement-api
* Neutron (networking service)
** neutron-server
** neutron-metadata-agent
** neutron-dhcp-agent
** neutron-openvswitch-agent
* Nova (compute service)
** nova-api
** nova-conductor
** nova-scheduler
** nova-compute
** nova-novncproxy

The step-by-step documents for constructing a POC can be found link:https://github.com/openstack-on-freebsd/docs[in the `docs` repository].

In its design, most of the OpenStack components provide an abstraction layer for the underlying implementations.
For nova, we choose the combination of the `libvirt` driver with the `bhyve` virtualization type enabled.
For neutron, it is the `openvswitch` mechanism driver.
We solved several runtime dependencies and porting issues against the Libvirt, bhyve, and Open vSwitch combinations with minimal effort.
We still have lots of work to undertake to make the changes back to OpenStack upstream.

TODOs include:

* Develop a proper alternative execution path in the `oslo_privsep` module for FreeBSD environments
* Develop a new virtualization type, `bhyve`, for nova-compute's `libvirt` driver
* Develop the IP library for FreeBSD under `neutron/agent/freebsd`

In the first few weeks of 2023, we will focus on breaking through the last mile of the instance spawn path and wrapping up the documentation regarding POC site construction.
We will also try rebasing the porting work to the master branch of OpenStack (now Xena).

People interested in helping with the project can first help check the documentation by following the installation guide.

Sponsor: The FreeBSD Foundation
