Kurumsal BT’de Otomasyon: Bash ve PowerShell ile Tekrarlayan İşleri Azaltmak
Kurumsal yapılarda BT ekiplerinin günlük işlerinin önemli bir bölümü aslında birbirini tekrar eden işlemlerden oluşur. Bir uygulamanın kurulması, belirli bir dosyanın bilgisayarlara dağıtılması, servislerin kontrol edilmesi, kullanıcı hesaplarının hazırlanması veya cihaz bilgilerinin toplanması gibi işlemler tek bir bilgisayarda çok fazla zaman almayabilir.
Ancak yüzlerce veya binlerce bilgisayarın bulunduğu bir yapıda aynı işlemlerin manuel olarak gerçekleştirilmesi ciddi bir iş yükü oluşturur.
Tam olarak bu noktada BT otomasyonu devreye girer.
Linux sistemlerde Bash, Windows sistemlerde ise PowerShell kullanarak günlük sistem yönetimi operasyonlarının büyük bir bölümünü otomatik hale getirmek mümkündür.
Bu yazıda kurumsal BT otomasyonunun ne olduğunu, neden önemli olduğunu ve Bash ile PowerShell kullanarak nasıl uygulanabileceğini detaylı şekilde ele alacağım.
BT Otomasyonu Nedir?
BT otomasyonu, normalde sistem yöneticileri veya teknik destek ekipleri tarafından manuel olarak gerçekleştirilen işlemlerin scriptler, merkezi yönetim sistemleri veya çeşitli yazılım araçları kullanılarak otomatik hale getirilmesidir.
Örneğin bir sistem yöneticisinin 200 bilgisayarda belirli bir dosyayı güncellemesi gerektiğini düşünelim.
Manuel yöntemde her bilgisayara bağlanmak, eski dosyayı kontrol etmek, yeni dosyayı kopyalamak ve işlemin başarılı olup olmadığını doğrulamak gerekir.
Otomasyon kullanıldığında ise bütün bu süreç tek bir script ile gerçekleştirilebilir.
Temel yaklaşım aslında oldukça basittir:
Tekrar eden bir işlem varsa, o işlem otomasyona adaydır.
Kurumsal ortamlarda otomasyona uygun işlemlerden bazıları şunlardır:
Yazılım kurulumu
Yazılım kaldırma
Dosya dağıtımı
Dosya güncelleme
Servis kontrolü
Servis yeniden başlatma
Kullanıcı oluşturma
Kullanıcı bilgisi toplama
Bilgisayar envanteri çıkarma
Log temizleme
Disk alanı kontrolü
Ağ bağlantısı kontrolü
Uygulama sürümü kontrolü
Uzak bilgisayarlarda komut çalıştırma
Buradaki amaç sadece daha hızlı işlem yapmak değildir.
Asıl amaç, standart, kontrol edilebilir ve tekrar edilebilir bir BT operasyonu oluşturmaktır.
Manuel Sistem Yönetimi Neden Ölçeklenemez?
Küçük bir işletmede 10 veya 20 bilgisayar bulunuyorsa bazı işlemler manuel olarak gerçekleştirilebilir.
Fakat cihaz sayısı büyüdükçe sistem yönetimi tamamen farklı bir noktaya gelir.
Örneğin 500 bilgisayarda yapılması gereken bir işlem olduğunu düşünelim.
Her bilgisayardaki işlem yalnızca 5 dakika sürse:
500 × 5 dakika = 2.500 dakika
Bu da yaklaşık 41 saatlik çalışma anlamına gelir.
Üstelik burada yalnızca işlem süresini hesaplıyoruz.
Bilgisayara bağlantı kurulması, bağlantı problemleri, kullanıcı beklenmesi, hata kontrolü ve raporlama gibi süreçler dahil edildiğinde gerçek süre çok daha fazla olabilir.
Otomasyon sayesinde aynı operasyon merkezi olarak gerçekleştirilebilir.
Böylece BT ekipleri zamanlarını sürekli tekrar eden operasyonlar yerine daha önemli problemlere ayırabilir.
Otomasyon İnsan Hatasını Azaltır
Manuel operasyonların başka bir problemi de insan hatasıdır.
Örneğin bir teknisyen:
Yanlış dosyayı kopyalayabilir,
Eski uygulama sürümünü kurabilir,
Yanlış klasörde işlem yapabilir,
Bazı bilgisayarları atlayabilir,
Farklı cihazlarda farklı ayarlar uygulayabilir.
Otomasyon kullanıldığında ise aynı işlem belirlenen kurallara göre bütün sistemlerde aynı şekilde uygulanabilir.
Bu nedenle otomasyon yalnızca zaman kazandırmaz.
Aynı zamanda BT operasyonlarında standardizasyon sağlar.
Linux Sistemlerde Bash ile Otomasyon
Linux tabanlı sistemlerde otomasyon için en yaygın kullanılan araçlardan biri Bash'tir.
Bash sayesinde işletim sistemi üzerinde gerçekleştirilen birçok işlem script haline getirilebilir.
Örneğin bir bilgisayarda Firefox'un kurulu olup olmadığını kontrol etmek için:
#!/bin/bash
if command -v firefox >/dev/null 2>&1
then
echo "Firefox kurulu."
else
echo "Firefox kurulu değil."
fi
Bu oldukça basit bir örnek olsa da aynı mantık kurumsal operasyonlarda çok daha kapsamlı şekilde kullanılabilir.
Örneğin script önce uygulamanın kurulu olup olmadığını kontrol eder, daha sonra kurulu değilse kurulumu başlatabilir.
#!/bin/bash
if command -v nginx >/dev/null 2>&1
then
echo "Nginx zaten kurulu."
else
echo "Nginx kuruluyor..."
apt update
apt install nginx -y
fi
Burada önemli bir nokta vardır.
Script uygulamayı doğrudan tekrar tekrar kurmaya çalışmaz.
Önce sistemin mevcut durumunu kontrol eder.
Bu yaklaşım otomasyon sistemlerinde oldukça önemlidir.
Linux Servis Kontrolü
Kurumsal ortamlarda servislerin çalışıp çalışmadığını kontrol etmek sık yapılan işlemlerden biridir.
Örneğin Nginx servisini kontrol edebiliriz.
#!/bin/bash
if systemctl is-active --quiet nginx
then
echo "Nginx servisi çalışıyor."
else
echo "Nginx servisi çalışmıyor."
systemctl restart nginx
fi
Bu script önce servisin durumunu kontrol eder.
Servis çalışıyorsa herhangi bir işlem yapmaz.
Çalışmıyorsa servisi yeniden başlatır.
Bu tür scriptler özellikle çok sayıda Linux cihazın bulunduğu ortamlarda oldukça kullanışlıdır.
Windows Sistemlerde PowerShell Otomasyonu
Windows sistem yönetimi tarafında ise PowerShell oldukça güçlü bir otomasyon aracıdır.
PowerShell yalnızca komut çalıştırmak için kullanılan bir terminal değildir.
Windows sistem bileşenlerinin büyük bölümü PowerShell üzerinden yönetilebilir.
Örneğin çalışan servisleri görüntülemek için:
Get-Service
Belirli bir servisin durumunu kontrol etmek için:
Get-Service -Name "Spooler"
Servis çalışmıyorsa otomatik olarak başlatabiliriz.
$service = Get-Service -Name "Spooler"
if ($service.Status -ne "Running") {
Start-Service -Name "Spooler"
Write-Host "Spooler servisi başlatıldı."
}
else {
Write-Host "Spooler servisi zaten çalışıyor."
}
Böylece kullanıcıdan gelen basit bir yazdırma servisi problemi için manuel müdahale ihtiyacı azaltılabilir.
Dosya Dağıtımını Otomatikleştirmek
Kurumsal BT ortamlarında en sık karşılaşılan işlemlerden biri dosya dağıtımıdır.
Örneğin belirli bir uygulamanın JAR, EXE, DLL veya konfigürasyon dosyasının bilgisayarlarda güncellenmesi gerekebilir.
Linux tarafında:
cp /tmp/application.jar /opt/application/application.jar
Windows PowerShell tarafında:
Copy-Item `
-Path "\\sunucu\paylasim\application.exe" `
-Destination "C:\Application\application.exe" `
-Force
Ancak üretim ortamında yalnızca dosyayı kopyalamak yeterli değildir.
Daha güvenli bir script şu adımları uygulamalıdır:
Dosyanın mevcut olup olmadığını kontrol etmek
Eski dosyanın sürümünü kontrol etmek
Gerekirse eski dosyayı yedeklemek
Yeni dosyayı kopyalamak
Dosyanın doğru şekilde kopyalandığını doğrulamak
İşlem sonucunu loglamak
Otomasyonun güvenilir hale gelmesini sağlayan asıl unsur bu kontrollerdir.
Log Tutmak Neden Önemlidir?
Kurumsal bir ortamda scriptin yalnızca çalışması yeterli değildir.
Ne yaptığının da bilinmesi gerekir.
Örneğin Linux tarafında:
LOG="/var/log/company-automation.log"
echo "$(date) - Güncelleme başladı." >> "$LOG"
cp /tmp/application.jar /opt/application/application.jar
if [ $? -eq 0 ]
then
echo "$(date) - Dosya başarıyla güncellendi." >> "$LOG"
else
echo "$(date) - Dosya güncellenemedi." >> "$LOG"
fi
Windows tarafında ise:
$LogFile = "C:\Logs\automation.log"
Add-Content `
-Path $LogFile `
-Value "$(Get-Date) - Güncelleme başladı."
Log mekanizması sayesinde ileride oluşabilecek problemlerde:
Script çalışmış mı?
Hangi saatte çalışmış?
Hata meydana gelmiş mi?
İşlem başarılı olmuş mu?
gibi soruların cevabı kolaylıkla bulunabilir.
Hata Kontrolü Olmadan Otomasyon Eksiktir
Hazırlanan scriptlerin yalnızca başarılı senaryoya göre tasarlanması önemli bir hatadır.
Örneğin internet üzerinden bir dosya indirdiğimizi düşünelim.
wget https://example.com/application.deb
Bu komut normal şartlarda dosyayı indirir.
Peki internet bağlantısı yoksa?
Sunucu cevap vermiyorsa?
Dosya kaldırılmışsa?
Diskte yeterli alan yoksa?
Bu nedenle otomasyon scriptlerinde hata kontrolü bulunmalıdır.
Örneğin:
if wget https://example.com/application.deb
then
echo "Dosya başarıyla indirildi."
else
echo "Dosya indirilemedi."
exit 1
fi
Script hata oluştuğunda kontrolsüz şekilde devam etmek yerine işlemi durdurur.
Kurumsal otomasyonda bu yaklaşım büyük önem taşır.
Idempotent Script Nedir?
Otomasyon dünyasında önemli kavramlardan biri idempotency kavramıdır.
Basit şekilde ifade etmek gerekirse:
Bir script aynı bilgisayarda birden fazla defa çalıştırıldığında sistemi bozmamalıdır.
Örneğin bir klasör oluşturmak istiyoruz.
Şöyle yazabiliriz:
mkdir /opt/company
Ancak klasör zaten mevcutsa hata oluşabilir.
Daha güvenli kullanım:
mkdir -p /opt/company
Bu komut klasör mevcut olsa bile problem oluşturmaz.
Benzer şekilde bir uygulama kurulacaksa script önce uygulamanın mevcut olup olmadığını kontrol etmelidir.
Bu yaklaşım özellikle merkezi yönetim sistemlerinden script dağıtılırken oldukça önemlidir.
Çünkü aynı script yanlışlıkla ikinci kez çalıştırılabilir.
Envanter Toplama da Otomatikleştirilebilir
Otomasyon yalnızca sistem üzerinde değişiklik yapmak için kullanılmaz.
Bilgi toplamak için de kullanılabilir.
Örneğin bir cihazdan şu bilgiler otomatik olarak alınabilir:
Bilgisayar adı
Kullanıcı adı
IP adresi
MAC adresi
İşletim sistemi
RAM
CPU
Disk bilgisi
Seri numarası
Kurulu uygulamalar
Linux üzerinde seri numarası:
dmidecode -s system-serial-number
Bilgisayar adı:
hostname
IP adresi:
hostname -I
Windows PowerShell üzerinde bilgisayar seri numarası:
Get-CimInstance Win32_BIOS |
Select-Object SerialNumber
Bilgisayar bilgileri:
Get-ComputerInfo
Bu bilgiler daha sonra merkezi bir sunucuya gönderilebilir.
Script + API + Veritabanı
BT otomasyonunun daha gelişmiş hali scriptlerin merkezi bir sisteme bağlanmasıdır.
Örneğin yapı şu şekilde olabilir:
Bilgisayar
↓
Bash / PowerShell
↓
REST API
↓
Backend
↓
Veritabanı
↓
Web Yönetim Paneli
Bilgisayardaki script cihaz bilgilerini toplar.
Ardından bu bilgiler REST API üzerinden merkezi sunucuya gönderilir.
Sunucu tarafında:
Python
PHP
Node.js
Java
gibi teknolojiler kullanılabilir.
Veriler ise:
MySQL
PostgreSQL
MongoDB
gibi veritabanlarında tutulabilir.
Bu yapıyla zaman içerisinde tamamen kuruma özel bir BT yönetim sistemi oluşturmak mümkündür.
Merkezi Yönetim Sistemleriyle Birleştirmek
Bash ve PowerShell scriptlerinin gerçek gücü merkezi cihaz yönetim sistemleriyle birlikte kullanıldığında ortaya çıkar.
Bir endpoint management sistemi üzerinden:
500 bilgisayara script göndermek,
Yazılım yüklemek,
Yazılım kaldırmak,
Servis kontrol etmek,
Dosya dağıtmak,
Sistem bilgisi toplamak,
mümkün hale gelir.
Bu durumda sistem yöneticisinin her bilgisayara ayrı ayrı bağlanması gerekmez.
Script merkezi panelden gönderilir ve cihazlarda otomatik olarak çalıştırılır.
Üretim Ortamında Otomasyon Nasıl Uygulanmalı?
Hazırlanan bir script doğrudan yüzlerce bilgisayara gönderilmemelidir.
Daha güvenli yaklaşım aşamalı dağıtımdır.
Örneğin:
1. Geliştirme ortamı
Script ilk olarak geliştiricinin test bilgisayarında çalıştırılır.
2. Test cihazları
Gerçek sisteme benzeyen birkaç cihaz üzerinde test edilir.
3. Pilot kullanıcı grubu
5-10 bilgisayarda çalıştırılarak gerçek kullanıcı senaryosu gözlemlenir.
4. Kademeli dağıtım
Örneğin önce 50, ardından 100 cihazda çalıştırılır.
5. Genel dağıtım
Sorun görülmüyorsa bütün sisteme uygulanır.
Bu yöntem olası bir hatanın yüzlerce bilgisayarı aynı anda etkilemesini önler.
Otomasyon Her Şeyi Çözmez
Otomasyon güçlü bir araçtır fakat kontrolsüz otomasyon ciddi problemlere neden olabilir.
Yanlış hazırlanmış bir script aynı hatayı birkaç saniye içerisinde yüzlerce bilgisayara uygulayabilir.
Özellikle aşağıdaki komutların kullanıldığı scriptlerde ekstra dikkat gerekir:
rm -rf
veya:
Remove-Item -Recurse -Force
Dosya silme, kullanıcı silme, servis kapatma veya sistem ayarı değiştirme işlemlerinde mutlaka doğrulama mekanizmaları kullanılmalıdır.
Bu nedenle kurumsal otomasyonun temel prensibi şu olmalıdır:
Önce kontrol et, sonra işlem yap ve sonucu mutlaka kaydet.
Sonuç
Modern BT altyapılarında yalnızca problemi çözmek yeterli değildir.
Önemli olan aynı problemin tekrar ortaya çıktığında tekrar manuel müdahale gerektirmemesidir.
Bu nedenle otomasyon günümüzde sistem yöneticiliğinin önemli parçalarından biri haline gelmiştir.
Linux sistemlerde Bash, Windows sistemlerde PowerShell kullanılarak günlük operasyonların önemli bir bölümü otomatik hale getirilebilir.
Doğru tasarlanmış bir otomasyon sistemi:
BT ekiplerinin iş yükünü azaltır,
Operasyon sürelerini kısaltır,
İnsan hatasını azaltır,
Standart sistem yönetimi sağlar,
Müdahale süresini düşürür,
Merkezi yönetimi kolaylaştırır,
Büyük cihaz parklarının yönetimini daha sürdürülebilir hale getirir.
Özellikle sistem yönetimi ile yazılım geliştirme becerilerinin birleştiği noktada otomasyon çok daha güçlü hale gelir.
Bir sistem yöneticisinin yalnızca sistemi yönetmesi değil, gerektiğinde o sistemi yönetecek araçları ve scriptleri geliştirebilmesi günümüz BT dünyasında önemli bir avantajdır.
Ve çoğu zaman iyi bir otomasyon fikri oldukça basit bir soruyla başlar:
“Ben bu işlemi sürekli yapıyorsam, bunu neden bilgisayar benim yerime yapmasın?”