¿La forma más sencilla de copiar un solo archivo del host al invitado Vagrant?

Resuelto LeeXGreen asked hace 11 años • 20 respuestas

Tengo un caso de uso en el que ocasionalmente quiero copiar un solo archivo desde mi máquina host al invitado Vagrant.

No quiero hacerlo a través de aprovisionadores tradicionales (Puppet/Chef) porque esto suele ser algo único; solo quiero agregar algo rápido a mi Vagrantfile.

No quiero compartir un directorio completo, posiblemente porque quiero sobrescribir un archivo existente sin destruir un directorio completo en el invitado.

También parece un poco excesivo escribir un script de aprovisionamiento de shell y lidiar con posibles fugas, cuando todo lo que quiero hacer es copiar un archivo.

Entonces, ¿cuál es la forma más sencilla de copiar un único archivo del anfitrión al invitado?

LeeXGreen avatar May 23 '13 08:05 LeeXGreen
Aceptado

Como preguntas por la forma más sencilla, te sugiero usar vagrant-scp . Agrega un comando scp a vagrant, para que pueda copiar archivos a su VM como lo haría normalmente con scp.

Instalar a través de:

vagrant plugin install vagrant-scp

Úselo así:

vagrant scp <some_local_file_or_dir> [vm_name]:<somewhere_on_the_vm>
Luca Invernizzi avatar Feb 06 '2015 05:02 Luca Invernizzi

En realidad, existe una solución mucho más sencilla. Consulte https://gist.github.com/colindean/5213685/#comment-882885 :

"tenga en cuenta que, a menos que desee específicamente scp por algún motivo, la forma más sencilla de transferir archivos desde el host a la VM es simplemente colocarlos en el mismo directorio que Vagrantfile; ese directorio se monta automáticamente en /vagrant en la VM, por lo que puedes copiarlos o usarlos directamente desde la VM".

Eric P avatar Mar 21 '2014 15:03 Eric P

En lugar de utilizar un aprovisionador de shell para copiar el archivo, también puede utilizar un aprovisionador de archivos Vagrant .

Nombre del proveedor: "file"

El aprovisionador de archivos le permite cargar un archivo desde la máquina host a la máquina invitada.

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

  config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end
lynnaloo avatar Apr 25 '2014 20:04 lynnaloo

Presentamos un método que no requiere instalar ningún complemento y elimina la necesidad de proporcionar la clave privada (que puede olvidarse fácilmente):

De forma predeterminada, la primera instancia de Vagrant usa el puerto 2222 para SSH y su dirección IP es 127.0.0.1. (Ajuste el puerto si ha creado varios hosts virtuales).

==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)

Con esta configuración, puede usar el siguiente comando para copiar su archivo local a la instancia de Vagrant en cualquier ruta deseada, no solo en la /vagrantcarpeta. La contraseña es la misma que el nombre de usuario, que esvagrant

scp -P 2222 your_file [email protected]:.

También puede copiar archivos a su host local usando el siguiente comando:

scp -P 2222 [email protected]:/PATH/filename
BMW avatar Oct 14 '2014 03:10 BMW