Лялькові та запущені послуги?


15

У нас є виробниче середовище, налаштоване з Puppet, і ми хочемо створити подібне середовище на наших розробних машинах: суміш Red Hats, Ubuntus та OSX. Як і слід було очікувати, OSX - це дивна людина тут, і, на жаль, у мене виникає багато проблем з тим, щоб зробити це на роботі.

Моєю першою спробою було macportsвикористання такої декларації:

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

але це, на жаль, породжує таку помилку:

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"

Далі я подумав, homebrewщо спробую. Немає постачальника пакетів за замовчуванням, але лялька-доморослина здавалася багатообіцяючою. Тут я прийшов набагато далі, і насправді вдалося змусити встановити роботу.

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

Тут я не отримую жодної помилки. Але RabbitMQ також не починається (як це робиться, якщо я роблю завантаження вручну 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

Що я роблю неправильно?

Редагувати : Для запису ми зараз робимо це з Vgrant VM замість на наших OSX-машинах, але нативне рішення все ж буде кращим.


Яку версію лялечки ти працюєш? Чи намагаєтесь ви з описаними вище маніфестами puppet apply manifest.pp?
чутс

Здається, налагодження не містить жодної "фактичної" помилки. Чи можете ви зареєструватися в /private/var/log/system.log, чи є відповідні записи?
Джон Сіу

@chutz: Біг sudo puppet apply manifest.ppна Ляльковій 3.0.1, Facter 1.6.16 @JohnSiu: Нічого там теж, на жаль.
Джоель Вестберг

Я не думаю, що ти в будь-якому випадку помилився. Однак, я думаю, ви повинні ще раз перевірити підхід до програмування.
Тобі

Чи знаєте ви, чи маріонетка завантажує запущений пліст? Якщо ні, то вам доведеться почекати до перезавантаження або змусити після встановлення кроку запуску запуску. Переконайтеся, що в списку встановлено прапор завантаження. Чи можете ви розмістити список і вихід списку startctl з назвою служби.
Алекс

Відповіді:


1

На жаль, інструменти управління конфігурацією не дуже добре працюють на настільних машинах. Набагато краще використовувати такий інструмент, як « Вагрант» (як у вас є).

Vagrant - це програма для віртуалізації з відкритим кодом, яка дозволяє копіювати середовища через гіпервізори. На моєму Mac я використовую його з VirtualBox Oracle (переважно для тестування шеф-кухарів). VirtualBox також безкоштовний. Первісна мета Vagrant полягала в тому, щоб дозволити розробникам мати послідовне середовище для роботи (тобто: те, що ви шукали, а не як ви хотіли, щоб це працювало). Бродягу можна поєднувати з Лялькою, ознайомтеся з цими прикладами .


0

Сорт грубої сили:

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

node fancymac { include "rabbitmqosx }

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.