Pasar datos de usuario de estilo EC2 a una VM virtualbox / vagrant

1

Estoy tratando de configurar una máquina virtual clusterman / galaxy en VirtualBox usando Vagrant y Fabric (a través de cloudbiolinux), y un paso crítico es pasar los parámetros de "datos de usuario" a la máquina virtual. No está claro (para mí, al menos) cómo se inyecta esto en la máquina virtual.

¿Cómo puedo pasar el equivalente a las máquinas virtuales de VirtualBox administradas por vagrant (suponiendo que vagrant es una variable importante aquí)?

Demóstenes
fuente
FFIW, CoreOS tiene una implementación de esto con la configuración de la nube que se puede ver aquí: github.com/coreos/coreos-vagrant#provisioning-with-user-data

Respuestas:

1

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

thejandroman
fuente
0

Solo una corrección, el vagabundo plugin de AWS tiene una opción para enviar datos de usuario:

Datos del usuario

Puede especificar datos de usuario para la instancia que se está iniciando.

Vagrant.configure ("2") do | config | # ... otras cosas

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 
Tal
fuente