无法使用 libvirt-terraform 启动虚拟机

无法使用 libvirt-terraform 启动虚拟机

我正在使用terraform libvirt 提供程序我无法启动虚拟机。我在 中的文件夹中安装了一个驱动器/home/dude/vmPool/,我尝试通过查看此内容来设置 acl问题看起来很相似。我也尝试过编辑/etc/libvirt/qemu.conf和设置user=root, group=root,但似乎没有帮助。我注意到 VM 映像是以 root 身份创建的,而 cloudinit iso 是以我的用户身份创建的,我相信提供商内部使用了 genisoimage,但我不知道这会对未创建的域产生什么影响。它失败并出现以下错误: error: Failed to start domain ubuntu-terraform error: internal error: process exited while connecting to monitor: 2018-12-06T14:14:22.519784Z qemu-system-x86_64: -drive file=/home/dude/vmPool/kvm.kthw.test/ubuntu-qcow2,format=qcow2,if=none,id=drive-virtio-disk0: Could not open '/home/dude/vmPool/kvm.kthw.test/ubuntu-qcow2': Permission denied

我正在使用 Ubuntu 18.04:

uname -a
Linux kvm-host 4.15.0-42-generic #45-Ubuntu SMP Thu Nov 15 19:32:57 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:        18.04
Codename:       bionic

答案1

这是 terraform libvirt 中的一个已知问题。请参考:https://github.com/dmacvicar/terraform-provider-libvirt/commit/22f096d9

答案2

这听起来像是使用不常见路径导致的 apparmor 路径违规。dmesg如果您看到拒绝消息,请验证触发问题时的检查。

然后作为解决方案,请按照关于使用不常见路径的文档

总结:

  • 使用通用路径
  • 添加本地 apparmor 覆盖以允许您的路径

答案3

我遇到了同样的问题,经过一番调查,terraform 不使用点作为资源标识符。因此 AppArmor 只授予此图像

/etc/apparmor.d/usr.lib.libvirt.virt-aa-helper

文件名:

...
/**.img r,
/**.raw r,
/**.qcow{,2} r,
/**.qed r,
/**.vmdk r,
/**.[iI][sS][oO] r,
/**/disk{,.*} r,
...

我的 terraform 使用 -qcow 作为每个资源的名称,因此将其添加到列表中解决了我的问题:

/**-qcow{,2} r,

相关内容