一切都完成后或 exec 完成后执行 create_resource

Execute create_resource after everything has finished or after exec has finished

是否可以控制create_resources函数的执行?假设我有一个 class 和一个定义:

define do::something($a, $b) {
    exec { .. }
    exec { .. }
}

class do::foo {
    $params = {
        'a' => { .. },
        'b' => { .. }
    }

    exec {'I need to run first': ... }

    create_resources('do::something', $params)
}

在我的例子中,我使用 do::something 将密钥添加到 key/value 商店。但我需要先等待 exec 刷新这家商店。如果 execcreate_resources 之后,这些键将不会在 key/value 存储中,因为刷新会删除它们。

我尝试过使用 -> 方法和 notify => Exec[] 但我不确定在这种情况下如何传递参数。 create_resource 有它自己的条件天气它将执行但每次都需要在 exec 之后调用它。

与所有 Puppet 功能一样,create_resources() 在目录构建期间运行 。每个目录都是在应用其中声明的任何资源之前完全构建的,并且通常在与其预期的机器不同的机器上。您所追求的似乎不是调节 create_resources() 的行为,而是管理它添加到目录中的资源的相对应用顺序。

而且你可以很容易地通过链操作员和资源收集器来做到这一点。例如,添加

Exec['I need to run first'] -> Do::Something<||>

到 class do::foo 的正文。对此有很多可能的变体,还有一些替代方法,但我需要具体用例的详细信息才能提出更有力或更具体的建议。