4

私は人形の展開に慣れていません。私は2つのクラスを定義しています

class taskname{
      exec{ "deploy_script":
         command = "cp ${old_path} ${new path}",
         user = root,
      }

      cron{"cron_script2":
         command = "pyrhton ${new_path}",
         user = root,
         require = Exec["deploy_script"]
       }

 }

class taksname2{

      exec{ "deploy_script2":
         command = "cp ${old_path} ${new path}",
         user = root,
      }

      cron{"cron_script":
         command = "pyrhton ${new_path}",
         user = root,
         require = Exec["deploy_script2"]
       }



}

これら 2 つのクラスの実行順序を確認するにはどうすればよいですか。新しいマニフェスト ファイルで試してみました

これらの 2 つのクラスを含めるための init.pp

include taskname
include taskname2

最初のタスクの前に 2 番目のタスクが実行されているようです。実行順序を強制するにはどうすればよいですか?

4

2 に答える 2

5

これらのメタパラメータのいずれかを使用します。

要約すると、リソースが別のリソースに依存するときはいつでも、 beforeまたはrequireメタパラメータを使用するか、リソースを でチェーンし->ます。別のリソースが変更されたときにリソースを更新する必要があるときはいつでも、notifyまたはsubscribeメタパラメータを使用するか、 でリソースをチェーンし ~>ます。一部のリソースは、他のリソースが表示された場合に自動的に要求するため、労力を節約できます。

リソースのような構文で宣言されたクラスでも機能します

リソースに似た構文で宣言すると、クラスは任意のメタパラメータを使用できます。そのような場合、クラスに含まれるすべてのリソースにもそのメタパラメータがあります。したがって、クラスを で宣言すると、特にオーバーライドしない限りnoop => true、クラス内のすべてのリソースにも が含まれます。noop => true複数の値を取ることができるメタパラメーター (リレーションシップ メタパラメーターなど) は、コンテナーからの値と個々のリソースからの特定の値をマージします。

于 2012-12-28T17:48:36.697 に答える
4

->メタパラメータを使用して、クラス間の依存関係を指定してみてください。これらのクラスを宣言/インスタンス化する init.pp で、include ステートメントをパラメーター化されたクラス構文に置き換えます。

class {"taskname":} ->
class {"taskname2":}

これにより、tasknameが の前に呼び出されることが保証されますtaskname2。詳細については、http://docs.puppetlabs.com/guides/parameterized_classes.html#declaring-a-parameterized-classを参照してください。

于 2013-01-03T00:02:37.420 に答える