【问题标题】:Find the Vagrantfile folder找到 Vagrantfile 文件夹
【发布时间】:2013-08-27 01:05:28
【问题描述】:

我正在尝试调整我的 Vagrantfile,如果它丢失,它会自动在项目根目录中创建一个文件夹。创建文件夹没问题,但我找不到在哪里创建该文件夹。

我发现此信息在Vagrant::Environment 对象上作为cwd 可用,但我不知道如何从我的 Vagrantfile 中获取当前实例。 Vagrant 的文档似乎有点稀疏。

编辑:

我的问题不是关于如何使用 Puppet。我正在写一些代码inside Vagrantfile。我想知道如何获取Vagrant::Environment的当前实例。

【问题讨论】:

  • 你能举一个更好的例子来说明你正在尝试做什么吗?
  • 我提到了我要调用的方法,只是不知道如何获取类的当前实例。

标签: vagrant


【解决方案1】:

要查找 Vagrantfile 目录,请在 Vagrantfile 中尝试:

vagrant_root = File.dirname(__FILE__)

【讨论】:

  • 如果在子目录中,它似乎返回该路径而不是 Vagrantfile 路径 :( 我想知道是否有办法始终获得 Vagrantfile 路径
【解决方案2】:

默认情况下,根目录为/home/vagrant

这是一个使用 vagrant 用户创建 new_folder 的示例

  exec { 'create folder':
    cwd     => '/home/vagrant',
    user    => 'vagrant',
    command => 'mkdir new_folder',
    unless  => "/usr/bin/test -d /home/vagrant/new_folder",
  }

【讨论】:

  • 我的问题不是关于木偶的。
  • /home/vagrant 在 VM 上,并且它(通常)不在您可以找到 Vagrantfile 的位置。我认为 OP 正在询问 Vagrantfile 在 在主机上 中的目录,因为它在 VM 上的位置仅通过共享/同步目录而存在.
【解决方案3】:

我不确定这个 Vagrant::Environment 对象是什么...它似乎没有记录...

如果我想在与Vagrantfile 相同的目录中创建一个新文件夹,我会使用 shell 配置器:

  config.vm.provision :shell, :inline => "mkdir -p /vagrant/test_folder;"

如果您想要在主机上包含 Vagrantfile 的文件夹,请尝试将其放入您的 Vagrantfile

  puts Dir.pwd

这应该打印目录...这样您就可以尝试使用该变量进行操作。

【讨论】:

  • Dir.pwd 将在根目录中提供 vagrant root,但如果在子目录中,它将提供。
  • @patcon,与接受的答案相同:File.dirname(__FILE__) ...当然有一些方法可以可靠地获取 Vagrantfile 路径
猜你喜欢
  • 2015-09-13
  • 1970-01-01
  • 2018-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 2013-05-18
相关资源
最近更新 更多