簡體   English   中英

找不到聲明的類postgresql :: server Puppet

[英]Could not find declared class postgresql::server Puppet

我正在嘗試使用Puppet在無業游民的盒子上安裝postgresql9.4實例。 到目前為止,我對木偶和其站點上的文檔還不滿意。 到目前為止,我正在嘗試從其他教程和Postgresql Puppet Forge官方文檔中進行修補。

我所做的:

  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

我對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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM