Puppet 4新特性与Hiera数据分离实践
1. Puppet 4新特性
1.1 新风格与Ruby DSL的变化
Puppet 4引入了新的风格,例如:
class syslog_ng { ... } include syslog_ng同时,Puppet 4不再支持Ruby DSL。在之前,有人会将.rb文件作为清单放在模块中,这些.rb文件包含Ruby代码,主要用于处理数据。但Puppet 4现在有了数据类型,使得这种做法变得过时,并且已经移除了对这些Ruby清单的支持。
1.2 相对类名解析
在Puppet 3及更早版本中,如果本地类名与另一个模块的类名相同,则需要指定绝对类名。例如:
# in module "mysql" class mysql { ... } # in module "application" class application::mysql { include mysql }在application::命名空间中,Puppet 3会在该命名空间中搜索要包含的mysql类,实际上application::mysql类会包含自身,这并非我们的本意。为了解决这个问题,需要指定mysql模块类的绝对路径: