Puppet과 함께 RabbitMQ를 설치하려고 합니다.

Puppet과 함께 RabbitMQ를 설치하려고 합니다.

다음과 같은 오류가 발생합니다.

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 매니페스트/site.pp를 실행한 후에 이런 일이 발생합니다.

내 Rabbit 클래스는 다음과 같습니다.

# 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 VM에서 이것을 시도하고 있습니다. 어떤 아이디어가 있나요? 이것이 나를 미치게 만들고 있습니다. 나는 이것을 알아내려고 몇 시간 동안 갇혀 있었습니다.

답변1

나는 또한이 문제를 겪고 있습니다. 원인은 우분투에 'rabbitmq-server' 패키지를 설치했을 때,Rabbitmq 인스턴스가 시작됩니다. 이것은 의도적으로 설계된 것입니다. 슬프게도.

해결책은 아직 찾지 못했습니다.

편집하다

이것이 당신의 경우인지는 모르겠지만 제 경우에는 puppet의 노드 이름을 '토끼'에서 다른 이름으로 변경했습니다.

간단히 설명하자면, 앞서 언급한 것처럼 Rabbitmq-server를 설치하면 Rabbitmq-server 서비스가 실행된다는 것입니다. 기본적으로 'rabbit'이라는 노드 이름을 사용합니다.

내 경우에는 puppet이 와서 Rabbitmq를 구성한 다음 서비스를 시작하기 전에 '/etc/init.d/rabbitmq-service status'를 실행하여 이미 실행 중인지 확인했습니다.

이상적인 세계에서는 실제로 실행 중이었으므로 대답은 "예"였을 것입니다. 그러나 이 경우 '/etc/init.d/rabbitmq-service' 스크립트는 구성된 노드 이름을 사용하여 확인하고 인스턴스가 실행 중인지 확인하세요. 그리고 puppet이 /etc/rabbitmq/rabbitmq-env.conf에서 노드 이름을 변경했을 때 서비스 스크립트가 실행 중인지 확인하는 기능이 완전히 중단되었습니다. 따라서 스크립트는 0을 반환합니다. 실행 중인 인스턴스를 찾을 수 없습니다.

그런 다음 Puppet은 새 노드 이름으로 새 인스턴스를 시작하려고 시도하지만 한 번에 하나의 서비스만 포트를 소유할 수 있고 실행 중인 인스턴스에 포트가 있기 때문에 실패합니다.

이 문제를 해결하기 위해 RABBITMQ_NODENAME을 다시 'rabbit'으로 설정하면 모든 것이 작동합니다.

나는 여기에 대해 다음과 같이 썼습니다.

http://www.standalone-sysadmin.com/blog/2014/02/rabbitmq-on-ubuntu-via-puppet/

답변2

http://blog.zugschlus.de/archives/974-Debians-Policy-rc.d-infrastructure-explained.html

데비안은 이 기본값 때문에 자주 비난을 받습니다. 정식 대답은 서비스가 시작되는 것을 방지하기 위해 sysv-rc와 함께 제공되는 정책 프레임워크를 사용하는 것입니다. 이 메커니즘은 자주 오해되기 때문에 이 문제에 대해 좀 더 혼란을 주고자 이 글을 쓰고 있습니다.

(내 블로그 게시물이 아님)

관련 정보