Ansible ping modülü, Ansible kontrol düğümü (oynatma kitaplarının ve komutların yürütüldüğü yer) ile yönetilen düğümler (yönetmek istediğiniz uzak sistemler) arasındaki bağlantıyı test etmek için kullanılır.
Bu Ansible modülü, Ansible’ın ana bilgisayarlarınızla iletişim kurabildiğini doğrulamanıza yardımcı olur, böylece erişilebilir olmalarını ve daha fazla otomasyon görevi için hazır olmalarını sağlar.
📋
ICMP pingi gerçekleştirmez, bunun yerine Ansible Python API’si aracılığıyla bağlantıyı kontrol eder.
Bu rehberde, ping modülünün ne olduğunu ve pratik örneklerle oyun kitaplarında nasıl kullanılacağını inceleyeceksiniz.
Ön koşullar
Bu eğitime devam etmek için aşağıdakilere ihtiyacınız olacak:
- Ansible’ın kurulu ve yapılandırılmış olduğu bir Ansible yönetim düğümü.
- Yönetim düğümü ile hedef düğümler arasında SSH anahtar tabanlı kimlik doğrulaması.
Ansible ping komut sözdizimi
Ansible’da ping komutunun kullanımı için temel sözdizimi şöyledir:
ansible <TARGET> -m ping [OPTIONS]
İşte bileşenlerin dökümü:
ansible: Ansible çalıştırılabilir komutu.<TARGET>: Bu, tek bir ana bilgisayar adı, envanter dosyanızda tanımlanmış bir ana bilgisayar grubu veya joker karakterler veya envanter desenleri kullanan bir kombinasyon olabilir.-m ping: Bu görev için kullanılacak ping modülünü belirtir.[OPTIONS]: Örneklerde inceleyeceğimiz ping davranışını özelleştirmek için isteğe bağlı argümanlar.-k: Kimlik doğrulama için kullanılacak SSH özel anahtar dosyasını belirtin.--become: Ping işlemi için uzak ana bilgisayarda ayrıcalıkları farklı bir kullanıcıya yükseltin.-v: Daha ayrıntılı çıktılar için ayrıntı düzeyini artırın.
Örnek 1: Tek bir ana bilgisayara ping atma
İstediğiniz hostname ile Ansible komutunu ve ping modülünü belirtmek için -m seçeneğini kullanabilirsiniz.
ansible host1 -m ping
Bu komut, host1 ile bir SSH bağlantısı kurmaya çalışır ve kullanılabilir bir Python yorumlayıcısının varlığını doğrular. Başarılı olursa, şu çıktıyı verir:

Örnek 2: Bir grup ana bilgisayara ping atma
Envanter dosyanızda birden fazla sunucu ana bilgisayar adı içeren webservers adlı bir grup tanımladığınızı varsayalım. Bu durumda, envanter dosyasında tanımlanan tüm ana bilgisayarlara ping atmak için aşağıdaki komutu çalıştırabilirsiniz.
ansible webservers -m ping
Bu komut, web sunucuları grubundaki her sunucuya tek tek ping atmayı deneyecektir. Çıktıda, her sunucunun erişilebilirlik durumu görüntülenecektir.

Yukarıdaki komutun açıklaması şöyledir:
ansible: Ansible’ın ana komutu.webservers: Envanter dosyanızda ping atmak istediğiniz ana bilgisayarları içeren grubun adı.-m ping: Ansible’a ping modülünü kullanmasını söyler.
Ping sonuçlarına dayalı koşullu oynatma
Ping modülünün sonuçlarına göre koşullu olarak bir dizi görevi yürütmek için, Ansible’ın bloğunun ve when yapılarının bir kombinasyonunu kullanabilirsiniz.
Bu örnek, belirli ana bilgisayarlara ping atmanın başarılı olup olmadığına bağlı olarak bir playbookdakii görevlerin koşullu olarak nasıl çalıştırılacağını gösterir.
---
- hosts: webservers
tasks:
- name: Ping web servers
ping:
register: ping_result
- name: Install Nginx only on reachable servers
apt:
name: nginx
state: present
when:
- ping_result is not failed
- ping_result.ping == 'pong'
Yukarıdaki oynatma kitabı, Nginx’i kurmak için uygun görevin yalnızca ping’e yanıt veren sunucularda çalışmasını sağladığında koşulunu kullanır. Bu, erişilemeyen ana bilgisayarlarda gereksiz girişimleri önler.

Bağlantı sorunlarını ve yeniden denemeleri işleme
Ansible’daki ping modülüyle bağlantı sorunlarını ve yeniden denemeleri ele almak için, playbookdaki yeniden deneme, gecikme ve bitene kadar parametrelerinin bir kombinasyonunu kullanabilirsiniz. Bu yaklaşım, bir ana bilgisayar yanıt verene kadar her deneme arasında bir gecikmeyle birden çok ping denemenize olanak tanır.
Bunu Ansible playbookda nasıl ayarlayacağınız aşağıda açıklanmıştır:
- hosts: database_servers
vars:
ping_failed: []
tasks:
- name: Ping database server with retries
ping:
register: ping_result
until: ping_result is succeeded
retries: 3
delay: 5 # Wait 5 seconds between retries
ignore_errors: yes # Ensure the task does not fail the play on the first failure
- name: Collect ping results
set_fact:
ping_failed: "{{ ping_failed + [inventory_hostname] }}"
when: ping_result is failed
- name: Fail the playbook if any ping fails after retries
fail:
msg: "Failed to reach the following database servers after retries: {{ ping_failed }}"
when: ping_failed | length > 0
Bu örnek, database_servers grubundaki her sunucu için ping’i üç kez yeniden dener. Pinglerden hiçbiri başarılı olmazsa, playbook bilgilendirici bir mesajla başarısız olur.

Ulaşılabilir sunucularda bilgi toplama
Ping modülü, ana bilgisayar bağlantısını kontrol etmek ve ulaşılabilir ana bilgisayarlardan değerleri toplamak için bilgi toplama ile birlikte kullanılabilir.:
---
- hosts: all
gather_facts: yes # Gather facts from all hosts
tasks:
- name: Collect facts from reachable hosts
ping:
register: ping_result # Register the result of the ping task
- name: Display OS information of reachable hosts
debug:
msg: "OS Name: {{ ansible_os_family }} {{ ansible_distribution }}"
when: ping_result.ping == "pong" # Only display facts for reachable hosts
Bu playbook tüm ana bilgisayarlardan değerleritoplar ve ardından işletim sistemi bilgilerini (aile ve dağıtım) yalnızca ping’e yanıt verenler için görüntüler.

Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.