2012-03-01 10 views
5

私はこのnode.ppを持っており、パペットがそれをどのように実行するのだろうと思います。エージェント・ノードでパペット実行フロー

node 'agent.puppet.demo' { 
    include ssh 
    include postfix 
    include mysql 
    include apache 
} 

、私はこれが実行すると:人形はそれを順番に意味を実行していない

$ puppetd -t -d 

、それはpostfixの、その後、最初のsshを実行していない、...

誰がなぜこれが分かっていますか?それは実行の順序が本当に重要でないところで「宣言的言語」と呼ばれているのでしょうか?

これが当てはまる場合、私はちょうどある方法で、私が望むものを宣言し、人形はそれを実行する方法を理解するでしょうか?

答えて

17

免責事項:私はPuppetの開発者の一人です。

コード内の明示的または暗黙的な依存関係を除いて、一貫性がありますが予測できない順序で実行します。明示的な依存関係は、subscribeまたはrequireメタパラメータで指定したものです。暗黙的な依存関係は、自動要請機能から来ています。これは、ファイルリソースを自動的に適切な順番で適用するようなことです。

この理由は言語が宣言的ではなく、言語が宣言的であるという理由は、基本的な問題空間の大部分について順序が重要でないためです。

例えば、ほとんどの人にとってsshの管理とpostfixの管理にはあまり関係がありません。どちらの作業でも、同時に、あるいはすべてを同じように実行できます。

これは、「すべてが線形秩序である」ということを、多くの点で改善することを可能にします。たとえば、パッケージ外の明示的な依存関係を尊重しながら、パッケージのインストールを一括して処理するなどの作業をしています。

したがって、実行と依存関係の順序は根底にある問題に従っており、より素晴らしいことを実行できるようにそのプロパティを保存しています。

最終目標は、あなたが望むものを宣言し、そこに到達するためのすべての詳細を世話します。時間がたつにつれ、論理的な依存関係についてもっとスマートになることを願っています。

+2

一貫性があり、予測できない注文*を定義してください。 Puppet 2.6ではステップを再注文するだけで多くの問題が発生しています。いくつかの依存関係がなくなると失敗します。これは不合理です。私はそれを適切にテストできるようにシャッフルを強制することはできますか?私はまた、新しいバージョンは、それが固定順序を与える聞いたことがある。 – lzap

+0

例えば、yum.repos.dのリポジトリの既存のものに依存してインストールするパッケージがあるとします。パッケージをインストールしようとする前に、リポジトリをインストールしておくことをどのように強制できますか? – Mojo

3

免責事項:私はまだ

キーは、依存関係の面ですべてのものを考えることです:)パペットするかなり新しいです。クラスの依存関係については、Class ['a'] - > Class ['b']構文を使用するのが好きです。 oracleからsun jdkをダウンロード/インストールするjdkクラスが必要なtomcatクラスがあるとします。あなたのTomcatのクラスでは、あなたが

クラス[「JDK」]でこれを指定することができます - >クラス[「Tomcatの」]

別の方法としては、むしろ含める使用するよりも必要とメタパラメータを持つクラスを宣言することができます。

+0

したがって、依存関係が正しく適用されるように、次の行を追加する必要があります。 クラス['apache '] - >クラス[' mysql '] - >クラス[' postfix '] - >クラス[' ssh '] 独立したモジュールを相互依存関係にすることなく、内部要求=>クラス... – Maverick

+0

あなたはそれを後方に持っています。クラス['a'] - >クラス['b']はクラスbがクラスaを要求することを意味する。 私がそれをやりたがっていることは、それ自身のモジュールの各パッケージです。各モジュールは、それ自身の依存関係を他のクラスに指定します。私は、すべてで必要とされるsshのようなもののためにベースのuberクラスを使用するのが好きです。そのためには、常に最初に実行されるように実行ステージを使用します。 – czervik

+0

@czervik sshのようなものにあなたのuberクラスをどのように組み込むかを、他のすべてのクラスに含められるように表示してもいいですか? – memyself

関連する問題