在CentOS 6上部署带有Puppet的模块时出现Ruby错误

在CentOS 6上部署带有Puppet的模块时出现Ruby错误,puppet,centos6,Puppet,Centos6,我已经在运行CentOS 6的机器上安装了Puppet master和agent 一切都进行得很顺利,直到我尝试部署一个简单的示例模块的那一刻:我遇到了一个错误,在图片上解释道 试图编辑该文件没有帮助,而且该文件实际上每次都从存储库更新 我试着运行另一个模块,这导致了相同的错误 该错误是因为Ruby代码的格式无法与旧版Ruby一起使用。CentOS 6 upstream Ruby软件包是1.8.7,这是一个非常旧的Ruby版本,并且已经EOL了 为了解决这个问题,Puppet开始将Ruby和其他

我已经在运行CentOS 6的机器上安装了Puppet master和agent

一切都进行得很顺利,直到我尝试部署一个简单的示例模块的那一刻:我遇到了一个错误,在图片上解释道

试图编辑该文件没有帮助,而且该文件实际上每次都从存储库更新

我试着运行另一个模块,这导致了相同的错误


该错误是因为Ruby代码的格式无法与旧版Ruby一起使用。CentOS 6 upstream Ruby软件包是1.8.7,这是一个非常旧的Ruby版本,并且已经EOL了

为了解决这个问题,Puppet开始将Ruby和其他依赖项打包为。这意味着当涉及到EOL Ruby、OpenSSL和任何其他依赖性时,没有依赖性地狱:它们都作为一个RPM捆绑和支持,不会影响系统包

这还意味着,您不会破坏任何需要不同系统Ruby的应用程序,并且通常会使使用Puppet变得更容易

此外,CentOS中的Puppet版本是3.X。你应该升级到Puppet 4。下面是一个将在CentOS 6上安装Puppet 4代理程序包的简便脚本:

如果出于任何原因,您仅限于使用Puppet 3,那么有一些不太可取的解决方案:

  • 下载适用于CentOS 6的新Ruby RPM(例如从)或CloudPackage.io repo(例如我为CentOS 6 Ruby软件包制作的这个)
    • 缺点:这些RPM不受官方支持,可能会出现意外问题
  • 分叉模块以更改Ruby代码
    • 缺点:这是一个很大的维护成本,每次模块上游发生更新时,您都必须这样做