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 这样给其他模块使用,细想了一下上述问题仍然会存在!
求解惑。
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 这样给其他模块使用,细想了一下上述问题仍然会存在!
求解惑。