Mamy środowisko produkcyjne skonfigurowane z Puppet i chcemy mieć możliwość skonfigurowania podobnego środowiska na naszych komputerach programistycznych: mieszanki Red Hats, Ubuntus i OSX. Jak można się spodziewać, OSX jest tutaj dziwnym człowiekiem i niestety mam problem z uruchomieniem tego.
Moja pierwsza próba polegała na użyciu macports
następującej deklaracji:
package { 'rabbitmq-server':
ensure => installed,
provider => macports,
}
ale to niestety powoduje następujący błąd:
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"
Następnie pomyślałem, że homebrew
spróbuję. Domyślnie nie ma dostępnego dostawcy pakietów, ale marionetka homebrew wydawała się obiecująca. Tutaj dotarłem znacznie dalej i udało mi się sprawić, aby instalacja działała.
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"] ],
}
Tutaj nie otrzymuję żadnego błędu. Ale RabbitMQ też się nie uruchamia (tak jak w przypadku ręcznego ładowania 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
Co ja robię źle?
Edycja : Dla przypomnienia, teraz robimy to za pomocą maszyn wirtualnych Vagrant zamiast na naszych komputerach OSX, ale nadal byłoby preferowane rozwiązanie natywne.
puppet apply manifest.pp
?sudo puppet apply manifest.pp
na Puppet 3.0.1, Facter 1.6.16 @JohnSiu: Niestety, tam też nie ma.Odpowiedzi:
Niestety narzędzia do zarządzania konfiguracją naprawdę nie działają dobrze na komputerach stacjonarnych. O wiele lepiej jest użyć narzędzia takiego jak Vagrant (jak masz).
Vagrant to oprogramowanie do wirtualizacji typu open source, które umożliwia replikację środowisk za pomocą hiperwizorów. Na komputerze Mac używam go z VirtualBox firmy Oracle (głównie do testowania przez szefa kuchni). VirtualBox jest również bezpłatny. Pierwotnym zamiarem Vagrant było umożliwienie programistom posiadania spójnych środowisk do pracy (tj. Tego, czego szukałeś, ale nie tego, jak chciałeś, aby działało). Vagrant można łączyć z Puppet, sprawdź te przykłady .
źródło
Rodzaj brutalnego podejścia:
źródło
Nie jestem pewien, czy nadal jest to problem, ale wygląda na to, że był to błąd związany z uruchomionym dostawcą naprawionym w wersji 3.1.0. Błąd: https://projects.puppetlabs.com/issues/16271
źródło