꼭두각시와 출시 된 서비스?


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

내가 도대체 ​​뭘 잘못하고있는 겁니까?

편집 : 기록을 위해 이제 OSX 시스템에서 Vagrant VM을 사용 하여이 작업을 수행하고 있지만 기본 솔루션이 여전히 선호됩니다.


어떤 버전의 퍼펫을 실행하고 있습니까? 위의 매니페스트를 사용하고 puppet apply manifest.pp있습니까?
chutz December

디버그에 '실제'오류가 포함되어 있지 않습니다. 관련 항목이 있으면 /private/var/log/system.log를 체크인 할 수 있습니까?
John Siu

@ chutz : sudo puppet apply manifest.ppPuppet 3.0.1, Facter 1.6.16에서 실행 @JohnSiu : 슬프게도 아무것도 없습니다.
Joel Westberg

나는 당신이 어떤 식 으로든 잘못되고 있다고 생각하지 않습니다. 그러나 프로그래밍 방식을 다시 한 번 확인해야한다고 생각합니다.
Toby

퍼펫이 시작된 plist를로드하는지 알고 있습니까? 그렇지 않은 경우 재부팅 할 때까지 기다리거나 설치 후 launchctl로드 plist 단계를 강제 실행해야합니다. plist에 run on load 플래그가 설정되어 있는지 확인하십시오. 서비스 이름으로 launchctl list의 plist 및 출력을 게시 할 수 있습니다.
Alex

답변:


1

불행히도 구성 관리 도구는 실제로 데스크톱 컴퓨터에서 제대로 작동하지 않습니다. Vagrant 와 같은 도구를 사용하는 것이 훨씬 좋습니다 .

Vagrant는 하이퍼 바이저를 통해 환경을 복제 할 수있는 오픈 소스 가상화 소프트웨어입니다. 내 Mac에서는 Oracle의 VirtualBox (주로 Chef 테스트 용)와 함께 사용합니다. VirtualBox도 무료입니다. Vagrant의 원래 의도는 개발자가 일관된 환경에서 작업 할 수 있도록하는 것입니다 (예 : 원하는 작업을 원했지만 원하는 작업 방식은 아님). 방랑자를 꼭두각시와 결합 할 수 있습니다 . 이 예를 확인하십시오 .


0

일종의 무차별 대입 방식 :

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

node fancymac { include "rabbitmqosx }

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.