У нас есть производственная среда, настроенная с помощью 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
попробовать. По умолчанию нет поставщика пакетов, но puppet-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
Что я делаю неправильно?
Редактировать : для справки, теперь мы делаем это с виртуальными машинами Vagrant вместо этого на наших машинах с OSX, но нативное решение все равно будет предпочтительным.
puppet apply manifest.pp
?sudo puppet apply manifest.pp
на Puppet 3.0.1, Facter 1.6.16 @JohnSiu: К сожалению, там тоже ничего нет.Ответы:
К сожалению, инструменты управления конфигурацией не очень хорошо работают для настольных компьютеров. Гораздо лучше использовать такой инструмент, как Vagrant (как у вас).
Vagrant - это программное обеспечение для виртуализации с открытым исходным кодом, которое позволяет реплицировать среды с помощью гипервизоров. На моем Mac я использую его с Oracle VirtualBox (в основном для тестирования Chef). VirtualBox также бесплатно. Первоначальная цель Vagrant состояла в том, чтобы позволить разработчикам работать в согласованных средах (то есть: то, что вы искали, но не то, как вы хотели, чтобы это работало). Vagrant можно комбинировать с Puppet, посмотрите эти примеры .
источник
Этакий подход грубой силы:
источник
Не уверен, что это все еще проблема, но похоже, что это была ошибка с поставщиком launchd, исправленным в 3.1.0. Ошибка: https://projects.puppetlabs.com/issues/16271
источник