我们正在研究配置/系统管理实现,并且已经对 Puppet 进行了大量的演示。Puppet 似乎擅长于一些比较简单的“确保此包已安装、此配置文件存在并且此服务正在运行”。
我似乎找不到一个管理运行不太好的软件的现实世界好例子。以下是一些例子:
- IBM DB2(通过带有安装程序的 tarball 分发,“修复包”类似)
- Simpana CommVault(使用带有 ncurses 界面的安装程序,但如果被诱导,则会接受“答案”文件)
- AccuRev(二进制安装程序,带有“应答”文件支持)
- VMWare 工具(二进制安装程序)
Puppet 用户采用什么方法将这样的软件集成到他们的环境中?
答案1
我维护一个包含本地创建的文件的服务器,并自己为此类软件制作 .deb 或 .rpm 包。
在少数情况下,我懒得做任何事情,我会exec wget
下载文件,并exec
使用提取方法(无论它是什么),使用creates
指向主二进制文件的属性。但是,它不会处理更新。
要处理更新,请将安装设为exec
,refreshonly => true
并将 放在notify
上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',
}
答案2
答案3
好吧,您可以只在一台机器上运行安装并将安装文件放入 tar/rpm/deb。当然,有时这并不容易。