Ansible'da üç tür özel olgu tanımlayabilirsiniz.
1) Küresel gerçekler: Bu bilgilere envanter dosyanızdaki her ana bilgisayardan erişilebilir.
2) Grup gerçekleri: Bu gerçeklere yalnızca belirli bir ana bilgisayar grubundan veya bir ana bilgisayar grubundan erişilebilir.
3) Ev sahibi gerçekleri: Bu gerçeklere yalnızca belirli bir ana bilgisayardan erişilebilir.
Bu yazıda size Ansible özel gerçekleriyle nasıl çalışacağınızı göstereceğim. Öyleyse başlayalım.
Önkoşullar:
Bu makaledeki örnekleri denemek isterseniz,
1) Bilgisayarınızda Ansible kurulu olmalıdır.
2) Ansible otomasyonu için yapılandırılmış en az 6 Linux ana makineniz olmalıdır.
LinuxHint'te Ansible'ı Kurmaya ve Ansible otomasyonu için ana bilgisayarları yapılandırmaya adanmış birçok makale var. Gerekirse onları kontrol edebilirsiniz.
Bir Proje Dizini Ayarlama:
Başlamadan önce proje dosyalarımızı düzenleyebilmemiz için bir proje dizini oluşturalım.
Bir proje dizini oluşturmak için özel gerçekler/ senin içinde EV dizini, aşağıdaki komutu çalıştırın:
$ mkdir -pv özel bilgiler/playbooks,host_vars,group_vars
Şimdi, şuraya gidin: özel gerçekler/ dizin şu şekilde:
$ cd özel bilgiler/
Ansible yapılandırma dosyası oluşturun cevaplayıcı.cfg proje dizininizde aşağıdaki gibi:
$ nano yanıtlanabilir.cfg
Aşağıdaki satırları yazınız cevaplayıcı.cfg dosya.
[varsayılanlar]envanter = ana bilgisayarlar
host_key_checking = Yanlış
İşiniz bittiğinde, basın
Şimdi, bir Ansible envanter dosyası oluşturun ev sahibi proje dizininizde aşağıdaki gibi:
$ nano ana bilgisayar
Aşağıdaki satırları yazınız ev sahibinin envanter dosyası.
vm1.düğüm.comvm2.düğüm.com
[ağ]
vm3.düğüm.com
vm4.düğüm.com
[veri tabanı]
vm[5:6].düğüm.com
İşiniz bittiğinde, basın
Envanter dosyanızdaki mevcut tüm ana bilgisayarları listelemek için aşağıdaki komutu çalıştırın:
$ ansible all --list-hostsGördüğünüz gibi envanter dosyamda altı ana bilgisayar var.
Mevcut ana bilgisayarları listelemek için ağ envanter dosyanızın grubu için aşağıdaki komutu çalıştırın:
$ ansible web --list-hostsGördüğünüz gibi, iki ana bilgisayarım var (vm3.düğüm.com ve vm4.düğüm.com) içinde ağ envanter dosyamın grubu.
Mevcut ana bilgisayarları listelemek için veri tabanı envanter dosyanızın grubu için aşağıdaki komutu çalıştırın:
$ ansible veritabanı --list-hostsGördüğünüz gibi, iki ana bilgisayarım var (vm5.düğüm.com ve vm6.düğüm.com) içinde veri tabanı envanter dosyamın grubu.
Ansible Global Facts ile Çalışmak:
Bu bölümde, envanter dosyanızda Ansible global olgularını/değişkenlerini nasıl tanımlayacağınızı ve onlara Ansible playbook'larınızdan nasıl erişeceğinizi göstereceğim. Ayrıca size global olguları/değişkenleri ayrı bir dosyada nasıl tanımlayacağınızı göstereceğim.
İlk olarak, açın ev sahibinin Aşağıdaki komutla envanter dosyası:
$ nano ana bilgisayar
Şimdi, işaretli satırları dosyanıza ekleyin ev sahibinin envanter dosyası. İşiniz bittiğinde, basın
'
içine küresel gerçekleri eklersiniz hepsi:vars Bölüm. İşte ekledim web_url küresel gerçek.
Şimdi, yeni bir oyun kitabı oluşturun print_global_fact.yaml içinde oyun kitapları/ dizin şu şekilde:
$ nano oyun kitapları/print_global_fact.yaml
Ardından, aşağıdaki satırları yazın print_global_fact.yaml dosya.
- ev sahibi: hepsikullanıcı ansible
görevler:
- name: 'web_url' global gerçeğinin değerini yazdırın
hata ayıklama:
msg: 'Web URL'si: web_url'
Bu çalışma kitabının amacı, web_url küresel gerçek.
İşiniz bittiğinde, basın
Şimdi, çalıştırın print_global_fact.yaml oyun kitabı şu şekilde:
$ ansible-playbook playbooks/print_global_fact.yaml
Gördüğünüz gibi envanter dosyamdaki tüm hostlar global gerçeğe erişebilir web_url.
Ayrıca küresel gerçekleri ayrı bir dosyaya ekleyebilirsiniz. Bu şekilde envanter dosyasını temiz tutabilirsiniz. nasıl yapacağımızı görelim.
İlk olarak, küresel gerçekleri dünyadan çıkaralım ev sahibinin envanter dosyası.
$ nano ana bilgisayar
Şimdi envanter dosyasından işaretli satırları kaldırın ve
Ardından, yeni bir dosya oluşturun herşey içinde group_vars/ dizin şu şekilde:
$ nano group_vars/tümü
Küresel gerçeği eklemek için web_url, aşağıdaki satırı yazın group_vars/tümü dosya.
web_url: https://www.linux ipucu.comİşiniz bittiğinde, basın
Küresel gerçeğe erişip erişemeyeceğinizi kontrol etmek için web_url, çalıştır print_global_fact.yaml oyun kitabını tekrar şöyle:
$ ansible-playbook playbooks/print_global_fact.yaml
Gördüğünüz gibi envanter dosyamdaki tüm hostlar global gerçeğe erişebilir web_url.
Ansible Group Facts ile Çalışmak:
Bu bölümde, envanter dosyanızda Ansible grup olgularını/değişkenlerini nasıl tanımlayacağınızı ve onlara Ansible playbook'larınızdan nasıl erişeceğinizi göstereceğim. Ayrıca size grup olgularını/değişkenlerini ayrı bir dosyada nasıl tanımlayacağınızı göstereceğim.
İlk olarak, açın ev sahibinin Aşağıdaki komutla envanter dosyası:
$ nano ana bilgisayar
Bir ev sahibi grubunuz varsa grup 1, sonra o ana bilgisayar grubu için grup olgularını/değişkenlerini bir grup1:vars envanter dosyanızın bölümü.
[grup 1]…
[grup1:vars]
değişken1=değer1
değişken2=değer2
Örneğin, grup olgularını/değişkenlerini eklemek için alan adı ve database_backends için ağ ana bilgisayar grubu, envanter dosyanızdaki işaretli satırları yazabilirsiniz.
İşiniz bittiğinde, basın
Grup gerçeklerine erişip erişemeyeceğimizi yazdırmak ve test etmek için yeni bir oyun kitabı oluşturun print_group_facts.yaml içinde oyun kitapları/ dizin şu şekilde:
$ nano oyun kitapları/print_group_facts.yaml
Aşağıdaki satırları yazınız print_group_facts.yaml dosya.
- ana bilgisayarlar: webkullanıcı ansible
görevler:
- isim: Grup gerçeklerini yazdır
hata ayıklama:
msg: 'Alan Adı: domain_name Veritabanı Arka Ucu: database_backend'
İşiniz bittiğinde, basın
Şimdi, çalıştırın print_group_facts.yaml oyun kitabı şu şekilde:
$ ansible-playbook playbooks/print_group_facts.yaml
Gördüğünüz gibi, ana bilgisayarlar ağ grup erişebilir alan adı ve database_backend grup gerçekleri/değişkenleri.
Şimdi envanter dosyasını temizleyelim ve grup olgularını/değişkenlerini ayrı bir dosyaya nasıl ekleyeceğinizi görelim.
İlk olarak, açın ev sahibinin envanter dosyası aşağıdaki gibidir:
$ nano gerçekler
İşaretli satırları ekrandan kaldırın ev sahibinin envanter dosyası. İşiniz bittiğinde, basın
için grup değişkenleri eklerken ağ ana bilgisayar grubu, yeni bir dosya oluştur ağ (grup adıyla aynı) grup_vars/ dizin şu şekilde:
$ nano group_vars/web
Grup gerçeklerini eklemek için alan adı ve database_backend için ağ ana bilgisayar grubu, aşağıdaki satırları ekleyin group_vars/web dosya.
alan_adı: web.linux ipucu.comdatabase_backend: pgsql
İşiniz bittiğinde, basın
Ana bilgisayarların içinde olup olmadığını kontrol etmek için ağ grup, grup gerçeklerine erişebilir, print_group_facts.yaml oyun kitabı şu şekilde:
$ ansible-playbook playbooks/print_group_facts.yaml
Gördüğünüz gibi, ana bilgisayarlar ağ grup erişebilir alan adı ve database_backend grup gerçekleri/değişkenleri.
Ansible Host Facts ile Çalışmak:
Bu bölümde, envanter dosyanızda Ansible ana bilgisayar olgularını/değişkenlerini nasıl tanımlayacağınızı ve onlara Ansible playbook'larınızdan nasıl erişeceğinizi göstereceğim. Ayrıca size ana bilgisayar olgularını/değişkenlerini ayrı bir dosyada nasıl tanımlayacağınızı da göstereceğim.
İlk olarak, açın ev sahibinin Aşağıdaki komutla envanter dosyası:
$ nano ana bilgisayar
Envanter dosyanızdaki ana bilgisayarın DNS adından veya IP adresinden sonra ana bilgisayar olgularını/değişkenlerini aşağıdaki gibi ekleyebilirsiniz:
www.etki alanı1.com değişken1=değer1 değişken2=değer2192.168.22.2 değişken1=değer3 değişken2=değer4
Örneğin, ana bilgisayar gerçekleri/değişkenleri ekleyebilirsiniz alan adı ve database_backend ev sahipleri için vm3.düğüm.com ve vm4.düğüm.com, aşağıdaki ekran görüntüsünde işaretlendiği gibi.
değerinin olduğuna dikkat edin alan adı ve database_backend olgular/değişkenler her ana bilgisayar için farklıdır.
Ana bilgisayar olgularını/değişkenlerini eklemeyi tamamladığınızda,
Grup olguları/değişkenleri örneğindekiyle aynı olguları/değişkenleri eklediğim için, print_group_facts.yaml bu gerçeklerin/değişkenlerin erişilebilirliğini de test etmek için oyun kitabı.
Çalıştır print_group_facts.yaml oyun kitabı şu şekilde:
$ ansible-playbook playbooks/print_group_facts.yaml
Gördüğünüz gibi, ana bilgisayar gerçekleri/değişkenleri, belirtilen ana bilgisayar tarafından erişilebilir. Değerler de her ana bilgisayar için farklıdır.
Ana bilgisayarların her biri envanter dosyamda ayrı bir satırda olduğundan, envanter dosyama ana bilgisayar olgularını/değişkenlerini kolayca ekleyebilirim. Ancak, aşağıdaki ekran görüntüsünde işaretlendiği gibi envanter dosyanızdaki ana bilgisayarları tanımlamak için aralıklar kullanırsanız, bunun gibi ana bilgisayar olgularını/değişkenlerini ekleyemezsiniz.
Genel ve grup olguları/değişkenleri için yaptığınız gibi, ana bilgisayar olgularını/değişkenlerini ayrı bir dosyaya ekleyebilirsiniz.
için ana bilgisayar olguları/değişkenleri eklemek için vm5.düğüm.com ana bilgisayar, yeni bir dosya oluştur vm5.düğüm.com (ana bilgisayar DNS adıyla aynı) host_vars/ dizin şu şekilde:
$ nano host_vars/vm5.düğüm.com
Ana bilgisayar gerçeklerini/değişkenlerini ekleyebilirsiniz db_port ve db_name ev sahibi için vm5.düğüm.com aşağıdaki satırlarla.
db_port: 3306db_name: demo1
İşiniz bittiğinde, basın
Aynı şekilde, ana bilgisayar için ana bilgisayar gerçekleri/değişkenleri eklemek için vm6.düğüm.com, yeni bir dosya oluştur vm6.düğüm.com içinde host_vars/ dizin şu şekilde:
$ nano host_vars/vm6.düğüm.com
Ana bilgisayar gerçeklerini/değişkenlerini ekleyebilirsiniz db_port ve db_name ev sahibi için vm6.düğüm.com aşağıdaki satırlarla.
db_port: 8877db_name: uygulama1
İşiniz bittiğinde, basın
Ana bilgisayar gerçeklerine/değişkenlerine erişip erişemeyeceğimizi yazdırmak ve test etmek için yeni bir çalışma kitabı oluşturun print_host_facts.yaml içinde oyun kitapları/ dizin şu şekilde:
$ nano oyun kitapları/print_host_facts.yaml
Şimdi, aşağıdaki satırları yazın print_host_facts.yaml dosya.
- ana bilgisayarlar: veritabanıkullanıcı ansible
görevler:
- ad: Ana bilgisayar bilgilerini yazdır
hata ayıklama:
msg: 'Veritabanı Adı: db_name Veritabanı Bağlantı Noktası: db_port'
İşiniz bittiğinde, basın
Ana bilgisayarın olup olmadığını kontrol etmek için vm5.düğüm.com ve vm6.düğüm.com ana bilgisayar gerçeklerine/değişkenlerine erişebilir, print_host_facts.yaml oyun kitabı şu şekilde:
$ ansible-playbook playbooks/print_host_facts.yaml
Gördüğünüz gibi, ana bilgisayarlar vm5.düğüm.com ve vm6.düğüm.com erişebilir db_name ve db_port gerçekleri/değişkenleri barındır.
Hepsini Bir Araya Getirmek: Anlaşılabilir Gerçekler Öncelik
Bu bölümde Ansible gerçeği/değişken önceliği hakkında konuşacağım. Öyleyse başlayalım.
Başlamadan önce envanter dosyasını temizleyelim.
Aç ev sahibinin Aşağıdaki komutla envanter dosyası:
$ nano ana bilgisayar
Envanter dosyasından işaretli bölümü kaldırın.
Envanter dosyanız bu noktada böyle görünmelidir.
Şimdi işaretli satırı envanter dosyanıza ekleyin. Bu satırlar global gerçekleri/değişkenleri ekler fact_scope ve Liman.
Ardından işaretli satırları envanter dosyanıza ekleyin. Bu satırlar ek fact_scope ve Liman konaklar için olgular/değişkenler veri tabanı grup.
Son olarak, ekleyin fact_scope ve Liman için gerçekleri/değişkenleri barındırın vm3.düğüm.com ve vm4.düğüm.com ana bilgisayarlar, aşağıdaki ekran görüntüsünde işaretlendiği gibi.
İşiniz bittiğinde, basın
Global, grup ve ana bilgisayar olgularının/değişkenlerinin değerini yazdırmak için yeni bir çalışma kitabı oluşturun fact_precendence.yaml içinde oyun kitapları/ dizin şu şekilde:
$ nano oyun kitapları/fact_precedence.yaml
içine aşağıdaki satırları yazın fact_precedence.yaml dosya.
- ev sahibi: hepsikullanıcı ansible
görevler:
- isim: Tüm gerçekleri yazdır
hata ayıklama:
msg: 'Gerçek Kapsamı: fact_scope Bağlantı Noktası: port'
İşiniz bittiğinde, basın
Global, grup ve ana bilgisayar olgularını/değişkenlerini yazdırmak için şunu çalıştırın: fact_precedence.yaml oyun kitabı şu şekilde:
$ ansible-playbook playbooks/fact_precedence.yaml
Gördüğünüz gibi, global, grup ve ana bilgisayar olguları/değişkenleri yazdırılır.
Grup olgularının/değişkenlerinin global olguların/değişkenlerin yerini aldığına dikkat edin (1). Ayrıca, ana olguların/değişkenlerin hem grubun hem de küresel olguların/değişkenlerin yerini aldığına dikkat edin (2).
Ansible'ın olgu/değişken önceliği aşağıdaki gibidir:
Ana bilgisayar gerçeği > Grup gerçeği > Genel gerçekSonuç:
Bu makaleyi okuduktan sonra, Ansible global, grup ve ana bilgisayar olguları/değişkenleri ile rahatça çalışabilmelisiniz. Ansible özel olgu önceliğini hatırlayın. Ansible oyun kitaplarınızda daha kolay hata ayıklamanıza yardımcı olacaktır.