使用 Puppet 安装软件“包”

使用 Puppet 安装软件“包”

我们正在研究配置/系统管理实现,并且已经对 Puppet 进行了大量的演示。Puppet 似乎擅长于一些比较简单的“确保此包已安装、此配置文件存在并且此服务正在运行”。

我似乎找不到一个管理运行不太好的软件的现实世界好例子。以下是一些例子:

  • IBM DB2(通过带有安装程序的 tarball 分发,“修复包”类似)
  • Simpana CommVault(使用带有 ncurses 界面的安装程序,但如果被诱导,则会接受“答案”文件)
  • AccuRev(二进制安装程序,带有“应答”文件支持)
  • VMWare 工具(二进制安装程序)

Puppet 用户采用什么方法将这样的软件集成到他们的环境中?

答案1

我维护一个包含本地创建的文件的服务器,并自己为此类软件制作 .deb 或 .rpm 包。

在少数情况下,我懒得做任何事情,我会exec wget下载文件,并exec使用提取方法(无论它是什么),使用creates指向主二进制文件的属性。但是,它不会处理更新。

要处理更新,请将安装设为execrefreshonly => true并将 放在notifyexecwget

样本:

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

答案2

资源exec是一种统称,用于管理任何无法很好地融入其他包装类型的物品。

如果您可以让某些东西在命令行上无人值守,并且可以检查文件的存在以确认安装,那么您应该能够让 puppet 来处理它。

您的一个例子,VMware Tools,在puppet module forge网站上有一个模块,这里。正如你从 init.pp 文件中看到的那样(这里),安装过程主要通过资源来完成exec

答案3

好吧,您可以只在一台机器上运行安装并将安装文件放入 tar/rpm/deb。当然,有时这并不容易。

相关内容