Burattini e servizi di lancio?


15

Abbiamo un ambiente di produzione configurato con Puppet e vogliamo essere in grado di impostare un ambiente simile sui nostri computer di sviluppo: un mix di Red Hats, Ubuntus e OSX. Come ci si potrebbe aspettare, OSX è l'uomo strano qui fuori e, purtroppo, ho molti problemi a farlo funzionare.

Il mio primo tentativo è stato utilizzando macports, usando la seguente dichiarazione:

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

ma questo, purtroppo, genera il seguente errore:

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"

Successivamente, ho pensato di homebrewprovare. Non esiste un provider di pacchetti disponibile per impostazione predefinita, ma il burattino-homebrew sembrava promettente. Qui, sono andato molto più lontano e in realtà sono riuscito a far funzionare l'installazione.

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

Qui, non ricevo alcun errore. Ma RabbitMQ non si avvia neanche (come succede se eseguo un caricamento manuale 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

Che cosa sto facendo di sbagliato?

Modifica : per la cronaca, ora lo stiamo facendo con le macchine virtuali Vagrant invece sulle nostre macchine OSX, ma la soluzione nativa sarebbe comunque preferita.


Quale versione di burattino corri? Stai provando i manifesti sopra con puppet apply manifest.pp?
Chutz,

Il debug non sembra contenere alcun errore "reale". Puoi controllare in /private/var/log/system.log se ci sono voci correlate?
John Siu,

@chutz: Running sudo puppet apply manifest.ppon Puppet 3.0.1, Facter 1.6.16 @JohnSiu: Niente di tutto ciò, purtroppo.
Joel Westberg,

Non penso che tu stia sbagliando in alcun modo. Tuttavia, penso che sia necessario verificare nuovamente l'approccio di programmazione.
Toby,

Sai se il pupazzo sta caricando la finestra di avvio? In caso contrario, dovrai attendere fino al riavvio o forzare un passaggio del programma di caricamento dopo l'installazione. Assicurati che il plist abbia il flag run on load impostato in esso. Puoi pubblicare il plist e l'output dell'elenco launchctl con il nome del servizio.
Alex,

Risposte:


1

Sfortunatamente, gli strumenti di gestione della configurazione non funzionano davvero bene per le macchine desktop. È molto meglio usare uno strumento come Vagrant (come hai fatto tu).

Vagrant è un software di virtualizzazione open source che consente di replicare gli ambienti tramite hypervisor. Sul mio Mac, lo uso con VirtualBox di Oracle (principalmente per i test Chef). VirtualBox è anche gratuito. L'intento originale di Vagrant era di consentire agli sviluppatori di avere ambienti coerenti in cui lavorare (ovvero: quello che stavi cercando ma non come volevi che funzionasse). Vagrant può essere combinato con Puppet, dai un'occhiata a questi esempi .


0

Una sorta di approccio alla forza bruta:

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

node fancymac { include "rabbitmqosx }

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.