หุ่นกระบอกและบริการ launchd?


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

ผมทำอะไรผิดหรือเปล่า?

แก้ไข : สำหรับเร็กคอร์ดตอนนี้เรากำลังทำสิ่งนี้กับ Vagrant VMs แทนบนเครื่อง OSX ของเรา แต่วิธีดั้งเดิมยังคงเป็นที่ต้องการ


คุณกำลังใช้หุ่นรุ่นใด คุณลองใช้วิธีข้างต้นด้วยpuppet apply manifest.ppหรือไม่
chutz

ดูเหมือนว่าการแก้ปัญหาจะไม่มีข้อผิดพลาด 'จริง' ใด ๆ คุณสามารถเช็คอิน /private/var/log/system.log หากมีรายการใด ๆ ที่เกี่ยวข้องหรือไม่?
John Siu

@chutz: ทำงานsudo puppet apply manifest.ppบน Puppet 3.0.1, Facter 1.6.16 @JohnSiu: ไม่มีอะไรที่น่าเศร้าเลย
Joel Westberg

ฉันไม่คิดว่าคุณจะผิดพลาด แต่อย่างใด อย่างไรก็ตามฉันคิดว่าคุณต้องตรวจสอบวิธีการเขียนโปรแกรมอีกครั้ง
Toby

คุณรู้หรือไม่ว่าหุ่นเชิดกำลังโหลดปืนกลปล่อยกระสุน? หากไม่เป็นเช่นนั้นคุณจะต้องรอจนกว่าจะรีบูตหรือบังคับให้ทำขั้นตอนโหลดเพลตเปิดตัวหลังจากติดตั้ง ตรวจสอบให้แน่ใจว่า Plist ได้ตั้งค่าสถานะการเรียกใช้โหลดไว้แล้ว คุณสามารถโพสต์ plist และ output ของรายการ launchctl ด้วยชื่อบริการได้หรือไม่
อเล็กซ์

คำตอบ:


1

น่าเสียดายที่เครื่องมือการจัดการการกำหนดค่าทำงานได้ไม่ดีนักสำหรับเครื่องเดสก์ท็อป มันจะดีกว่ามากถ้าใช้เครื่องมือเช่นVagrant (อย่างที่คุณมี)

Vagrant เป็นซอฟต์แวร์เวอร์ชวลไลเซชั่นโอเพนซอร์สที่ช่วยให้คุณทำซ้ำสภาพแวดล้อมผ่านไฮเปอร์ไวเซอร์ ใน Mac ของฉันฉันใช้กับ VirtualBox ของ Oracle (ส่วนใหญ่สำหรับการทดสอบโดยพ่อครัว) VirtualBox ยังฟรี ความตั้งใจดั้งเดิมของ Vagrant คือการอนุญาตให้นักพัฒนามีสภาพแวดล้อมที่สอดคล้องกันในการทำงาน (เช่น: สิ่งที่คุณกำลังมองหา แต่ไม่ใช่วิธีที่คุณต้องการให้ทำงาน) คนจรจัดสามารถใช้ร่วมกับ Puppet ดูตัวอย่างเหล่านี้ได้


0

ประเภทของกำลังดุร้าย:

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

node fancymac { include "rabbitmqosx }

0

ไม่แน่ใจว่านี่ยังคงเป็นปัญหาอยู่หรือไม่ แต่ดูเหมือนว่านี่เป็นข้อบกพร่องของตัวให้บริการ launchd ที่ได้รับการแก้ไขใน 3.1.0 ข้อผิดพลาด: https://projects.puppetlabs.com/issues/16271

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.