2012-06-20 36 views
2

根据Puppet文档:Puppet DSL:顺序无关紧要?

顺序在声明性语言中无关紧要。

如果是这样的话,为什么会出现这种位代码的工作:

class myserver { 
    $package_to_install = 'libcapture-tiny-perl' 
    package { 
    $package_to_install: ensure => present; 
    } 
} 

但是这个代码不工作:

class myserver { 
    package { 
    $package_to_install: ensure => present; 
    } 
    $package_to_install = 'libcapture-tiny-perl' 
} 

如果顺序的问题,那么我就可以看看为什么一个人工作,另一个人不工作,但由于秩序并不重要,为什么他们的行为有所不同?

回答

1

声明:我是Puppet开发人员之一。

因为我们的语言不是,正如我们的文档声称,实际上是声明性的。它实际上是有序的。 :(

评价或多或少顶部类或声明中底部。该评价的产品在目录中的资源,但是,没有目录的评价。

的DSL作为的思考并非完全说明性的方式来构建目录,这是资源图,它们在处理中完全是声明式的。

+0

您是否有指向某些Puppet Labs文档的指针,可能会详细解释语言是如何编译和执行的? – rlandster

+0

不幸的是,没有,我在答案中加入了一些更多的解释 –

+0

因此,一个Puppet DSL文件以“正常”命令的方式被预编译成表示与顺序无关(模显式依赖性)的资源图的结构。那是对的吗? – rlandster

相关问题