A FUSE filesystem for reflecting Amazon EC2 instance metadata (provided
via HTTP) into the VFS.

dependencies: FUSE/Python bindings ("python-fuse" or "fuse-python")

usage: ec2mdfs [-o subtree=path] /mountpoint

The subtree tells the filesystem what path under the EC2 metadata HTTP
service should be reflected at the mountpoint.  The subtree specifies
an API version number, as well as allowing you to reflect only part of
the metadata.  The default is "/latest", which gives the following:
  $ ./ec2mdfs /ec2
  $ ls -lF /ec2
  total 0
  dr-xr-xr-x 2 root root 0 2013-05-12 15:09 dynamic/
  dr-xr-xr-x 2 root root 0 2013-05-12 15:09 meta-data/

You can isolate only the instance metadata with an alternate subtree:
  $ ./ec2mdfs -osubtree=/latest/meta-data /ec2
  $ ls -F /ec2
  ami-id                 instance-id     metrics/         public-keys/
  ami-launch-index       instance-type   network/         reservation-id
  ami-manifest-path      kernel-id       placement/       security-groups
  block-device-mapping/  local-hostname  profile
  hostname               local-ipv4      public-hostname
  instance-action        mac             public-ipv4

ec2msfs may be used as an alternative to calling out to `curl` for instance

Here's a useful entry for /etc/fstab:
ec2mdfs     /ec2    fuse    ro,allow_other     0 0

Or, same thing while mounting the metadata directory (disregarding
dynamic data and userdata):
ec2mdfs     /ec2    fuse    ro,allow_other,subtree=/latest/meta-data     0 0

If ec2mdfs is installed in /usr/bin, then "mount /ec2" will work, and
automatic mounts at system startup will mount /ec2 as well.

The allow_other option makes a FUSE filesystem accessible to users other
than the FUSE daemon owner (in this case, root).