【问题标题】:How to vagrant halt an environment by name, not by id如何通过名称而不是 id 来停止环境
【发布时间】:2021-03-16 01:17:37
【问题描述】:

来自 vagrant 文档:

vagrant halt [name|id]

假设 vagrant global-status 输出以下内容:

id       name    provider   state    directory
------------------------------------------------
6e16e1a  envname virtualbox running  D:/git/envname

所以,在包含Vagrantfile 的目录之外,我应该可以使用

vagrant halt 6e16e1a #works!

还有

vagrant halt envname #doesn't work!

错误信息:

运行此命令需要 Vagrant 环境或目标机器。运行 vagrant init 创建一个新的 Vagrant 环境。或者,从vagrant global-status 获取目标机器的 ID 以在其上运行此命令。最后一个选择是切换到带有 Vagrantfile 的目录并重试。

这与我在没有 Vagrantfile 的目录中 vagrant halt 时的输出相同。

那么,我可以按名称 vagrant halt 吗,如果可以,如何?

Windows 10 上的 Vagrant 2.2.14

Vagrantfile 摘录:

config.vm.hostname = "envname"
config.vm.define "envname"

【问题讨论】:

    标签: vagrant vagrant-windows


    【解决方案1】:

    我找不到这个问题的“干净”解决方案,所以我编写了一个小 bash 函数来从框 name 中获取框 id

    function vgid() {
      BOX_NAME=$1
      BOX_ID=$(vagrant global-status --prune | grep $BOX_NAME | awk '{print $1}')
    
      echo $BOX_ID
    }
    

    使用此功能,我现在可以在如下命令中使用框的名称:

    vagrant up $(vgid name)
    

    这不是我最喜欢的解决方案,但它确实有效,我更喜欢它而不是从 global-status 输出中复制粘贴 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      相关资源
      最近更新 更多