Puppet 里使用 define 时的依赖关系……

2014-07-07 16:03:38 +08:00
 rrfeng
module A:
define X {}
class A {
X {}
file {}
exec {}
.....
}

module B:
class B {
X {}
file {}
service {}
...
}

即在模块 A 里定义了 X ,class A 里使用了 X;在另一个模块 B 里也使用了 X。

节点配置如下:
node test {
include B
include A
Class['B'] -> Class['A']
}

---------
看起来没什么问题,但是在应用的时候会提示 X 未定义!
有两种方式可以使其正常:
1. include 的时候 A 在 B 之前;
2. -> 关系写到 include 两者之前;

--------------
疑问:
我的写法是不是不对,或者不合规范?
define 一个公用的类型应该写在哪里?如何被引用呢?
class 或者 resource 里已经有了 require 等参数指定了依赖关系(包括 -> ),那么为什么还跟配置文件内容的顺序有关系呢?不应该先分析依赖关系再执行吗?

一个想法是 define X 应该写到 class A 里面,也就是 A::X 这样给其他模块使用,细想了一下上述问题仍然会存在!

求解惑。
6411 次点击
所在节点    Puppet
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/121371

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX