Puppet 伪虚拟资源未实现

Puppet 伪虚拟资源未实现,puppet,Puppet,我在模块init.pp中的所有类之外声明了以下虚拟资源 @sensu::check { "check_postgres_backup": command => "/etc/sensu/plugins/check_postgres_backup.rb", interval => "36000", subscribers => ["psbackup"]; } 然后,我尝试在另一个模块中使用 class sensu::s

我在模块init.pp中的所有类之外声明了以下虚拟资源

@sensu::check {
    "check_postgres_backup":
         command => "/etc/sensu/plugins/check_postgres_backup.rb",
         interval => "36000",
         subscribers => ["psbackup"];
}
然后,我尝试在另一个模块中使用

class sensu::server::virtual {
    realize Sensu::Check[check_postgres_backup]
}
但是我得到了以下错误

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to realize virtual resources Sensu::Check[check_postgres_backup] on node ######.######.co.uk
解决方案:

看起来,类之外的任何东西都是未定义的,所以不可能发生,所以这个解决方案根本不起作用


我通过使用sensu standalone checks解决了这个问题,这意味着我可以为他们正在检查的服务定义模块上的所有检查。

通常,我希望使用
sensu::Check
,这样它可以找到我的所有虚拟资源,但会自动失败。我使用的是realize,因为如果它失败的话,actual会出错。对不起,不知道。请在文档中的realize maybe?上使用正确的案例进行尝试。你必须将你想要实现的资源的名称大写。酷,你的问题只是教会了我一个我甚至不知道的关键词。您是否包括具有虚拟资源的类?因此它在随机模块的init.pp中声明,而不是在具有模块名称的类中声明?我以前从未这样做过,但puppet知道在没有引用的情况下自动加载init文件吗?