我有一个 rpm(redis),需要在十几台服务器上安装。
EPEL 中提供的 redis 版本太旧(2.4.x)。软件提供商不提供可供我下载的在线存储库。
我需要安装最新版本的 2.6.x 或 2.8.x(最好是 2.6.x)
我尝试了以下解决方案。每个都有各自的问题。
从源代码编译 2.8.x(无法扩展,必须重复 12 次)
使用 puppet forge 中的 redis puppet 模块
所有 puppet 模块要么未记录,要么使用旧的 redis url 安装,因此被锁定到旧版本。我唯一需要处理的清单安装的最高版本是 2.6.14,它在 Centos 上破坏了 init 脚本
- 使用 ruby gems 安装(3.x.beta 之前的版本没有 gem)
我认为实现此目的的唯一其他方法是创建自己的存储库并找到托管它的地方。这将要求我在内部创建一个 Web 服务器或 FTP 服务器,而我真的不想这样做。
肯定有更简单的方法可以在多台机器上安装 redis 2.6.x 或 2.8.x,不是吗?还有什么其他方法可以做到?
答案1
我设法通过使用来自 rpmfind.net 的现有 RPM 来实现这一点。
然后我将其放入傀儡清单中。
# Define a class
class redis_repo ($redis_url) {
package {'redis':
ensure => present,
source => "${redis_repo::redis_url}",
provider => 'rpm',
}
service {'redis':
ensure => running,
require => Package['redis'],
status => true, #Change to false if running redis 2.6.x
}
}
# Declare the class
# modify this url to change the install version
class { 'redis_repo':
redis_url => 'ftp://rpmfind.net/linux/remi/enterprise/6/remi/x86_64/redis-2.8.6-1.el6.remi.x86_64.rpm'
}
答案2
只需在一台服务器上“制作”,将其打包、分发、解压并在每台服务器上“安装”。或者,如果您更愿意使用 rpm,只需在一台服务器上构建 rpm,分发并安装即可。无需创建和托管存储库。这不像您要部署到 1000 台机器 - 不要在自动化上花费比完成任务所需的时间更多的时间。