我正在使用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,