16 votos

¿Servicios de marionetas y launchd?

Tenemos un entorno de producción configurado con Puppet, y quiero ser capaz de establecer un ambiente similar en el desarrollo de nuestras máquinas: una mezcla de Rojo Sombreros, Ubuntus y OSX. Como era de esperar, OSX es la excepción, aquí, y por desgracia, estoy teniendo un montón de problemas con la obtención de este trabajo.

Mi primer intento fue el uso de macports, utilizando la siguiente declaración:

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

pero esto, lamentablemente, se genera el siguiente error:

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"

El siguiente, pensé que había que darle homebrew una oportunidad. No hay ningún proveedor de paquete disponible de forma predeterminada, pero títere-homebrew parecía prometedor. Aquí, llegué mucho más lejos, y se las arregló para conseguir la instalación.

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

Aquí, no tengo ningún tipo de error. Pero RabbitMQ no se inicia (como no, si tengo que hacer un manual de carga, con 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

¿Qué estoy haciendo mal?

Edit: Para el registro, ahora estamos haciendo esto con Vagrant VMs lugar en nuestro OSX máquinas, pero la solución nativa todavía sería preferido.

3voto

Desafortunadamente, la configuración de las herramientas de gestión no funcionan bien para los equipos de sobremesa. Es mucho mejor utilizar una herramienta como Vagrant (como ustedes).

Vagrant es una fuente abierta de software de virtualización que permite replicar entornos a través de los hipervisores. En mi Mac, yo lo uso con Oracle VirtualBox (sobre todo para el Chef de prueba). VirtualBox también es gratis. La intención original de Vagrant fue para permitir a los desarrolladores coherente a los entornos de trabajo (es decir: lo que estaba buscando, pero no cómo desea que funcione). Vagrant puede ser combinado con Puppet, echa un vistazo a estos ejemplos.

0voto

Stephan Puntos 586

Una especie de método de fuerza bruta:

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

node fancymac { include "rabbitmqosx }

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: