Cómo funciona en AWS:
AWS usa una API para obtener tanto los metadatos como los datos de usuario visibles para la VM. Lo importante con los datos de usuario es el resultado final; generalmente presentando variables o ejecutando un script. En ambos casos, los metadatos se presentan con su API en VM a la que se accede a través de la URL en cada caso (consulte los enlaces para obtener más información a continuación). Si los datos de usuario comienzan con un shebang, la instancia sabe ejecutar los datos de usuario como un script. Si los datos de usuario no comienzan con un shebang, la instancia no hace nada automáticamente. Cualquier secuencia de comandos de inicio en la instancia puede acceder a los datos del usuario a través de la URL mencionada anteriormente y usar cualquier par clave / valor que encuentre al ejecutar secuencias de comandos.
Cómo funciona en Vagrant:
El concepto de datos de usuario de AWS no existe. En cambio, el comportamiento se puede imitar utilizando los aprovisionadores en Vagrant. La forma más fácil de duplicar este comportamiento es con el aprovisionador de shell (o el chef / títere si se siente cómodo con esos aprovisionadores) de la manera que mencioné anteriormente. La principal distinción entre Vagrant y AWS será dónde residen los datos de usuario: en AWS los datos de usuario no existen realmente en la instancia (solo API) donde, al igual que con Vagrant, tendría que almacenar los datos de usuario en algún lugar El sistema de archivos de la VM. Los scripts que leen los datos del usuario deberán comprender esta distinción.
Enlaces para lecturas adicionales:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html
http://docs.vagrantup.com/v2/provisioning/index.html