Como funciona na AWS:
O AWS usa uma API para obter metadados e dados do usuário visíveis para a VM. O importante com os dados do usuário é o resultado final; geralmente apresentando variáveis ou executando um script. Em ambos os casos, os metadados são apresentados com sua API na VM acessada via URL em cada instância (consulte os links para ler mais a seguir). Se os dados do usuário começarem com um shebang, a instância saberá executar os dados do usuário como um script. Se os dados do usuário não começarem com um shebang, a instância não fará nada automaticamente. Qualquer script de inicialização na instância pode acessar os dados do usuário por meio da URL mencionada acima e usar qualquer par de chave / valor encontrado na execução de scripts.
Como funciona no Vagrant:
O conceito de dados do usuário da AWS não existe. Em vez disso, o comportamento pode ser imitado usando os provedores no Vagrant. A maneira mais fácil de duplicar esse comportamento é com o provisionador de shell (ou chef / fantoche, se você estiver confortável com esses provedores) da maneira que mencionei acima. A principal diferença entre o Vagrant e a AWS será onde os dados do usuário residem: na AWS, os dados do usuário não existem na instância (somente API) onde, como no Vagrant, você teria que armazenar os dados do usuário em algum lugar o sistema de arquivos da VM. Os scripts que leem os dados do usuário precisarão entender essa distinção.
Links para leitura adicional: