Serviços de fantoches e launchd?

15

Temos um ambiente de produção configurado com o Puppet e queremos poder criar um ambiente semelhante em nossas máquinas de desenvolvimento: uma mistura de Red Hats, Ubuntus e OSX. Como seria de se esperar, o OSX é o cara estranho aqui e, infelizmente, estou tendo muitos problemas para fazer isso funcionar.

Minha primeira tentativa foi usar macports , usando a seguinte declaração:

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

mas isso, infelizmente, gera o seguinte erro:

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"

Em seguida, achei que daria uma chance ao homebrew . Não há nenhum provedor de pacotes disponível por padrão, mas o puppet-homebrew parecia promissor. Aqui, eu fui muito mais longe e consegui fazer a instalação funcionar.

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"] ],
}

Aqui, não recebo nenhum erro. Mas o RabbitMQ também não inicia (como acontece se eu fizer uma carga manual com 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

O que estou fazendo de errado?

Editar : para registrar, agora estamos fazendo isso com VMs do Vagrant em vez de nossas máquinas OSX, mas a solução nativa ainda seria a preferida.

    
por Joel Westberg 06.12.2012 / 21:23

3 respostas

1

Infelizmente, as ferramentas de gerenciamento de configuração não funcionam bem em computadores desktop. É muito melhor usar uma ferramenta como Vagrant (como você tem).

O Vagrant é um software de virtualização de código aberto que permite replicar ambientes por meio de hipervisores. No meu Mac, eu uso com o VirtualBox da Oracle (principalmente para testes de Chef). O VirtualBox também é gratuito. A intenção original do Vagrant era permitir que os desenvolvedores tivessem ambientes consistentes para trabalhar (isto é: o que você estava procurando, mas não como você queria que funcionasse). O Vagrant pode ser combinado com o Puppet, confira estes exemplos .

    
por 18.03.2015 / 21:58
0

Uma espécie de abordagem de força bruta:

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

node fancymac { include "rabbitmqosx }
    
por 02.02.2013 / 01:06
0

Não tenho certeza se isso ainda é um problema, mas parece que esse foi um bug com o provedor launchd corrigido na versão 3.1.0. Bug: link

    
por 31.12.2015 / 19:54