Inventory Formats
Ansible’da inventory, yönetmek istediğimiz sunucuların listesini tutan bir dosyadır. Bu dosyadaki format, INI veya YAML olabilir. Ansible’ın iki ana formatı desteklemesinin nedeni, farklı ölçek ve karmaşıklıktaki projelerin ihtiyacına göre esneklik sağlamaktır.
INI Formatı
Küçük Bir Startup Örneği:
Henüz birkaç sunucu (web, database vb.) yönetiliyor.
INI formatı burada temel bir organizasyon şeması gibi iş görüyor.
[web]
,[db]
grupları açıp altlarına sunucularını yazarsınız.
Basit, Hızlı ve Kolay: Birkaç satırlık tanımla hemen çalışmaya hazır.
Örnek:
Bu yapı, küçük bir organizasyonu (ör. 2-3 makineden oluşan bir startup) rahatlıkla idare eder.
YAML Formatı
Büyük Bir Şirket (Multinational) Örneği:
Yüzlerce sunucunuz olabilir: ABD, Avrupa, Asya; web, db, cache, load balancer vb.
YAML formatı sayesinde alt gruplar ve çok katmanlı yapılar oluşturmak kolaylaşır.
Okunabilirlik ve hiyerarşik yapı (indentation) açısından avantajlıdır.
Daha Esnek ve Yapılandırılmış:
Gruplar içinde alt gruplar oluşturabilir, her sunucuya alias, port, özel parametreler ekleyebilirsiniz.
Örnek (YAML biçiminde):
Bu örnekte “web_nodes” ve “db_nodes” gibi alt gruplar, en üstteki “all” grubunun çocukları (children) olarak tanımlanmıştır. Çok daha karmaşık ortamlarda bölgelere, veri merkezlerine, rollere göre ayrım yapmak kolaylaşır.
1. Sunucuları ve Grupları YAML Formatında Tanımlama
Neden Bu Şekilde Yazıyoruz?
all
→children
En tepede
all
grubu, onun altında “db_nodes”, “web_nodes”, “boston_nodes” vb. gibi alt grupları (children
) tanımlıyoruz.
db_nodes / web_nodes
Bu grupların altında, her bir makine “alias” ismiyle (
sql_db1
,web_node1
vb.) tanımlanıyor.Hedef sunucunun gerçek adresi (
ansible_host
), bağlantı türü (ansible_connection
), kullanıcı ve parola bilgileri burada giriliyor.
boston_nodes / dallas_nodes
Burada sadece
hosts
alanında hangi alias’ların bu gruba dahil olduğunu yazıyoruz.Çünkü
sql_db1
veweb_node1
zaten üstte ayrıntılı parametreleriyle tanımlandı. Ansible, aynı alias’ı gördüğünde parametreleri birleştirerek yönetir.
us_nodes
us_nodes
doğrudan sunucuları değil, başka grupları (boston_nodes, dallas_nodes) children olarak referans gösteriyor.Böylece
ansible-playbook -i inventory.yaml -l us_nodes myplaybook.yml
dendiğinde, otomatik olarak hem boston_nodes hem dallas_nodes altındaki tüm sunucular hedeflenir.
2. Nasıl Kullanılır?
Inventory Dosyası: Yukarıdaki içeriği
/home/bob/playbooks/inventory
(ya dainventory.yaml
) dosyasında saklayın.Playbook Çalıştırma (Örnek):
Böylece
db_nodes
,web_nodes
,boston_nodes
,dallas_nodes
,us_nodes
gibi tanımladığınız tüm gruplar Ansible tarafından görülebilir.Belirli Bir Gruba Hedeflemek:
Bu komut, sadece
db_nodes
grubundaki (sql_db1
,sql_db2
) makinelerde çalışır.
Özet
Alias ve Parametreler:
ansible_host
,ansible_connection
,ansible_user
,ansible_password
(Linux içinssh
, Windows içinwinrm
vb.).Gruplar:
db_nodes
,web_nodes
gibi doğrudan “hosts” tanımlı gruplar.Alt Gruplar:
boston_nodes
,dallas_nodes
sunucu alias’larını yeniden listeler (parametreler yukarıdan birleştirilir).Üst Grup:
us_nodes
, “boston_nodes” ve “dallas_nodes” gruplarını children olarak içerir.
Bu şekilde, tabloda belirtilen tüm sunucu bilgileri (OS, kullanıcı, parola) bir YAML envanter dosyasında net bir şekilde temsil edilmiş olur.
Last updated
Was this helpful?