我们确保该软件包可用,甚至手动下载并将其安装在其中一个目标服务器上。
然而,当我们运行 Puppet 安装更新的 REST 包时,我们收到以下错误:
err: /Stage[main]/zone_v1::Packages/Package[prod-connect]/ensure: change from 6.27.2-35935 to 6.27.2-36212 failed: Could not update: Execution of '/usr/bin/yum -d 0 -e 0 -y install prod-connect-6.27.2-36212' returned 1: Error: Nothing to do
这不是 Fabric、Puppet 或 RPM 存储库中的错误。Fabric 登录以运行 Puppet 命令的本地计算机上似乎存在配置错误。
答案1
//,因此,第二天早上我们研究了安装问题,并能够成功地继续在我们的测试区域中的机器上进行 Puppet 更新,以安装新的 RPM 并正常启动服务器。
我们认为问题在于目标服务器上的 yum 缓存未刷新,无法了解为 prod-connect-6.27.2-36212 提供的版本,因此无法安装。
查看部署作业日志输出,可能出现该命令仅针对少数机器执行的情况,而实际上有些机器只是错过了包。
这种情况以前也出现过,当时推送到我们的 RPM 存储库的构建版本在尝试“yum install”的机器上没有出现。
解决方案是发出“yum clean all”命令,以便机器刷新其本地存储库元数据,从而“看到”新推送的版本。
如果工程团队上传到我们的 RPM 存储库与我们尝试部署之间的时间间隔较长,这通常不会成为问题。原因是 CEntOS 6 会定期自动刷新其本地存储库元数据。
解决方案:确保在部署结构脚本中添加(如果尚未添加)一个步骤,对所有区域的机器执行“yum clean all”。
如果我们构建了一个版本并希望立即将其部署到集群,那么希望可以避免这个问题。