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


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.