Services de marionnettes et de lancement?

15

Nous avons un environnement de production configuré avec Puppet, et voulons pouvoir mettre en place un environnement similaire sur nos machines de développement: un mélange de Red Hats, Ubuntus et OSX. Comme on pouvait s'y attendre, OSX est l'homme étrange ici, et malheureusement, j'ai beaucoup de mal à faire fonctionner cela.

Ma première tentative a été d'utiliser macports, en utilisant la déclaration suivante:

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

mais cela, malheureusement, génère l'erreur suivante:

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"

Ensuite, j'ai pensé que homebrewj'essaierais. Aucun fournisseur de package n'est disponible par défaut, mais marionnette-homebrew semblait prometteur. Ici, je suis allé beaucoup plus loin et j'ai réussi à faire fonctionner l'installation.

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

Ici, je ne reçois aucune erreur. Mais RabbitMQ ne démarre pas non plus (comme il le fait si je fais un chargement manuel avec 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'est-ce que je fais mal?

Edit : Pour mémoire, nous faisons maintenant cela avec les machines virtuelles Vagrant sur nos machines OSX, mais la solution native serait toujours préférée.

Joel Westberg
la source
Quelle version de marionnette utilisez-vous? Essayez-vous les manifestes ci-dessus avec puppet apply manifest.pp?
chutz
Le débogage ne semble contenir aucune erreur «réelle». Pouvez-vous archiver /private/var/log/system.log s'il y a des entrées associées?
John Siu
@chutz: fonctionnant sudo puppet apply manifest.ppsur Puppet 3.0.1, Facter 1.6.16 @JohnSiu: Rien là non plus, malheureusement.
Joel Westberg
Je ne pense pas que vous vous trompiez en aucune façon. Cependant, je pense que vous devez vérifier à nouveau l'approche de programmation.
Toby
Savez-vous si la marionnette charge le plist launchd? Si ce n'est pas le cas, vous devrez attendre le redémarrage ou forcer une étape launchctl load plist après l'installation. Assurez-vous que le plist a le drapeau run on load défini dedans. Pouvez-vous publier le plist et la sortie de la liste launchctl avec le nom du service.
Alex

Réponses:

1

Malheureusement, les outils de gestion de configuration ne fonctionnent pas vraiment bien pour les ordinateurs de bureau. Il est préférable d'utiliser un outil comme Vagrant (comme vous l'avez).

Vagrant est un logiciel de virtualisation open source qui vous permet de répliquer des environnements via des hyperviseurs. Sur mon Mac, je l'utilise avec Oracle VirtualBox (principalement pour les tests de Chef). VirtualBox est également gratuit. L'intention initiale de Vagrant était de permettre aux développeurs d'avoir des environnements cohérents pour travailler (c'est-à-dire: ce que vous cherchiez mais pas comment vous vouliez qu'il fonctionne). Vagrant peut être combiné avec Puppet, consultez ces exemples .

Forest J. Handford
la source
0

Une sorte d'approche par force brute:

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

node fancymac { include "rabbitmqosx }
Stephan
la source