2016-08-04 77 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之間也有一些區別可能是相關的(例如,默認安裝位置)。不過,我希望這已經讓你指出了正確的方向。