2016-08-04 5 views
1

私は、PostgreSQL9.4のインスタンスをPuppetを使用して不快なボックスにインストールしようとしています。これまでのところ、私は人形劇とそのサイトのドキュメンテーションで自分の時間を楽しんでいません。これまでは別のチュートリアルやPostgresql Puppet Forgeの公式文書からパッチを当てようとしています。宣言されたクラスを見つけることができませんでしたpostgresql :: server Puppet

は私がやった:

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!', 
} 

  1. puppet module install puppetlabs-postgresql

  2. は私がinit.ppファイルにこのコードを配置している/etc/puppet/modules/postgresql/manifests/init.ppファイル

  3. を作成しました

私が受け取るエラーは、このです:

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オートメーション、オーケストレーション、設定管理、デプロイメントなどに取り掛かっている人にとっては、Puppetは本当に始めるのに適していません。これは、関連するソフトウェアツールの中で最も高度で複雑なものです。正直なところ、あなたは少しでもAnipalと遊んで、より多くの経験を持ってPuppetに戻ってみたいかもしれません。直接の注意として、なぜVagrantのマスター/クライアントパラダイムでPuppetを使用しようとしていますか?あなたは、Vagrant Puppetプロビジョニングプラグインを使用して、それよりずっと簡単に時間を取ることができます。 –

答えて

2

これまでのところ、私は人形とそのサイトのドキュメントで私の時間を楽しんでいません。これまでは、別のチュートリアルやPostgresql Puppet Forgeの公式ドキュメントからパッチを当てようとしています。

は、私はあなたが、次のしてきた不特定多数のチュートリアルに話すことはできませんが、人形の独自のPostgreSQLのモジュールのドキュメントは、すでにパペット言語や動作モードに精通していることを前提としています。私はいつも、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の愛好家は「これを行う方法は複数あります」と言う傾向があります。

私は、クラス宣言とクラス定義の区別を強調します。前者は、「名前付きクラスはターゲットノードに適用する」と、後者はクラスをノードに適用することを意味すると説明しています。これらは、一方では関数呼び出しと他方では関数本体と同様に考えることができます。サードパーティのモジュールからクラスを使用しようとしているので、後者はモジュールの一部でなければなりません。あなたのPuppetのインストールが/etc/puppetであるとすると、/etc/puppet/modules/postgresqlディレクトリ全体がモジュールの実装に属しているので、そこに何も置いてはいけません。その場合、モジュールツールはの定義を/etc/puppet/modules/postgresql/manifests/server.ppにインストールする必要があります。

特に、エージェントを実行している場合でも、puppet applyを使用している場合でも、必須の詳細の一部を提供していないため、行うべきことについて具体的な説明はできません。また、関連性のあるパペット3とパペット4の間にはいくつかの違いがあります(たとえば、デフォルトのインストール場所)。それにもかかわらず、私はこれが正しい方向をあなたに教えてくれたことを願っています。

関連する問題