Şef-solo'yu çağırmanın deyimsel yolu mu?


8

Chef-solo'yu çağırmanın deyimsel yolu nedir? Çoğu site bunu yapar:

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

Ama bu uzun. Bunu düşünebileceğim birkaç kısa yol var:

  1. Bir komisyon görevi ( rake chef-solo).
  2. Küçük bir kabuk betiği ( run-chef-solo).
  3. Bir takma ad (adı geçersiz kılabilir chef-solo).

Bunu yapmanın deyimsel yolu nedir? Diğer şef kullanıcıları şefi nasıl çağırıyor?

Yanıtlar:


8

Varsayılan olarak, chef-soloyapılandırmasını şuradan okur /etc/chef/solo.rb. Komut satırı parametreleri, bu dosyada ayarlanabilen yapılandırma değerlerine karşılık gelir. Bu, mixlib-config kütüphanesi kullanılarak yapılır.

  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

'Seçenek' yapılandırma dosyası değeridir.

Gerçek yapılandırma dosyası /etc/chef/solo.rbşöyle görünecektir:

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"

JSON dosyasının da uzak bir URL olabileceğini unutmayın.

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

Hangi JSON dosyasının kullanılacağını belirtmek için platformu veya diğer öznitelikleri algılamak için Ohai'yi yapılandırma dosyası içinde bir kitaplık olarak da kullanabilirsiniz.

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"

Ve sonra, örneğin, platforma özel JSON dosyalarınız olacaktır. Yoksa kullanabilirsiniz o[:hostname], o[:domain]ya da o[:fqdn]ana bilgisayar adı, etki alanı veya FQDN dayalı JSON dosyaları kullanmak. Ancak bu tür bir dinamik yapılandırmayı desteklemek için sunucuların iskelesine sahip olduğunuzda, bir Chef Server :-) çalıştırmaya bakabilirsiniz.


1

@jtimberman zaten harika bir cevap yazdı. İşte şef-solo'yu çağırmanın kişisel yolu. Bu, temel bilgilerin çalışmasını sağlar ve muhtemelen /etc/chef/node.jsondiğer cevapta açıklanan seçeneklere daha fazla özellik eklemeniz ve bazı seçenekleri araştırmanız gerekir .

# 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

Yemek kitaplarınızın üzerine kopyalayın /var/chef-solo/cookbooksveya bir web sunucusunda tar.gz yapın ve recipe_urlparametreyi kullanın . chef-soloDüğümü çalıştırmak için tek gereken düğümdür.

Mümkünse, solo.rbekstra argümanları hatırlamak zorunda kalmadan şef-solo çalıştırabildiğim için her şeyi dener ve saklarım.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.