我想从其他类/实例访问定义类型实例内的属性。
这与之前提出的问题非常相似 - In Puppet, how can I access a variable/attribute inside a defined type?,但据我所知,答案与访问参数而非任意变量有关。
例如,给定以下定义的类型:
define server (
$server_name = 'my_server'
){
$server_history = 'A long story'
}
我可以成功使用getparam(...)来抓取server_name
但我无法对server_history
执行相同操作。
此外,如果server
是类而不是定义的类型,那么使用类似server::serverhistory
<的内容访问此变量非常简单/ p>
有没有人对如何公开这些变量有任何想法?或者我是以完全错误的方式接近这个?
编辑:对于我正在尝试做的某些更高级别的上下文,我的server
类型会被其他3个类实例化。 server
类型中的变量根据这些类提供给它的参数构建一些目录路径(当然,这些类特定于这些类)。还有一些其他类想要使用目录路径变量来放置文件。
答案 0 :(得分:1)
你问
我想从其他类/实例访问定义类型实例内的属性。
然后你继续澄清你之后
任意变量。
实际上,定义类型正文中的普通变量是该类型的不属性,也不是其任何实例。它们根本不属于此类类型的可访问持久状态。
更一般地说,Puppet几乎以每种可观察的方式处理定义类型,就像本机类型一样,但同样的道理,它并没有提供任何用于将定义类型区分为特殊情况的特性。您正在寻找这样的功能,但它不存在。
由于您的设计理念不起作用,您需要考虑替代方案。你说
我的服务器类型由其他3个类实例化。服务器类型中的变量根据这些类提供给它的参数构建一些目录路径(当然,这些特定于这些类)。还有一些其他类想使用目录路径变量将文件放在那里。
由于您之后的路径是特定类的特征,因此可以通过这些类直接访问它们。对我来说,你甚至想通过这些类声明的资源间接访问它们似乎很奇怪。