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


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.