2016-08-04 72 views
1

我想在使用Puppet的流浪盒上安装postgresql9.4的一个实例。到目前为止,我不喜欢我的傀儡时间和其网站上的文档。到目前为止,我正在尝试从不同的教程和Postgresql Puppet Forge官方文档中进行修补。找不到声明的类postgresql :: server Puppet

我所做的:

  1. puppet module install puppetlabs-postgresql

  2. 我已经创建了一个/etc/puppet/modules/postgresql/manifests/init.pp文件

  3. 我已经把这个代码在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 

我变得非常沮丧木偶,我想用“部署Rails的和官方伪造现场跟着一起得到这个工作,但无济于事。

我对木偶感到沮丧的是,该网站没有指定放置什么东西。从教程中,我已将傀儡代码放在init.pp中,但postgresql有repo.pp, server.pp等等,它不会告诉你在哪里放置傀儡代码。有人可以帮助我吗?

+0

作为一个侧面说明,如果你是刚刚进入Linux的自动化,业务流程,配置管理,部署等,然后木偶真的不是一个很好的起点。它是相关软件工具中最先进和最复杂的。老实说,你可能想要和Ansible稍微玩一下,然后带着更多的经验回到Puppet。作为一个直接的说明,你为什么试图在Vagrant的主/客户端范例中使用Puppet?使用Vagrant Puppet配置器插件可以让您更容易。 –

回答

2

到目前为止,我不喜欢我的时间与木偶和其网站上的文档。到目前为止,我正在尝试从不同的教程和Postgresql Puppet Forge官方文档中进行修补。

我不能跟你一直关注的未指定的教程,但Puppet自己的Postgresql模块的文档假定你已经熟悉Puppet语言和操作模式。我自己,我一直认为Puppet's documentation是相当不错的,甚至在商业版本发布之前。

你可以考虑采取官方VM-based tutorial,但最终我建议阅读(或至少撇取)Language Reference。如果你打算编写你自己的模块,并且大多数用户都这样做,那么你也应该知道Type Reference。即使你不打算编写你自己的模块,你也会使用模块,所以浏览the section on module fundamentals是有用的。还有更多可能是有用的,但这应该足以让你有一个良好的开端。

我对木偶感到沮丧的是,该网站没有指定放置什么东西。

的“Basics”的语言参考的章节解决的是,第一部分:

木偶总是以一个单一的清单(其可以被分解成数块)进行编译时,称为“站点清单“或”主清单“。有关此特殊文件/目录的详细信息,请参见the reference page on the main manifest

链接的页面进入一些细节,很大程度上是因为在主/代理设置中有相当多的灵活性和多个选项。但是,如果您使用的是puppet apply,那么主清单就是您在puppet命令行上指定的任何文件。一类声明如您提出应该进入你的主要表现,可能是一个节点块内,或进入定义另一个类的,在某些模块,这将直接或间接地在你的主清单中声明。正如Perl爱好者倾向于说的,“有多种方法可以做到这一点。”

我强调一个类声明和一个类定义之间的区别。前者粗略地说,“命名的类应该应用于目标节点”,而后者描述了将类应用于节点意味着什么。你可以把它们看作一方面的函数调用和另一方面的函数体。由于您尝试使用第三方模块中的类,因此后者应该是模块的一部分。假设你的木偶安装在/etc/puppet,整个/etc/puppet/modules/postgresql目录所属的模块实现,你不应该把任何东西在那里。在这种情况下,模块工具应在/etc/puppet/modules/postgresql/manifests/server.pp中安装postgresql::server类的定义。

由于您没有提供一些基本的详细信息,尤其是您是在运行代理还是使用puppet apply,所以我无法向您提供有关应该执行的操作的具体信息。 Puppet 3和Puppet 4之间也有一些区别可能是相关的(例如,默认安装位置)。不过,我希望这已经让你指出了正确的方向。