Description
Implement HTTP endpoint for serving machine-specific cloud-init configuration to bare metal servers during boot. This endpoint is called by the booting OS (referenced in the iPXE script or kernel command line) to retrieve configuration for user creation, SSH keys, hostname, network settings, and post-boot scripts.
The endpoint performs template variable substitution using machine metadata from Firestore to generate personalized cloud-init configurations.
Acceptance Criteria
Related Issues
Implements ADR-0005 - Network Boot Infrastructure Implementation on Google Cloud
Depends on #605 (API documentation)
Depends on #611 (boot server scaffold)
Depends on #609 (Firestore module)
Related to #612 (UEFI boot endpoint references cloud-init URL in iPXE script)
Related to #615 (machine mappings contain metadata for templating)
Related to #616 (profiles contain cloud-init templates)
Related to #601
Description
Implement HTTP endpoint for serving machine-specific cloud-init configuration to bare metal servers during boot. This endpoint is called by the booting OS (referenced in the iPXE script or kernel command line) to retrieve configuration for user creation, SSH keys, hostname, network settings, and post-boot scripts.
The endpoint performs template variable substitution using machine metadata from Firestore to generate personalized cloud-init configurations.
Acceptance Criteria
services/boot-server/endpoint/cloudinit.go:GET /cloud-init/{machine_id}orGET /cloud-init?mac={mac}GET /user-data/{machine_id}(cloud-init user-data convention){{ .Hostname }}- Machine hostname{{ .MAC }}- MAC address{{ .SSHKeys }}- Authorized SSH keys{{ .Metadata }}- Additional metadata key-value pairs#cloud-configRelated Issues
Implements ADR-0005 - Network Boot Infrastructure Implementation on Google Cloud
Depends on #605 (API documentation)
Depends on #611 (boot server scaffold)
Depends on #609 (Firestore module)
Related to #612 (UEFI boot endpoint references cloud-init URL in iPXE script)
Related to #615 (machine mappings contain metadata for templating)
Related to #616 (profiles contain cloud-init templates)
Related to #601