Search code examples
erlangrabbitmqvagrantchef-infraberkshelf

Unable to provision RabbitMQ on Fedora/VirtualBox using Vagrant and Chef Solo. ERR: "erlang >= R13B-03 is needed by rabbitmq-server-3.4.3.1.noarch"


I'm trying to provision RabbitMQ (latest) onto a Fedora 20 base box (VirtualBox provider).

My recipe looks like this :

config.vm.provision "chef_solo" do |chef|
   ...
   chef.add_recipe "rabbitmq"
   chef.add_recipe "rabbitmq::mgmt_console"
   ...
end

My metadata.rb has :

depends 'rabbitmq', '~> 3.8.0'

My Berksfile has :

source "https://supermarket.chef.io"

metadata

cookbook 'rabbitmq', '~> 3.8.0'

And the error after running "vagrant provision" is :

==> default: Running handlers:
==> default: [2015-01-26T16:21:20+00:00] ERROR: Running exception handlers
==> default: Running handlers complete
==> default: [2015-01-26T16:21:20+00:00] ERROR: Exception handlers complete
==> default: [2015-01-26T16:21:20+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
==> default: Chef Client failed. 31 resources updated in 178.337417046 seconds
==> default: [2015-01-26T16:21:20+00:00] ERROR: rpm_package[/var/chef/cache/rabbitmq-server-3.4.3-1.noarch.rpm] (rabbitmq::default line 112) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
==> default: ---- Begin output of rpm  -i /var/chef/cache/rabbitmq-server-3.4.3-1.noarch.rpm ----
==> default: STDOUT: 
==> default: STDERR: warning: /var/chef/cache/rabbitmq-server-3.4.3-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 056e8e56: NOKEY
==> default: error: Failed dependencies:
==> default:    erlang >= R13B-03 is needed by rabbitmq-server-3.4.3-1.noarch
==> default:    logrotate is needed by rabbitmq-server-3.4.3-1.noarch
==> default: ---- End output of rpm  -i /var/chef/cache/rabbitmq-server-3.4.3-1.noarch.rpm ----
==> default: Ran rpm  -i /var/chef/cache/rabbitmq-server-3.4.3-1.noarch.rpm returned 1
==> default: [2015-01-26T16:21:21+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

I have always been assuming that I do not need to declare erlang as a direct dependency in metadata.rb - since it is referenced as a dependency from the rabbitmq cookbook. I did try doing that though, with the same results. Thanks for any help.


Solution

  • You are trying to install using the rabbitmq.com packages, which require a package called "erlang" as a dependency. Either set the attribute node['erlang']['install_method'] to 'esl' to use the Erlang Solutions packages or set node['rabbitmq']['use_distro_version'] to true to use the Fedora packages for RabbitMQ instead.