Introduction to Ansible Configuration Files
1. Varsayılan Ansible Konfigürasyon Dosyası
Kurulum Sonrası Varsayılan Dosya Ansible kurulunca, genellikle
/etc/ansible/ansible.cfgkonumunda bir varsayılan konfigürasyon dosyası oluşturulur.Bölümler (Sections) Bu dosya çeşitli bölümlere sahiptir (örn:
[defaults],[inventory],[privilege_escalation],[ssh_connection], vb.).En çok ayar genellikle
[defaults]bölümünde yer alır.Örnek ayarlar:
Varsayılan envanter dosyası (inventory) konumu
Log dosyası konumu
Modül veya rol dizinleri
SSH bağlantı zaman aşımı (timeout) süresi
Ansible’ın “facts” (sistem bilgileri) toplayıp toplamayacağı
Aynı anda kaç host’u paralel işleyebileceği (forks)
Bu varsayılan dosya, herhangi bir ek ayar belirtilmezse Ansible tarafından her zaman okunur.
2. Konfigürasyon Dosyası Öncelik Sırası
Ansible, birden fazla konfigürasyon dosyası bulunursa belli bir öncelik sırasına göre ayarları okur. Yani, Ansible, ayarları (konfigürasyonları) birden fazla yerden okuyabilir. Ama aynı ayar farklı dosyalarda farklı değerlerle tanımlanırsa, en yüksek öncelikli olan kazanır. İşte öncelik sırası (en yüksek → en düşük):
Environment Variable
ANSIBLE_CONFIGadında bir değişken, konfigürasyon dosyasının tam yolunu gösterir.Örneğin,
export ANSIBLE_CONFIG=/opt/ansible-web.cfgBu şekilde ayarlanırsa, ilk olarak buradaki ayarlar kullanılır.
Mevcut Çalışma Dizini (Current Directory)
Ansible komutunu çalıştırdığın dizinde bir
ansible.cfgdosyası varsa, ikinci olarak buradaki ayarlar geçerli olur.
Kullanıcının Ev Dizini (Home Directory) İçindeki
.ansible.cfgÖrneğin,
/home/onur/.ansible.cfgdosyası.Eğer çevre değişkeni veya çalışma dizininde bir dosya yoksa, üçüncü sırada bu dosyayı kontrol eder.
Varsayılan Sistem Dosyası
/etc/ansible/ansible.cfgHiçbir üstteki konfigürasyon yoksa veya ilgili ayar oralarda belirtilmemişse, en son bu dosyanın değerleri kullanılır.
Nasıl Düşünmeliyiz?
Eğer tek bir ayarı herkesten önce zorla değiştirmek istiyorsan → Environment Variable ile
ANSIBLE_CONFIGkullan.Bulunduğun dizinde özel ayarlar istiyorsan →
ansible.cfgdosyasını oraya koy.Tüm kullanıcılar için geçerli varsayılan bir ayar yapmak istiyorsan →
/etc/ansible/ansible.cfgdosyasını düzenle.
Örnek Senaryo:
/etc/ansible/ansible.cfgiçindetimeout=10yazıyor.Kendi klasöründeki
ansible.cfgiçindetimeout=20yazarsan, senin klasöründe Ansible çalıştırıldığında 20 geçerli olur.Ayrıca
export ANSIBLE_CONFIG=/home/onur/diger_ayarlar.cfgyapıp o dosyadatimeout=30yazarsan, bu kez 30 geçerli olur.
Bu şekilde, Ansible hangi dosyanın ayarını seçeceğini belirli bir öncelik sırasına göre karar verir.
3. Konfigürasyon Dosyalarını ve Değerlerini Değiştirme Yöntemleri
Ansible Konfigürasyonunu Değiştirmek İçin Üç Ana Yol Var:
Klasöre (Dizine)
ansible.cfgDosyası KopyalamakEğer
/etc/ansible/ansible.cfgdosyası var ve bu dosyadaki ayarları biraz değiştirmek istiyorsan:Projende, örneğin
web-playbooksklasörüne geç.Orada
ansible.cfgadında yeni bir dosya oluştur (veya/etc/ansible/ansible.cfg’den kopyala).İçindeki sadece değiştirmek istediğin satırları düzenle (örn.
timeout=20).
Artık o klasörde
ansible-playbook ...komutunu çalıştırdığında, o klasördekiansible.cfgayarları geçerli olur.
Environment Variable (Değişken) Kullanmak
Eğer tek bir ayarı hızlıca değiştirmek istiyorsan,
ansible.cfgdosyasıyla uğraşmadan terminalde şu şekilde yazabilirsin:ANSIBLE_GATHERING=explicit ansible-playbook myplaybook.ymlBu komut çalışırken
ANSIBLE_GATHERINGdeğeri geçici olarakexplicitolur ve diğer tüm dosyalardakigatheringayarlarını yok sayar.Ya da önce değişkeni kalıcı yapmak istersen,
export ANSIBLE_GATHERING=explicit ansible-playbook myplaybook.ymlşeklinde iki satırda yazabilirsin. Bu sayede, o terminal oturumu boyunca (exit yapana kadar)
gatheringayarıexplicitkalır.
Sadece Birkaç Ayar Değiştirmek İstediğinde
Bazen tüm
ansible.cfgdosyasını kopyalayıp düzenlemek yerine, yalnızca 1-2 küçük ayar değiştirmen gerekebilir.Bu durumda, environment variable yöntemi çok pratiktir. Tek bir ayarı override (geçersiz kıl) etmek için:
ANSIBLE_GATHERING=explicit ansible-playbook myplaybook.ymlBöylece sistemde başka yerde hangi ayar varsa varsın, bu tek komutluk değişken her şeyin önüne geçer.
Kısa Özet
Klasöre
ansible.cfgkopyalamak: Proje/klasör bazında kalıcı ayarlar yapmak istediğinde kullanılır.Environment variable: Hızlı veya tek seferlik ayar değişikliği için idealdir.
Last updated
Was this helpful?