Cách thành ngữ để gọi đầu bếp-solo?


8

Cách thành ngữ để gọi đầu bếp-solo là gì? Hầu hết các trang web làm điều này:

chef-solo -c ~/solo.rb -j ~/node.json -r http://www.example.com/chef-solo.tar.gz

Nhưng đó là dài. Có một vài cách ngắn hơn để làm điều này mà tôi có thể nghĩ ra:

  1. Một nhiệm vụ cào ( rake chef-solo).
  2. Một tập lệnh shell nhỏ ( run-chef-solo).
  3. Một bí danh (có thể ghi đè tên, như chef-solo).

Cách thành ngữ để làm điều này là gì? Làm thế nào là người dùng đầu bếp khác gọi đầu bếp?

Câu trả lời:


8

Theo mặc định, chef-solođọc cấu hình của nó từ /etc/chef/solo.rb. Các tham số dòng lệnh tương ứng với các giá trị cấu hình có thể được đặt trong tệp này. Điều này được thực hiện bằng thư viện mixlib-config.

  option :config_file, 
    :short => "-c CONFIG",
    :long  => "--config CONFIG",
    :default => "/etc/chef/solo.rb",
    :description => "The configuration file to use"

  option :json_attribs,
    :short => "-j JSON_ATTRIBS",
    :long => "--json-attributes JSON_ATTRIBS",
    :description => "Load attributes from a JSON file or URL",
    :proc => nil

  option :recipe_url,
      :short => "-r RECIPE_URL",
      :long => "--recipe-url RECIPE_URL",
      :description => "Pull down a remote gzipped tarball of recipes and untar it to the cookbook ca
che.",
      :proc => nil

'Tùy chọn' là giá trị tệp cấu hình.

Các tập tin cấu hình thực tế, /etc/chef/solo.rbsẽ trông như:

file_cache_path "/tmp/chef-solo"
cookbook_path   "/tmp/chef-solo/cookbooks"
role_path       "/tmp/chef-solo/roles"
json_attribs    "/tmp/chef-solo/node.json"
recipe_url      "http://www.example.com/chef-solo.tar.gz"

Cũng lưu ý rằng tệp JSON cũng có thể là một URL từ xa.

json_attribs    "http://www.example.com/node.json"

Bạn cũng có thể sử dụng Ohai làm thư viện trong tệp cấu hình, để phát hiện nền tảng hoặc các thuộc tính khác để chỉ định tệp JSON nào sẽ sử dụng.

require 'rubygems'
require 'ohai'
o = Ohai::System.new
o.all_plugins
file_cache_path "/tmp/chef-solo"
cookbook_path   "/tmp/chef-solo/cookbooks"
role_path       "/tmp/chef-solo/roles"
json_attribs    "/tmp/chef-solo/#{o[:platform]}.json"
recipe_url      "http://www.example.com/chef-solo.tar.gz"

Và sau đó, bạn sẽ có các tệp JSON "nền tảng" cụ thể. Hoặc bạn có thể sử dụng o[:hostname], o[:domain]hoặc o[:fqdn]sử dụng các file JSON dựa trên tên máy, miền hoặc FQDN. Nhưng một khi bạn bắt đầu có giàn giáo của các máy chủ để hỗ trợ loại cấu hình động này, bạn có thể xem xét việc chạy Chef Server :-).


1

@jtimberman đã viết một câu trả lời tuyệt vời. Đây là cách cá nhân của tôi để gọi đầu bếp-solo. Điều này làm cho những điều cơ bản hoạt động và có lẽ bạn sẽ cần thêm nhiều thuộc tính hơn /etc/chef/node.jsonvà khám phá một số tùy chọn được mô tả trong câu trả lời khác.

# cat > /etc/chef/solo.rb << EOF
cookbook_path    "/var/chef-solo/cookbooks"
json_attribs     "/etc/chef/node.json"
EOF

# cat > /etc/chef/node.json << EOF
{
  "run_list": ["recipe[foo]", "recipe[bar]"]
}
EOF

Hoặc sao chép qua sách dạy nấu ăn của bạn vào /var/chef-solo/cookbookshoặc tar.gz chúng trên máy chủ web và sử dụng recipe_urltham số. Chạy chef-solotrên nút là tất cả những gì cần thiết để gọi nó.

Nếu có thể, tôi cố gắng và giữ mọi thứ trong đó solo.rbvì tôi khá thích có thể điều hành đầu bếp-solo mà không phải nhớ thêm bất kỳ tranh luận nào.


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.