Veewee、Vagrant、Puppet、Erlang 和 RabbitMQ

Tob*_*ias 6 puppet

我有点被一个问题困扰了好几天我都在努力解决这个问题。

这是我在做什么:

  1. 通过使用 Veewee,我创建了一个 VirtualBox 图像,然后我从中创建了一个 Vagrant 框。看这里这里
  2. 最后,我从 Vagrant 运行 puppet 来安装 RabbitMQ,请参见此处

Veewee、Vagrant 和 VirtualBox 都在 MacOS X 10.7.4 上运行。vagrant box 本身是 CentOS 6.2。

这在很长一段时间内运行良好,直到几天前我重新创建 VirtualBox 映像。在我的 puppet 运行期间安装 rabbitmq-plugins 期间,我现在收到以下错误:

/Stage[main]/Rabbitmq/Exec[rabbitmq-plugins]/returns: erlexec: HOME must be set
Run Code Online (Sandbox Code Playgroud)

我的 RabbitMQ puppet 配置可以在该项目的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"]
}
Run Code Online (Sandbox Code Playgroud)

我的其他存储库,例如 epel,在文件顶部的veewees postinstall.sh中定义。

最后,这就是我在执行“/etc/init.d/rabbitmq-server status”时得到的结果

[{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}]
Run Code Online (Sandbox Code Playgroud)

网络上的消息来源表明,我必须设置 HOME。当然,如果设置了 HOME,我会登录到该框,对于用户 vagrant,它是“/home/vagrant”,对于 root,它是“root”。

与往常一样,任何提示/想法/建议/假设都非常受欢迎。

非常感谢!

干杯,托比

小智 12

升级到 Puppet 3.0 后,我遇到了同样的问题。

发行说明中,我最终发现了这一点:

由于存在误导性值,现在在运行命令时未设置 HOME 和 USER 环境变量。

对我environment => "HOME=/root"有用的解决方案是添加到 Exec 资源中:

exec{"rabbitmq-plugins":
    path        => "/usr/bin:/usr/sbin:/bin",
    environment => "HOME=/root",
    command     => "rabbitmq-plugins enable rabbitmq_management",
    require     => Package["rabbitmq-server"]
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!