如何使用 shell 提供程序上传配置文件?

Tro*_*orn 3 files provisioning upload vagrant

除了在我的客户机上安装 emacs 之类的应用程序外,我还想上传一些配置文件(例如,为 Clojure 开发配置 emacs)。可悲的是,Vagrant 的文档没有提供有关如何执行此操作的线索。我想我必须将配置文件放入共享文件夹,然后将它们从来宾计算机上的共享文件夹复制到所需位置?

tma*_*lai 9

您可以使用“文件”配置器。它似乎没有记录,但用法很简单。例如:

Vagrant.configure('2') do |config|
  # ...

  config.vm.provision :file do |file|
    file.source      = '~/.my.conf'
    file.destination = '/home/vagrant/.my.conf'
  end
end
Run Code Online (Sandbox Code Playgroud)

第一个问题是它以 ssh 用户(默认为“vagrant”)运行,没有 sudo,因此您需要对 VM 上的目录具有写访问权限。一种解决方法是复制到一个临时位置,然后使用普通的 shell 配置器将其复制/移动到正确的位置。

第二个问题是目标路径没有正确扩展。所以使用~or$HOME很可能不会按预期工作。(另一方面,源路径扩展。)