22 Aralık 2014 Pazartesi

Altyapı Otomasyon Araçları - Puppet & Chef

Merhaba,

Bugün son zamanların popüler altyapı otomasyon araçlarından bahsetmek istiyorum. CFEngine, Bcfg2, Puppet ve Chef gibi ürünler bulut, sanal ve fiziksel ortamların otomasyonunda sıkça kullanılmaktadır




Altyapı yönetimi yapan ekiplerin işlerini rahatlatan bu ürünler son zamanlarda yazılımcıların da dikkatini çekmeye başladı. Ürünlerin yazılım projelerine de dahil edildiğini görmek mümkün. Özellikle yazılımcılar ile alt yapı yönetimi yapan uzmanlar arasında kalan bölgede bu araçların güzel işler yaptığını görüyoruz.








Bu ürünlerden benim ilgimi en çok çeken Puppet ve Chef e kısa bir bakış atmak istiyorum.

CHEF :

2009 yılından bu yana kullanılmakta olan Chef in Puppet tan etkilendiğini söylemek mümkün. Ubuntu, Debian, Rhel, Centos, Fedora, MAC OS, Windows, MS Windows Server gibi geniş bir yelpazede ürünü destekliyor. Temelde geliştirme Ruby scripting dili domaininde yapılmakta, buda Ruby bilen kişilerin Chef i kullanmasını kolaylaştırıyor. 



Birbiri ile iletişim halinde 3 modül içermektedir. Chef sunucusu, node lar ve Chef Workstation. Chef sunucusu çoklu node ortamlarını yönetebilecek konfigurasyon datası içerir.Bu konfigurasyonlar ve kaynaklar gerektiğinde node lar tarafından istenir. Chef otomasyon adımlarını içeren reçeteleri  üzerinde tutar. Birden fazla reçete (Recipe) ve şablon (Template) CookBook ları oluşturur. Kullanıcılar "Knife" ismi verilen bir CLI aracılığı ile Chef ile etkileşime geçerler.Belirlenen bir otomasyon reçetesinin bir yada çoklu node ortamına uygulanması mümkündür. Bir otomasyon reçetesi uygulanırken diğer reçeteleri de çağırarak uygulamaya koyabilir.







Alttaki çizimden anlaşılacağı üzere CookBook ları workstationda düzenleyip Knife ile Chef sunucusuna göndeririz. Chef istemcisi belli periyodlarda yapılandırma bilgilerini sunucudan alarak node lar üzerinde uyguluyor.





Chef komponentlerini detaylı listeleyecek olursak;

ComponentDescription
AttributesDescribe node data, such as the IP address and hostname.
Chef clientDoes work on behalf of a node. A single Chef client can run recipes for
multiple nodes.
Chef SoloAllows you to run Chef cookbooks in the absence of a Chef server.
CookbooksContain all the resources you need to automate your infrastructure and
can be shared with other Chef users. Cookbooks typically consist of
multiple recipes.
Data bagsContain globally available data used by nodes and roles.
KnifeUsed by system administrators to upload configuration changes to the
Chef Server. Knife is used for communication between nodes via SSH.
Management consoleChef server's web interface for managing nodes, roles, cookbooks,
data bags, and API clients.
NodeHosts that run the Chef client. The primary features of a node, from Chef's
point of view, are its attributes and its run list. Nodes are the component
to which recipes and roles are applied.
OhaiDetects data about your operating system. It can be used stand-alone,
but its primary purpose is to provide node data to Chef.
RecipeThe fundamental configuration in Chef. Recipes encapsulate collections of
resources that are executed in the order defined to configure the nodes.
Repository (Chef repository)The place where cookbooks, roles, configuration files, and other artifacts for
 managing systems with Chef are hosted.
ResourceA cross-platform abstraction of something you're configuring on a node.
For example, users and packages can be configured differently on different
OS platforms; Chef abstracts the complexity in doing this away fro
m the user.
RoleA mechanism for grouping similar features of similar nodes.
Server (Chef server)Centralized repository of your server's configuration.
[Tablo http://www.ibm.com/ sitesinden alınmıştır.]

Chef ile yapılabilecek basit bir örneği ele alacak olursak;
Networkünüzdeki tüm windows, linux, unix sunucularınız ile router ve güvenlik cihazlarınızda NTP konfiurasyonu yapmak istiyorsunuz. NTP konfigurasyonu olmayanlara eklenecek, var olanlarsa ise bu konfigurasyon yenilenecek. Bu işi Chef ile hazırlayacağınız otomasyon reçeteleri ile hızlıca halletmeniz mümkün olacaktır. Onlarca cihazdan binlerce cihaza konfiurasyon yapmak için aynı reçeteleri kullanarak hem zamandan kazanacak hem de insan kaynaklı dikkatsizlikler ile oluşabilecek hataların önüne geçeceksiniz.

Chef ile neler yapabiliriz;

Hayallerinizle sınırlı olmakla birlikte altta birkaç başlık sayabiliriz.

- Sunucu başlatma/kapatma
- Sunucu üzerine uygulama kurma
- Sunucu üzerinde uygulama yönetimi
- Sunucu üzerinde konfigurasyon yönetimi
- Sunucu envanter yönetimi
- Sunucu üzerinde şirket politikalarına uyumluluk kontrolleri
- Kurulacak uygulama öncesi ortam isterlerinin hazırlanması
- Yeni sunuculara işletim sistemi kurulumu...

PUPPET :
Puppet ın 2005 yılı civarından buyana kullanıldığını görüyoruz. Google, Oracle gibi firmalar altyapı yönetiminde bu aracı kullanmaktadır. Chef e göre daha zor bir öğrenme süreci olan Puppet çok geniş bir yelpazede işletim sistemini desteklemektedir. Kullanıcı topluluklarının Chef e göre çok daha geniş ve aktif olduğunu söylemek mümkün. 


Puppet "Puppet Master" isimli bir ana sunucuyu kullanır. Bu sunucu node lar ve gruplar arasında konfigurasyonları merkezileştirir. Örnek vermek gerekirse üzerinde Apache çalışan linux makinelerinizi Puppet Master üzerinde gruplayabilirsiniz. Puppet Agent yönetilen sistemler üzerinde çalışır. Böylece herhangi bir otomasyon işini yada konfigurasyon değişikliğini bir yada birden fazla grup içinde makinelere aynı anda uygulama şansına sahip olursunuz. 





Puppet "Facter" ismi verilen bir araca sahiptir. Facter sistem metadatasını tutar ve sunucular arasında filtrelemeye izin verir. Sunucu isimleri, işletim sistem versiyonları, modelleri, ip leri gibi...
Puppet komponentlerine göz atalım.

ComponentDescription
AgentA daemon process running on a node that collects information about the node and
sends it to the Puppet master.
CatalogCompilation of facts that specifies how to configure the node.
FactsData about a node, sent by the node to the Puppet master.
ManifestDescribes resources and the dependencies among them.
ModuleGroups related manifests (in a directory). For example, a module might define how a
database like MySQL gets installed, configured, and run.
NodeA host that is managed by the Puppet master. Nodes are defined like classes but
contain the host name or fully qualified domain name.
Puppet masterThe server that manages all the Puppet nodes.
ResourceFor example, a package, file, or service.
[Tablo http://www.ibm.com/ sitesinden alınmıştır.]

Puppet "Dependency Management" özelliğini diğer otomasyon ürünlerine göre çok daha fazla geliştirmiş ve ön plana çıkarmış bir üründür. Buda özellikle kompleks ve geniş IT altyapısı olan firmalarda özellikle altyapı yönetimi yapan ve script kullanmayı tercih mühendislerin gözünde ürünü vazgeçilmez hale getirmektedir.

Puppet ile network otomasyon işleri de yapmak mümkündür. Network ve güvenlik uzmanları çoğunlukla işlerini rahatlatmak amacı ile scripting kullanmakta fakat yaptıkları bu işleri daha organize ve tekrar kullanılabilir hale getirememektedirler. Puppet bu konuda da geniş networklerin yönetiminde uzmanlara zaman kazandırmakta ve mühendisleri yaptıkları işlerde insan hatasından uzak tutmaktadır.

Puppet ile yapılabileceklere bir örnek vermek gerekirse;

Bir bankaya ait 250 şube yönlendiricilerinde onlarca satırlık ACL düzenlemesi yapmak, yeni satır eklemek, silmek, var olan ACL satırlarında değişiklik yapmak ve bu işlemleri hatasız gerekleştirmek çok uzun bir sürece yayılacak bir projedir. Puppet ile bunu çok kısa sürede yapmanız mümkündür. Bunu yaparken yapılan konfigurasyonların test edilmesi, rollback mekanizmasının oluşturulması gibi konular da Puppet ın yetenekleri arasında olacaktır.

Puppet ile yapılabilecekleri genelleyecek olursak;

- Sunucu başlatma/kapatma
- Sunucu üzerine uygulama kurma
- Sunucu üzerinde uygulama yönetimi
- Sunucu üzerinde konfigurasyon yönetimi
- Sunucu envanter yönetimi
- Sunucu üzerinde şirket politikalarına uyumluluk kontrolleri
- Kurulacak uygulama öncesi ortam isterlerinin hazırlanması
- Yeni sunuculara işletim sistemi kurulumu
- Disk/Storage/Dosya Sistemi yönetimi
- Kullanıcı/Grup yönetimi
- Yedekleme işlemleri
- Güvenlik yönetimi

Ve daha önce de belirttiğimiz gibi hayallerinizle sınırlı pek çok otomasyon işi.


Teşekkürler,
Cem Selmanoğulları

4 yorum:

  1. elinize sağlık, güzel bir yazı olmuş..

    YanıtlaSil
  2. Thanks for sharing this information. You may also refer for practice of Puppet and Chef http://www.s4techno.com/lab-setup/

    YanıtlaSil
  3. Thanks for sharing this informative information. You may also visit http://www.s4techno.com/hadoop-training-in-pune/ for more details.

    YanıtlaSil