Dịch vụ múa rối và phóng?


15

Chúng tôi có một môi trường sản xuất được cấu hình với Puppet và muốn có thể thiết lập một môi trường tương tự trên các máy phát triển của chúng tôi: sự pha trộn của Red Hats, Ubuntus và OSX. Như có thể dự đoán, OSX là người đàn ông kỳ quặc ở đây, và thật đáng buồn, tôi gặp nhiều rắc rối với việc này để hoạt động.

Nỗ lực đầu tiên của tôi là sử dụng macports, sử dụng khai báo sau:

package { 'rabbitmq-server':
    ensure   => installed,
    provider => macports,
}

nhưng điều này, thật đáng buồn, tạo ra lỗi sau:

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"

Tiếp theo, tôi hình dung tôi sẽ homebrewthử. Không có nhà cung cấp gói có sẵn theo mặc định, nhưng con rối homebrew dường như đầy hứa hẹn. Ở đây, tôi đã đi xa hơn nhiều, và thực sự đã xoay sở để cài đặt hoạt động.

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"] ],
}

Ở đây, tôi không nhận được bất kỳ lỗi nào. Nhưng RabbitMQ cũng không bắt đầu (giống như khi tôi tải bằng tay 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

Tôi đang làm gì sai?

Chỉnh sửa : Đối với bản ghi, chúng tôi hiện đang thực hiện việc này với máy ảo Vagrant trên các máy OSX của chúng tôi, nhưng giải pháp gốc vẫn được ưu tiên.


Phiên bản nào của con rối bạn đang chạy? Bạn đang thử các biểu hiện trên với puppet apply manifest.pp?
chutz

Việc gỡ lỗi dường như không chứa bất kỳ lỗi 'thực tế' nào. Bạn có thể kiểm tra /private/var/log/system.log nếu có bất kỳ mục liên quan nào không?
John Siu

@chutz: Chạy sudo puppet apply manifest.pptrên Puppet 3.0.1, Facter 1.6.16 @JohnSiu: Không có gì ở đó cả, thật đáng buồn.
Joel Westberg

Tôi không nghĩ rằng bạn đang đi sai trong bất kỳ cách nào. Tuy nhiên, tôi nghĩ bạn phải kiểm tra lại phương pháp lập trình một lần nữa.
Toby

Bạn có biết nếu con rối đang tải các bệ phóng? Nếu không, bạn sẽ cần đợi cho đến khi khởi động lại hoặc buộc một bước tải trọng khởi động sau khi cài đặt. Hãy chắc chắn rằng plist có cờ chạy trên tải được đặt trong nó. Bạn có thể đăng danh sách và đầu ra của danh sách launchctl với tên dịch vụ.
Alex

Câu trả lời:


1

Thật không may, các công cụ quản lý cấu hình không thực sự hoạt động tốt cho các máy tính để bàn. Sẽ tốt hơn nhiều khi sử dụng một công cụ như Vagrant (như bạn có).

Vagrant là một phần mềm ảo hóa mã nguồn mở cho phép bạn tái tạo môi trường thông qua các trình ảo hóa. Trên máy Mac của tôi, tôi sử dụng nó với VirtualBox của Oracle (chủ yếu để thử nghiệm Chef). VirtualBox cũng miễn phí. Mục đích ban đầu của Vagrant là cho phép các nhà phát triển có môi trường nhất quán để làm việc (nghĩa là: những gì bạn đang tìm kiếm nhưng không phải là cách bạn muốn nó hoạt động). Vagrant có thể được kết hợp với Puppet, kiểm tra các ví dụ này .


0

Một cách tiếp cận vũ phu:

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

node fancymac { include "rabbitmqosx }

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.