使用Puppet安装软件“捆绑”

我们正在研究一个configuration/系统pipe理实现的过程,我们已经做了很多Puppet的演示。 木偶似乎擅长在一些简单的“确保此软件包已安装,此configuration文件存在,并且此服务正在运行”。

我似乎无法find一个pipe理不太好的软件的现实世界的例子。 一些例子:

  • IBM DB2(通过包含安装程序的tarball进行分发,“fixpacks”类似)
  • Simpana CommVault(使用带有ncurses接口的安装程序,但如果被连接,将接受“答案”文件)
  • AccuRev(二进制安装程序,支持“答案”文件)
  • VMWare工具(二进制安装程序)

Puppet用户采用什么方法将这种软件整合到他们的环境中?

我使用本地创build的文件维护服务器,并自己为这些软件创build.deb或.rpm包。

在less数情况下,我没有为此做任何事情,我使用exec wget来下载文件,使用提取方法exec一个exec ,无论它是什么,使用指向主二进制文件的creates属性。 但是,它不会处理更新。

要处理更新,请将安装execrefreshonly => true ,并将notify放在wgetexec上。

样品:

 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', } 

exec资源对于pipe理任何不适合其他软件包types的任何东西都是有效的。

如果你可以在命令行中得到无人看pipe的东西,并且你可以检查一个文件的存在来确认安装,那么你应该可以让木偶来处理它。

举个例子,VMware Tools在puppet模块伪造网站上有一个模块, 在这里 。 从init.pp文件( 这里 )可以看到,安装过程主要通过exec资源完成。

那么,你可以运行安装在一台机器上,并安装文件到tar / rpm / deb。 当然,有时候这并不容易。