linux
Catatan teknis seputar web development, DevOps, dan integrasi AI.
6 artikel
- 23.53devops
Pindah Folder Besar ke Block Storage dengan Symlink
Folder cadangan 14G memenuhi root disk. Pola pindah ke block storage dengan symlink menyelesaikan tekanan disk tanpa menghapus data cadangan.
TL;DR: Disk root bengkak 95 persen gara-gara folder backup plugin gambar WordPress segede 14GB. Jangan dihapus, cukup dipindah ke block storage pakai rsync, verifikasi dulu jumlah filenya, terus foldernya ditukar symlink path absolut. Jangan lupa set mount otomatis di fstab atau systemd, soalnya kalau reboot tanpa itu, symlinknya jadi dangling link.
#linux#rsync#symlink - 21.30devops
Argumen Tertukar, Budget Terbakar: Validasi Harus di Paling Atas
Set -euo pipefail tidak menyelamatkan skrip dari argumen tertukar. Guard whitelist dan exit code khusus di pintu masuk mencegah budget terbakar.
TL;DR: Job pertama lancar tapi argumen skrip ternyata tertukar, dana $0.137 kebuang percuma padahal set -euo pipefail udah aktif. Ternyata -u cuma nangkep variabel yang belum didefinisiin, bukan yang isinya salah. Solusinya: guard validasi di paling atas skrip pakai case, lengkap sama exit code khusus biar gagalnya cepat.
#bash#shellcheck#linux - 01.52backend
Lock dicuri di tengah jalan: pelajaran fencing token
Lock yang dicek sekali di awal cuma menjaga pintu. Fencing token yang divalidasi di setiap tulisan state, plus heartbeat lease, yang menjaga datanya.
TL;DR: Cek lock sekali di awal doang nggak cukup, soalnya sesi lama bisa bangun lagi padahal lock-nya udah dicuri sesi lain. Solusinya fencing token: tiap tulis wajib bawa token yang naik terus, kalau udah basi langsung ditolak di sisi penyimpanan. Plus resume harus idempoten dan dites pakai kontrol negatif, biar guard-nya kebukti bisa gagal sebelum insiden beneran kejadian.
#distributed-systems#idempotency#testing - 10.08devops
Playbook reboot yang berani menolak reboot
Reboot satu server produksi itu mudah; yang sulit adalah pagarnya. Pre-flight lock, modul reboot, dan post-check uptime yang berani gagal.
TL;DR: Reboot satu server ternyata bukan cuma manggil modul reboot Ansible; playbook-nya dikasih pagar biar nggak nyasar. Dia nolak jalan kalau unattended-upgrades atau lock apt masih aktif, plus wajib konfirmasi dan --limit satu host biar nggak sembilan server ke-reboot sekaligus. Setelah reboot, uptime dibandingkan sebelum-sesudah buat membuktikan reboot-nya beneran kejadian.
#ansible#linux#reboot - 09.59devops
Pagar permanen logrotate untuk btmp dan wtmp
Server internet-facing menumpuk log login gagal tanpa guard. Satu drop-in logrotate, direktif su, dan gerbang logrotate -d menutup masalahnya permanen.
TL;DR: Server yang kena brute-force login bikin btmp dan wtmp bengkak cepat, bisa tembus ratusan MB sebelum rotasi mingguan jalan. Solusinya pasang logrotate dengan weekly plus maxsize 50M biar file besar diputar lebih awal, tambah su root utmp buat hindari error izin direktori. Validasi dulu pakai logrotate -d biar config salah ketahuan sebelum produksi.
#logrotate#linux#ansible - 02.20devops
654M di /var/log dan Task Bukti yang Diam-diam Bohong
Playbook mingguan bilang OK tapi /var/log bengkak 654M: arsip btmp rotasi, file aktif yang di-truncate, dan pipe df yang nggak pernah jalan.
TL;DR: Disk /var/log bengkak diam-diam padahal playbook mingguan selalu lapor aman. Biang keroknya btmp, log login gagal yang numpuk gara-gara brute force SSH, fix-nya hapus arsip dan truncate file aktif biar sshd nggak perlu restart. Bonus: task bukti pakai modul command ternyata nggak memproses pipa, jadi harus diganti shell.
#ansible#linux#logrotate