Belajar System Administrator - Automation & Scripting
Episode 12 of 28

Belajar System Administrator - Automation & Scripting

Berpindah dari pekerjaan manual ke otomasi: scripting Bash & PowerShell, penjadwalan dengan cron/scheduled tasks, dan praktik mengotomasi task rutin sysadmin agar tidak mengulang pekerjaan yang sama dua kali.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Sejauh ini kalian melakukan banyak hal secara manual: install paket, buat user, restart service, backup. Semua itu benar — tetapi tidak akan scalable. Inilah momen transformasi: episode 12 mengubah kalian dari "orang yang mengetik perintah" menjadi "orang yang menulis perintah sekali, lalu mengulangnya ribuan kali tanpa kesalahan".

Otomasi bukan kemalasan — ini disiplin. Pekerjaan manual yang berulang adalah sumber kesalahan manusia terbesar di IT. Sysadmin yang baik menghapus pekerjaannya sendiri dengan mengotomasinya.

Mengapa Otomasi Itu Wajib

Tanpa OtomasiDengan Otomasi
30 menit per server, rawan salah ketik5 menit sekali untuk semua server
Hanya yang ingat yang dijalankanDieksekusi terjadwal, konsisten
Bergantung pada satu orangBerjalan tanpa manusia
Sulit diauditSetiap langkah tercatat

Aturan yang akan kalian dengar sepanjang karier: "If you do it twice, automate it." Otomasi juga menjadi pintu masuk ke configuration management (episode 13) — di mana konfigurasi server dideklarasikan, bukan diketik ulang.

Scripting Bash

Bash adalah bahasa otomasi utama di Linux. Sebuah script sysadmin yang baik punya struktur: shebang, exit code, dan logika error.

/usr/local/bin/backup-data.sh
#!/usr/bin/env bash
set -euo pipefail
 
SRC="/srv/data"
DEST="/srv/backup-repo"
LOG="/var/log/backup-data.log"
 
echo "[$(date '+%F %T')] mulai backup" >> "$LOG"
restic -r "$DEST" backup "$SRC" --password-file /etc/restic/pw >> "$LOG" 2>&1
echo "[$(date '+%F %T')] selesai, exit=$?" >> "$LOG"

Tiga hal penting:

  • set -euo pipefail — berhenti saat error (-e), variabel kosong ditolak (-u), kegagalan di tengah pipe tidak ditelan (-o pipefail).
  • Variabel membuat script konfigurable tanpa mengedit isi.
  • Logging membuat otomasi bisa diaudit.

Beri izin eksekusi lalu jalankan:

Jalankan script backup
chmod +x /usr/local/bin/backup-data.sh
/usr/local/bin/backup-data.sh
echo $?

Scripting PowerShell

Untuk Windows Server, PowerShell memegang peran yang sama. Polanya identik: variabel, logika, logging.

C:\Scripts\backup-share.ps1
$ErrorActionPreference = "Stop"
 
$Src = "\\srv-fs-01\shared"
$Dest = "D:\Backups"
$Log  = "C:\Logs\backup-share.log"
 
if (-not (Test-Path $Dest)) { New-Item -ItemType Directory -Path $Dest }
Copy-Item -Path $Src -Destination $Dest -Recurse -Force
Add-Content -Path $Log -Value "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] backup selesai"

$ErrorActionPreference = "Stop" adalah padanan set -e: menghentikan eksekusi saat error, sehingga kegagalan tidak lolos diam-diam.

Penjadwalan: Cron dan Scheduled Tasks

Cron (Linux)

cron adalah penjadwal klasik Linux. Format crontab: menit jam hari-bulan bulan hari-minggu perintah.

Jadwalkan backup tiap malam
crontab -e
# jalankan pukul 02:30 setiap hari
30 2 * * * /usr/local/bin/backup-data.sh
# jalankan setiap Minggu 03:00 dan kirim hasilnya
0 3 * * 0 /usr/local/bin/backup-weekly.sh

Verifikasi jadwal terpasang:

Lihat crontab dan log
crontab -l
grep CRON /var/log/syslog | tail -10

Scheduled Tasks (Windows)

Buat scheduled task di Windows
$Action  = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File C:\Scripts\backup-share.ps1"
$Trigger = New-ScheduledTaskTrigger -Daily -At "02:30AM"
Register-ScheduledTask -TaskName "Backup Share" -Action $Action -Trigger $Trigger
Get-ScheduledTask -TaskName "Backup Share"

Tip

Cron hanya menjalankan perintah — ia tidak peduli apakah hasilnya berhasil. Selalu rancang script yang mencatat hasil ke log dan (untuk yang kritis) memberi tahu jika gagal. Otomasi tanpa visibilitas hanyalah kegagalan yang berjalan rapi sesuai jadwal.

Important

Jangan menaruh logika penting hanya di cron — script harus bisa dijalankan manual dengan hasil yang sama. Cron seharusnya hanya "pemicu"; logika hidup di script. Ini membuat pengujian, debugging, dan pemindahan ke Ansible (episode 13) jauh lebih mudah.

Common Pitfalls Otomasi

  1. Lupa path environment — cron berjalan tanpa PATH interaktif; gunakan path absolut (/usr/bin/restic, bukan restic).
  2. Tidak logging — jika script gagal dan tidak mencatat apa pun, kalian buta.
  3. Tidak idempotent — script yang dijalankan dua kali menghasilkan hasil yang sama (prinsip yang jadi inti episode 13).
  4. Terlalu ambisius — mulai dari otomasi kecil, verifikasi, baru perluas.

Praktik: Otomasi Task Rutin

Latihan terpadu: otomasi pembersihan log lama + backup harian.

Script pembersihan log lama
#!/usr/bin/env bash
set -euo pipefail
LOG="/var/log/cleanup.log"
# Hapus file log audit yang lebih tua dari 30 hari
find /var/log/audit -type f -name "*.log" -mtime +30 -delete
echo "[$(date '+%F %T')] cleanup selesai" >> "$LOG"

Simpan, chmod +x, daftarkan di cron, lalu jalankan manual sekali untuk verifikasi — dan buka lognya untuk memastikan tercatat.

Penutup

Inti yang harus dibawa pulang dari episode 12:

  • Otomasi adalah disiplin, bukan kemalasan: "if you do it twice, automate it".
  • Script Bash & PowerShell yang baik: set -euo pipefail / $ErrorActionPreference="Stop", variabel, dan logging.
  • Penjadwalan dengan cron (Linux) dan Scheduled Tasks (Windows) — selalu dengan visibilitas.
  • Otomasi harus idempotent — ini jembatan menuju configuration management.

Di episode 13 selanjutnya kita akan membahas Configuration Management dengan Ansible — playbook, inventory, dan idempotency untuk mengelola banyak server sekaligus, dengan praktik manage fleets di lab. Ini akan mengubah cara kalian memandang "mengelola server" selamanya!

Belajar System Administrator - Automation & Scripting | Belajar System Administrator