最近tomcat由于安全问题需要升级,但是在研发类型的公司做过运维的人应该都了解,这种公司的产品都是给客户提供的商业产品,可用性是非常的关键。所以最少有2个环境,staging/production, 所有的puppet agent都在运行,一旦你改了version,那么staging还未进行测试都apply to production了,这样有很大的风险,虽然之前都做过很多评估。在Puppet没有Hiera之前若要解决此类问题,就有点麻烦了,写2个module,里面指定不同的version。这样就要维护2个不同的代码库。staging/production的puppet master 分别去check out自己的,这样又涉及到改git/svn的url的问题了。
用了hiera非常简单,不同的environment的version值不同,非常简单。
### module/tomcat/manifests/init.pp####
class tomcat ( $tomcat_version="7.0.54"......)
{ ......
}
从这里看 />
从puppet 3.3 and later,无需改init.pp,只需要在对应的hieradata/XXX.yaml加一行
tomcat::tomcat_version: 7.0.61
而低于3.3的需要改init.pp和yaml.
$tomcat_ver = hiera('tomcat_version', '7.0.61'), # 从hiera查找版本,default是7.0.61
......
#hiera.yaml指定查找的顺序,根据情况,设定production/staging YAML的不同值。
那么staging上tomcat的版本和production的就不同了,互不影响,维护代价非常的小。
tips:可以debug 结果如下: hiera -d tomcat_version ::environment=staging ::role=multi_tomcat ( -a 就是array)
阅读(1587) | 评论(0) | 转发(0) |