Ansible'da Statik ve Dinamik Envanterler Nasıl Kullanılır - Bölüm 4


Ansible Serisinin bu Bölüm 4'ünde, Ansible'da ana bilgisayar gruplarını tanımlamak için statik ve dinamik envanterin nasıl kullanılacağını açıklayacağız.

Bir Ansible'da, Ansible kontrol düğümü tarafından kontrol edilen yönetilen ana bilgisayarlar veya sunucular, şurada açıklandığı gibi bir ana makine envanter dosyasında tanımlanır. envanter dosyası, yönetilen ana bilgisayarların veya uzak sunucuların ana bilgisayar adlarından veya IP adreslerinden oluşan bir metin dosyasıdır.

Yönetilen ana bilgisayarlar bireysel girişler halinde 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.

Gelin bunların her birine bir göz atalım ve bunları nasıl yönetebileceğimizi görelim. Şu ana kadar Ansible'ı Kontrol düğümünüze zaten yüklediğinizi ve yönetilen ana bilgisayarlarınızla Parolasız SSH bağlantısını yapılandırdığınızı varsayıyoruz.

Statik Ana Bilgisayar Envanter Dosyası

Ansible'da statik envanter dosyası, ana makine adları veya IP adresleri kullanılarak bir ana makine grubu altında bildirilen yönetilen ana bilgisayarların listesini içeren düz metin dosyasıdır.

Ana bilgisayar grubu adı köşeli parantez içine alınır, yani [grup adı]. Yönetilen ana bilgisayar girişleri daha sonra grup adının altında, her biri kendi satırında listelenir. Daha önce tartışıldığı gibi ana bilgisayarlar, ana bilgisayar adları veya IP adresleri kullanılarak listelenir.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

Örnek olması açısından statik bir envanter dosyası oluşturacağız.

mkdir test_lab && cd test_lab
vim hosts
[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 görebileceğiniz gibi 2 ana makine grubu oluşturduk: web sunucuları ve database_servers. Ayrıca, yukarıda görüldüğü gibi ': Children' sonekiyle belirtilen bir grup ana bilgisayar grubunu içeren datacenter adında ek bir grup oluşturduk.

Ansible ayrıca ana bilgisayar gruplarının bir grup adı altına yerleştirilmesine de izin verir. Yukarıdaki envanter dosyasında, web sunucuları ve database_servers grupları veri merkezi altına yerleştirilmiştir.

NOT: Yönetilen ana makinelerin bir ana makine grubuna yerleştirilmesi zorunlu değildir. Bunları, örneğin ana bilgisayar adlarını veya IP adreslerini kullanarak kolayca listeleyebilirsiniz.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

Şimdi ana bilgisayar envanter dosyasına referans vermek için birkaç Ansible komutunu kullanalım. Envanter yönetiminin 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' bağımsız değişkenini değiştirmek için * joker karakterini kullanabilirsiniz.

ansible * -i /root/test_labs/hosts --list-hosts

Bir gruptaki ana bilgisayarları listelemek için ana bilgisayar modeli yerine ana bilgisayar grubunu belirtin.

ansible webservers -i /root/test_labs/hosts --list-hosts

Dinamik Ana Bilgisayar Envanter Dosyası

Bir yapılandırmada, özellikle AWS gibi, siz sunucu ekledikçe veya hizmetten çıkardıkça envanter dosyasının sürekli değiştiği bir bulut kurulumunda, envanter dosyasında tanımlanan ana bilgisayarları takip etmek gerçek bir zorluk haline gelir. Ana bilgisayar dosyasına geri dönmek ve ana bilgisayarların listesini IP adresleriyle güncellemek zahmetli hale gelir.

İşte bu noktada dinamik envanter devreye giriyor. Peki dinamik envanter nedir? Dinamik envanter Python, PHP veya başka herhangi bir programlama dilinde yazılmış bir komut dosyasıdır. Bir sanal sunucu durdurulup yeniden başlatıldığında IP adreslerinin değiştiği AWS gibi bulut ortamlarında kullanışlıdır.

Ansible halihazırda Google Compute Engine, Amazon EC2 örneği, OpenStack, RackSpace, cobbler gibi genel bulut platformları için envanter komut dosyaları geliştirmiştir.

Dinamik envanterin statik envantere göre avantajları nelerdir?
  • Dinamik envanterler, bilgilerin komut dosyaları kullanılarak toplanması nedeniyle insan hatasını azaltma konusunda mükemmel bir iş çıkarır.
  • Envanterleri yönetmek için minimum çaba gerekir.

Kendi kişiselleştirilmiş dinamik envanterinizi seçtiğiniz bir programlama dilinde yazabilirsiniz. Uygun seçenekler aktarıldığında envanter JSON'da bir format döndürmelidir.

Mevcut bir Dinamik Envanter Komut Dosyasını Kullanın

Dinamik envanter oluşturmak için kullanılan bir komut dosyasının, Ansible'ın kullanabilmesi için yürütülebilir hale getirilmesi gerekir.

Dinamik bir envanter komut dosyası içindeki ana bilgisayarlar hakkında bilgi almak için çalıştırmanız yeterlidir.

./script --list 

Daha önce de belirtildiği gibi çıktının aşağıdaki formatta JSON olması gerekir.

Gruplardan oluşan bir sözlük (ör. web sunucuları, veritabanı_Sunucuları)
  • Grup başına yönetilen ana bilgisayarların listesi
  • Değişkenler sözlüğü
Meta sözlük
  • Ana bilgisayarlar ve ana bilgisayar değişkenleri
Örnek Çıktı
{
  "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": {}
    }
  }
}
Çözüm

Bu yazımızda hem statik hem de dinamik envanterlerin nasıl oluşturulacağını gösterdik. Özetle, statik bir envanter dosyası, sayıları ve IP adresleri oldukça sabit kalan, yönetilen ana bilgisayarların veya uzak düğümlerin listesini içeren düz metin dosyasıdır.

Öte yandan, dinamik bir ana bilgisayar dosyası, siz yeni ana bilgisayarlar ekledikçe veya eskilerini devre dışı bıraktıkça değişmeye devam eder. Yeni ana bilgisayar sistemlerini durdurup başlattığınızda, ana bilgisayarların IP adresleri de dinamiktir. Bu öğreticiyi bilgilendirici bulduğunuzu umuyoruz.