2013-01-06 38 views
5

Nếu chúng ta có trong mã sách dạy nấu ăn đầu bếp như:Vagrant - làm thế nào để in đầu ra lệnh của Chef để stdout?

if !File.exists?('/vagrant/project/target/project/WEB-INF") || node[:compile_project] 
    bash "build project" do 
    user "vagrant" 
    cwd "/vagrant/project" 
    code <<-EOH 
     mvn clean 
     mvn db-migration:migrate 
     mvn package 
    EOH 
    end 
end 

Khi chạy vagrant up chúng ta có thể xem thông tin chỉ ngắn gọn rằng 'dự án xây dựng' được thực thi.

Tuy nhiên, chúng tôi chạy lệnh 'mvn package' từ thiết bị đầu cuối, chúng ta có thể thấy toàn bộ đầu ra lệnh. Làm thế nào để nói với Vagrant/Chef để hiển thị đầu ra đầy đủ?

EDIT:

Tôi đã thử điều này, nhưng không có gì đã thay đổi trong sản lượng.

config.vm.provision :chef_solo do |chef| 
    chef.log_level = :debug 
+0

Được rồi, tôi nghĩ câu trả lời là không. Nếu kịch bản hoạt động, đầu ra vẫn ẩn. Tuy nhiên, một (vô cùng) hacky cách để làm điều này có thể được thêm thuộc tính 'trả về 2' và' ignore_failure', mà sẽ thất bại mọi thời gian. Bạn nhận được sản lượng đầy đủ về thất bại. Tuy nhiên, tôi sẽ chỉ sử dụng kỹ thuật này để gỡ lỗi. Và gửi yêu cầu tính năng để opscode. – quandrum

+0

Bạn đã thử sử dụng tùy chọn "cờ" cho tài nguyên bash để vượt qua '-x' chưa? – agross

Trả lời

2

It in bash/script/thực hiện sản lượng thực hiện tài nguyên để thiết bị xuất chuẩn chỉ khi:

  • Bạn cần TTY cho lệnh từ xa đầu bếp-độc tấu/đầu bếp-client của bạn.
  • không chạy đầu bếp-client trong chế độ daemon
  • mức đầu bếp log được thiết lập để :debug

Xem code chef/Mixin/ShellOut, line 36.

Khi sử dụng vagrant up, có vẻ như không có tùy chọn để cung cấp một TTY cho phiên ssh, vì vậy giải pháp được loại đi bộ xung quanh sau khi bạn đặt :debug mức log cho đầu bếp:

  1. chạy $ vagrant up
  2. chạy $ vagrant ssh -- -t - có nghĩa là nó vượt qua -t đến lệnh ssh để có tty cho phiên ssh.
  3. chạy chef-solo để chạy đầu bếp theo cách thủ công, sau đó bạn sẽ nhận được kết quả đầu ra trên thiết bị xuất chuẩn.
3

Tôi không biết gì về âm hộ nhưng tôi nghĩ điều này có thể liên quan đến vấn đề của bạn ... Vui lòng xóa câu trả lời này nếu chứng minh là không liên quan!

--force-formatter

Chỉ ra rằng đầu ra định dạng sẽ được sử dụng thay vì đầu ra logger.

Vì vậy, tôi tìm thấy nếu solo.rblog_location định nghĩa thêm các tùy chọn --force-formatter hiển thị đầu ra khi chạy đầu bếp qua rundeck hoặc từ xa thực hiện ssh [email protected] "chef-solo --force-formatter"

+2

Cảm ơn lời khuyên ở đây, tôi đã cố gắng để có được âm thanh để sản lượng đầu ra của đầu bếp đầy đủ với đầu bếp.arguments = '--force-formatter'' trong phần đầu bếp của Vagrantfile! – jedifans

Các vấn đề liên quan