[cloud] Add ability to retrieve Google Compute Engine metadata
authorMichael Brown <mcb30@ipxe.org>
Mon, 23 Jan 2017 14:41:22 +0000 (14:41 +0000)
committerMichael Brown <mcb30@ipxe.org>
Mon, 23 Jan 2017 14:43:20 +0000 (14:43 +0000)
commitde85336abb7861e4ea4df2e296eb33d179c7c9bd
treed155d26521ee1a4ae45e3baeaa099756ffcf43bc
parent0dc4814ca83b8b7ca226c4a9c4bdcc050af2882b
[cloud] Add ability to retrieve Google Compute Engine metadata

For some unspecified "security" reason, the Google Compute Engine
metadata server will refuse any requests that do not include the
non-standard HTTP header "Metadata-Flavor: Google".

Attempt to autodetect such requests (by comparing the hostname against
"metadata.google.internal"), and add the "Metadata-Flavor: Google"
header if applicable.

Enable this feature in the CONFIG=cloud build, and include a sample
embedded script allowing iPXE to boot from a script configured as
metadata via e.g.

  # Create shared boot image
  make bin/ipxe.usb CONFIG=cloud EMBED=config/cloud/gce.ipxe

  # Configure per-instance boot script
  gcloud compute instances add-metadata <instance> \
         --metadata-from-file ipxeboot=boot.ipxe

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/config/cloud/gce.ipxe [new file with mode: 0644]
src/config/cloud/general.h
src/config/config_http.c
src/config/general.h
src/net/tcp/httpgce.c [new file with mode: 0644]