vagrant - 如何通过名称而不是 id 来停止环境
问题描述
从 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 环境。或者,获取目标机器的 ID 以在vagrant global-status
其上运行此命令。最后一个选择是切换到带有 Vagrantfile 的目录并重试。
vagrant halt
这与我在没有 Vagrantfile 的目录中时的输出相同。
那么,我可以按名称流浪停止吗,如果可以,如何?
Windows 10 上的 Vagrant 2.2.14
流浪文件摘录:
config.vm.hostname = "envname"
config.vm.define "envname"
解决方案
我找不到这个问题的“干净”解决方案,所以我写了一个小 bash 函数来id
从 box 中获取 box name
。
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。
推荐阅读
- android - 如何在 xamarine Firestore 中保存数据
- python - 输入 Keras 批量数据,然后进行多个 epoch 的训练
- laravel - Laravel 搜索遵循 DRY 原则
- html - 如何在同一张 A4 纸上打印两次网页?
- sql - 如何在 pl/sql 或 sql 中获取具有出生日期的人的年龄?
- android - youtube 提取器获取破折号 Url -asynctask- android
- php - 如何解决 Symfony 错误变量“扩展”不存在?
- mongodb - 为什么猫鼬没有连接到 MongoDB Atlas?
- batch-file - 批次:未找到文件
- r - 添加一个新级别的变量,并为其分配每个 id 的其他变量的平均值