web-dev-qa-db-ja.com

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 applymanifests /site.ppを実行した後に発生します。

これが私のウサギのクラスです:

# 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 LTSVMでこれを試しています。何か案は?これは私を夢中にさせています、私はこれを理解しようとして何時間も立ち往生しています。

4
Richard Knop

私もこの問題を抱えています。原因は、Ubuntuに「rabbitmq-server」パッケージをインストールすると、 rabbitmqのインスタンスが起動します であるためです。これは仕様によるものです。悲しいことに。

解決策については、まだ見つけていません。

編集

これが当てはまるかどうかはわかりませんが、私の場合は、puppetのノード名を「rabbit」から別の名前に変更していました。

簡単に説明すると、前述したように、rabbitmq-serverをインストールすると、rabbitmq-serverサービスが実行されます。デフォルトでは、「rabbit」のノード名を使用します。

私の場合、puppetがやって来て、rabbitmqを構成し、サービスを開始する前に、「/ etc/init.d/rabbitmq-servicestatus」を実行してすでに実行されているかどうかを確認しました。

理想的な世界では、実際には実行されていたため、答えは「はい」でしたが、この場合、「/ etc/init.d/rabbitmq-service」スクリプトは構成されたノード名を使用してチェックし、インスタンスが実行されているかどうかを確認します。puppetが/etc/rabbitmq/rabbitmq-env.confのノード名を変更すると、サービススクリプトが実行されているかどうかを判断する機能が完全に失われます。もちろん、スクリプトは0を返します。実行中のインスタンスが見つかりません。

次に、Puppetは新しいノード名で新しいインスタンスを開始しようとしますが、一度に1つのサービスしかポートを所有できず、実行中のインスタンスがポートを所有していたため、失敗します。

これを修正するには、RABBITMQ_NODENAMEを「rabbit」に戻すと、すべてが機能します。

私はそれについてここに書いた:

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

3
Matt Simmons

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

Debianはこのデフォルトで頻繁に非難されます。標準的な答えは、sysv-rcで提供されるポリシーフレームワークを使用して、サービスが開始されないようにすることです。このメカニズムはしばしば誤解されているので、私はこの問題にさらに混乱をもたらすためにこの記事を書いています。

(私のブログ投稿ではありません)

0
Habbie