File
Este programa permite cargar archivos o directorios desde la maquina anfitrión hasta la maquina huésped. Este mecanismo se diferencia del de carpetas compartidas en que no sincroniza los archivos, es decir que si realiza cambios en la maquina anfitrión estos nos se ven reflejados en la maquina huésped a menos que se realice el aprovisionamiento.
Es importante tener en cuenta que este mecanismo es mas seguro ya que las cargas de archivos se realizan a través de SSH / SCP o PowerShell, ademas estos usuarios no requieren altos privilegios. Se recomienda realizar la carga en ubicaciones temporales y luego usar aprovisionamiento con shell para moverlos a las ubicaciones requeridas.
Ejemplo
Vagrant.configure("2") do |config|
# ... other configuration
config.ssh.private_key_path = "~/.ssh/id_rsa"
config.ssh.forward_agent = true
config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end
En este ejemplo estamos replicando la configuración de git de la maquina anfitrión en la maquina huésped, esto evitara que tengamos que realizar la re-configuración de git en la máquina huésped cada vez que se realice el aprovisionamiento. Ademas de esto estamos indicando a Vagrant que queremos transmitirle al huésped la clave privada usando el método de reenvío del agente SSH por lo que también suministramos su ubicación.