Ansible'da Etiketler Nasıl Kullanılır?

Ansible Da Etiketler Nasil Kullanilir



Oyunlar, roller ve görevler yanıtlayıcı yapıdır ve bu yanıtlayıcı yapı, Ansible'da etiketler olarak adlandırılan önemli niteliği içerir. Ansible'da bir başucu kitabı başlattığımızda, yalnızca belirli bir dizi görevi, oyunu ve rolü yürütebilmemiz için -tags ve –skip tags komutlarını kullanabilirsiniz. Bu kadar çok görev içeren bir başucu kitabımız varsa ancak başucu kitabının tüm görevlerini yürütmek istemiyorsak, tüm başucu kitabını yürütmek yerine, Ansible başucu kitabındaki tag komutunu kullanarak sadece birkaç görevi çalıştıracağız.

Ansible'ın en önemli özelliklerinden biri olan etiketleri bu başlık altında ele alacağız. Ansible platformunun kafa karıştırıcı bir özelliği olduğundan, etiketlerin ne olduğunu ve Ansible'da nasıl çalıştığını açıklamaya çalışacağız.







Örneğin, bir çalışma kitabı üç sorumluluk içerebilir: modülü kurmak, yapılandırmak ve dağıtılan modülün durumunu, örneğin hizmetin çalışıp çalışmadığını ve erişilebilir olup olmadığını kontrol etmek. Birkaç uzak makinedeki modüllerin durumunu görmemiz gerektiğinden, bu durumda oyun kitabındaki tüm görevleri yürütmek yerine Ansible etiketlerini kullanırız. Belirli bir işlemi özel olarak yürütmemizi sağlar ve ilgili tüm etkinlikleri tek bir başucu kitabında tutarak çalışma süresini azaltmamıza olanak tanır.



Ansible Playbook'ta Etiketleri Kullanmanın Ön Koşulları

Pratik örnekleri cevaplayıcı yazılıma koymak için aşağıdaki gereklilikleri yerine getirmeliyiz.



Değişiklik yapabilmesi için bir Ansible kontrol sunucusuna ihtiyaç duyulmalıdır. Ansible yazılımında etiket parametresini kullanmak için yerel ana bilgisayarların onlarla iletişim kurmasına ihtiyacımız var. Bu durumda, yürütme boyunca yerel ana bilgisayarı hedef uzak sunucu olarak kullanıyoruz. Oyun kitapları oluşturacağız, Ansible etiketi komutlarını yürüteceğiz ve ansible-denetleyici cihazdan uzaktaki ana bilgisayarlardaki sonuçları izleyeceğiz.





Öğrencinin bir Ansible başucu kitabındaki etiketler kavramını kolayca anlayabilmesi için birkaç Ansible etiketini incelemek üzere farklı senaryolar kullanmayı amaçlayacağız.

Örnek 01: Ansible Playbook'ta Tek Bir Göreve Erişme

Playbook'ta birden fazla görev sağlayarak Ansible'da uygulayacağız ve ardından içindeki etiketleri kullanarak yalnızca tek bir göreve erişeceğiz. Bunu yapmak için, önce aşağıdaki komutu yazarak oyun kitabını oluşturacağız:



[root@master ansible]# nano ansible_tags.yml

ansible_tags.yml başucu kitabını oluşturup başlattıktan sonra. Şimdi oyun kitabındaki komutları yazmaya başlayacağız. Öncelikle “localhost” kullanacağımız “hosts” parametresinde verilen hostları geçireceğiz. Daha sonra playbook'u çalıştırdığımızda localhost ile ilgili fazladan bilgi almamamız için 'gather_facts' parametresine 'false' değerini yazacağız.

Ardından “tasks” parametresi altında yürütmek istediğimiz aktiviteleri tek tek listelemeye başlayacağız. İlk işlemde localhost makinede belgenin var olup olmadığını belirleyeceğiz. Varsa “register” parametresinde saklayacağız ve ardından etikete benzersiz bir isim vereceğiz, böylece oyun kitabını çalıştırdığımızda etikete erişmemiz kolaylaşacak. İkinci görevde, ilk görevde yaptığımızın aynısını yapacağız, ancak etiket benzersiz olmalı ve ardından görevi ilgili mesajla birlikte göstermek için debug seçeneğini kullanacağız.

- ana bilgisayarlar:

- yerel ana bilgisayar
toplama_gerçekleri: yanlış


görevler:
- ad: x` dosyasının varlığını kontrol edin
istatistik: yol=./host.yml
kayıt ol: fileExists
Etiketler: check_file


- hata ayıklama:
msg: '{{ 'Dosya var', eğer fileExists.stat.exists yoksa 'Dosya bulunamadı' }}'
Etiketler: check_file


- name: Mevcut kullanıcı tarafından host.yml'ye erişilip erişilmediğini kontrol edin
kabuk: stat -c '%a' ./host.yml
kayıt: erişimPath
Etiketler: check_access


- hata ayıklama:
msg: '{{ 'Dosya erişilebilir' if (accessPath.stdout|int) < 660 else 'Dosya erişilebilir değil' }}'
Etiketler: check_access

Şimdi oyun kitabını kaydedip kapatacağız. ansible_tags.yml çalışma kitabını çalıştırmak istiyoruz, böylece çıktıyı kullanıcılara göstermek için Ansible terminaline aşağıdaki komutu yazacağız.

[root@master ansible]# ansible-playbook ansible_tags.yml –tags check_file

Yukarıdaki komutu çalıştırdıktan sonra karşılığında istediğimiz çıktıyı alacağız. Aşağıda gösterildiği gibi, yalnızca bir görev yürütülür ve bu, 'dosya varlığını kontrol et' çıktısında görüntülenir.

Örnek 02: Ansible Playbook'ta Belirli Bir Etiketi Yoksay

İşte “skip” etiketine gideceğimiz Ansible etiketinin ikinci örneği. Ansible'da oyun kitabının tüm görevlerini mi yoksa belirli bir görevini mi yoksaymak istediğiniz size kalmış. Örnek 1 uygulamasını kullanıyoruz ve ardından aşağıdaki ifadeyi Ansible terminaline yazarak görevi atlayacağız.

[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_file

Yukarıdaki komuttan, 'dosya varlığını kontrol et' görevini basitçe yok saydık. Artık yeşil yazı tipinde 'dosya erişilebilir' olan çıktıda yalnızca tek bir görev görüntülenir.

Örnek 03: Ansible Playbook'ta Görevi Her Zaman Çalıştırmaya Devam Edin

Üçüncü örneği Ansible etiketine göre uygulayacağız. Bu örnekte, belirli bir etiketin her zaman Ansible Playbook'ta yürütüleceği anlamına gelen 'always' etiketini kullanacağız. Başucu kitabını başlatmak için aşağıdaki komutu kullanın:

[root@master ansible]# nano ansible_tags.yml

Başucu kitabında, çalıştırılacak birden çok görev oluşturduk ancak son görev olan 'envanterden parolayı sil' olan 'always' etiketini geçtik. Aşağıdakiler oyun kitabında uygulanan komutlardır:

- ana bilgisayarlar: hepsi

toplama_gerçekleri: yanlış


görevler:
- ad: Dosya varlığını kontrol edin
istatistik: yol=./host.yml
kayıt ol: fileExists
delege_to: yerel ana bilgisayar
Etiketler: check_file


- hata ayıklama:
msg: '{{ 'Dosya var', eğer fileExists.stat.exists yoksa 'Dosya bulunamadı' }}'
Etiketler: check_file


- name: Mevcut kullanıcı tarafından host.yml'ye erişilip erişilmediğini kontrol edin
kabuk: stat -c '%a' ./host.yml
kayıt: erişimPath
delege_to: yerel ana bilgisayar
Etiketler: check_access


- hata ayıklama:
msg: '{{ 'Dosya erişilebilir' if (accessPath.stdout|int) < 660 else 'Dosya erişilebilir değil' }}'
Etiketler: check_access


- isim: Şifreyi envanterden sil
satır dosyası:
yol: '{{inventory_file}}'
normal ifade: '\b{{öğe}}.*\b'
durum: yok
delege_to: yerel ana bilgisayar
olmak: yanlış
Etiketler: her zaman
with_items:
- ansible_password

Bundan sonra, denetleyici ile hedef uzak ana bilgisayar arasındaki bağlantıyı oluşturmak için envanter dosyasını oluşturacağız. Komut aşağıdadır:

[root@master ansible]# nano host.yml

İşte Ansible'daki “Linux_host” ile ilgili bilgileri içeren envanter dosyası.

Tüm:

ev sahipleri:
Linux_Host:
ansible_host: 192.168.3.229
ansible_user: yanıtlanabilir
ansible_password: ******
ansible_connection: ssh
ansible_port: 22

İstenen çıktıyı elde etmek için Ansible terminalinde aşağıdaki komutu çalıştıracağız:

[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml

Çözüm

Ansible'daki etiketler bu makalede açıklanmıştır. Artık etiketlerin işlevini ve Ansible'da onları uygulayacağımız yerleri anlıyoruz. Öğrencinin Ansible etiketleri kavramını anlamasına yardımcı olmak için çeşitli örnekler geliştirdik.