Commands with shell scripts
1) Ad-Hoc Komut Nedir?
Ad-hoc komut: Ansible modüllerini tek satırda çağırmanızı sağlayan hızlı bir yol. Playbook yazmaya gerek kalmadan, örneğin “tüm sunucuları ping’le” veya “/etc/hosts dosyasını göster” gibi basit işler için kullanılır.
Komut satırından (CLI) şu şekilde çalıştırırsınız:
ansible -m ping all ansible -a 'cat /etc/hosts' all
İlki ping modülüyle SSH bağlantısını test eder, ikincisi tüm makinelerde /etc/hosts dosyasını görüntüler.
2) Neden Shell Script Oluşturuyoruz?
Bazen, ad-hoc komutları art arda çalıştırmak veya belirli ortam değişkenlerini (env vars) otomatik ayarlamak isteyebilirsiniz. Elbette her seferinde elle yazmak mümkün, ancak daha verimli bir yol:
Tekrar eden birkaç ad-hoc komutu sıralı şekilde çalıştırmak istiyorsunuz.
Konfigürasyon değişkenlerini (ör.
ANSIBLE_GATHERING
,ANSIBLE_CONFIG
) her seferinde elle girmek istemiyorsunuz.Takım arkadaşlarınız aynı komutları çalıştıracaksa, onlara tek bir script verip, tek komutla tüm işlemleri yaptırabilirsiniz.
3) Örnek Shell Script
Diyelim ki:
Ortam değişkeni
ANSIBLE_GATHERING
’iexplicit
yapacaksınız (fact toplama davranışı).Ardından tüm host’lara ping atmak,
/etc/hosts
dosyasını göstermek,Son olarak küçük bir playbook çalıştırmak istiyorsunuz.
Script’inizde (my_script.sh
) şöyle olabilir:
#!/bin/bash
# 1) Ortam değişkenini ayarla
export ANSIBLE_GATHERING=explicit
# 2) Ping modülünü kullanarak tüm sunucuları test et
ansible -m ping all
# 3) /etc/hosts içeriğini görüntüle
ansible -a "cat /etc/hosts" all
# 4) Bir playbook'u çalıştır
ansible-playbook deploy.yml
Not: #!/bin/bash
, bu dosyanın bir “bash” script’i olduğunu belirten “shebang” satırıdır.
4) Script’i Nasıl Çalıştırırım?
Yöntem 1: sh
ile
sh
ilesh my_script.sh
Yöntem 2: Doğrudan Yürütülebilir (Executable) Hale Getirme
Dosyayı yürütülebilir yapın:
chmod 755 my_script.sh
Ardından çağırın:
./my_script.sh
5) Özet Akış
Ad-hoc komutunuzu normalde tek satırda çalıştıracağınız kod olarak düşünün.
Bunları art arda sıralamak istiyorsanız veya ortam değişkenleri ayarlamak istiyorsanız, bir shell script yazmanız faydalı olur.
Bu script’i başka projelerde veya ekip arkadaşlarınızla paylaşarak standart bir işlem akışı oluşturabilirsiniz.
Last updated
Was this helpful?