首页 > 解决方案 > Vagrant 没有遍历目录

问题描述

有没有办法vagrant遍历目录并对文件采取行动?

我刚刚将这一行添加到我的 Vagrantfile 中。

config.ssh.private_key_path = ".vagrant/machines/demo#{i}/virtualbox/private_key', '~/.ssh/id_rsa"

这些是相同的其他位Vagrantfile

(1..3).each do |i|
    config.vm.define "demo#{i}" do |config|
      config.vm.box = "bento/ubuntu-16.04"
      config.vm.box_version = "202002.04.0"
      config.vm.hostname = "demo#{i}"
      config.vm.network :private_network, ip: "10.0.0.#{i + 10}"
      config.vm.network :public_network, bridge: "en0: Wi-Fi (Wireless)"
      config.ssh.forward_agent = true
      config.vm.synced_folder '.', '/vagrant', disabled: true
      config.vm.synced_folder "demo/shared", "/vagrant/shared"
      config.vm.synced_folder "demo/dual", "/vagrant/dual"
      config.ssh.private_key_path = ".vagrant/machines/demo#{i}/virtualbox/private_key, ~/.ssh/id_rsa"
      config.vm.provider "virtualbox" do |vb|
        vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
        #vb.gui = true
        vb.memory = "2096"
        vb.cpus = "2"
    end
  end

end
end

但是运行vagrant reload错误 * `private_key_path` file must exist: .vagrant/machines/demo1/virtualbox/private_key', '~/.ssh/id_rsa

这很有趣,因为路径和文件肯定存在。

pwd ; ls -R
/Users/xxx/.vagrant/machines
demo1 demo2 demo3

./demo1/virtualbox:
action_provision  action_set_name  box_meta  creator_uid  private_key  id   synced_folders

./demo2/virtualbox:
action_provision  action_set_name  box_meta  creator_uid  private_key  id   synced_folders

./demo3/virtualbox:
action_provision  action_set_name  box_meta  creator_uid  private_key  id   synced_folders

我期望 vagrant 只是遍历每个目录并读取文件

有没有办法让流浪者做到这一点?

标签: rubyvagrantvagrantfilevagrant-provision

解决方案


所以我发现它有什么问题。我只需要添加额外的引号。

config.ssh.private_key_path = ".vagrant/machines/demo#{i}/virtualbox/private_key, ~/.ssh/id_rsa"

变成

config.ssh.private_key_path = ".vagrant/machines/demo#{i}/virtualbox/private_key", "~/.ssh/id_rsa"

它很有魅力。


推荐阅读