【问题标题】:Unable to provision rabbitmq using chef and testkitchen无法使用 chef 和 testkitchen 配置 rabbitmq
【发布时间】:2020-08-27 22:36:32
【问题描述】:

我正在尝试使用 Chef (cookbook 'rabbitmq', '~> 5.8.5') 和 Kitchen 安装旧版本的 RabbitMQ,在我的配置下:

属性

#Erlang
default['erlang']['install_method'] = 'source'
default['erlang']['source']['version']='R13B03'
default['erlang']['source']['checksum']='e7c46c8b2778f22064a3b369c1a1b572a1cc0e8a2198166858d4b9a1b488d662'

#RabbitMQ
default['rabbitmq']['erlang']['enabled'] = true
default['rabbitmq']['version'] = "3.4.4"
default['rabbitmq']['rpm_package'] ='rabbitmq-server-3.4.4-1.noarch.rpm'

食谱:

include_recipe 'rabbitmq::default'

当我运行厨房收敛时,我得到以下异常:

Running handlers:
   [2020-08-22T22:20:07+00:00] ERROR: Running exception handlers
   Running handlers complete
   [2020-08-22T22:20:07+00:00] ERROR: Exception handlers complete
   Chef Infra Client failed. 9 resources updated in 06 minutes 26 seconds
   [2020-08-22T22:20:07+00:00] FATAL: Stacktrace dumped to /tmp/kitchen/cache/chef-stacktrace.out
   [2020-08-22T22:20:07+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
   [2020-08-22T22:20:07+00:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: rpm_package[/tmp/kitchen/cache/rabbitmq-server-3.4.4-1.noarch.rpm] (rabbitmq::default line 224) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
   ---- Begin output of ["rpm", "-i", "/tmp/kitchen/cache/rabbitmq-server-3.4.4-1.noarch.rpm"] ----
   STDOUT:
   STDERR: warning: /tmp/kitchen/cache/rabbitmq-server-3.4.4-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 056e8e56: NOKEY
   error: Failed dependencies:
   erlang >= R13B-03 is needed by rabbitmq-server-3.4.4-1.noarch
   ---- End output of ["rpm", "-i", "/tmp/kitchen/cache/rabbitmq-server-3.4.4-1.noarch.rpm"] ----
   Ran ["rpm", "-i", "/tmp/kitchen/cache/rabbitmq-server-3.4.4-1.noarch.rpm"] returned 1

但是当我登录到VM时,我可以看到安装了erlang:

[vagrant@kitchen-rmq-server-centos-7 ~]$ erl
Erlang R13B03 (erts-5.7.4) [source] [64-bit] [rq:1] [async-threads:0] [hipe] [kernel-poll:false]
    
Eshell V5.7.4  (abort with ^G)
1>

和RMQ要求的版本相同(R13B03) 知道如何解决这个问题吗?

编辑:复制问题https://github.com/Proximator/chef-rmq

【问题讨论】:

  • 您是否有存储库来共享和重现问题?
  • @Mr.我创建了一个 repo 来重现这个问题:github.com/Proximator/chef-rmq
  • 你错过了 Gemfile.lock,这使得 bundler gem 解析运行时间过长,所以我不得不杀死它。请添加锁定文件,然后我会尝试更深入地查看
  • @Mr.我添加了,谢谢你的帮助
  • 您能否登录到您的虚拟机并尝试手动运行 Chef 尝试的相同命令:rpm -i /tmp/kitchen/cache/rabbitmq-server-3.4.4-1.noarch.rpm(以 root 身份)。输出会是什么?

标签: rabbitmq chef-infra


【解决方案1】:

首先,我们必须确保 erlang 是通过 rabbitmq 食谱安装的,而不是通过任何其他方式安装的。这是在 Chef 超市找到的 rabbitmq cookbook 的注释:

这些包不能与其他 Erlang 包一起安装,例如来自标准 Debian 存储库或 Erlang 解决方案的包。

确保rabbitmq::default 没有使用 Erlang 食谱

此外,还有一个 compatibility matrix 的 RabbitMQ 和 Erlang 版本。 RabbitMQ 3.7.0 是最低支持的版本,最低兼容的 Erlang 版本是 19.3。

Erlang RPM 的依赖性为零“足以运行 RabbitMQ”,如下所述:

https://github.com/rabbitmq/erlang-rpm

例如 - 使用兼容的 Erlang 19.3.x 安装 RabbitMQ 3.7.x:

你应该有这些属性:

default['rabbitmq']['erlang']['enabled'] = true
default['rabbitmq']['version'] = '3.7.6'
default['rabbitmq']['erlang']['yum']['baseurl'] = 'https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/19/el/7'
default['rabbitmq']['erlang']['version'] = '19.3.6.13'

然后包括以下食谱:

include_recipe 'rabbitmq::erlang_package'
include_recipe 'rabbitmq::default'

【讨论】:

  • 我试过了,但它安装的是最新的 erlang (22) 而不是 R13B03 版本
  • Latest 默认安装,但可以通过node['rabbitmq']['erlang']['version']进行更改/设置
  • 顺便说一句,RabbitMQ 3.4.4 似乎是unsupported release。所以兼容的 rabbitmq-erlang 可能不可用。为什么要使用这个版本?
猜你喜欢
  • 2015-03-25
  • 2020-12-04
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2019-02-25
相关资源
最近更新 更多