我们正在研究配置/系统管理实现,我们已经完成了很多Puppet的演示. Puppet似乎很擅长一些简单的“确保安装此软件包,此配置文件存在,并且此服务正在运行.”
我似乎无法找到一个很好的现实世界的例子来管理那些不能很好地运行的软件.一些例子:
> IBM DB2(通过tarball与安装程序分发,“fixpacks”类似)
> Simpana CommVault(使用带有ncurses接口的安装程序,但如果被哄骗则接受“回答”文件)
> AccuRev(二进制安装程序,具有“回答”文件支持)
> VMWare工具(二进制安装程序)
解决方法
我维护一个包含本地创建文件的服务器,并自己为这些软件制作.deb或.rpm软件包.
在一些我没有费心去做任何事情的情况下,我做一个exec wget来下载文件,一个带有提取方法的exec,无论它是什么,使用指向主二进制文件的creates属性.但是,它不会处理更新.
要处理更新,请使安装exec为refreshonly =>是的,并在exec上为wget发出通知.
样品:
exec { "/usr/bin/wget http://fileserver.domain/jboss/jboss-${version}.prd.tar.gz -O /tmp/jboss.tgz": creates => '/tmp/jboss.tgz',require => Package['wget'],alias => 'wget_jboss',} exec { '/bin/tar xzvf /tmp/jboss.tgz': cwd => '/opt',creates => "/opt/jboss-${version}/bin",user => 'jboss',group => 'jboss',require => [ User['jboss'],Exec['wget_jboss'],File["/opt/jboss-${version}"],],before => Service['jboss'],alias => 'untar_jboss',}