这是我得到的错误:
ubuntu@sync1:/etc/puppet$ sudo /usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install rabbitmq-server Reading package lists... Building dependency tree... Reading state information... rabbitmq-server is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded. 1 not fully installed or removed. After this operation, 0 B of additional disk space will be used. Setting up rabbitmq-server (3.2.2-1) ... * Starting message broker rabbitmq-server * FAILED - check /var/log/rabbitmq/startup_\{log, _err\} [fail] invoke-rc.d: initscript rabbitmq-server, action "start" failed. dpkg: error processing rabbitmq-server (--configure): subprocess installed post-installation script returned error exit status 1 E: Sub-process /usr/bin/dpkg returned an error code (1) ubuntu@sync1:/etc/puppet$
运行sudo puppet apply manifeststs / site.pp后会发生这种情况。
这是我的兔子class:
# See https://github.com/puppetlabs/puppetlabs-rabbitmq class my_rabbitmq ($environment, $type, $user, $password) { # case $environment { # staging: { # #@todo # } # production: { # #@todo # } # } # # case $type { # sync: { # #@todo # } # async: { # #@todo # } # } class { '::rabbitmq': delete_guest_user => true, version => '3.2.2', }-> rabbitmq_user { 'richard': admin => true, password => 'richard_password', provider => 'rabbitmqctl', }-> rabbitmq_user_permissions { 'richard@/': configure_permission => '.*', read_permission => '.*', write_permission => '.*', provider => 'rabbitmqctl', } }
我正在Ubuntu 12.04 LTS虚拟机上尝试这个。 有任何想法吗? 这让我疯狂,我一直坚持几个小时试图弄清楚这一点。
我也有这个问题。 原因是,在Ubuntu上安装“rabbitmq-server”包时, 会启动一个rabbitmq的实例 。 这是devise。 可悲的是。
至于解决办法,我还没find。
编辑
我不知道这是不是你的情况,但在我的情况下,我正在把傀儡的节点名称从“兔子”改成其他的东西。
简单的解释是,正如我所提到的,安装rabbitmq-server会导致rabbitmq-server服务运行。 默认情况下,它使用节点名称“兔子”。
在我的情况下,puppet出现了,configurationrabbitmq,然后在尝试启动服务之前,运行'/etc/init.d/rabbitmq-service status',检查它是否已经在运行。
在一个理想的世界中,答案应该是“是”,因为事实上它正在运行,但在这种情况下,'/etc/init.d/rabbitmq-service'脚本使用configuration的节点名来检查看看实例是否正在运行 – 当puppet在/etc/rabbitmq/rabbitmq-env.conf中更改节点名称时,这完全破坏了服务脚本确定它是否正在运行的能力,所以当然,脚本返回0,因为它无法find正在运行的实例。
然后Puppet尝试用新的节点名称启动新的实例,但是失败了,因为一次只有一个服务可以拥有一个端口,并且正在运行的实例拥有它。
为了解决这个问题,我把RABBITMQ_NODENAME设置回“兔子”,一切正常。
我在这里写了:
http://www.standalone-sysadmin.com/blog/2014/02/rabbitmq-on-ubuntu-via-puppet/
http://blog.zugschlus.de/archives/974-Debians-Policy-rc.d-infrastructure-explained.html
Debian经常被忽略,规范的答案是使用sysv-rc提供的策略框架来避免服务被启动。 由于这个机制经常被人误解,我写这篇文章给这个问题带来一些额外的困惑。
(博客文章不是我的)