Puppet 2.6.x新功能解析

日期: 2011-03-01 作者:James Turnbull翻译:Mark 来源:TechTarget中国 英文

Puppet是开源企业系统管理工具,它在Puppet 2.6.0发布版(及包括最近的2.6.5在内的后续版本)中已经加入了大量新功能。2.6.x系列版本将以多种方式成为Puppet的下一代,包括通过移动版本数里的小数点(从0.25到2.6.x系列)来使版本数正常化。在该技巧中,我们将强调它们的新功能并列举一些它们如何工作的例子。   首先,新版本标志着对Puppet初始XMLRPC连接的反对及对更快的RESTful API的支持。

这样做的结果是Puppet性能提高,与之进行的整合也更容易。   支持Ruby DSL   另一个新功能是新的Ruby DSL(域特定语言)。Puppet有一个可用来……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

Puppet是开源企业系统管理工具,它在Puppet 2.6.0发布版(及包括最近的2.6.5在内的后续版本)中已经加入了大量新功能。2.6.x系列版本将以多种方式成为Puppet的下一代,包括通过移动版本数里的小数点(从0.25到2.6.x系列)来使版本数正常化。在该技巧中,我们将强调它们的新功能并列举一些它们如何工作的例子。

  首先,新版本标志着对Puppet初始XMLRPC连接的反对及对更快的RESTful API的支持。这样做的结果是Puppet性能提高,与之进行的整合也更容易。

  支持Ruby DSL

  另一个新功能是新的Ruby DSL(域特定语言)。Puppet有一个可用来管理配置的现在DSL,但2.6.0添加了对纯Ruby版本DSL的支持。在现在的DSL中,你可以创建一项受管理的资源:

class host {
 file { “/etc/hosts”:
  mode => 0750,
  owner => root,
 }
}

  在新Ruby DSL中,你可以用如下方式表示:

hostclass :host do
 file “/etc/hosts”, :mode => 0750, :owner => “root”
end

  如果你已经熟练掌握Ruby,在你有Ruby DS的清单中,你还可以用Ruby代码执行任务。举例来说,你可以从你清单中的其它源里管理数据或检索数据,如从MySQL数据中检索数据并把它用到Puppet资源里:

require 'rubygems'
require 'mysql'
hostclass :packages do
  con = Mysql.new('localhost', 'user', 'password', 'cmdb')
  pkgs = con.query('select * from packages')
  pkgs.each_hash { |p| package p['name'], :ensure => 'latest' }
  con.close
end
node 'default' do
  include 'packages'
end

  Puppet语言中的新功能

  Puppet语言本身也有一些新功能,包括用哈希值(Puppet已经了解阵列)的能力和添加到现有if/else条件中的elsif结构。

if $foo == ‘bar’ {
  include baz
} else {
  include qux
}

  现在Puppet允许更多如下的完全if/elsif/else句法:

if $foo == ‘bar' {    
    include baz
 } elsif $qux == 'hum' {
    include valve
} else {     
    include box
}

  此外,Puppet现在支持“阶段”的概念,这意味着你可以向你的清单中添加更粗略的命令。如果在特定命令中有配置需要,这对管理分程序很有用。例如,开启主机需要的所有步骤可能发生于主机上的应用配置之前。Puppet创建一个叫做“main”的默认阶段。你可以创建其它阶段并指定它们发生的命令:

stage { [pre, post]: }
Stage[pre] -> Stage[main] -> Stage[post]

  这些代码规定两个阶段:pre和post。它接着指定执行命令,先是pre,然后是main,接着是post。接着我们可以针对特定阶段中的执行向该阶段中添加资源和类别,例如:

class {     
  "keys": stage => pre;     
  "dns": stage => main;
  "web":   stage => post;  
 }

  审计配置选项

  另一个新发展是Puppet审计配置的概念。在你运行Puppet之前你只有两种模式:

  • 执行,它在主机上做实际变更。
  • 模拟或“等待”模式,其中Puppet告诉你它将会做哪些变更但并不会真正做这些变更。

  如果你只想了解知道配置状态,新审计功能允许你指定配置。你可以指定配置,如在目录中追踪文件所属权,告知Puppet注意这些文件并发送报告显示它们随时间的状态变化。举例来说,你可以审计`/etc/hosts`文件。Puppet第一次运行文件时会报告它的特性——它归谁所有,许可,等等。在每一次的连续性运行时,Puppet会检查现有状态并报告与之前相比的所有不同情况,例如,如果文件所有人改变,会产生一条日志信息:

  审计变更:前记录值所有者root变成了所有者james

  这个功能让你可以复制一些有审计功能的工具,如有Puppet的Tripwire。

  Puppet企业版

  Puppet实验室发布了Puppet企业版,它是用一个安装程序捆绑了所有Puppet及其相关附属物的商业产品。它设计用来降低用户进入的障碍并帮助人们实施Puppet配置的最佳实践。它和开源产品功能相同,但它有自带支持、更多的稳固性测试、安装程序和额外的文档。

  包括升级Puppet Dashboard和其它主要功能的未来版本和Puppet 2.7.0,这两者都会在2011年中完成。

作者

James Turnbull
James Turnbull

暂无

相关推荐

  • 为IT变革做好准备!

    随着云计算、超融合基础架构等新技术的到来,IT人士必须承认,很少有员工愿意或者已经做好变更的准备。变革是非常混乱的。因此,最好的方法是要臣服于它,接受变革。

  • EMC与Puppet合作 共同开发开源软件

    Puppet Labs与EMC合作,开发开源软件Razor,这个软件能让IT自动从裸机环境对服务器资源调配。这让很多人感到惊奇。

  • 用配置管理工具优化服务器和人员的比率

    通过使用配置管理工具,能够减少人员成本,使操作人员和服务器的比率更加优化。但是是选择自动化程度高的软件,还是选择能让程序员得以发挥的软件呢?

  • 如何使用Puppet安装OpenStack Nova计算云?

    OpenStack从Rackpace Cloud和NASA的合作中出现,它提供运行在标准化硬件上的云计算服务。要如何使用Puppet安装OpenStack Nova计算云呢?