首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >木偶执行流程

问木偶执行流程
EN

Stack Overflow用户
提问于 2012-03-02 04:52:07
回答 2查看 7.2K关注 0票数 5

我有这个node.pp,我想知道puppet将如何执行它。

代码语言:javascript
复制
node 'agent.puppet.demo' {
    include ssh
    include postfix
    include mysql
    include apache
}

在代理节点上,当我运行以下命令时:

代码语言:javascript
复制
$ puppetd -t -d

傀儡不会按顺序执行它,这意味着它不会先执行ssh,然后是后缀,...

有人知道这是为什么吗?是不是因为它被称为“声明性语言”,执行的顺序并不重要?

如果是这样的话,我可以以某种方式声明我想要的东西,然后puppet会想出如何执行它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-02 05:33:04

免责声明:我是Puppet的开发者之一。

它将以一致但不可预测的顺序执行它,但代码中的任何显式或隐式依赖项除外。显式依赖关系是使用subscribe或require元参数指定的内容。隐式依赖项来自自动请求功能,该功能可以按照合理的顺序自动应用文件资源。

这样做的原因并不是因为语言是声明性的,而是因为在底层问题空间中,顺序对大多数事情都不重要。

例如,对于大多数人来说,管理ssh和管理postfix之间确实没有太多联系--您可以按任意顺序,甚至同时完成这项工作,一切都一样。

这样我们就可以在很多方面进行改进,而“一切都是线性的”是无法做到的。例如,我们正在努力批量安装包,同时仍然尊重包外的显式依赖关系。

因此,执行顺序和依赖关系遵循潜在的问题,我们保留了该属性,以便能够做更多令人惊叹的事情。

目标就是你在结束时所说的:你声明你想要的东西,我们负责实现它的所有细节。随着时间的推移,我们希望在逻辑依赖方面变得更聪明,所以你也必须说得更少才能做到这一点。

票数 17
EN

Stack Overflow用户

发布于 2012-03-02 06:10:13

免责声明:我仍然是木偶的新手:)

关键是要从依赖关系的角度来考虑所有事情。对于类依赖,我喜欢使用类a‘->类’b‘语法。假设您有一个tomcat类,它需要一个从oracle下载/安装sun jdk的jdk类。在您的tomcat类中,您可以使用

类“‘jdk”->类“’tomcat”

或者,您可以使用一个必需的元参数声明一个类,而不是使用include。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9523878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档