如何确保木偶类的运行顺序?

时间:2012-12-28 17:42:51

标签: ruby deployment puppet

我是木偶部署的新手。我有两个类定义

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"]
       }



}

如何确保这两个类的运行顺序。 我试过一个新的清单文件

init.pp包含这两个类

include taskname
include taskname2

似乎第二个任务在第一个任务之前运行。如何执行正在运行的订单?

2 个答案:

答案 0 :(得分:5)

Use one of these metaparameters

  

总而言之:每当资源依赖于另一个资源时,请使用   beforerequire元参数或将资源与->链接起来。   每当资源需要在另一个资源发生变化时刷新,   使用notifysubscribe元参数或将资源链接起来   ~>。如果有些资源看到它们会自动获取其他资源,   这可以为你节省一些力气。

Also works for classes declared with a resource-like syntax

  

当使用类似资源的语法声明时,类可以使用any   metaparameter。在这种情况下,类中包含的每个资源   也会有那个元参数。因此,如果您使用noop => true声明一个类,则该类中的每个资源也将具有noop => true,   除非他们明确地覆盖它。可以采取的元参数   将合并多个值(如关系元参数)   来自容器的值和来自的容器中的任何特定值   个人资源。

答案 1 :(得分:4)

尝试使用元参数->来指定类之间的依赖关系。在init.pp中,您声明/实例化这些类,请使用参数化类语法替换include语句:

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

这将确保在taskname之前调用taskname2。有关详细信息,请参阅http://docs.puppetlabs.com/guides/parameterized_classes.html#declaring-a-parameterized-class