-
Notifications
You must be signed in to change notification settings - Fork 66
Platform Request: Proxmox #736
Description
In order to implement support for a new cloud platform in Fedora CoreOS, we need to know several things about the platform. Please try to answer as many questions as you can.
- Why is the platform important? Who uses it?
Proxmox Virtual Environment is an open-source server virtualization management platform. It is a Debian-based Linux distribution with a modified Ubuntu LTS kernel and allows deployment and management of virtual machines (KVM) and containers (LXC).
Proxmox is used by various VPS providers. And it is adopted in homelabs or small business private servers.
- What is the official name of the platform? Is there a short name that's commonly used in client API implementations?
Proxmox VE; short PVE
- How can the OS retrieve instance userdata? What happens if no userdata is provided?
In an environment where you own the hypervisor, you could easily use the installation ISO and perform the install process using a console. This requires some sort manual deployment. In a private environment you are in control of the network, and you can use a DHCP server for instance.
On the contrary, in an environment that is not in your control, usually a cloud-init metadata is provided by exposing a /dev/sr0 device that, if mounted, contains 3 files: meta-data network-config user-data. The first one contains the instance-id, the second one contains network configuration (see below) and the last one can contains the SSH key of the root user.
If using a raw image, and userdata is not provided, the VM is simply unconfigured: no network address if there is not a DHCP (pretty usual in a VPS provider environment), no default user.
- Does the platform provide a way to configure SSH keys for the instance? How can the OS retrieve them? What happens if none are provided?
Yes, as said before, the metadata is contained in the files in such drive.
- How can the OS retrieve network configuration? Is DHCP sufficient, or is there some other network-accessible metadata service?
The point is this: what if no DHCP is available? However, the network config can be retrieved in the network-config file in this form:
version: 1
config:
- type: physical
name: eth0
mac_address: 'ab:cd:ef:11:22:33'
subnets:
- type: static
address: '1.2.3.4'
netmask: '255.255.255.0'
gateway: '1.2.3.1'
- type: nameserver
address:
- '8.8.8.8'
search:
- 'domain.com'
- In particular, how can the OS retrieve the system hostname?
It is contained in the user-data file:
#cloud-config
hostname: hostname
...
- Does the platform require the OS to have a specific console configuration?
No
- Is there a mechanism for the OS to report to the platform that it has successfully booted? Is the mechanism required?
I'm not pretty sure (BTW no mechanism is required), it uses KVM and it can rely on qemu guest agent.
- Does the platform have an agent that runs inside the instance? Is it required? What does it do? What language is it implemented in, and where is the source code repository?
It is not required, btw it can use qemu guest agent.
- How are VM images uploaded to the platform and published to other users? Is there an API? What disk image format is expected?
KVM supports: QCOW2, RAW, VHD, VMDK
- Are there any other platform quirks we should know about?