是否有可能将puppet资源引用传递给其他资源? 我的用例是用木偶build立一个jenkins构buildpipe道。 要将jenkins的工作链接到pipe道中,我需要将后继工作交给工作。 定义的一个子集是:
jobs::build { "Build ${release_name}": release => $release_name, jenkins_jobs_path => $jenkins_jobs_path, successors => 'Deploy', } jobs::deploy { "Deploy ${release_name}": release => $release_name, jenkins_jobs_path => $jenkins_jobs_path, successors => 'Smoke Test', }
在def中,你会看到我定义了继任者的名字,例如'Deploy',以及第二份工作'Smoke Test'。 我想要做的是传递一个资源的引用,并从中提取名称:
jobs::build { "Build ${release_name}": release => $release_name, jenkins_jobs_path => $jenkins_jobs_path, successors => Jobs::Deploy["Deploy ${release_name}"], } jobs::deploy { "Deploy ${release_name}": release => $release_name, jenkins_jobs_path => $jenkins_jobs_path, successors => Jobs::Smoke_test["Smoke Test ${release_name}"], }
然后在jobs :: deploy和jobs :: build定义中,我将通过引用访问资源并查询它的types等。
傀儡可以做到这一点吗?
是的,而不是successors ,使用before meta参数。 Puppet中的所有资源都允许使用四个参数来build立sorting。 before , require , subscribe和notify是四个关系的元参数。 如果资源导致另一个资源刷新,那么订阅和通知特别有用。
请参阅Puppet语言指南了解更多信息。 具体而言,关键字“sorting”和“关系”应该帮助您find解决此问题所需的信息。
如果我理解正确, successors参数与Puppet before meta参数无关,但是在那里为Jenkins定义工作关系。
这就是说,你所问的是不可能与木偶。 即使您可以将它们作为parameter passing给定义,也无法从资源引用查询值。
我想你可以用以下方式来pipe理:
jobs::build { "Build ${release_name}": release => $release_name, jenkins_jobs_path => $jenkins_jobs_path, successors => "Deploy ${release_name}", }
或者使用标签和<| |> <| |>运营商。 但这完全取决于job jobs::build定义的内容以及Jenkins所需的configuration。
这听起来更像是Mcollective的工作, 而不是Puppet。 非常广泛地说,与木偶你模型的状态,而与Mcollective你模型的活动。 如果我正确理解了你的需求,编写一个编排你的构buildpipe道的MCollective代理可能是更好的方法。 木偶在这里帮不了你