如何使用vagrant文​​件配置上传多个文件?

Gia*_*sio 12 virtualbox vagrant vagrantfile

在Vagrant设置中,我必须在配置阶段将几个文件从主机上传到guest虚拟机.

https://docs.vagrantup.com/v2/provisioning/file.html中,我可以看到如何从源到目的地上传单个文件,但是如何上传多个文件或文件夹结构?

注意:我知道我可以使用shell配置程序执行此操作,但在这种特殊情况下,一组文件上载更合适.

Al *_*sky 11

文件夹内容上传似乎也有效(我只尝试使用文件,而不是嵌套文件夹):

config.vm.provision :file, source: '../folder', destination: "/tmp/folder"
Run Code Online (Sandbox Code Playgroud)

  • 虽然这似乎有效,但问题是嵌套文件夹问题.在这种情况下,每次重启Vagrant框时都会刷新`/ tmp /`,所以你不会看到它.但是如果你使用这个命令,并且在重启之间持续存在以下目的地:`/ home/vagrant/folder /`.第一次启动Vagrant框时,你会得到`/ home/vagrant/folder /`.下一次启动Vagrant框时,你会得到`/ home/vagrant/folder/folder /`.那之后呢?`/家庭/流浪者/文件夹/文件夹/文件夹/`.`config.vm.synced_folder`与`type:"rsync"`效果更好.使用Vagrant 1.8.1. (2认同)

hek*_*mgl 8

config.vim.provision每个文件都需要一个单独的部分.您可以将多个部分添加到您的中Vagrantfile,如下所示:

config.vm.provision :file do |file|
  file.source = "/etc/file1.txt"
  file.destination = "/tmp/1.txt"
end

config.vm.provision :file do |file|
  file.source = "/etc/file2.txt"
  file.destination = "/tmp/2.txt"
end
Run Code Online (Sandbox Code Playgroud)

输出:

[default] Running provisioner: file...
[default] Running provisioner: file...
Run Code Online (Sandbox Code Playgroud)

您看到它正在执行两个配置操作.您可以验证虚拟机中的文件存在:

vagrant ssh -- ls -al /tmp/{1,2}.txt
-rw-r--r-- 1 vagrant vagrant 4 Aug 27 08:22 /tmp/1.txt
-rw-rw-r-- 1 vagrant vagrant 4 Aug 27 08:22 /tmp/2.txt
Run Code Online (Sandbox Code Playgroud)