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 homebrew
j'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.
puppet apply manifest.pp
?sudo puppet apply manifest.pp
sur Puppet 3.0.1, Facter 1.6.16 @JohnSiu: Rien là non plus, malheureusement.Réponses:
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 .
la source
Une sorte d'approche par force brute:
la source
Je ne sais pas si c'est toujours un problème, mais il semble que ce soit un bug avec le fournisseur launchd corrigé dans 3.1.0. Bogue: https://projects.puppetlabs.com/issues/16271
la source