人偶和推出的服务?


15

我们有一个配置有Puppet的生产环境,并且希望能够在我们的开发机器上建立一个类似的环境:Red Hats,Ubuntu和OSX的混合。可以预料的是,OSX在这里很奇怪,而令人遗憾的是,要使其正常工作,我会遇到很多麻烦。

我的第一次尝试是使用macports,并使用以下声明:

package { 'rabbitmq-server':
    ensure   => installed,
    provider => macports,
}

不幸的是,这会产生以下错误:

Error: /Stage[main]/Rabbitmq/Package[rabbitmq-server]: Could not evaluate: Execution of '/opt/local/bin/port -q installed rabbitmq-server' returned 1: usage: cut -b list [-n] [file ...]
       cut -c list [file ...]
       cut -f list [-s] [-d delim] [file ...]
    while executing
"exec dscl -q . -read /Users/$env(SUDO_USER) NFSHomeDirectory | cut -d ' ' -f 2"
    (procedure "mportinit" line 95)
    invoked from within
"mportinit ui_options global_options global_variations"

接下来,我想homebrew尝试一下。默认情况下没有可用的软件包提供程序,但是puppet-homebrew似乎很有前途。在这里,我走得更远,实际上设法使安装生效。

package { 'rabbitmq':
    ensure   => installed,
    provider => brew,
}
file { "plist":
    path   => "/Library/LaunchDaemons/homebrew.mxcl.rabbitmq.plist",
    source => "/usr/local/opt/rabbitmq/homebrew.mxcl.rabbitmq.plist",
    ensure => present,
    owner  => root,
    group  => wheel,
    mode   => 0644,
}
service { "homebrew.mxcl.rabbitmq":
    enable      => true,
    ensure      => running,
    provider    => "launchd",
    require     => [ File["/Library/LaunchDaemons/homebrew.mxcl.rabbitmq.plist"] ],
}

在这里,我没有任何错误。但是RabbitMQ也不启动(就像我用手动加载时一样launchctl


    [... snip ...]
    Debug: Executing '/bin/launchctl list'
    Debug: Executing '/usr/bin/plutil -convert xml1 -o /dev/stdout
        /Library/LaunchDaemons/homebrew.mxcl.rabbitmq.plist'
    Debug: Executing '/usr/bin/plutil -convert xml1 -o /dev/stdout
        /var/db/launchd.db/com.apple.launchd/overrides.plist'
    Debug: /Schedule[weekly]: Skipping device resources because running on a host
    Debug: /Schedule[puppet]: Skipping device resources because running on a host
    Debug: Finishing transaction 2248294820
    Debug: Storing state
    Debug: Stored state in 0.01 seconds
    Finished catalog run in 25.90 seconds

我究竟做错了什么?

编辑:记录下来,我们现在在OSX机器上使用Vagrant VM进行此操作,但是本机解决方案仍然是首选。


您正在运行什么版本的木偶?您是否正在尝试上述清单puppet apply manifest.pp
chutz

调试似乎不包含任何“实际”错误。您是否可以在/private/var/log/system.log中签入任何相关条目?
萧晨

@chutz:sudo puppet apply manifest.pp在Puppet 3.0.1,Facter 1.6.16上运行@JohnSiu:那里也没有,可悲的是。
乔尔·韦斯特伯格

我不认为您有任何问题。但是,我认为您必须再次检查编程方法。
Toby 2013年

您知道木偶是否正在加载启动的plist吗?如果不是,则需要等待直到重新启动,或者在安装后强制执行launchctl load plist步骤。确保在plist中设置了“运行时加载”标志。您可以使用服务名称发布plist和launchctl list的输出。
亚历克斯

Answers:


1

不幸的是,配置管理工具对于台式机并不能很好地工作。最好使用像Vagrant这样的工具(如您所愿)。

Vagrant是一种开源虚拟化软件,可让您通过管理程序复制环境。在Mac上,我将它与Oracle的VirtualBox一起使用(主要用于Chef测试)。VirtualBox也是免费的。Vagrant的初衷是允许开发人员具有一致的工作环境(即:您正在寻找的是什么,而不是您希望它如何工作的)。Vagrant可以与Puppet结合使用,请查看这些示例


0

一种蛮力方法:

class rabbitmqosx {    
    exec { "rabbitmqosx":
           command =>  "/path/to/rabbitmq",
           unless => [ 
                       "/bin/ps |grep -c rabbitmq" 
                     ]
         }

node fancymac { include "rabbitmqosx }

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.