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

ansible -m ping all
  • -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:

web1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
web2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

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:

ansible -a "cat /etc/hosts" all
  • -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ı:

web1 | CHANGED | rc=0 >>
127.0.0.1    localhost
...

web2 | CHANGED | rc=0 >>
127.0.0.1    localhost
...

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:

ansible -m apt -a "name=nginx state=present update_cache=yes" all --become --ask-become-pass
  • -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:

#!/bin/bash

echo "=== Pinging all servers ==="
ansible -m ping all

echo "=== Checking /etc/hosts on all servers ==="
ansible -a "cat /etc/hosts" all
  1. Dosyanızın başına #!/bin/bash ekleyin (shebang).

  2. Scripti çalıştırılabilir hale getirin:

    chmod +x check_servers.sh
  3. Artık tek komutla tüm işlemler:

    ./check_servers.sh

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

  1. 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.

  2. Basit testler (ping), dosya görüntüleme veya paket yönetimi gibi işlerde fazlasıyla kullanışlıdır.

  3. Sudo ve diğer Ansible özellikleri (ör. vars, tags vs.) de ad-hoc komutlarla kısmen kullanılabilir.

  4. Shell script’lerle birkaç komutu arka arkaya çalıştırmak isterseniz, ad-hoc komutlarınızı script’e yazabilirsiniz.

  5. 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?