[英]Could not find declared class postgresql::server Puppet
我正在嘗試使用Puppet在無業游民的盒子上安裝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感到非常沮喪,我試圖跟着“ Deploying Rails”和官方偽造站點一起工作,以使其正常運行,但無濟於事。
我對木偶感到沮喪的是,該網站未指定放置任何內容的位置。 從教程中,我已將人偶代碼放置在init.pp
但postgresql具有repo.pp, server.pp
等,並且它沒有告訴您將人偶代碼放置在何處。 有人可以幫我嗎?
到目前為止,我對木偶和其站點上的文檔還不滿意。 到目前為止,我正在嘗試從其他教程和Postgresql Puppet Forge官方文檔中進行修補。
我無法說說您一直關注的未指定教程,但是Puppet自己的Postgresql模塊的文檔假定您已經熟悉Puppet語言和操作模式。 我本人一直認為,即使在商業版本發布之前, Puppet的文檔還是相當不錯的。
您可以考慮參加基於VM的官方教程 ,但最終我建議閱讀(或至少瀏覽一下)《 語言參考》 。 如果您打算編寫自己的模塊,而大多數用戶也打算這樣做,那么您還應該了解Type Reference 。 即使您不打算編寫自己的模塊,也要使用模塊,因此略讀模塊基礎知識這一部分很有用。 還有更多可能有用的方法,但這應該足以讓您有個良好的開端。
我對木偶感到沮喪的是,該網站未指定放置任何內容的位置。
《語言參考》的“ 基礎 ”一章解決了該問題的第一部分:
Puppet始終以一個清單(可能分為幾部分)開始編譯,稱為“站點清單”或“主清單”。有關此特殊文件/目錄的詳細信息,請參見主清單上的參考頁 。
鏈接的頁面有一些細節,主要是因為在主/代理設置中有相當多的靈活性和幾個選項。 但是,如果您使用的是puppet apply
,那么主要清單就是您在puppet
命令行上指定的任何文件。 諸如您所提供的類聲明應進入主清單(可能在節點塊內),或進入某個模塊中另一個類的定義 ,這些聲明將直接或間接在主清單中聲明。 正如Perl愛好者容易說的那樣:“有多種方法可以做到這一點。”
我強調類聲明和類定義之間的區別。 前者粗略地說“應將命名類應用於目標節點”,而后者則描述將類應用於節點的含義。 您可以認為它們一方面類似於函數調用,另一方面類似於函數主體。 由於您嘗試使用第三方模塊中的類,因此第三方模塊應該是該模塊的一部分。 假設您的Puppet安裝位於/etc/puppet
,則整個/etc/puppet/modules/postgresql
目錄屬於模塊實現,並且您不應該在其中放置任何內容。 在這種情況下,模塊工具應該在/etc/puppet/modules/postgresql/manifests/server.pp
安裝了postgresql::server
類的定義。
我無法提供您應該做什么的細節,因為您沒有提供一些基本細節,尤其是您正在運行代理還是使用puppet apply
。 Puppet 3和Puppet 4之間也可能存在一些差異(例如,默認安裝位置)。 不過,我希望這已為您指明了正確的方向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.