我已经克隆了一个模块用于虚拟机,但是当我尝试将虚拟机应用到节点时,我得到了Error: Could not find a suitable provider for virt
,这是可以理解的,因为 init.pp 的内容指定虚拟化功能的内核应该已经在运行(Xen 或 OpenVZ 内核)。
但是,使用包含的 init.pp,我预计在puppet agent --test --debug
节点上运行时某处会出现失败消息:
class virt {
fail "testfail"
case $::virtual {
/^xen/: { include virt::xen }
#/^kvm/: { include virt::kvm }
/^openvzhn/: { include virt::openvz }
}
}
但它失败并出现上述错误Error: Could not find a suitable provider for virt
。我的节点定义:
node 'hostname' {
# common is a custom module including SSH keys, works fine
include common
virt { "1001":
memory => 1024,
cpus => 4,
tmpl_cache => "debian-6.0-x86_64",
ensure => running,
virt_type => "openvz"
}
}
答案1
在节点定义中,您没有使用类 virt,而是使用自定义类型 virt。
您会在 modulename/lib/puppet/type 中找到它。
它需要一个提供程序 (modulename/lib/puppet/provider),但找不到适合您的系统的提供程序。
包括班级virt,您可以使用下列方法之一:
包括 virt 或 class ('virt': }
它不起作用的原因是您可能缺少以下二进制文件之一:(取自提供商)
commands :virtinstall => "/usr/bin/virt-install"
commands :virsh => "/usr/bin/virsh"
commands :grep => "/bin/grep"
commands :ip => "/sbin/ip"
那;或者你没有这个:
confine :feature => :libvirt