根据Puppet文档:
命令与声明性语言无关。
如果是这种情况,为什么这段代码有效:
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'
}
如果订单很重要,那么我可以看到为什么一个有效而另一个无效,但由于顺序无关紧要,为什么它们的行为不同?
答案 0 :(得分:1)
免责声明:我是Puppet开发人员之一。
因为我们的语言不是,正如我们的文档所声称的那样,实际上是声明性的。它实际上是订购的。 :(
在课堂或宣言中,评估或多或少是自上而下的。该评估的产品是目录中的资源,但不是对目录的评估。
将DSL视为一种不完全声明的方式来构建目录,这是一种资源图,在处理过程中完全是声明性的。