如何从 virt-manager 确定 Vagrantfile 的位置?

如何从 virt-manager 确定 Vagrantfile 的位置?

操作系统是 Debian 10,vagrant 提供程序是 libvirt。

vagrant global-status应该提供系统上所有虚拟机的信息,但我可以在 virt-manager 中看到未列出的已关闭和正在运行的虚拟机vagrant global-status。我只对 Vagrant 使用过 libvirt,所以我知道 Vagrant 是罪魁祸首。

我如何确定每个虚拟机的关联目录/Vagrantfile?

我认为这个命令可以解决问题:

find / -name Vagrantfile -exec echo {} \; -exec bash -c 'cd "$(dirname {})" && vagrant status | grep -E shutoff\|running' \; 2>/dev/null

但这样的事情似乎是必要的,而且在大型文件系统上会花费很长时间,这似乎很荒谬。

我究竟如何确定每个虚拟机关联的 Vagrantfile 的目录?除了详尽搜索文件系统之外,一定还有更简单的方法。

答案1

根据模板[1],Vagrant 似乎没有跟踪 libvirt 域元数据中与 VM 关联的项目目录。

Vagrant 内部将虚拟机的信息(包括目录)保存在一个 JSON 文件中~/vagrant.d/data/machine-index/index,具体请查看示例 [2]

我猜想可以修改模板以将目录添加为元数据,类似于 Openstack Nova 如何向 Guest 的 libvirt 域添加一些元数据,元数据可用于直接从计算节点获取虚拟机名称、Flavor 等,而无需查询 Nova。

显然,这并不适用于变更之前的现有虚拟机。

[1]https://github.com/vagrant-libvirt/vagrant-libvirt/blob/master/lib/vagrant-libvirt/templates/domain.xml.erb

[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>

相关内容