Passando dados do usuário no estilo EC2 para uma VM virtualbox / vagrant

1

Eu estou tentando configurar uma VM clusterman / galaxy no VirtualBox usando o Vagrant and Fabric (através do cloudbiolinux), e uma etapa crítica é passar os parâmetros de "dados do usuário" para a VM. Não está claro (para mim, pelo menos) como isso é injetado na VM.

Como posso passar o equivalente a VMs do VirtualBox gerenciadas pelo vagrant (supondo que o vagrant é uma variável importante aqui)?

    
por Demosthenes 13.12.2013 / 22:42

2 respostas

1

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:

link link

    
por 19.12.2013 / 20:31
0

Apenas uma correção, o plug-in vagante da AWS tem a opção de enviar dados do usuário:

Dados do usuário

Você pode especificar dados do usuário para a instância que está sendo inicializada.

Vagrant.configure("2") do |config| # ... other stuff

config.vm.provider "aws" do |aws|

# Option 1: a single string
aws.user_data = "#!/bin/bash\necho 'got user data' > /tmp/user_data.log\necho"

# Option 2: use a file
aws.user_data = File.read("user_data.txt")   end end 
    
por 02.09.2015 / 10:05