Adhoc Commands
Ad-hoc komutlar, Ansible ile tek seferlik veya hızlı doğrulama, test ya da bilgi toplama işlemleri yapmak istediğinizde kullanabileceğiniz kısa ve pratik komutlardır. Playbook’lar yerine doğrudan komut satırından (CLI) bir modül çağırarak veya rasgele bir komut (-a
) çalıştırarak hedef sistemlerde işlem yapabilirsiniz.
1) Ad-Hoc Komut Nedir, Neden Kullanılır?
Playbook’lar: Daha uzun vadeli, tekrar kullanılabilir, sürüm kontrolüne uygun otomasyon senaryoları için idealdir.
Ad-Hoc Komutlar: Hızlı testler, tek seferlik işlemler, basit doğrulamalar veya “acil” müdahaleler için mükemmeldir.
Örneğin “Bütün sunuculara ping at, yanıt geliyor mu?”
“Tüm makinelerdeki
/etc/hosts
dosyasını hızlıca göreyim.”“Tek bir satırla disk kullanımını kontrol edeyim.”
Kısacası, Playbook yazmaya gerek kalmadan anında komut gönderip sonucu görebilirsiniz.
2) Temel Kullanım
(A) Basit Ping Testi
-m ping
: “ping” modülünü (Ansible’ın dahili modülünü) kullan.all
: Envanter dosyasında tanımlı tüm host’lara git.Amaç: SSH bağlantısı ve kimlik doğrulaması doğru mu, host’lar erişilebilir mi test etmek.
Çıktı başarılıysa şöyle görürsünüz:
Not: Bu ping, “ICMP” yerine Ansible modülünün SSH üzerinden gönderdiği “pong” cevabıdır.
(B) Arbitrary (Rasgele) Komut Çalıştırma
Mesela tüm host’larda /etc/hosts
dosyasını görüntülemek:
-a
: Bir metin komutunu direkt parametre olarak ver.all
: Yine tüm hostlar.Modül belirtmezseniz varsayılan “command” modülü devreye girer.
Örnek Çıktı:
Böylece aynı anda pek çok makinede basit komutları yürütebilirsiniz.
3) Sudo (Become) Kullanımı
Ad-hoc komutlarda da sudo (become) kullanabilirsiniz. Mesela paket kurulumu, servis restart gibi yönetici ayrıcalıkları gerektiren işlemleri tek satırla yapmak:
-m apt
: apt modülünü kullanarak paket yönetimi yap.-a "..."
: Bu modüle verilmesi gereken argümanlar.--become
: Bu işlemi root (sudo) haklarıyla yap.--ask-become-pass
: Sudo parolanızı interaktif olarak gireceksiniz.
4) Ad-Hoc Komutları Shell Script İçine Yazma
Tek tek komutları elle girmek yerine, sıralı birkaç ad-hoc komutunuzu bir shell scripti haline getirebilirsiniz. Örnek check_servers.sh
:
Dosyanızın başına
#!/bin/bash
ekleyin (shebang).Scripti çalıştırılabilir hale getirin:
Artık tek komutla tüm işlemler:
Bu yaklaşım özellikle:
Çevresel değişkenler (ENV vars) ayarlayarak,
Sıralı birkaç ad-hoc komutu bir defada çalıştırarak,
Kısa bir otomasyon iskeleti yaratmanıza olanak tanır.
5) Ad-Hoc Komut vs. Playbook
Ad-Hoc Komut:
Hızlı test, küçük bir komut.
Unutmamak istiyorsanız script’e koyabilirsiniz, ancak yine de uzun vadede yönetimi zordur.
Playbook (YAML):
Daha kalıcı, düzenlenebilir ve denetlenebilir.
Geniş ölçekli otomasyon, tekrar kullanım, sürüm kontrolü için tavsiye edilir.
Pratikte:
Bir şeyi hızlıca denemek için ad-hoc (örneğin “tüm makinelerde bir dosyayı sil”).
Sık tekrar edeceğiniz veya karmaşık işlemleri playbook’a dönüştürmek genellikle en iyi yöntem.
6) Özet
Ad-hoc komutlar, Ansible modüllerini “tek satırlık” biçimde çağırarak çok sayıda sunucuda eş zamanlı işlemler yapmanıza olanak tanır.
Basit testler (ping), dosya görüntüleme veya paket yönetimi gibi işlerde fazlasıyla kullanışlıdır.
Sudo ve diğer Ansible özellikleri (ör. vars, tags vs.) de ad-hoc komutlarla kısmen kullanılabilir.
Shell script’lerle birkaç komutu arka arkaya çalıştırmak isterseniz, ad-hoc komutlarınızı script’e yazabilirsiniz.
Playbook hâlâ uzun vadede daha organize ve sürdürülebilir bir yaklaşım sunar, fakat ad-hoc komutlar “hemen şimdi” bir şey yapmak için idealdir.
Last updated
Was this helpful?