web-dev-qa-db-ja.com

Veewee、Vagrant、Puppet、Erlang、RabbitMQ

何日も頭を包み込もうとしている問題でちょっと立ち往生しています。

これが私がしていることです:

  1. Veeweeを使用して、VirtualBoxイメージを作成し、そこからVagrantボックスを作成します。 ここここ を参照してください
  2. 最後に、Vagrantからpuppetを実行してRabbitMQをインストールします。 ここ を参照してください。

Veewee、Vagrant、VirtualBoxはすべてMacOS X10.7.4で動作します。放浪者ボックス自体はCentOS6.2です。

これは、数日前にVirtualBoxイメージを再作成するまで、かなり長い間正常に機能していました。 puppetの実行中にrabbitmq-pluginsをインストールしているときに、次のエラーが発生します。

/Stage[main]/Rabbitmq/Exec[rabbitmq-plugins]/returns: erlexec: HOME must be set

私のRabbitMQパペット構成はそのプロジェクトの 私のGitHubリポジトリに ありますが、ここが最も重要な部分です:

$version = "2.8.7"
$url     = "http://www.rabbitmq.com/releases/rabbitmq-server/v${version}/rabbitmq-server-${version}-1.noarch.rpm"

package{"erlang":
    ensure => "present",
}

package{"rabbitmq-server":
    provider => "rpm",
    source   => $url,
    require  => Package["erlang"]
}

exec{"rabbitmq-plugins":
    path    => "/usr/bin:/usr/sbin:/bin",
    command => "rabbitmq-plugins enable rabbitmq_management",
    require => Package["rabbitmq-server"]
}

私の追加のリポジトリ、例えばepelは、ファイルの先頭にあるveewees postinstall.sh で定義されています。

最後に、これは「/etc/init.d/rabbitmq-serverstatus」を実行したときに得られるものです。

[{pid,2834},
{running_applications,[{rabbit,"RabbitMQ","2.8.7"},
                    {ssl,"Erlang/OTP SSL application","4.1.6"},
                    {public_key,"Public key infrastructure","0.13"},
                    {crypto,"CRYPTO version 2","2.0.4"},
                    {mnesia,"MNESIA  CXC 138 12","4.5"},
                    {os_mon,"CPO  CXC 138 46","2.2.7"},
                    {sasl,"SASL  CXC 138 11","2.1.10"},
                    {stdlib,"ERTS  CXC 138 10","1.17.5"},
                    {kernel,"ERTS  CXC 138 10","2.14.5"}]},
{os,{unix,linux}},
{erlang_version,"Erlang R14B04 (erts-5.8.5) [source] [64-bit] [rq:1] [async-threads:30] [kernel-poll:true]\n"},
{memory,[{total,24993120},
      {processes,10328496},
      {processes_used,10321296},
      {system,14664624},
      {atom,1175905},
      {atom_used,1143841},
      {binary,17192},
      {code,11416020},
      {ets,766168}]},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,205851852},
{disk_free_limit,1000000000},
{disk_free,7089795072},
{file_descriptors,[{total_limit,924},
                {total_used,4},
                {sockets_limit,829},
                {sockets_used,2}]},
{processes,[{limit,1048576},{used,131}]},
{run_queue,0},
{uptime,6}]

Webの情報源は、HOMEを設定する必要があることを示唆しています。もちろん、HOMEが設定されている場合はボックスにログインしていました。ユーザーのvagrantの場合は「/ home/vagrant」で、rootの場合は「root」でした。

いつものように、どんなヒント/アイデア/提案/仮定も大歓迎です。

どうもありがとう!

乾杯、トビ

6
Tobias

Puppet 3.0にアップグレードした後、同じ問題が発生しました。

リリースノート から私は最終的にこれを見つけました:

誤解を招く値のため、コマンドの実行時にHOMEおよびUSER環境変数が設定解除されるようになりました。

私のために働いた解決策は、Execリソースにenvironment => "HOME=/root"を追加することでした:

exec{"rabbitmq-plugins":
    path        => "/usr/bin:/usr/sbin:/bin",
    environment => "HOME=/root",
    command     => "rabbitmq-plugins enable rabbitmq_management",
    require     => Package["rabbitmq-server"]
}

お役に立てれば!

12
jesseweisner