feat(vm-provision): provision FreeBSD and OpenBSD guests
CI / test (3.10) (push) Successful in 34s
CI / test (3.11) (push) Successful in 32s
CI / test (3.12) (push) Successful in 36s
CI / test (3.10) (pull_request) Successful in 34s
CI / test (3.11) (pull_request) Successful in 32s
CI / test (3.12) (pull_request) Successful in 35s
CI / test (3.10) (push) Successful in 34s
CI / test (3.11) (push) Successful in 32s
CI / test (3.12) (push) Successful in 36s
CI / test (3.10) (pull_request) Successful in 34s
CI / test (3.11) (pull_request) Successful in 32s
CI / test (3.12) (pull_request) Successful in 35s
create_vm_from_cloud_init(guest_os=...) with GUEST_AGENTS from napalm-device-types 3.0 (QEMU_GUEST_AGENTS: Linux, FreeBSD, OpenBSD). An unknown guest_os is refused before anything is created. Found on FreeBSD 15.1 and OpenBSD 7.9 cloud images (NetOrk/netork#793): - OS type `other` for the BSDs. OpenBSD's qemu-ga only works over ISA serial, and only as the second port: the image keeps its console on com0, so the VM gets `serial0: socket` next to `agent: 1,type=isa`. - A BSD guest gets a network-config v2 snippet of its own (`cicustom: user=...,network=...`, MAC read back from net0). FreeBSD's nuageinit fails on the v1 Proxmox generates and then skips runcmd, which starts the guest agent. Linux keeps Proxmox's own. - Packed images (FreeBSD's .qcow2.xz) are unpacked on the node after the packed file's checksum is verified; only the unpacked file is cached. download-url unpacks ISOs only, so they always take the SSH path. Fixed on the way: - get_vm_status skipped loopback only when it was called `lo`; OpenBSD's agent lists `lo0` first, so 127.0.0.1 would have been the VM's IP. Loopback is now recognised by its address. - destroy_vm read cicustom after deleting the VM, when its config was gone, so snippets stayed on the node; it now reads them first and removes all of them (#15).
This commit is contained in:
@@ -8,6 +8,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
- FreeBSD and OpenBSD guests: `create_vm_from_cloud_init(guest_os=...)` with
|
||||
`GUEST_AGENTS` from napalm-device-types 3.0. A BSD guest gets OS type
|
||||
`other` and a network-config v2 snippet of its own (`cicustom network=`),
|
||||
because FreeBSD's nuageinit skips runcmd on the v1 Proxmox generates.
|
||||
OpenBSD's agent runs over ISA serial behind `serial0`, as the image keeps
|
||||
its console on com0. An unknown `guest_os` is refused before anything is
|
||||
created.
|
||||
- Packed cloud images (FreeBSD's `.qcow2.xz`) are unpacked on the node after
|
||||
the packed file's checksum is verified; only the unpacked file is cached.
|
||||
Proxmox's `download-url` unpacks ISOs only, so they always go over SSH.
|
||||
|
||||
### Fixed
|
||||
- `get_vm_status` no longer reports a loopback address as the VM's IP when
|
||||
the agent lists loopback under another name than `lo` (`lo0` on the BSDs,
|
||||
listed first by OpenBSD).
|
||||
- `destroy_vm` reads the VM's cloud-init snippets before deleting the VM, and
|
||||
removes all of them; it read them afterwards, when the config was gone (#15).
|
||||
- Cloud images for `create_vm_from_cloud_init` are downloaded by Proxmox itself
|
||||
when the node has an active storage with content type `import` (Proxmox
|
||||
8.2+): `download-url` with checksum verification, then `import-from` as the
|
||||
|
||||
Reference in New Issue
Block a user