Как это работает в AWS:
AWS использует API для отображения метаданных и пользовательских данных, видимых для виртуальной машины. Важной вещью с пользовательскими данными является конечный результат; обычно представляет переменные или запускает скрипт. В обоих случаях метаданные представлены с их встроенным API-интерфейсом, доступным через URL в каждом случае (см. Ссылки для дальнейшего чтения ниже). Если пользовательские данные начинаются с шебанга, экземпляр знает, как выполнить пользовательские данные в виде сценария. Если пользовательские данные не начинаются с шебанга, экземпляр автоматически ничего не делает. Любые сценарии инициализации в экземпляре могут обращаться к пользовательским данным по указанному выше URL-адресу и использовать любые пары ключ / значение, которые он находит при выполнении сценариев.
Как это работает в Vagrant:
Концепция пользовательских данных AWS не существует. Вместо этого поведение можно имитировать с помощью провайдеров в Vagrant. Самый простой способ продублировать это поведение - использовать поставщика оболочки (или chef/puppet, если вас устраивает этот поставщик), как я упоминал выше. Основное различие между Vagrant и AWS заключается в том, где находятся пользовательские данные: в AWS пользовательские данные фактически не существуют в экземпляре (только API), где, как и в Vagrant, вам придется хранить пользовательские данные где-то на файловая система виртуальной машины. Скрипты, читающие пользовательские данные, должны понимать это различие.
Ссылки для дальнейшего чтения:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html http://docs.vagrantup.com/v2/provisioning/index.html