zmgr/docs/ai/gap-analysis.md
Till Wegmueller 430be11b13
Add multi-network zones and list-based IPAM pools
Templates now define named `net` blocks instead of a single pool
reference, allowing zones like a router to attach to both internal and
public networks. Pools support an `addresses` block with explicit IPs
as an alternative to contiguous range-start/range-end — useful for
hoster-assigned public addresses.

Default init now includes a router template (internal + public) and a
public pool with example addresses. Zone registry entries store per-net
address/VNIC/stub/gateway. Import parses multiple net blocks from
zonecfg info. Backward compatible with legacy single-pool templates.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 14:04:15 +01:00

2.2 KiB

Gap Analysis

Current Gaps

Publishers Not Applied During Install

Publishers are stored and listed but not yet passed to zonecfg/zoneadm during zone creation. Future: configure IPS publishers inside the zone after install via zlogin or sysding.

No Zone Boot/Halt Commands

zmgr doesn't expose boot/halt/reboot as subcommands. Users must use zoneadm -z <name> boot directly. Could add zmgr boot <name> / zmgr halt <name> as thin wrappers.

No Template Create/Edit via CLI

Templates must be edited as KDL files directly. Could add zmgr template create / zmgr template edit commands.

No Pool Create/Edit via CLI

Same as templates — pools are managed by editing files. Could add CLI commands.

No ZFS Dataset Management

The original VM scripts create ZFS volumes (zfs create -V). zmgr doesn't manage ZFS datasets. For zone brands, zoneadm install handles the zonepath ZFS dataset automatically.

No Cloud-Init / Sysding Integration

The VM scripts generate cloud-init configs (user-data, meta-data, network-config). Zones don't use cloud-init but could benefit from sysding config generation for first-boot setup (hostname, SSH keys, networking).

No VNIC Naming Customization

VNICs are always <zonename><index>. Could support custom VNIC naming patterns per net.

Import Matching is Best-Effort

Import matches zones to templates by brand and IPs to pools by network containment. Zones with unusual configs may get poor matches. Manual editing of the resulting KDL files may be needed.

No IPv6 Support

IPAM only handles IPv4 pools. Could extend to dual-stack.

Resolved

  • No Dry-Run Mode — Implemented: --dry-run / -n flag on create and destroy
  • Single network per zone — Implemented: templates define multiple net blocks, each referencing a pool
  • No public/hoster IP support — Implemented: pools support explicit address lists in addition to contiguous ranges

Future Considerations

  • Zone ordering: Dependencies between zones (e.g., start DNS zone before app zones)
  • Snapshots: ZFS snapshot management for zone rollback
  • Migration: Move zones between hosts
  • Monitoring: Health checks, resource usage