Ansible’da Statik ve Dinamik Envanterler Nasıl Kullanılır – 4. Bölüm
Ansible Serisinin bu 4. Bölümünde, Ansible’da bilgisayar gruplarını tanımlamak için statik ve dinamik envanterin nasıl kullanılacağını açıklayacağız.
Bir Ansible’da, Ansible kontrol merkezi tarafından kontrol edilen yönetilen bilgisayarlar veya sunucular, bölümünde açıklandığı gibi bir bilgisayar envanter dosyasında tanımlanır. Bir bilgisayar envanter dosyası, yönetilen bilgisayarların veya uzak sunucuların bilgisayar adlarından veya IP adreslerinden oluşan bir metin dosyasıdır.
Yönetilen bilgisayarlar, bireysel girişler olarak listelenebilir veya daha sonra göreceğimiz gibi bir grup adı altında kategorize edilebilir. Ansible’da iki tür envanter dosyası vardır: Statik ve Dinamik.
Bunların her birine bir göz atalım ve onları nasıl yönetebileceğimizi görelim. Şimdiye kadar, Kontrol düğümünüze Ansible’ı yüklediğinizi ve yönetilen ana bilgisayarlarınıza Parolasız SSH bağlantısını yapılandırdığınızı varsayıyoruz.
Statik Bilgisayar Envanter Dosyası
Ansible’da statik envanter dosyası, bilgisayar adları veya IP adresleri kullanılarak bir bilgisayar grubu altında bildirilen yönetilen bilgisayarların listesini içeren bir düz metin dosyasıdır.
Bilgisayar grubu adı köşeli parantez içine alınır, yani [grup adı]. Yönetilen bilgisayar girişleri daha sonra grup adının altında, her biri kendi satırında listelenir. Daha önce tartışıldığı gibi, bilgisayarlar, bilgisayar adları veya IP adresleri kullanılarak listelenir.
[group name] Host A ip_address Host B ip_address Host c ip_address
Açıklama amacıyla, statik bir envanter dosyası oluşturacağız.
# mkdir test_lab && cd test_lab # vim hosts
Statik Envanter Dosyası
[webservers] 173.82.115.165 [database_servers] 173.82.220.239 [datacenter:children] webservers database_servers
Dosyayı kaydet ve çık.
Yukarıdaki envanter dosyasında da görebileceğiniz gibi 2 bilgisayar grubu oluşturduk: web sunucuları ve veritabanı_sunucuları. Ayrıca, yukarıda görüldüğü gibi ‘: children’ soneki ile gösterilen bir grup bilgisayar grubunu içeren, datacenter adlı ek bir grup oluşturduk.
Ansible, bilgisayar gruplarının bir grup adı altına yerleştirilmesine de izin verir. Yukarıdaki envanter dosyasında datacenter altına webservers ve database_servers grupları yerleştirilmiştir.
NOT: Yönetilen bilgisayarları bir bilgisayar grubuna yerleştirmek zorunlu değildir. Örneğin, bilgisayar adlarını veya IP adreslerini kullanarak bunları kolayca listeleyebilirsiniz.
173.82.202.239 172.82.115.165 load_balancer.pnl.com
Şimdi bilgisayar envanter dosyasına başvurmak için birkaç Ansible komutu kullanalım. Envanter yönetimi için temel sözdizimi gösterildiği gibidir.
$ ansible {host-pattern} -i /path/of/inventory/file --list-hosts
Örneğin,
$ ansible all -i /root/test_labs/hosts --list-hosts

Alternatif olarak, ‘all’ argümanını değiştirmek için ” * “joker karakterini kullanabilirsiniz.
$ ansible * -i /root/test_labs/hosts --list-hosts

Bir gruptaki bilgisayarları listelemek için, bilgisayar modeli yerine bilgisayar grubunu belirtin.
$ ansible webservers -i /root/test_labs/hosts --list-hosts

Dinamik Ana Bilgisayar Envanter Dosyası
Bir yapılandırmada, özellikle de AWS gibi envanter dosyasının sunucu ekleyip çıkardıkça sürekli değiştiği bir bulut kurulumunda, envanter dosyasında tanımlanan bilgisayarları takip etmek gerçek bir zorluk haline gelir. Bilgisayar dosyasına geri dönmek ve bilgisayar listesini IP adresleriyle güncellemek zahmetli hale gelir.
İşte bu noktada dinamik bir envanter devreye giriyor. Peki dinamik envanter nedir? Dinamik envanter Python, PHP veya başka bir programlama dilinde yazılmış bir betiktir. Sanal bir sunucu durdurulup yeniden başlatıldığında IP adreslerinin değiştiği AWS gibi bulut ortamlarında kullanışlıdır.
Ansible, diğerleri arasında Google Compute Engine, Amazon EC2 bulut sunucusu, OpenStack, RackSpace, cobbler gibi genel bulut platformları için zaten envanter komut dosyaları geliştirmiştir.
Dinamik envanterin statik envantere göre avantajları nelerdir?
- Bilgiler betikler kullanılarak toplandığından, dinamik envanterler insan hatasını azaltmada mükemmel bir iş çıkarır.
- Envanter yönetiminde minimum çaba gerekir.
Seçtiğiniz bir programlama dilinde kendi özelleştirilmiş dinamik envanterinizi yazabilirsiniz. Envanter, uygun seçenekler iletildiğinde JSON’da bir biçim döndürmelidir.
Mevcut Bir Dinamik Envanter Komut Dosyasını Kullanın
Ansible’ın kullanabilmesi için, dinamik bir envanter oluşturmak için kullanılan bir komut dosyasının yürütülebilir hale getirilmesi gerekir.
Dinamik bir envanter komut dosyasının içindeki ana bilgisayarlar hakkında bilgi almak için çalıştırmanız yeterlidir.
# ./script --list
Daha önce belirtildiği gibi, çıktı aşağıdaki biçimde JSON’da olmalıdır.
Gruplardan oluşan bir sözlük (yani web sunucuları, database_Servers)
- Grup başına yönetilen bilgisayarların listesi
- Değişkenler sözlüğü
Meta dictionary
- Hosts and hostvars
Sample Output
{
"webservers": {
"hosts": [
"webserver1.example.com",
"webserver2.example.com"
],
"vars": {}
},
"database_servers": {
"hosts": [
"mysql_db1",
"mysql_db2"
],
"vars": {}
},
"_meta": {
"hostvars": {
"mysql_db2": {},
"webserver2.example.com": {},
"webserver1.example.com": {},
"mysql_db1": {}
}
}
}
Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.