我是木偶部署的新手。我有两个类定义
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
似乎第二个任务在第一个任务之前运行。如何执行正在运行的订单?
答案 0 :(得分:5)
Use one of these metaparameters
总而言之:每当资源依赖于另一个资源时,请使用
before
或require
元参数或将资源与->
链接起来。 每当资源需要在另一个资源发生变化时刷新, 使用notify
或subscribe
元参数或将资源链接起来~>
。如果有些资源看到它们会自动获取其他资源, 这可以为你节省一些力气。
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