İşte Ansible’daki etiketler tam da bu noktada devreye giriyor. Etiketler, bir playbookda belirli görevleri çalıştırmanıza veya atlamanıza olanak tanıyarak otomasyonunuzu daha esnek ve verimli hale getiriyor.
Bu kılavuzda, Ansible Playbook’larda etiketlerin nasıl kullanılacağını ve gerçek dünya örnekleriyle bunların faydalarını inceleyeceğiz.
Ansible’da Etiketler Nelerdir?
Ansible’daki etiketler, bir playbookdaki belirli görevlerin yürütülmesi veya hariç tutulması için bir yol sağlar. Düzinelerce veya yüzlerce görev içeren karmaşık playbooklarla uğraşırken, küçük bir değişiklik için tüm playbooku yeniden çalıştırmak verimli değildir. Etiketler, playbookun yalnızca ilgili kısımlarına odaklanmanızı sağlar.
Etiketler özellikle şu durumlarda faydalıdır:
- Büyük playbooklarda belirli görevleri yeniden çalıştırmanız gerekir.
- Tüm playbooku çalıştırmadan belirli görevleri seçici olarak yürütmek istersiniz.
- Daha fazla kontrol için büyük playbookları mantıksal bölümlere ayırmak istersiniz.
Ansible Etiketlerinin Temel Sözdizimi
Etiketler, görev tanımındaki “tags” anahtar sözcüğü kullanılarak bir göreve eklenir. İşte bir göreve nasıl etiket ekleneceğini gösteren basit bir örnek:
- name: Install Apache
apt:
name: apache2
state: present
tags:
- webserver
Bu örnekte görev, apt modülünü kullanarak Apache web sunucusunu kurar ve webserver etiketiyle işaretlenir.
Belirli Etiketlerle Oyun Kitapları Nasıl Çalıştırılır
Görevlerinize etiketler ekledikten sonra, playbooku belirli etiketlerle çalıştırmak kolaydır. Playbooku çalıştırırken –tags işaretini ve ardından etiket adını kullanın.
ansible-playbook playbook.yml --tags "webserver"
Çıktı.
PLAY [Run specific tasks] ****************************************************************
TASK [Install Apache] ********************************************************************
changed: [localhost]
PLAY RECAP ******************************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Bu örnekte yalnızca webserver etiketiyle işaretlenen görevler çalıştırılacaktır.
Ayrıca birden fazla etiket belirterek birden fazla görevi çalıştırabilirsiniz:
ansible-playbook playbook.yml --tags "webserver,database"
Çıktı.
PLAY [Run multiple tagged tasks] *********************************************************
TASK [Install Apache] ********************************************************************
changed: [localhost]
TASK [Install MySQL] *********************************************************************
changed: [localhost]
PLAY RECAP ******************************************************************************
localhost : ok=2 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Bu örnekte, web sunucusu ve veritabanı etiketli her iki görev de yürütülür.
Etiketleri Hariç Tutma
Bazen playbooku çalıştırırken belirli görevleri atlamak isteyebilirsiniz. Bu, –skip-tags seçeneği kullanılarak yapılabilir.
ansible-playbook playbook.yml --skip-tags "database"
Çıktı.
PLAY [Run tasks except those tagged with 'database'] *************************************
TASK [Install Apache] ********************************************************************
changed: [localhost]
TASK [Install MySQL] *********************************************************************
skipping: [localhost]
PLAY RECAP ******************************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
Burada MySQL Kurulum görevi (veritabanı etiketli) atlanırken, diğer görevler her zamanki gibi yürütülür.
Ansible Playbook’ta Listeleme Etiketleri
Bir oyun kitabını çalıştırmadan önce hangi etiketlerin mevcut olduğunu bilmek isteyebilirsiniz. Bir playbooktaki tüm etiketleri –list-tags bayrağını kullanarak listeleyebilirsiniz.
Bu komut, playbookta kullanılan tüm etiketleri görüntüleyerek hangilerinin çalıştırılacağına veya atlanacağına karar vermenize olanak tanır.
ansible-playbook playbook.yml --list-tags
Çıktı.
playbook: playbook.yml
play #1 (all): Example Playbook TAGS:
TASK TAGS: [database, webserver, critical, security]
Bu çıktı, oyun kitabında bulunan tüm etiketleri (veritabanı, web sunucusu, kritik, güvenlik) listeler; böylece sonraki yürütmelerde hangilerinin çalıştırılacağını veya atlanacağını seçebilirsiniz.
Her Zaman ve Asla Etiketleri
Ansible’da, belirli görevlerin her zaman mı yoksa asla mı yürütüleceğini kontrol eden iki özel etiket vardır: always ve `never.
1. always Etiketi
Always etiketiyle işaretlenen görevler, playbookun yürütülmesi sırasında hangi etiketlerin belirtildiğine bakılmaksızın çalışır. Bu, bilgi toplamak veya belirli ön koşulların karşılandığından emin olmak gibi kritik görevler için kullanışlıdır.
- name: Ensure prerequisites are installed
apt:
name: git
state: present
tags:
- always
Playbook çalıştırılırken belirli etiketler sağlanmasa bile, always etiketine sahip görevler yine de yürütülecektir.
ansible-playbook playbook.yml --tags "webserver"
Burada, yalnızca web sunucusu etiketi belirtilmiş olmasına rağmen, her zaman etiketi olan görev (Ön koşulların yüklendiğinden emin olun) yürütülür.
2. never Etiketi
“Never” etiketiyle işaretlenen görevlerin çalıştırılması açıkça engellenir. Bu etiket, belirli görevleri silmeden veya yorum satırına eklemeden geçici olarak devre dışı bırakmak istiyorsanız faydalı olabilir.
- name: Remove temporary files
file:
path: /tmp/testfile
state: absent
tags:
- never
Never etiketini açıkça belirtseniz bile görev yürütülmeyecektir.
ansible-playbook playbook.yml --tags "never"
Bu durumda görev atlanmıştır çünkü “asla” etiketine sahiptir.
Yazının orijinalini buradan okuyabilirsiniz