在傀儡中,模块的名字可以有一个破折号,因此variables也可以。 但是,那么我们如何使用这样的variables呢?
例如,我有一个在google-authenticator::params类中定义的$ssh_modevariables,所以我希望能够调用$google-authenticator::params::ssh_mode ,但puppet( $google-authenticator::params::ssh_mode )在短划线。 使用${google-authenticator::params::ssh_mode}也没有帮助。
我能做些什么来访问这个variables?
你可以在更高版本中find这个工程。 当然,在Puppet 2.7中,string中的variables插值现在包含破折号(这也会导致一些兼容性问题)。
更深层次的问题是,你依靠未定义的处理模块的破折号。我强烈build议你重命名模块使用下划线,或没有分隔符。 如果你不坚持这个build议,那么Puppet(在不同的主要版本之间来来去去)有很多错误:
类名称,模块名称以及已定义和自定义资源types的名称应限制为小写字母数字字符和下划线,并且应以小写字母开头; 也就是说,他们应该匹配expression式[az] [a-z0-9 _] *。 尽pipe目前有些名称违反了这些限制,但不推荐使用它们。
从语言指南(保留字和可接受的字符) 。
这里是描述木偶标识符中允许的字符的页面。
在类名称部分,您可以阅读:
…but if you use any hyphens, you screw up qualified variable access.
在variables部分,你可以阅读:
* [a-zA-Z0-9_]+ (No unicode nonsense or %@^ etc.) * ie no hyphens, ever.