我正在尝试使用Puppet在vagrant box上安装postgresql9.4的实例。到目前为止,我并不喜欢我的木偶时间和网站上的文档。到目前为止,我尝试从不同的教程和Postgresql Puppet Forge官方文档中进行修补。
我做了什么:
puppet module install puppetlabs-postgresql
我已创建了/etc/puppet/modules/postgresql/manifests/init.pp
文件
我已将此代码放在init.pp
文件中:
class { 'postgresql::server':
ip_mask_deny_postgres_user => '0.0.0.0/32',
ip_mask_allow_all_users => '0.0.0.0/0',
listen_addresses => '*',
ipv4acls => ['hostssl all johndoe 192.168.0.0/24 cert'],
postgres_password => 'TPSrep0rt!',
}
我收到的错误是:
Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class postgresql::server at /etc/puppet/modules/postgresql/manifests/init.pp:7 on node vagrant-ubuntu-trusty-64.bbf.local
Wrapped exception:
Could not find declared class postgresql::server
Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class postgresql::server at /etc/puppet/modules/postgresql/manifests/init.pp:7 on node vagrant-ubuntu-trusty-64.bbf.local
我对Puppet感到非常沮丧,我正在努力跟随'部署Rails'和官方锻造网站让这个工作但无济于事。
我对木偶的沮丧是该网站没有指定放置任何东西的位置。从教程中,我已将我的木偶代码放在init.pp
中,但postgresql有repo.pp, server.pp
等等,并且它不会告诉您在哪里放置木偶代码。有人可以帮助我吗?
答案 0 :(得分:2)
到目前为止,我并不喜欢我的木偶时间和网站上的文档。到目前为止,我尝试从不同的教程和Postgresql Puppet Forge官方文档中进行修补。
我无法与您一直关注的未指定教程交谈,但Puppet自己的Postgresql模块的文档假设您已经熟悉Puppet语言和操作模式。我自己,即使在商业版本发布之前,我一直认为Puppet's documentation非常好。
您可以考虑采用官方VM-based tutorial,但最终我建议您阅读(或至少略读)Language Reference。如果您计划编写自己的模块,并且大多数用户都这样做,那么您还应该了解Type Reference。即使您不打算编写自己的模块,您也将使用模块,因此浏览the section on module fundamentals非常有用。还有更多可能有用的东西,但这应该足以让你有一个良好的开端。
我对木偶的沮丧是该网站没有指定放置任何东西的位置。
" Basics"语言参考的章节解决了第一部分:
Puppet总是开始使用单个清单(可以分成几个部分)进行编译,称为“站点清单”或“主清单”。有关此特殊文件/目录的详细信息,请参阅the reference page on the main manifest。 / p>
链接页面有一些细节,主要是因为在主/代理设置中有相当多的灵活性和几个选项。但是,如果您正在使用puppet apply
,那么主清单就是您在puppet
命令行上指定的任何文件。您提供的类声明应该进入主清单,可能在节点块内,或者进入另一个类的定义,在某个模块中,将直接或间接在您的主要清单中声明。正如Perl爱好者倾向于说,"有不止一种方法可以做到这一点。"
我强调类声明和类定义之间的区别。前者粗略地说,#34;命名类应该应用于目标节点",而后者描述将类应用于节点意味着什么。您可以将这些类似于一方面的函数调用和另一方面的函数体。由于您尝试使用来自第三方模块的类,后者应该是模块的一部分。假设你的Puppet安装在/etc/puppet
,整个/etc/puppet/modules/postgresql
目录属于模块实现,你不应该在那里放任何东西。在这种情况下,模块工具应该在postgresql::server
中安装了类/etc/puppet/modules/postgresql/manifests/server.pp
的定义。
我无法向您提供有关您应该做什么的具体信息,因为您没有提供一些必要的详细信息,尤其是您是否正在运行代理或使用puppet apply
。 Puppet 3和Puppet 4之间也存在一些可能相关的差异(例如,默认安装位置)。尽管如此,我希望这让你指出了正确的方向。