puppet 无法找到类角色::webserver

puppet 无法找到类角色::webserver

我正在尝试让类在 Puppet 中工作,但是当我在节点上尝试 Puppet Agent -t 时,它给出了一个错误:

root@webserver01:/etc# puppet 代理-t

信息:检索插件错误:无法从远程服务器检索目录:服务器上的错误 400:找不到类角色::webserver本地主机在节点上本地主机 警告:未在失败的目录上使用缓存错误:无法检索目录;跳过运行

注意:我编辑了本地主机上面的部分。我有以下 site.pp:

root@puppet:/etc/puppet/manifests# cat site.pp 
node 'default' {
}

node 'webserver01' {

include roles::webserver

file {'/etc/test':
  ensure  => file,
  owner   => 'root',
  group   => 'root',
  mode    => '0644',
  content => 'df',
}

}

模块路径:

root@puppet:/etc/puppet/manifests# puppet config print modulepath
Warning: Setting templatedir is deprecated. See http://links.puppetlabs.com/env-settings-deprecations
(at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning')
/etc/puppet/modules:/usr/share/puppet/modules

模块目录:

root@puppet:/etc/puppet/modules# tree --charset=ASCII
.
|-- roles
|   `-- webserver
|       |-- files
|       |-- manifests
|       |   `-- init.pp
|       `-- templates

和网络服务器类:

root@puppet:/etc/puppet/modules/webserver/manifests# cat init.pp
class webserver {
package { apache2:
ensure => present,
}

notify {"in webserver class": }

file {'/etc/test2':
ensure  => file,
owner   => 'root',
group   => 'root',
mode    => '0644',
content => 'df',
}
}

如果我在 /etc/puppet/modules/webserver 中拥有模块(删除角色部分),它就可以正常工作,但是当我尝试使用角色目录时,它仍然会失败。如果我将 init.pp 重命名为 webserver.pp,它仍然会失败。有人能帮忙吗?

答案1

带有roles::webserverroles是它将查找的模块的名称 - 需要位于manifests目录所在的位置。您的目录结构构成了webserver模块,但它不起作用,因为它实际上不在模块目录中。要导入它,roles::webserver类应该位于以下位置之一:

/etc/puppet/modules/roles/manifests/webserver.pp

或者

/etc/puppet/modules/roles/manifests/webserver/init.pp

相关内容