操作系统是Debian 10,流浪者提供者是libvirt。
vagrant global-status应该提供系统上所有vms的信息,但是我可以看到vagrant global-status没有列出的virt管理器中关闭和运行vms。我只用利布维特来对付瓦格兰特,所以我知道瓦格兰特是罪魁祸首。
如何确定每个vms的关联目录/Vagrantfile?
我认为这个命令能起作用:
find / -name Vagrantfile -exec echo {} \; -exec bash -c 'cd "$(dirname {})" && vagrant status | grep -E shutoff\|running' \; 2>/dev/null
但是,这样的事情是必要的,而且在一个大型文件系统上需要很长时间,这似乎是荒谬的。
如何准确地确定每个vm的关联Vagrantfile的目录?除了彻底搜索文件系统之外,还必须有一种更简单的方法。
发布于 2021-12-27 14:15:18
基于模板1,Vagrant似乎没有跟踪与libvirt域元数据中的VM关联的项目目录。
在JSON文件~/vagrant.d/data/machine-index/index中保存有关VM (包括目录)的信息,检查示例2
我想可以修改模板,将目录添加为元数据,类似于Openstack如何向Guest的libvirt域添加一些元数据,元数据可以直接从计算节点获取VM名称、Flavor等,而无需查询Nova。
显然,这不适用于更改之前的现有VM。
2
cat .\index | python -m json.tool
{
"version": 1,
"machines": {
"4f9bf5cd740f409c867553c19c52a81c": {
"local_data_path": "C:/Vagrant-Machines/bionic-vm/.vagrant",
"name": "default",
"provider": "hyperv",
"state": "running",
"vagrantfile_name": null,
"vagrantfile_path": "C:/Vagrant-Machines/bionic-vm",
"updated_at": null,
"extra_data": {
"box": {
"name": "hashicorp/bionic64",
"provider": "hyperv",
"version": "1.0.282"
}
}
}
}
}作为参考,在Nova的例子中,流星的外观如下:
virsh dumpxml instance-0033dd00 | head
<domain type='kvm' id='93'>
<name>instance-0033dd00</name>
<uuid>XXXXXXXXXXXXXXXXXXX</uuid>
<metadata>
<nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0">
<nova:package version="17.0.13"/>
<nova:name>VM-NAME</nova:name>
<nova:creationTime>2021-05-11 10:50:49</nova:creationTime>
<nova:flavor name="m1.small">
<nova:memory>16384</nova:memory>https://serverfault.com/questions/1087709
复制相似问题