2016-04-05 12 views
0

あらかじめ作成されたキバナパペットモジュール(EDIT: 'lesaux/kibana4')を使用した小さなモジュールに取り組んでいます。また、シールドプラグインをインストールする簡単なexecも含まれています木場。 (Sidenote:この例では、私のマニフェストに含まれている別のモジュールからjava8もインストールしています)パペット - 依存関係は機能していません

私の問題は、キバナが実際にインストールされる前にexecが実行され続けることです。私は最初にキバナをインストールし、次にエグゼクティブをインストールします。そこで、以下に示すように「require」を追加し、後でexecが実行されるようにチェーンを追加しました。

class test_kibana { 

    class { '::kibana4': 
    package_ensure    => '4.4.0-linux-x64', 
    package_provider   => 'archive', 
    config      => { 
     'server.host'   => 'localhost', 
     'elasticsearch.url'  => 'http://localhost:9200', 
     'elasticsearch.username' => 'testUserName', 
     'elasticsearch.password' => 'testPassword', 
     'shield.encryptionKey' => 'testencryptionkey', 
    } 
    } -> 

    exec { 'install kibana shield plugin': 
    require     => Class['::kibana4'], 
    path      => '/opt/kibana4/bin', 
    command     => 'kibana plugin --install kibana/shield/latest', 
    } 

} 

必要とチェーンが機能していないようです。したがって、execが実行しようとすると、コマンドが何を意味するのかわからず、kibanaはまだ存在しないため失敗します。

人形はなぜ私が必要とする順序でこれらをインストールしないのですか?

==> nat: Notice: Scope(Archive::Download[kibana-4.4.0-linux-x64.tar.gz]): No checksum for this archive 
==> nat: Notice: Compiled catalog for nat.test.com in environment production in 2.58 seconds 
==> nat: Notice: /Stage[main]/Apt/File[preferences]/ensure: created 
==> nat: Notice: /Stage[main]/test_java8/File[/tmp/java.preseed]/ensure: defined content as '{md5}fa13124e9e801dd42c91fa94ef7f1c1e' 
==> nat: Notice: /Stage[main]/test_java8/File[/tmp/jce]/ensure: created 
==> nat: Notice: /Stage[main]/test_java8/File[/tmp/jce/local_policy.jar]/ensure: defined content as '{md5}dabfcb23d7bf9bf5a201c3f6ea9bfb2c' 
==> nat: Notice: /Stage[main]/test_java8/File[/tmp/jce/US_export_policy.jar]/ensure: defined content as '{md5}ef6e8eae7d1876d7f05d765d2c2e0529' 
==> nat: Notice: /Stage[main]/Kibana4::User/Group[kibana4]/ensure: created 
==> nat: Notice: /Stage[main]/Kibana4::User/User[kibana4]/ensure: created 
==> nat: Error: Could not find command 'kibana' 
==> nat: Error: /Stage[main]/Smart_monitoring_kibana/Exec[install kibana shield plugin]/returns: change from notrun to 0 failed: Could not find command 'kibana' 
==> nat: Notice: /Stage[main]/Apt/Apt::Setting[conf-update-stamp]/File[/etc/apt/apt.conf.d/15update-stamp]/content: content changed '{md5}b9de0ac9e2c9854b1bb213e362dc4e41' to '{md5}0962d70c4ec78bbfa6f3544ae0c41974' 
==> nat: Notice: /Stage[main]/test_java8/Apt::Ppa[ppa:webupd8team/java]/Exec[add-apt-repository-ppa:webupd8team/java]/returns: executed successfully 
==> nat: Notice: /Stage[main]/Apt::Update/Exec[apt_update]: Triggered 'refresh' from 1 events 
==> nat: Notice: /Stage[main]/test_java8/Exec[apt-update]/returns: executed successfully 
==> nat: Notice: /Stage[main]/test_java8/Package[oracle-java8-installer]/ensure: created 
==> nat: Notice: /Stage[main]/test_java8/File[/etc/profile.d/set_java_home.sh]/ensure: defined content as '{md5}717258a243a8addc2506097f12cd611f' 
==> nat: Notice: /Stage[main]/test_java8/Exec[install-jce]/returns: executed successfully 
==> nat: Notice: /Stage[main]/Kibana4::Install/Archive[kibana-4.4.0-linux-x64]/Archive::Download[kibana-4.4.0-linux-x64.tar.gz]/Exec[download archive kibana-4.4.0-linux-x64.tar.gz and check sum]/returns: executed successfully 
==> nat: Notice: /Stage[main]/Kibana4::Install/Archive[kibana-4.4.0-linux-x64]/Archive::Extract[kibana-4.4.0-linux-x64]/Exec[kibana-4.4.0-linux-x64 unpack]/returns: executed successfully 
==> nat: Notice: /Stage[main]/Kibana4::Install/Exec[chown_kibana_directory]: Triggered 'refresh' from 1 events 
==> nat: Notice: /Stage[main]/Kibana4::Install/File[/opt/kibana4]/ensure: created 
==> nat: Notice: /Stage[main]/Kibana4::Config/File[kibana-config-file]/content: content changed '{md5}dacdab7bddd2bcede2cc7cd8c6948307' to '{md5}7c24ae699bfbfbb5314ce01bdcdc3b6d' 
==> nat: Notice: /Stage[main]/Kibana4::Config/File[kibana-config-file]/mode: mode changed '0644' to '0755' 
==> nat: Notice: /Stage[main]/Kibana4::Config/File[/var/run/kibana.pid]/ensure: created 
==> nat: Notice: /Stage[main]/Kibana4::Config/File[/var/log/kibana]/ensure: created 
==> nat: Notice: /Stage[main]/Kibana4::Service/File[/etc/init.d/kibana4]/ensure: defined content as '{md5}0c5c726cdabb5355276abc6394a868a7' 
==> nat: Notice: /Stage[main]/Kibana4::Service/File[/etc/default/kibana4]/ensure: defined content as '{md5}57b82a4af4f8872bfbc6488b0a85c652' 
==> nat: Notice: /Stage[main]/Kibana4::Service/Service[kibana4]/ensure: ensure changed 'stopped' to 'running' 
==> nat: Notice: Applied catalog in 644.11 seconds 

EDIT:

は、ここに私の出力である私はlesaux/kibanaモジュールが最近更新されたことを発見した、と今では、インストールの一部としてプラグインをインストールすることができます。 (したがって、このexec関数を使用する必要はありません。問題は解決しました。)

+0

あなたが使っているのはlesaux-kibana4ですか? –

+0

はいlesaux-kibana4 – Xenidious

答えて

3

あなたはcontainmentの問題があります。

クラスは、直接宣言するすべてのリソースのコンテナとして機能します。クラスとの関係を宣言すると、それはそれらのすべてのリソースと同じ関係を意味します。

クラスはリソースではなく、クラスが宣言する他のクラスのコンテナとして自動的に機能しません。これには非常に良い理由がありますが、ここではあまり関係ありません。あなたのために、Execとクラスkibana4::installkibana4::exec、およびkibana4::serviceの間には関係がありません。 Puppetはこれらの3つの後にExecを同期するように制約されていません。

宣言する他のクラスの一部またはすべてをクラスに含めたいのはよくあることですが、決して普遍的ではありません。そのためには、contain関数/文があります(Puppet 3.4以降)。あなたはクラスKibana4の身体の最後

contain 'kibana4::install' 
contain 'kibana4::exec' 
contain 'kibana4::service' 

を追加する場合は、あなたが探している封じ込めセマンティクスを取得します。

v3.4より古いパペット(現在のバージョンは4.4、v3ツリーの最新バージョンはv3.8です)には適切な封じ込めを保証する他の方法があります。マニュアルのセクションIリンクされた。

+0

お返事ありがとうございます。私がこれを正しく実装していることを確認するには: 包含行 - クラス{':: kibana4':}ブロックの最後にあるべきですか?私はこのクラスの設定セクションを閉じた直後に配置しましたが、このマニフェストを使って迷路のボックスを起動すると、 'contains'に 'Syntax Error'が表示されます。 – Xenidious

+0

@CameronMcAuley、いいえ、クラスkibana4: 'class kibana4(...){... contains 'kibana4 :: service'}'の*定義*の最後にあります。つまり、内部クラス 'kibana4 :: service'、* etc *を宣言するのと同じスコープで私はリンクされたマニュアルのセクションを読むことをお勧めします。なぜなら、問題と解決策に関するさらに詳しい情報を提供しているからです。 –

+0

あなたがリンクしてくれたマニュアルをありがとう - これは私が以前知っていたものではなく、この種の問題が私のために非常に多く作れるので、これは将来私を本当に助けてくれるでしょう。 あなたが提案した場所にcontains(kibana4 :: install、kibana4 :: exec、kibana4 :: service)を配置しようとしましたが、今では迷惑メールボックスを起動すると、:: kibana4内部クラスのパラメータが認識されなくなりました - '無効なパラメータ:' package_ensure ' – Xenidious

関連する問題