# Chef (yazılım)
Chef, Ruby ve Erlang programlama dilleri kullanılarak yazılmış bir yapılandırma yönetimi aracı ve aynı adlı bir şirkettir. Sistem yapılandırma "tariflerini" yazmak için saf Ruby tabanlı özel amaçlı bir programlama dili kullanır. Chef bir şirketin sunucularının yapılandırma ve bakımını düzene sokma görevini yerine getirir ve yeni cihazları gözden geçirmek ve yapılandırmak için Google Cloud Platform, Amazon EC2, OpenStack, Microsoft Azure, Rackspace, Internap ve SoftLayer gibi bulut tabanlı platformlarla bütünleşebilir. Chef tamamen ücretsiz olarak yayınlanan ve Apache Lisansı'na sahip bir özgür yazılımdır. Bunun yanında firma olarak küçük ve büyük sistemlere hitap eden ve bu yönde fiyatlandırmalar sunan çözümleri vardır.


## Özellikler.
Kullanıcı Chef'in sunucu uygulamalarını ve yan uygulamalarını (örneğin Apache HTTP Sunucusu, MySQL veya Hadoop gibi) nasıl tanımlayacağını anlatmak ve nasıl yapılandırılacaklarını belirlemek için "tarif"ler kullanır. Tariflerin daha kolay yönetim amacıyla gruplandırılmış haline "yemek kitabı" adı verilir. Bu tarifler bir kaynak dizisini tanımlamak amacıyla belirli bir durumda bulunabilir: yüklenmesi gereken paketler, çalışması gereken hizmetler veya yazılması gereken dosyalar. Bunun gibi çeşitli kaynaklar belirli bir yazılım sürümünün çalıştırılması yönünde yapılandırılabilir ve aynı yazılımın doğru bir şekilde ve tüm bağımlılıklarıyla birlikte kurulmuş olduğunu garantilemek için kullanılabilir. Chef her bir kaynağın düzgün şekilde yapılandırıldığından emin olup istenilen durumda olmayan kaynaklarda gerekli düzeltmeleri yapar. Chef istemci-sunucu kipinde veya tek başına "chef-solo" adlı bir yapılandırmada çalışabilir. İstemci-sunucu kipinde Chef istemcisi düğüm hakkındaki çeşitli nitelikleri Chef sunucusuna gönderir. Sunucu Solr kullanarak bu nitelikleri dizinler ve istemcilerin bu bilgiyi sorgulamaları için bir API sağlar. Chef tarifleri bu nitelikleri sorgulayabilir ve elde ettiği sonuçları düğümü yapılandırmaya yardımcı olması için kullanabilir.
Geleneksel olarak Chef Linux'ü yönetmek için kullanılmıştır ancak sonraki sürümler Microsoft Windows'u da desteklemektedir.
CFEngine, Bcfg2 ve Puppet gibi benzerleriyle birlikte Linux üzerindeki en büyük dört yapılandırma yönetimi programından biridir.


## Tarihçe.
Chef ilk adımda Adam Jacob tarafından iş modelinin uçtan uca sunucu ve dağıtım araçları üretmek olduğu kendi danışmanlık şirketi için oluşturduğu bir araç olarak yola başlamıştır. Jacob daha sonra Chef'i Jesse Robbins'e göstermiş ve o da Amazon'da gerçekleştirdiği faaliyetlerden sonra potansiyelinin farkına varmıştır. Sonrasında Barry Steinglass, Nathen Haneysmith ve Joshua Timberman ile birlikte yeni bir şirket kurarak Chef'i bir ürün haline dönüştürülmüştür. Proje ilk olarak "marionette (kukla)" olarak adlandırılmış ancak bu ismin hem uzun hem de yazımının karmaşık olması ve modüllerin hazırlandığı biçimin adının "tarif" olarak adlandırılması sebebiyle sonradan "Chef (şef)" olarak yeniden isimlendirilmiştir.
Şubat 2013'te Opscode Chef'in 11. sürümünü çıkarmıştır. Bu sürümdeki değişiklikler çekirdek API'nin Erlang'da yazılması gibi birçok yenilik içermiştir.


## Platform desteği.
Chef birçok istemci ve sunucu ürününde desteklenmektedir. İstemci için bilinen büyük platform destekleri AIX, RHEL/CentOS, FreeBSD, OS X, Solaris, Microsoft Windows ve Ubuntu'dur. Diğer istemci platformları arasında ArchLinux, Debian, Fedora ve diğerleri vardır. Chef sunucusu RHEL/CentOS/Oracle Linux ve Ubuntu üzerinde desteklenmektedir.


## Kullanıcılar.
Chef Airbnb, Mozilla, Expedia, Facebook, HP Public Cloud, Prezi, Ancestry.com, Rackspace, Get Satisfaction, IGN, Marshall Üniversitesi, Socrata, Minnesota Üniversitesi, Pennsylvania Üniversitesi Wharton Okulu, Bonobos, Splunk, Citi, Cheezburger ve başka birçok kurum ve firma tarafından kullanılmaktadır.